Anthropic · AsyncAPI Specification

Anthropic Webhooks

Version

View Spec View on GitHub Artificial IntelligenceClaudeFoundation ModelsLarge Language ModelsMachine-LearningMCPAgentsAsyncAPIEvents

AsyncAPI Specification

Raw ↑
generated: '2026-08-27'
method: searched
source: https://platform.claude.com/docs/en/managed-agents/webhooks
docs: https://platform.claude.com/docs/en/managed-agents/webhooks
api_reference: https://platform.claude.com/docs/en/api/beta/webhooks
notes: >-
  Anthropic ships two distinct event surfaces and they are not interchangeable.
  Server-Sent Events on the Messages API and on Managed Agents session streams
  carry the real-time token/turn traffic and are modelled in
  asyncapi/anthropic-asyncapi.yml. Webhooks carry MAJOR STATE CHANGES only, for
  when you are not holding a connection open. Anthropic publishes no AsyncAPI
  document for either surface; this is the harvested webhook catalog, not a
  generated spec.
delivery:
  style: http-post
  registration: Console only — Manage > Webhooks (https://platform.claude.com/settings/workspaces/default/webhooks).
    There is no public API to register an endpoint.
  endpoint_requirements: HTTPS on port 443 with a publicly resolvable hostname.
  payload_shape: >-
    Events carry the event `type` and `id`, NOT the full object. The consumer must
    fetch the object with a GET after receiving the event. Anthropic states this is
    deliberate — it avoids delivering stale data on retries and keeps each delivery
    small.
  signature:
    headers: [webhook-id, webhook-timestamp, webhook-signature]
    secret_prefix: whsec_
    secret_bytes: 32
    secret_shown_once: true
    env_var: ANTHROPIC_WEBHOOK_SIGNING_KEY
    sdk_helper: client.beta.webhooks.unwrap() — verifies the signature and parses the
      event in one step; throws on an invalid signature or a payload older than 5 minutes.
    max_payload_age_minutes: 5
  terminal_events: >-
    *.deleted events have no object left to fetch; the docs say to treat the event
    itself as final rather than issuing a GET.
event_groups:
- group: session
  scope: Managed Agents sessions
  events:
  - {type: session.status_run_started, trigger: Agent execution started; fires at every session status transition to running.}
  - {type: session.status_idled, trigger: Agent awaiting input — a tool permission approval or a new user message.}
  - {type: session.budget_reached, trigger: The session reached its budget and paused. Fires at most once per budget value; changing the budget arms it again.}
  - {type: session.status_rescheduled, trigger: A transient error occurred and the session is retrying automatically.}
  - {type: session.status_terminated, trigger: The session terminated — unrecoverable error, or it was archived.}
  - {type: session.thread_created, trigger: New multiagent thread opened, or the session advisor is being consulted.}
  - {type: session.thread_idled, trigger: An agent in a multiagent interaction is waiting for input.}
  - {type: session.thread_terminated, trigger: A multiagent thread terminated. Child threads only; the primary thread surfaces only as session.status_terminated.}
  - {type: session.outcome_evaluation_ended, trigger: Outcome evaluation for a single iteration completed.}
  - {type: session.updated, trigger: Session properties changed.}
  - {type: session.deleted, trigger: Session permanently deleted. Terminal — no object to fetch.}
- group: vault
  scope: Credential vaults
  events:
  - {type: vault.created, trigger: Vault created.}
  - {type: vault.archived, trigger: Vault archived; a vault_credential.archived is also emitted per credential.}
  - {type: vault.deleted, trigger: Vault deleted; a vault_credential.deleted is also emitted per credential. Terminal.}
  - {type: vault_credential.created, trigger: Credential created.}
  - {type: vault_credential.archived, trigger: Credential archived, directly or via vault archival.}
  - {type: vault_credential.deleted, trigger: Credential deleted, directly or via vault deletion. Terminal.}
  - {type: vault_credential.refresh_failed, trigger: An mcp_oauth credential cannot be refreshed (invalid refresh token, or irrecoverable OAuth server error).}
- group: agent
  scope: Managed Agents agent resources
  events:
  - {type: agent.created, trigger: Agent created.}
  - {type: agent.updated, trigger: A new version of the agent was published. Updates that do not create a version do not fire.}
  - {type: agent.archived, trigger: Agent archived.}
  - {type: agent.deleted, trigger: Agent permanently deleted. Terminal.}
- group: deployment
  scope: Scheduled deployments
  events:
  - {type: deployment.created, trigger: Scheduled deployment created.}
  - {type: deployment.updated, trigger: Deployment properties changed.}
  - {type: deployment.paused, trigger: Paused by request, or automatically when a scheduled run fails unrecoverably. Rate limits do not pause it.}
  - {type: deployment.unpaused, trigger: Deployment unpaused, resuming its schedule.}
  - {type: deployment.archived, trigger: Deployment archived, directly or because its agent was archived.}
  - {type: deployment.deleted, trigger: Deployment permanently deleted. Terminal.}
- group: deployment_run
  scope: Scheduled deployment runs
  events:
  - {type: deployment_run.started, trigger: A scheduled run started. Manual runs do not emit deployment_run events.}
  - {type: deployment_run.succeeded, trigger: A scheduled run created its session. Carries the same data.id as the run's started event.}
  - {type: deployment_run.failed, trigger: A scheduled run did not create a session. Fetch the deployment run for error details.}
- group: environment
  scope: Managed Agents environments
  events:
  - {type: environment.created, trigger: Environment created.}
  - {type: environment.updated, trigger: Environment updated with at least one changed field. A no-op update emits nothing.}
  - {type: environment.archived, trigger: Environment archived. Re-archiving emits nothing.}
  - {type: environment.deleted, trigger: Environment deleted, including delete of an already-archived environment. Terminal.}
- group: memory_store
  scope: Agent memory stores
  events:
  - {type: memory_store.created, trigger: Memory store created, by you or by an Anthropic-operated process cloning an existing store.}
  - {type: memory_store.archived, trigger: Memory store archived. Re-archiving emits nothing.}
  - {type: memory_store.deleted, trigger: Memory store deleted; cascades to memories and versions without per-memory events. Terminal.}
event_count: 38
no_event_emitters:
- Environment work items (self-hosted sandboxes)
- Individual memories and memory versions
asyncapi_published: false
asyncapi_note: >-
  Anthropic publishes no AsyncAPI document for the webhook surface. The AsyncAPI
  in this repo (asyncapi/anthropic-asyncapi.yml) models the Messages SSE stream and
  was authored by API Evangelist, not by Anthropic.

Work with this as data

Every AsyncAPI spec here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for asyncapi

4 MCP tools reach this
  • find_asyncapisBrowse and filter every AsyncAPI spec in the catalog.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This AsyncAPI spec
curl "https://apis.io/api/v1/asyncapis/anthropic-webhooks"
All asyncapi
curl "https://apis.io/api/v1/asyncapis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.