
Plans
List organization members with the Organization API
Pull every member on the organization attached to your key with GET https://api.cursor.com/organizations/members. Each row includes the org role plus every linked-team assignment. Official reference: Organization API → Members.
Authenticate with an Organization API key (Basic auth, key as username, empty password). This route accepts members:read (or broader members:* / admin:*). Enterprise only. Pagination uses page and pageSize; pageSize is capped at 200 (larger values clamp to 200).
userId on each member matches the numeric id returned by the team Admin API GET /teams/members. Use those ids when calling Sync organization team memberships.
Request
curl -X GET "https://api.cursor.com/organizations/members?page=1&pageSize=50" \
-u YOUR_ORGANIZATION_API_KEY:
| Query | Rules |
|---|---|
page |
1-indexed. Defaults to the first page |
pageSize |
Members per page. Capped at 200 |
Response
{
"members": [
{
"userId": 12345,
"email": "developer@company.com",
"name": "Alex",
"organizationRole": "member",
"teams": [
{ "teamId": 7, "teamRole": "member" },
{ "teamId": 8, "teamRole": "owner" }
]
},
{
"userId": 12346,
"email": "admin@company.com",
"name": "Sam",
"organizationRole": "admin",
"teams": [
{ "teamId": 7, "teamRole": "owner" }
]
}
],
"pagination": {
"page": 1,
"pageSize": 50,
"totalCount": 2,
"totalPages": 1,
"hasNextPage": false,
"hasPreviousPage": false
}
}
| Field | Meaning |
|---|---|
userId |
Numeric member id (same family as team GET /teams/members id) |
email / name |
Contact and display name |
organizationRole |
Org-level role: admin or member |
teams[].teamId |
Integer id of a linked team the member belongs to |
teams[].teamRole |
Role on that team (for example member, owner) |
pagination |
page, pageSize, totalCount, totalPages, hasNextPage, hasPreviousPage |
organizationRole is separate from each teamRole. A user can be an org admin while holding member on one team, or the reverse.
Pitfalls
- Use an Organization API key. Team Admin API keys under
/teams/*fail on this route. - Narrow keys need at least
members:read. Ausage:*ormodels:*key without members scope returns 401 / 403. - Page through with
hasNextPageuntil false; do not assume one page covers a large org. - Team ids in
teamsare the linked-team integers you pass to team-membership sync and org usage filters — keep them distinct from Organization Groupg_…/grp_…ids.