
Grok Bot
List model access providers with the Organization API
With a custom model-access policy on a linked team, list catalog providers and models (enabled flags plus per-model parameters) with GET https://api.cursor.com/organizations/teams/{teamId}/model-access/providers. Official reference: Organization API → Model access. These routes are in preview and may change before general availability.
Authenticate with an Organization API key (Basic auth, key as username, empty password). Reads need models:read (or admin:*). Keys scoped only to members:*, usage:*, or generic read:* cannot call these routes. Rate limit: 20 requests per minute. Enterprise organizations; target teams must have model access control available.
Numeric teamId values come from routes such as List organization members. Returns 409 when the team does not have a custom policy (state is unrestricted or legacy). Seed policy first: Set model access configuration with the Organization API. Path segments use catalog ids such as anthropic and claude-opus-4-6. Response shape matches the team Admin API providers route.
List providers for one linked team
curl -X GET https://api.cursor.com/organizations/teams/7/model-access/providers \
-u YOUR_ORGANIZATION_API_KEY:
Example response shape (same fields as the team Admin API providers GET):
{
"teamId": 7,
"state": "custom",
"providers": [
{
"id": "anthropic",
"displayName": "Anthropic",
"enabled": true,
"models": [
{
"id": "claude-opus-4-6",
"displayName": "Opus 4.6",
"enabled": true,
"parameters": [
{
"id": "fast",
"displayName": "Fast",
"supportedValues": ["false", "true"],
"allowedValues": ["false", "true"],
"configuredDefaultValue": null,
"catalogDefaultValue": "true"
}
]
}
]
},
{
"id": "openai",
"displayName": "OpenAI",
"enabled": true,
"models": [
{
"id": "gpt-5.4",
"displayName": "GPT-5.4",
"enabled": true,
"parameters": [
{
"id": "reasoning",
"displayName": "Reasoning",
"supportedValues": ["low", "medium", "high", "xhigh", "max"],
"allowedValues": ["low", "medium", "high"],
"configuredDefaultValue": "high",
"catalogDefaultValue": "medium"
}
]
}
]
}
]
}
| Top-level field | Meaning |
|---|---|
teamId |
Integer team ID of the linked team |
state |
Policy state (custom when this GET succeeds) |
providers |
Catalog providers with nested models |
| Provider field | Meaning |
|---|---|
id |
Catalog provider id (use this in path segments) |
displayName |
Human-readable label |
enabled |
Whether the provider is allowed for the team |
models |
Nested model objects |
Model parameters fields
Each model includes a catalog-driven parameters array. Parameter ids and supported values come from the model catalog (for example fast, reasoning, effort, context). Use this GET to discover which parameters a model supports before writing.
| Field | Meaning |
|---|---|
id |
Parameter id (for example fast or reasoning) |
displayName |
Human-readable label |
supportedValues |
All values the catalog allows for this parameter on this model |
allowedValues |
Values currently allowed by the team policy |
configuredDefaultValue |
Admin-pinned default, or null when unset |
catalogDefaultValue |
Catalog default for the parameter on this model |
Pitfalls
- Calling while
stateisunrestrictedorlegacy— expect 409 until configuration seeds a custom policy. - Unknown or unlinked
teamIdreturns 404; teams without model access control available return 403. - Putting a display name in a later write path (
OpenAI) fails; paths need the catalogidfrom this GET (openai). - Automating against preview paths without pinning docs — request shape and errors can change before GA.
After the list, toggle providers with Enable or disable a model access provider and set per-model parameters with Set model access and parameters. For the single-team Admin API counterpart, see List model access providers with the Admin API.