> ## Documentation Index
> Fetch the complete documentation index at: https://docs.agnost.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Retell

> Send analyzed Retell calls to Agnost AI

Agnost AI accepts Retell's standard `call_analyzed` webhook and turns the final transcript into a conversation with caller/agent events and nested tool calls. Retell does not expose a documented OTLP export, so use this webhook instead of Retell Live Monitoring or Analytics.

## Configure the webhook

Configure the account-level or agent-level webhook URL in Retell:

```text theme={null}
https://api.agnost.ai/api/voice/v1/webhooks/retell?org_id=<your-agnost-org-id>
```

Enable the `call_analyzed` event. Agnost acknowledges other Retell lifecycle and transcript-update events without ingesting them.

Get your organization ID from [app.agnost.ai](https://app.agnost.ai). It must be a UUID.

## Data mapping

* Retell `call_id` becomes the Agnost conversation ID.
* `metadata.user_id` or `retell_llm_dynamic_variables.user_id` becomes the user ID when supplied.
* Phone calls fall back to the inbound caller or outbound destination number. Anonymous web calls fall back to `call_id`.
* `agent_name`, then `agent_id`, becomes the agent name.
* `transcript_object` preserves word timestamps. Agnost falls back to the plain `transcript` field.
* `call_analysis`, latency, status, timing, and safe recording/log URLs become conversation metadata.
* Retell's combined cost is converted from cents to USD and attached to one event.
* Tool invocations and results in `transcript_with_tool_calls` become nested tool events.

Agnost never stores Retell's call `access_token`.

Retell recording and log URLs may expire when signed URLs are enabled in Retell. Agnost stores the URL supplied with the webhook; it does not refresh expired Retell URLs.

## Delivery behavior

Successful analyzed calls return `200`. Events that Agnost intentionally ignores, and analyzed calls without a usable transcript, return `204`. Invalid payloads return `400` or `422`; downstream ingestion failures return `502` so Retell can retry.

Repeated successful deliveries map to the same conversation but can duplicate events. Avoid replaying a webhook that already received a `2xx` response.

Retell signs webhooks with `X-Retell-Signature`, but direct signature verification requires storing each organization's Retell webhook key. This initial integration follows the same organization-routing trust model as the existing voice webhook adapters and does not verify that signature. Treat the webhook URL as sensitive until per-organization signature verification is available.

## Next steps

* [Conversations](/using-conversations): review complete Retell calls.
* [Events](/using-events): inspect each caller/agent exchange and tool call.
* [Intents](/using-intents): understand why callers contacted the agent.
