generated: '2026-08-27' method: searched source: openapi/*.yml, https://platform.claude.com/docs/en/api/overview, https://platform.claude.com/docs/en/api/errors base_url: https://api.anthropic.com authentication: style: api-key-header header: x-api-key admin_header: x-api-key (Admin API key, sk-ant-admin...) alternatives: Workload Identity Federation (short-lived OIDC bearer tokens); SigV4 on Claude Platform on AWS. ref: authentication/anthropic-authentication.yml versioning: style: date-header header: anthropic-version current: '2023-06-01' ref: lifecycle/anthropic-lifecycle.yml beta_opt_in: header: anthropic-beta style: comma-separated dated identifiers idempotency: supported: false notes: No idempotency-key header on the Messages API. Message Batches provide at-most-once semantics via per-request custom_id. pagination: style: cursor params: [before_id, after_id, limit] response_fields: [data, has_more, first_id, last_id] managed_agents: Sessions/events use next_page and prev_page cursors passed via the page parameter. request_tracing: header: request-id body_field: request_id notes: Every response includes a unique request-id header, mirrored as request_id in error bodies. On Claude Platform on AWS a second x-amzn-requestid header is returned for CloudTrail. error_envelope: shape: '{ "type": "error", "error": { "type": "...", "message": "..." }, "request_id": "..." }' ref: errors/anthropic-problem-types.yml rate_limit_signaling: headers: [retry-after] model: Token-bucket with cache-aware ITPM (cache reads excluded on most models); RPM/ITPM/OTPM limits per usage tier. ref: rate-limits/anthropic-rate-limits.yml streaming: style: server-sent-events events: [message_start, content_block_start, content_block_delta, content_block_stop, message_delta, message_stop, error, ping] notes: Errors can occur mid-stream after a 200; handle error events separately. content_type: application/json request_size_limits: messages: 32MB token_counting: 32MB batches: 256MB files: 500MB reversibility: grade: verified grade_basis: >- At least one write surface publishes BOTH a reversal operation and a stated window: cancelMessageBatch is documented as callable "any time before processing ends", and the batch results window is stated as 29 days from creation with a 24-hour processing expiry. Most other write surfaces publish a reversal path with NO stated window, and several publish no reversal at all — recorded honestly below rather than averaged away. docs: https://platform.claude.com/docs/en/build-with-claude/batch-processing surfaces: - resource: message batch write: createMessageBatch reversal: cancelMessageBatch window: Any time before processing ends. Cancellation is best-effort — the batch enters a `canceling` state and the system may complete in-progress, non-interruptible requests first, so a cancel may result in zero canceled requests. Check request_counts.canceled. window_stated: true grade: verified docs: https://platform.claude.com/docs/en/api/messages/batches/cancel - resource: message batch (expiry, not a reversal) write: createMessageBatch reversal: null window: Batches expire if processing does not complete within 24 hours; results are downloadable for 29 days after creation, after which the batch remains readable but its results do not. Expired requests are not billed. window_stated: true grade: verified note: A time bound, not an undo. Recorded because it is the window an agent must plan against. docs: https://platform.claude.com/docs/en/build-with-claude/batch-processing - resource: message batch (hard delete) write: createMessageBatch reversal: deleteMessageBatch window: null window_stated: false grade: documented note: Permanent. Delete is the opposite of a reversal here — it destroys the results, it does not restore anything. - resource: file write: createFile reversal: deleteFile window: null window_stated: false grade: documented note: >- Permanent delete with no published restore and no grace window. The soft alternative is expiry: set expires_in_seconds at upload and the file object reports expires_at. docs: https://platform.claude.com/docs/en/build-with-claude/files - resource: managed agent write: createAgent reversal: archiveAgent window: null window_stated: false grade: documented note: Archive is a soft state; Anthropic's docs do not state an un-archive operation or a restore window. - resource: managed agent session write: createSession reversal: archiveSession window: null window_stated: false grade: documented note: >- deleteSession also exists and is permanent — the webhook catalog states session.deleted leaves no object to fetch. Archive and delete are different actions; archive terminates the session (session.status_terminated). - resource: environment write: createEnvironment reversal: archiveEnvironment window: null window_stated: false grade: documented note: deleteEnvironment is permanent, including deleting an already-archived environment. - resource: workspace write: createWorkspace reversal: archiveWorkspace window: null window_stated: false grade: documented note: No published un-archive operation or window. Treat as one-way. - resource: organization invite write: createOrganizationInvite reversal: deleteOrganizationInvite window: Before acceptance only. Once the invite is accepted there is no invite left to revoke; removeOrganizationMember is the action instead. window_stated: true grade: verified - resource: workspace member write: addWorkspaceMember reversal: removeWorkspaceMember window: null window_stated: false grade: documented note: Removes workspace access only; the user remains in the organization. removeOrganizationMember is the wider, separate action. - resource: skill write: createSkill reversal: deleteSkill window: null window_stated: false grade: documented note: >- Versioned — createSkillVersion adds a version rather than overwriting, so rolling back to an earlier getSkillVersion is the practical reversal for a bad publish. Deleting the skill is not. - resource: message (inference) write: createMessage reversal: null window: null window_stated: false grade: na note: >- Inference is not reversible and Anthropic does not claim it is. A generated message cannot be un-generated, un-billed, or recalled. This is the honest answer for the API's highest-volume write, and an agent should treat spend as the irreversible consequence — cap it with a workspace spend limit or a Managed Agents session budget rather than expecting an undo. irreversible: - createMessage (inference and its token spend) - deleteFile - deleteMessageBatch - deleteSession / deleteEnvironment / memory store delete (webhook docs state these leave no object to fetch) spend_controls: - {control: workspace spend limit, docs: https://platform.claude.com/docs/en/api/rate-limits} - {control: Managed Agents session budget, docs: 'https://platform.claude.com/docs/en/managed-agents/budgets', note: 'A hard cap on session spend at public list rates; the session pauses with stop reason budget_reached instead of starting new model requests, and changing or removing the budget resumes it.'} dry_run_mode: supported: partial mechanism: countMessageTokens ref: sandbox/anthropic-sandbox.yml