
Plans
List team directory groups with the Admin API
Pull every Team directory group on the team with GET https://api.cursor.com/teams/directory-groups, or fetch one group with GET https://api.cursor.com/teams/directory-groups/:groupId. Official reference: Admin API → Team directory groups.
Authenticate with a team Admin API key (Basic auth, key as username, empty password). Reads need read:* (or admin:*). Rate limit: 20 requests per minute per team. A 429 includes Retry-After: 60.
Team directory groups use public ids with the team_group_… prefix. They are a different API from Billing Groups (/teams/groups, group_… ids) and Organization Groups (/organizations/groups, g_ / grp_ ids). Pass the wrong prefix and the route returns 400 or 404.
List groups
curl -X GET "https://api.cursor.com/teams/directory-groups?page=1&pageSize=50" \
-u YOUR_API_KEY:
| Query | Rules |
|---|---|
page |
Defaults to 1 |
pageSize |
Defaults to 50. Capped at 200; larger values clamp to 200 |
{
"groups": [
{
"id": "team_group_01k2ja2000e0080000000000n2",
"name": "Engineering",
"memberCount": 12,
"monthlySpendingLimitDollars": 500,
"createdAt": "2026-01-15T10:30:00.000Z",
"updatedAt": "2026-01-20T14:22:00.000Z"
}
],
"pagination": {
"page": 1,
"pageSize": 50,
"totalCount": 1,
"totalPages": 1,
"hasNextPage": false,
"hasPreviousPage": false
}
}
| Field | Meaning |
|---|---|
id |
Public id (team_group_…). Use as :groupId on every other directory-group route |
name |
Group name |
memberCount |
Members currently in the group |
monthlySpendingLimitDollars |
Per-member monthly spend cap in whole dollars, or null when unset |
createdAt / updatedAt |
ISO 8601 timestamps |
Get one group
curl -X GET https://api.cursor.com/teams/directory-groups/team_group_01k2ja2000e0080000000000n2 \
-u YOUR_API_KEY:
{
"group": {
"id": "team_group_01k2ja2000e0080000000000n2",
"name": "Engineering",
"memberCount": 12,
"monthlySpendingLimitDollars": 500,
"createdAt": "2026-01-15T10:30:00.000Z",
"updatedAt": "2026-01-20T14:22:00.000Z"
}
}
Pitfalls
- Passing a Billing Group
group_…id or an Organization Groupg_/grp_id as:groupId - Assuming
pageSizeabove 200 returns more rows — the API clamps it - Mixing this list with
/teams/groupswhen you need chargeback spend — billing groups own cycle spend; directory groups own per-member monthly caps inside one team