---
title: "GET /api/v1/{context_id}/principals/{principal_id}/effective"
method: GET
path: "/api/v1/{context_id}/principals/{principal_id}/effective"
---

# GET /api/v1/{context_id}/principals/{principal_id}/effective

`GET /api/v1/{context_id}/principals/{principal_id}/effective`

List the verbs a principal effectively holds at a scope path (requires `grant:manage` over the path)

## Path parameters

- `context_id` string, required
- `principal_id` string, required

## Query parameters

- `path` string, required
- `asOf` string

## Response `200`

- EffectiveGrantsJson — The `GET /{ctx}/principals/{id}/effective` response.
  - `asOf` string, date-time, nullable — Echoes the `as_of` instant the verbs were resolved at, when the request asked for a historical view; absent for a current-grants response.
  - `path` string, required — The scope path the verbs were resolved at (canonical form).
  - `verbs` Verb[], required — The verbs the principal effectively holds at `path`.

## Other responses

- `400` — Invalid scope path
- `401` — Unauthorized
- `403` — Caller lacks `grant:manage` over the path
- `404` — Principal does not exist
- `422` — Invalid context id

---

[API](https://skmtc.net/surrealdb/apis/spectron.md) · [All operations](https://skmtc.net/surrealdb/apis/spectron/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/surrealdb/spectron/versions/52b41ab517b6/schema)
