All endpoints require x-api-key and anthropic-version: 2023-06-01 headers.
All endpoints require x-api-key and anthropic-version: 2023-06-01 headers. Managed Agents endpoints additionally require the anthropic-beta header.
Most users should define agents and environments as version-controlled YAML applied with the
antCLI — seeshared/anthropic-cli.md. The endpoints below are the underlying API that the CLI and SDKs drive.
anthropic-beta: managed-agents-2026-04-01
The SDK adds this header automatically for all client.beta.{agents,environments,sessions,vaults,memory_stores,deployments,deployment_runs}.* calls. Skills endpoints use skills-2025-10-02; Files endpoints use files-api-2025-04-14.
All resources are under the beta namespace. Python and TypeScript share identical method names.
| Resource | Python / TypeScript (client.beta.) | Go (client.Beta.) | | --- | --- | --- | | Agents | agents.create / retrieve / update / list / archive | Agents.New / Get / Update / List / Archive | | Agent Versions | agents.versions.list | Agents.Versions.List | | Environments | environments.create / retrieve / update / list / delete / archive | Environments.New / Get / Update / List / Delete / Archive | | Environment Work (self-hosted) | environments.work.poller / stats / stop | See shared/managed-agents-self-hosted-sandboxes.md | | Sessions | sessions.create / retrieve / update / list / delete / archive | Sessions.New / Get / Update / List / Delete / Archive | | Session Events | sessions.events.list / send / stream | Sessions.Events.List / Send / StreamEvents | | Session Threads | sessions.threads.list / retrieve / archive; sessions.threads.events.list / stream | Sessions.Threads.List / Get / Archive; Sessions.Threads.Events.List / StreamEvents | | Session Resources | sessions.resources.add / retrieve / update / list / delete | Sessions.Resources.Add / Get / Update / List / Delete | | Deployments | deployments.create / update / pause / unpause / archive / run | Not yet documented — WebFetch the SDK repo (shared/live-sources.md) | | Deployment Runs | deployment_runs.list / retrieve (TS: deploymentRuns.*) | Not yet documented — WebFetch the SDK repo (shared/live-sources.md) | | Vaults | vaults.create / retrieve / update / list / delete / archive | Vaults.New / Get / Update / List / Delete / Archive | | Credentials | vaults.credentials.create / retrieve / update / list / delete / archive / mcp_oauth_validate | Vaults.Credentials.New / Get / Update / List / Delete / Archive / McpOauthValidate | | Memory Stores | memory_stores.create / retrieve / update / list / delete / archive | MemoryStores.New / Get / Update / List / Delete / Archive | | Memories | memory_stores.memories.create / retrieve / update / list / delete | MemoryStores.Memories.New / Get / Update / List / Delete | | Memory Versions | memory_stores.memory_versions.list / retrieve / redact | MemoryStores.MemoryVersions.List / Get / Redact |
Naming quirks to watch for:
archive. Archive is permanent: the agent becomes read-only, new sessions cannot reference it, and there is no unarchive. Confirm with the user before archiving a production agent. Environments, Sessions, Vaults, Credentials, and Memory Stores have both delete and archive; Session Resources, Files, Skills, and Memories are delete-only; Memory Versions have neither — only redact.add (not create).StreamEvents (not Stream).client.beta.* — it's EnvironmentWorker from anthropic.lib.environments / @anthropic-ai/sdk/helpers/beta/environments; only environments.work.poller/stats/stop are client methods.Agent shorthand: agent on session create accepts three forms — a bare string (agent="agent_abc123", latest version), a pinned reference {type: "agent", id, version}, or {type: "agent_with_overrides", id, version?, model?, system?, tools?, mcp_servers?, skills?} to override those fields for this session only (see shared/managed-agents-core.md → Override agent configuration for a session).
Model shorthand: model on agent create accepts either a bare string (model="claude-opus-5" — uses standard speed) or the full config object, which takes speed, effort, and inference_geo alongside id: {id: "claude-opus-5", speed: "fast"}, {id: "claude-opus-5", effort: "high"}, {id: "claude-opus-5", inference_geo: "us"}. effort accepts a level string (low/medium/high/xhigh/max) or {type: "<level>"}, and is agent-configuration only — an effort inside a per-session model override is ignored. inference_geo ("us" | "global") pins the geography serving the agent's model requests, and unlike effort is applied in a per-session model override. See shared/managed-agents-core.md → Effort on the agent model / Pinning inference geography. Note: speed: "fast" is supported on Claude Opus 5 and Opus 4.8 — on the Claude API only, which includes Managed Agents but not Amazon Bedrock, Google Cloud, or Microsoft Foundry. Opus 4.7 fast mode has been removed; speed: "fast" on Opus 4.7 returns an error.
Step one of every flow. Sessions require a pre-created agent — there is no inline agent config under managed-agents-2026-04-01.
| Method | Path | Operation | Description | | -------- | ------------------------------------------------ | ---------------- | ---------------------------------------- | | GET | /v1/agents | ListAgents | List agents | | POST | /v1/agents | CreateAgent | Create a saved agent configuration | | GET | /v1/agents/{agent_id} | GetAgent | Get agent details | | POST | /v1/agents/{agent_id} | UpdateAgent | Update agent configuration. version is optional: supply it (≥ 1) for optimistic concurrency — a mismatch returns 409 — or omit it for an unconditional last-write-wins update. | | POST | /v1/agents/{agent_id}/archive | ArchiveAgent | Archive an agent. Makes it read-only; existing sessions continue, new sessions cannot reference it. No unarchive — this is the terminal state. | | GET | /v1/agents/{agent_id}/versions | ListAgentVersions | List agent versions |
| Method | Path | Operation | Description | | -------- | ------------------------------------------------ | ---------------- | ---------------------------------------- | | GET | /v1/sessions | ListSessions | List sessions (paginated) | | POST | /v1/sessions | CreateSession | Create a new session | | GET | /v1/sessions/{session_id} | GetSession | Get session details | | POST | /v1/sessions/{session_id} | UpdateSession | Update session metadata/title, agent.tools/agent.mcp_servers (session-local override; session must be idle), or budget — change the cap (higher or lower; the new value must exceed the consumed list cost) or remove it with null; removal is one-way, and a budget can never be added post-create. vault_ids is create-only (rejected on update). See shared/managed-agents-core.md → Updating the agent configuration mid-session / Session budgets. | | DELETE | /v1/sessions/{session_id} | DeleteSession | Delete a session | | POST | /v1/sessions/{session_id}/archive | ArchiveSession | Archive a session |
| Method | Path | Operation | Description | | -------- | ------------------------------------------------ | ---------------- | ---------------------------------------- | | GET | /v1/sessions/{session_id}/events | ListEvents | List events (polling, paginated) | | POST | /v1/sessions/{session_id}/events | SendEvents | Send events (user message, tool result) | | GET | /v1/sessions/{session_id}/events/stream | StreamEvents | Stream events via SSE. Optional event_deltas[]=agent.message / agent.thinking opts in to live-preview event_start/event_delta events — see shared/managed-agents-events.md § Live previews. |
Per-subagent event streams in multiagent sessions. See shared/managed-agents-multiagent.md.
| Method | Path | Operation | Description | | -------- | ------------------------------------------------ | ---------------- | ---------------------------------------- | | GET | /v1/sessions/{session_id}/threads | ListThreads | List threads (paginated) | | GET | /v1/sessions/{session_id}/threads/{thread_id} | GetThread | Retrieve one thread (carries agent snapshot, status, parent_thread_id, stats, usage) | | POST | /v1/sessions/{session_id}/threads/{thread_id}/archive | ArchiveThread | Archive a thread | | GET | /v1/sessions/{session_id}/threads/{thread_id}/events | ListThreadEvents | List past events for one thread (paginated) | | GET | /v1/sessions/{session_id}/threads/{thread_id}/stream | StreamThreadEvents | Stream one thread via SSE (SDK: threads.events.stream) |
| Method | Path | Operation | Description | | -------- | ------------------------------------------------------- | ---------------- | ---------------------------------------- | | GET | /v1/sessions/{session_id}/resources | ListResources | List resources attached to session | | POST | /v1/sessions/{session_id}/resources | AddResource | Attach file or github_repository resource (SDK method: add, not create). memory_store resources attach at session-create time only. | | GET | /v1/sessions/{session_id}/resources/{resource_id} | GetResource | Get a single resource | | POST | /v1/sessions/{session_id}/resources/{resource_id} | UpdateResource | Update resource | | DELETE | /v1/sessions/{session_id}/resources/{resource_id} | DeleteResource | Remove resource from session |
| Method | Path | Operation | Description | | -------- | ---------------------------------------------------------------- | -------------------- | ----------------------------------- | | POST | /v1/environments | CreateEnvironment | Create environment | | GET | /v1/environments | ListEnvironments | List environments | | GET | /v1/environments/{environment_id} | GetEnvironment | Get environment details | | POST | /v1/environments/{environment_id} | UpdateEnvironment | Update environment | | DELETE | /v1/environments/{environment_id} | DeleteEnvironment | Delete environment. Returns 204. | | POST | /v1/environments/{environment_id}/archive | ArchiveEnvironment | Archive environment. Makes it read-only; existing sessions continue, new sessions cannot reference it. No unarchive — this is the terminal state. | | GET | /v1/environments/{environment_id}/work/stats | WorkQueueStats | Self-hosted work-queue depth/pending/workers. x-api-key auth. See shared/managed-agents-self-hosted-sandboxes.md. | | POST | /v1/environments/{environment_id}/work/{work_id}/stop | StopWork | Self-hosted: stop a claimed work item. x-api-key auth. |
For type: "self_hosted", config is the bare {"type": "self_hosted"} — networking and packages do not apply.
Scheduled deployments (depl_ IDs) run an agent on a recurring cron schedule — each firing creates a session. See shared/managed-agents-scheduled-deployments.md for the conceptual guide (cron/DST semantics, failure behavior, lifecycle).
| Method | Path | Operation | Description | | -------- | ------------------------------------------------ | ---------------- | ---------------------------------------- | | POST | /v1/deployments | CreateDeployment | Create a scheduled deployment | | POST | /v1/deployments/{deployment_id} | UpdateDeployment | Update deployment configuration (see shared/managed-agents-scheduled-deployments.md) | | POST | /v1/deployments/{deployment_id}/pause | PauseDeployment | Suppress scheduled triggers (reversible; manual runs still allowed) | | POST | /v1/deployments/{deployment_id}/unpause | UnpauseDeployment | Resume from the next occurrence (no backfill) | | POST | /v1/deployments/{deployment_id}/archive | ArchiveDeployment | Terminal — schedule stops, deployment becomes immutable | | POST | /v1/deployments/{deployment_id}/run | RunDeployment | Trigger a manual run immediately (trigger_context.type: "manual"); works while paused |
Each trigger attempt (scheduled or manual) writes a deployment_run record (drun_ IDs) carrying either the created session_id or an error.type (environment_archived, agent_archived, vault_not_found, session_rate_limited, service_unavailable).
| Method | Path | Operation | Description | | -------- | ------------------------------------------------ | ---------------- | ---------------------------------------- | | GET | /v1/deployment_runs?deployment_id=... | ListDeploymentRuns | List runs for a deployment (paginated; filter failures with has_error=true) | | GET | /v1/deployment_runs/{deployment_run_id} | GetDeploymentRun | Retrieve a single run by ID (a deployment_run.* webhook event carries this as data.id) |
Vaults store credentials that Anthropic manages on your behalf — MCP credentials (OAuth with auto-refresh, or static bearer tokens) and environment_variable credentials substituted into outbound requests at egress. Attach to sessions via vault_ids. See managed-agents-tools.md §Vaults for the conceptual guide and credential shapes.
| Method | Path | Operation | Description | | -------- | ------------------------------------------------ | ---------------- | ---------------------------------------- | | POST | /v1/vaults | CreateVault | Create a vault | | GET | /v1/vaults | ListVaults | List vaults | | GET | /v1/vaults/{vault_id} | GetVault | Get vault details | | POST | /v1/vaults/{vault_id} | UpdateVault | Update vault | | DELETE | /v1/vaults/{vault_id} | DeleteVault | Delete vault | | POST | /v1/vaults/{vault_id}/archive | ArchiveVault | Archive vault |
Credentials are individual secrets stored inside a vault.
| Method | Path | Operation | Description | | -------- | ----------------------------------------------------------------- | ------------------ | ---------------------------- | | POST | /v1/vaults/{vault_id}/credentials | CreateCredential | Create a credential | | GET | /v1/vaults/{vault_id}/credentials | ListCredentials | List credentials in vault | | GET | /v1/vaults/{vault_id}/credentials/{credential_id} | GetCredential | Get credential metadata | | POST | /v1/vaults/{vault_id}/credentials/{credential_id} | UpdateCredential | Update credential | | DELETE | /v1/vaults/{vault_id}/credentials/{credential_id} | DeleteCredential | Delete credential | | POST | /v1/vaults/{vault_id}/credentials/{credential_id}/archive | ArchiveCredential | Archive credential | | POST | /v1/vaults/{vault_id}/credentials/{credential_id}/mcp_oauth_validate | McpOauthValidate | Validate an MCP OAuth credential |
Workspace-scoped persistent memory that survives across sessions. Attach to a session via a {"type": "memory_store", "memory_store_id": ...} entry in resources[] (session-create time only). See shared/managed-agents-memory.md for the conceptual guide, the FUSE-mount agent interface, preconditions, and versioning.
| Method | Path | Operation | Description | | -------- | ------------------------------------------------ | ------------------ | ---------------------------------------- | | POST | /v1/memory_stores | CreateMemoryStore | Create a store (name, description, metadata) | | GET | /v1/memory_stores | ListMemoryStores | List stores (include_archived, created_at_{gte,lte}) | | GET | /v1/memory_stores/{memory_store_id} | GetMemoryStore | Get store details | | POST | /v1/memory_stores/{memory_store_id} | UpdateMemoryStore | Update store | | DELETE | /v1/memory_stores/{memory_store_id} | DeleteMemoryStore | Delete store | | POST | /v1/memory_stores/{memory_store_id}/archive | ArchiveMemoryStore | Archive store. Makes it read-only; existing sessions continue, new sessions cannot reference it. No unarchive. |
Individual text documents inside a store (≤ 100KB each). create creates at a path and returns 409 (memory_path_conflict_error, with conflicting_memory_id) if the path is occupied; update mutates by mem_... ID (rename and/or content). Only update accepts a precondition ({"type": "content_sha256", "content_sha256": ...}) — on mismatch returns 409 (memory_precondition_failed_error). List endpoints accept view: "basic"|"full" (controls whether content is populated; retrieve defaults to full).
| Method | Path | Operation | Description | | -------- | ----------------------------------------------------------------- | -------------- | ---------------------------------------- | | GET | /v1/memory_stores/{memory_store_id}/memories | ListMemories | Returns Memory \| MemoryPrefix; filter by path_prefix, depth | | POST | /v1/memory_stores/{memory_store_id}/memories | CreateMemory | Create at path (SDK: memories.create); 409 memory_path_conflict_error if occupied | | GET | /v1/memory_stores/{memory_store_id}/memories/{memory_id} | GetMemory | Read one memory (defaults to view="full") | | PATCH | /v1/memory_stores/{memory_store_id}/memories/{memory_id} | UpdateMemory | Change content, path, or both by ID; optional precondition | | DELETE | /v1/memory_stores/{memory_store_id}/memories/{memory_id} | DeleteMemory | Delete (optional expected_content_sha256) |
Immutable per-mutation snapshots (memver_...) — the audit and rollback surface. operation ∈ created / modified / deleted.
| Method | Path | Operation | Description | | -------- | ----------------------------------------------------------------------------- | --------------------- | ---------------------------------------- | | GET | /v1/memory_stores/{memory_store_id}/memory_versions | ListMemoryVersions | Newest-first; filter by memory_id, operation, session_id, api_key_id, created_at_{gte,lte} | | GET | /v1/memory_stores/{memory_store_id}/memory_versions/{version_id} | GetMemoryVersion | List fields + full content | | POST | /v1/memory_stores/{memory_store_id}/memory_versions/{version_id}/redact | RedactMemoryVersion | Clear content/content_sha256/content_size_bytes/path; preserve actor + timestamps |
| Method | Path | Operation | Description | | -------- | ------------------------------------------------ | ---------------- | ---------------------------------------- | | POST | /v1/files | UploadFile | Upload a file | | GET | /v1/files | ListFiles | List files | | GET | /v1/files/{file_id} | GetFile | Get file metadata (SDK method: retrieve_metadata) | | GET | /v1/files/{file_id}/content | DownloadFile | Download file content | | DELETE | /v1/files/{file_id} | DeleteFile | Delete a file |
| Method | Path | Operation | Description | | -------- | --------------------------------------------------------------- | ------------------ | ---------------------------- | | POST | /v1/skills | CreateSkill | Create a skill | | GET | /v1/skills | ListSkills | List skills | | GET | /v1/skills/{skill_id} | GetSkill | Get skill details | | DELETE | /v1/skills/{skill_id} | DeleteSkill | Delete a skill | | POST | /v1/skills/{skill_id}/versions | CreateVersion | Create skill version | | GET | /v1/skills/{skill_id}/versions | ListVersions | List skill versions | | GET | /v1/skills/{skill_id}/versions/{version} | GetVersion | Get skill version | | DELETE | /v1/skills/{skill_id}/versions/{version} | DeleteVersion | Delete skill version |
Always start here. model, system, tools, mcp_servers, skills are top-level fields on this object — they do NOT go on the session.
{
"name": "string (required, 1-256 chars)",
"model": "claude-opus-5 (required — bare string, or {id, speed?, effort?, inference_geo?} object)",
"description": "string (optional, up to 2048 chars)",
"system": "string (optional, up to 100,000 chars)",
"tools": [
{ "type": "agent_toolset_20260401" }
],
"skills": [
{ "type": "anthropic", "skill_id": "xlsx" },
{ "type": "custom", "skill_id": "skill_abc123", "version": "1" }
],
"mcp_servers": [
{
"type": "url",
"name": "github",
"url": "https://api.githubcopilot.com/mcp/"
}
],
"multiagent": {
"type": "coordinator",
"agents": [
"agent_abc123",
{ "type": "agent", "id": "agent_def456", "version": 4 },
{ "type": "self" }
]
},
"metadata": {
"key": "value (max 16 pairs, keys ≤64 chars, values ≤512 chars)"
}
}
Limits:
toolsmax 128,skillsmax 20,mcp_serversmax 20 (unique names).multiagent.agents1–20 entries (string ID |{type:"agent",id,version?}|{type:"self"}|{type:"advisor",model}, at most one advisor) — seeshared/managed-agents-multiagent.md.
{
"agent": "agent_abc123 (required — string shorthand for latest version, or {type: \"agent\", id, version} object)",
"environment_id": "env_abc123 (required)",
"title": "string (optional)",
"resources": [
{
"type": "github_repository",
"url": "https://github.com/owner/repo (required)",
"authorization_token": "ghp_... (required)",
"mount_path": "/workspace/repo (optional — defaults to /workspace/<repo-name>)",
"checkout": { "type": "branch", "name": "main" }
}
],
"initial_events": [
{ "type": "user.message", "content": [{ "type": "text", "text": "Review the auth module." }] }
],
"vault_ids": ["vlt_abc123 (optional — vault credentials: MCP auth + environment variables)"],
"budget": {
"type": "limit",
"max_list_cost": { "amount": "2500", "currency": "USD" }
},
"metadata": {
"key": "value"
}
}
The
agentfield accepts a string ID,{type: "agent", id, version}, or{type: "agent_with_overrides", id, version?, ...}for session-local overrides ofmodel/system/tools/mcp_servers/skills. Outside the overrides form, those fields live on the agent, not here. Aneffortinside amodeloverride is ignored — set it on the agent. Aninference_geoinside amodeloverride is applied (omitting it clears the agent's pin for this session).
budget(optional, create-only) is a hard dollar cap on the session's list-priced spend;amountis an integer string in minor units (cents —"2500"= $25.00),USDonly. It can be changed or removed later via session update, never added. Seeshared/managed-agents-core.md→ Session budgets.
initial_events(optional, max 50) sends events at creation and starts the agent loop in the same call. Onlyuser.messageanduser.define_outcomeare accepted — nosystem.message, and none of the tool-result kinds. Validation is all-or-nothing. Seeshared/managed-agents-core.md→ Seeding a session withinitial_events.
checkoutaccepts{type: "branch", name: "..."}or{type: "commit", sha: "..."}. Omit for the repo's default branch.
{
"name": "string (required)",
"description": "string (optional)",
"config": {
"type": "cloud | self_hosted",
"networking": {
"type": "unrestricted | limited (union — see SDK types)"
},
"packages": { }
},
"metadata": { "key": "value" }
}
{
"name": "Weekly compliance scan",
"agent": "agent_abc123 (required — same shapes as CreateSession)",
"environment_id": "env_abc123 (required)",
"initial_events": [
{ "type": "user.message", "content": [{ "type": "text", "text": "Run the weekly compliance scan." }] }
],
"schedule": {
"type": "cron",
"expression": "0 20 * * 5",
"timezone": "America/New_York"
}
}
Optional session config (
resources,vault_ids, etc.) is supported the same way as on CreateSession, includingbudget— copied onto each fired session; unlike a session's, it can be added where none exists and re-added after clearing (seeshared/managed-agents-scheduled-deployments.md§ Deployment budgets). Response includesstatus,paused_reason, andschedule.upcoming_runs_at(next fire times). Seeshared/managed-agents-scheduled-deployments.md.
{
"events": [
{
"type": "user.message",
"content": [
{
"type": "text",
"text": "Hello"
}
]
}
]
}
system.messageevents (append system-level context for this turn and later ones) use the same envelope withtype: "system.message"— supported on Claude Opus 5, Claude Opus 4.8, Claude Sonnet 5, Claude Fable 5, and Claude Mythos 5, checked against the agent's primary model only; seeshared/managed-agents-events.md§ Adding system context mid-session.
{
"type": "user.define_outcome",
"description": "Build a DCF model for Costco in .xlsx",
"rubric": { "type": "file", "file_id": "file_01..." },
"max_iterations": 5
}
rubricis required:{type: "text", content}or{type: "file", file_id}.max_iterationsdefault 3, max 20. Echoed back withoutcome_id+processed_at. Seeshared/managed-agents-outcomes.md.
{
"type": "user.custom_tool_result",
"custom_tool_use_id": "sevt_abc123",
"content": [{ "type": "text", "text": "Result data" }],
"is_error": false
}
Managed Agents endpoints use the standard Anthropic API error format. Errors are returned with an HTTP status code and a JSON body containing type, error, and request_id:
{
"type": "error",
"error": {
"type": "invalid_request_error",
"message": "Description of what went wrong"
},
"request_id": "req_011CRv1W3XQ8XpFikNYG7RnE"
}
Include the request_id when reporting issues to Anthropic — it lets us trace the request end-to-end. The inner error.type is one of the following:
| Status | Error type | Description | |---|---|---| | 400 | invalid_request_error | The request was malformed or missing required parameters | | 401 | authentication_error | Invalid or missing API key | | 403 | permission_error | The API key doesn't have permission for this operation | | 404 | not_found_error | The requested resource doesn't exist | | 409 | invalid_request_error | The request conflicts with the resource's current state (e.g., sending to an archived session) | | 413 | request_too_large | The request body exceeds the maximum allowed size | | 429 | rate_limit_error | Too many requests — check rate limit headers for retry timing | | 500 | api_error | An internal server error occurred | | 529 | overloaded_error | The service is temporarily overloaded — retry with backoff |
Note that 409 Conflict carries error.type: "invalid_request_error" (there is no separate conflict_error type); inspect both the HTTP status and the message to distinguish conflicts from other invalid requests.
Most Managed Agents list endpoints use the page / next_page cursor scheme:
| Field | Where | Notes | |---|---|---| | limit | query | Max items per page | | page | query | Opaque cursor from a previous response — pass a next_page or prev_page value here | | order | query | asc / desc on endpoints that support sorting. A cursor encodes the order of the request that produced it — reusing it with a different order returns 400. Other params (filters, limit) can change between paginated requests. | | next_page | response | Cursor for the next page; null when there are no more results | | prev_page | response | Cursor for the previous page on endpoints that support backward pagination — currently only GET /v1/sessions. null on the first page. On endpoints that don't support it, the field is absent (not null). |
Every SDK exposes an auto-paginating iterator that follows next_page. In Python and TypeScript, iterate the list result directly; the other SDKs expose the iterator via a separate method (iterating the plain list result returns one page). SDK auto-pagination is forward-only — to go back a page, read prev_page from the response and pass it back as the page parameter yourself.
⚠️ Some endpoints use a different cursor scheme: Message Batches, Files, Models, and several Admin API endpoints take
after_id/before_idand returnhas_more/first_id/last_idinstead ofpage/next_page. Somepage-scheme endpoints (e.g.GET /v1/skills) also return ahas_moreboolean alongsidenext_page. Check the endpoint's reference page for its exact pagination fields.
Managed Agents endpoints have per-organization request-per-minute (RPM) limits, separate from your Messages API token limits. Model inference inside a session still draws from your organization's standard ITPM/OTPM limits.
| Endpoint group | Scope | RPM | Max concurrent | |---|---|---|---| | Create operations (Agents, Sessions, Vaults) | organization | 300 | — | | All other operations (Agents, Sessions, Vaults) | organization | 600 | — | | All operations (Environments) | organization | 60 | 5 |
Files and Skills endpoints use the standard tier-based rate limits.
When a limit is exceeded the API returns 429 with a rate_limit_error (see Error Handling for the response envelope) and a retry-after header indicating how many seconds to wait before retrying. The Anthropic SDK reads this header and retries automatically.