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

# call.ended

> Read the call.ended data payload and its fields.

`call.ended` fires when a call involving your agent ends. `status` is `completed`, `no-answer`, `canceled`, `busy`, or `failed`, and `ended_at` is set.

## Read the payload

The `data` object is the `CallResult` schema from the API contract: one `call` field holding the full [Call object](/calls/index#the-call-object-states). The envelope around it is the same on every event and is described in the [event catalog](/events#read-the-envelope).

| Field | Meaning |
| - | - |
| `call.id` | Call ID |
| `call.chat_id` | The individual chat that carries the call |
| `call.from` | The caller's `id`, `handle`, and `kind` |
| `call.to` | One recipient with `id`, `handle`, and `kind` |
| `call.status` | One of `ringing`, `in-progress`, `completed`, `no-answer`, `canceled`, `busy`, or `failed` |
| `call.revision` | Increases on every state change |

## Handle the event

Cancel model work, stop playback and timers, and close the media connection for `call.id`. `status` names the outcome in Twilio's words. Never revive an ended call.

## Next steps

* [End and release resources](/calls/index#ending-a-call)
* [Read the call.created event](/events/call-created)
* [Choose an event type](/events)
