---
title: "TeXML Call Completed"
method: POST
path: "TexmlCallCompletedWebhook"
tags: ["Callbacks"]
---

# TeXML Call Completed

`POST TexmlCallCompletedWebhook` (webhook)

Webhook sent when a TeXML call is completed.
This webhook uses Telnyx headers (telnyx-timestamp, telnyx-signature-ed25519) that are compatible with Standard Webhooks specification for SDK generation. Custom validation logic can map these to standard webhook-timestamp and webhook-signature equivalents. See https://github.com/standard-webhooks/standard-webhooks for details.

## Headers

- `telnyx-timestamp` integer, required: Unix timestamp for replay attack prevention
- `telnyx-signature-ed25519` string, required: Ed25519 signature of timestamp|payload for verification

## Payload `application/x-www-form-urlencoded`

- TexmlCallCompletedWebhookSchema: Webhook sent when a TeXML call is completed.
  - `AccountSid` string, required: The unique identifier of the account (user_id).
  - `AnsweredTime` string, date-time: The time when the call was answered (only present when CallStatus is 'completed').
  - `CallControlId` string: The call control ID (only present when CallStatus is 'completed').
  - `CallDuration` string: The duration of the call in seconds (conditional, only present if start_time and end_time are available).
  - `CallInitiatedAt` string, date-time, required: The timestamp when the call was initiated.
  - `CallLegId` string: The call leg ID (only present when CallStatus is 'completed').
  - `CallQualityStats` string: JSON-encoded call quality statistics (only present when CallStatus is 'completed').
  - `CallSessionId` string: The call session ID (only present when CallStatus is 'completed').
  - `CallSid` string, required: The unique identifier of the call (call_control_id).
  - `CallSidLegacy` string, required: Legacy call identifier, same as CallSid.
  - `CallStatus` 'completed' | 'busy' | 'no-answer' | 'canceled' | 'failed', required: The status of the call.
  - `CallbackSource` 'call-progress-events', required: The source of the callback.
  - `CallerId` string: The display name of the caller.
  - `ConnectionId` string, required: The unique identifier of the connection.
  - `DialCallDuration` string: The duration of the dialed call in seconds (conditional, only present in hangup action callbacks for Dial).
  - `DialCallSid` string: The unique identifier of the dialed call (conditional, only present in hangup action callbacks for Dial).
  - `DialCallSidLegacy` string: Legacy dialed call identifier, same as DialCallSid (conditional, only present in hangup action callbacks for Dial).
  - `DialCallStatus` 'completed' | 'busy' | 'no-answer' | 'canceled' | 'failed': The status of the dialed call (conditional, only present in hangup action callbacks for Dial).
  - `EndTime` string, date-time: The time when the call ended (only present when CallStatus is 'completed').
  - `ErrorCode` string: Error code if an error occurred (conditional).
  - `ErrorMessage` string: Error message if an error occurred (conditional).
  - `From` string, required: The phone number or SIP address of the caller.
  - `HangupCause` string: The reason for call hangup (only present when CallStatus is 'completed').
  - `HangupSource` string: The source of the hangup (conditional, only present for hangup events).
  - `OccurredAt` string, date-time: The timestamp when the event occurred (only present when CallStatus is 'completed').
  - `OrganizationId` string: The organization ID (only present when CallStatus is 'completed').
  - `ParentCallSid` string: The unique identifier of the parent call that initiated this outbound call (conditional, only present for outbound calls initiated via Dial).
  - `ParentCallSidLegacy` string: Legacy parent call identifier, same as ParentCallSid (conditional, only present for outbound calls initiated via Dial).
  - `RecordingDuration` string: The duration of the recording in seconds (conditional, only present if recording was enabled).
  - `RecordingUrl` string: The URL where the call recording can be accessed (conditional, only present if recording was enabled).
  - `SequenceNumber` integer, required: The sequence number of the event.
  - `ShakenStirAttestation` string: SHAKEN/STIR attestation level (conditional, only present if shaken_stir_data is available).
  - `ShakenStirValidated` boolean: Whether SHAKEN/STIR validation passed (conditional, only present if shaken_stir_data is available).
  - `SipHangupCause` string: The SIP hangup cause code (conditional, only present for hangup events).
  - `StartTime` string, date-time: The time when the call started (only present when CallStatus is 'completed').
  - `Timestamp` string, date-time, required: The UTC timestamp when the webhook was generated.
  - `To` string, required: The phone number or SIP address that was called.
  - `UserId` string: The user ID (only present when CallStatus is 'completed').

## Acknowledgement `200`

The server must return an HTTP 200, otherwise we will reattempt delivery at the failover webhook URL.

---

[API](https://skmtc.dev/team-telnyx/apis/telnyx-api.md) - [All operations](https://skmtc.dev/team-telnyx/apis/telnyx-api/llms.txt) - [OpenAPI document](https://skmtc.dev/team-telnyx/apis/telnyx-api/revisions/0f17b8167873?raw)
