> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.ada.cx/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.ada.cx/_mcp/server.

# Webhook: Proactive call answered

POST 

A webhook sent when a person answers a Proactive call and its conversation exists

Reference: https://docs.ada.cx/reference/conversations/proactive-call-answered-webhook

## Request

### Payload

- `type` (enum, optional) — The webhook event type. Each state of a Proactive call is its own type; the payload shape is the same for all five.
  - Allowed values: `v1.proactive_call.queued`, `v1.proactive_call.initiated`, `v1.proactive_call.answered`, `v1.proactive_call.machine_detected`, `v1.proactive_call.failed`
- `timestamp` (string, optional) — When the attempt reached the state, as an ISO 8601 date-time with a UTC offset. Fractional seconds are present only when the stored time has them.
- `data` (ProactiveCallWebhookEventData, optional) — The Proactive Attempt

## Types

### ProactiveCallWebhookEventData

The Proactive Attempt as it stands after the state change the webhook announces. `proactive_attempt_id` is the `id` that `POST /v2/conversations/proactive/` returned. `conversation_id` is set from `v1.proactive_call.answered` on and `failure_reason` only on `v1.proactive_call.failed`. Events are delivered independently: they can arrive out of order, and a call can reach its verdict without a `v1.proactive_call.initiated` event.

- `proactive_attempt_id` (string, required) — The ID of the Proactive Attempt
- `proactive_id` (string, required) — The ID of the Proactive the recipient is contacted with
- `channel` (string, required) — The Proactive's channel
- `state` (enum, required) — The state the attempt has reached
  - Allowed values: `queued`, `initiated`, `answered`, `machine_detected`, `failed`
- `recipient` (ProactiveRecipient, required)
- `language` (string, required, nullable) — The language the conversation is held in
- `metadata` (map from string to ProactiveCallWebhookEventDataMetadata, required) — The `metadata` the attempt was created with
- `conversation_id` (string, required, nullable) — The ID of the conversation the answered call opened; the conversation webhooks name the same ID. Null until a person answers.
- `failure_reason` (string, required, nullable) — Why the call ended without a person answering; null unless `state` is `failed`. One of `busy`, `no_answer`, `rejected`, `invalid_number`, `carrier_failure`, `capacity_exceeded` (your AI Agent's concurrent call limit was reached; retry with a new `Idempotency-Key`), `client_configuration` (your AI Agent cannot place calls as configured) or `internal_error`. Ada may add reasons.
- `created_at` (string, required) — The date and time the attempt was created
- `updated_at` (string, required) — The date and time the attempt reached `state`; equals the event `timestamp`
- `ai_agent_domain` (string, required) — The API domain of the AI Agent environment this webhook event is emitted from

### ProactiveRecipient

- `phone_number` (string, required) — The recipient's phone number in E.164 format (for example +14155550123).

### ProactiveCallWebhookEventDataMetadata