PLANS / manage-organization-group-members-via-org-api

Plans

Manage organization group members with the Organization API

List members with GET https://api.cursor.com/organizations/groups/:groupId/members, add with POST …/members/bulk-add, and remove with POST …/members/bulk-remove. Official reference: Organization API → List / Add / Remove Organization Group members. Dashboard context: Organization Groups.

Authenticate with an Organization API key (Basic auth, key as username, empty password). Every group route needs members:* (or admin:*). Rate limit: 20 requests per minute per organization.

:groupId must be the Organization API group id (g_…). Member ids are public user_… values.

SCIM-synced groups reject manual membership changes with 400. Manage those members in your identity provider.

List members

curl -X GET "https://api.cursor.com/organizations/groups/g_PDSPmvukpYgZEDXsoNirw3CFhy/members?page=1&pageSize=50" \
  -u YOUR_ORGANIZATION_API_KEY:

page defaults to 1. pageSize defaults to 50 and clamps at 200.

{
  "members": [
    {
      "userId": "user_abc123",
      "name": "Alex Developer",
      "email": "alex@company.com",
      "joinedAt": "2026-01-15T10:30:00.000Z"
    }
  ],
  "pagination": {
    "page": 1,
    "pageSize": 50,
    "totalCount": 1,
    "totalPages": 1,
    "hasNextPage": false,
    "hasPreviousPage": false
  }
}

Add members

Up to 100 user_… ids per request.

curl -X POST https://api.cursor.com/organizations/groups/g_PDSPmvukpYgZEDXsoNirw3CFhy/members/bulk-add \
  -u YOUR_ORGANIZATION_API_KEY: \
  -H "Content-Type: application/json" \
  -d '{
    "userIds": ["user_abc123", "user_def456"]
  }'
{ "addedCount": 2 }

addedCount only counts new memberships. Users outside the organization and users already in the group are ignored and do not inflate the count.

Remove members

curl -X POST https://api.cursor.com/organizations/groups/g_PDSPmvukpYgZEDXsoNirw3CFhy/members/bulk-remove \
  -u YOUR_ORGANIZATION_API_KEY: \
  -H "Content-Type: application/json" \
  -d '{
    "userIds": ["user_def456"]
  }'
{ "removedCount": 1 }

Users who are not in the group are ignored. Empty the group with bulk-remove before you can DELETE the group itself.

Resolve user ids

curl -X GET "https://api.cursor.com/organizations/members?page=1&pageSize=50" \
  -u YOUR_ORGANIZATION_API_KEY:

Organization member list returns numeric userId values plus email and team assignments. For group userIds, use the public user_… ids from a prior group members response, or map from your roster the same way you do for Team directory group bulk routes. Do not pass a team Billing Group id or a Team directory team_group_… id as :groupId.

Pitfalls

  • Calling bulk-add or bulk-remove on a SCIM-synced group — expect 400
  • Passing more than 100 ids in one request
  • Passing Team directory or Billing Group ids as :groupId
  • Assuming ignored users raise an error — they are skipped silently and only the count reflects real changes