Skip to content

Get your effective project permissions ​

GET/api/v2/workspaces/{slug}/projects/{project_id}/permissions/me/

Return your relation on one project and every permission you hold there, in one call. Use it to set up a project screen once, for example to hide controls a user can't use.

The response is a fixed object with two keys, relation and permission_grants. See the effective permissions object. It doesn't take ?fields= or ?expand=.

  • relation is the role granted to you directly on the project: admin, contributor, commenter, guest, or a custom role's slug. It is null when you hold no grant on the project itself, for example when your access comes only from your workspace role or a teamspace.
  • permission_grants covers the resource types that live in a project, such as project, workitem, cycle, module, and page, sorted. Each entry is <resource_type>:<action>. A permission you hold only under a condition appears once per condition, with the condition as a suffix, for example workitem:delete+creator. Permissions you don't hold are left out.

The permissions come from the same check as Check a permission, run against the project, so they include what you inherit from your workspace role. relation doesn't.

Every answer is about the caller. Any member of the workspace can call this endpoint, guests included. You don't need to be a member of the project. Plane doesn't check that the project exists: an id or identifier that matches no project in the workspace still returns 200, with relation set to null.

Path Parameters ​

slug:requiredstring

The workspace slug. It appears in your Plane URLs. In https://app.plane.so/my-team/projects/, the slug is my-team.

project_id:requiredstring

The project to read. Accepts the project UUID or its bare identifier, for example ENG.

Scopes ​

workspaces.permissions:read. The global read scope doesn't satisfy this endpoint.

Errors ​

StatusCodeCause
401unauthorizedMissing or invalid credentials.
403forbiddenYou aren't a member of the workspace, or your token scope doesn't allow this.
404not_foundNo such workspace.
406not_acceptableThe Accept header asks for a representation the API can't produce.
429rate_limitedThrottled. Honor the Retry-After header before retrying.
Get your effective project permissions
bash
curl -X GET \
  "https://api.plane.so/api/v2/workspaces/my-team/projects/4af68566-94a4-4eb3-94aa-50dc9427067b/permissions/me/" \
  -H "X-Api-Key: $PLANE_API_KEY"
Response200
json
{
  "relation": "contributor",
  "permission_grants": [
    "cycle:create",
    "cycle:delete+creator",
    "cycle:edit+creator",
    "cycle:view",
    "module:view",
    "project:react",
    "project:view",
    "workitem:archive",
    "workitem:assign",
    "workitem:create",
    "workitem:delete+creator",
    "workitem:edit",
    "workitem:view"
  ]
}