Webhooks push data to your application as events happen — no polling required.Documentation Index
Fetch the complete documentation index at: https://documentation.uponai.com/llms.txt
Use this file to discover all available pages before exploring further.
Event Types
Voice Call Events
| Event | Description | Payload |
|---|---|---|
call_started | New call begins | Basic call information |
call_ended | Call completes, transfers, or errors | Full call object (excluding call_analysis) |
call_analyzed | Call analysis complete | Full call data including call_analysis |
transcript_updated | Turn-taking transcript updates + final update on call end | Full call data + transcript_with_tool_calls |
transfer_started | Transfer initiated | Full call data + transfer_destination and transfer_option |
transfer_bridged | Transfer successfully bridged | Full call data + transfer_destination and transfer_option |
transfer_cancelled | Transfer cancelled or failed | Full call data + transfer_destination and transfer_option |
transfer_ended | Transfer leg ends | Full call data |
If a call did not connect (e.g.
dial_failed, dial_no_answer, dial_busy), call_started will NOT be triggered. call_ended and call_analyzed will still fire.Chat Events
| Event | Description | Payload |
|---|---|---|
chat_started | New chat begins | Basic chat information |
chat_ended | Chat completes or errors | Full chat object (excluding chat_analysis) |
chat_analyzed | Chat analysis complete | Full chat data including chat_analysis |
Webhook Behavior
- Timeout: 10 seconds. If no 2xx response is received, retried up to 3 times.
- Ordering: Events fire in order but are non-blocking. A failed
call_startedwon’t preventcall_endedfrom firing. - Expected response: Return a
2xxstatus code. No body required.
Event Filtering
Limit which events are delivered per agent using thewebhook_events field when creating or updating an agent.
| Agent type | Default events |
|---|---|
| Voice | call_started, call_ended, call_analyzed |
| Chat | chat_started, chat_ended, chat_analyzed |
Webhook Types
| Type | Setup | Scope |
|---|---|---|
| Account-level | Dashboard → Webhooks tab | All agents under your account |
| Agent-level | webhook_url field on agent | That agent only. When set, account-level webhook will NOT fire for that agent. |
Sample Payloads
call_ended payload:
transfer_started payload:
Verify Webhooks
All requests include anx-retell-signature header (HMAC-SHA256). Verify using your UponAI API key:
Node
100.20.5.228.
Local Testing
Use ngrok to expose a local endpoint for webhook testing during development.Privacy
If you enable Opt-Out of Personal and Sensitive Data Storage, transcripts and recordings won’t be stored post-call. However, they remain accessible via webhooks for up to 10 minutes via therecording_url field.