> For clean Markdown of any page, append .md to the page URL. > For a complete documentation index, see https://docs.jambonz.org/reference/websocket-api/call-control/call-status/llms.txt. > For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.jambonz.org/_mcp/server. # call:status > > jambonz => websocket server A `call:status` message is sent by jambonz to the websocket server any time the call status changes | property | type | meaning | required | | ------------------------ | -------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------- | | type | string "call:status" | indicates this is an error notification from jambonz | yes | | msgid | string | unique message identifier | yes | | call\_sid | string | unique call identifier | yes | | b3 | string | open telemetry span identifier for this call (only provided if otel tracing is enabled) | no | | data | object | current call information | yes | | data.call\_status | string | one of 'trying', 'ringing', 'early-media', 'in-progress', 'completed', 'failed', 'no-answer', 'busy', 'queued' | yes | | data.sip\_reason | string | the reason phrase from the SIP status LINE (e.g. 'OK'), not the RFC 3326 `Reason` header | no | | data.sip\_reason\_header | string | the RFC 3326 `Reason` header of the SIP message that caused this status change, if it carried one (e.g. `Q.850;cause=18`). Carriers on ISDN/E1 PRI trunks put the authoritative disconnect cause here rather than in the status line. Parse tolerantly: the header is re-serialized in transit so optional whitespace around `;` is normalized, and repeated headers arrive comma-separated (split outside quotes, as `text="..."` may contain a comma) | no | ```json { "type": "call:status", "msgid": "eyvooFN3dRMpZ2ZxdRLvBm", "call_sid": "b5e39996-bd2f-4bda-b928-355147186a2a", "b3": "e72ef0d61bfb3e23c5e50c72496feb2e-6125806ded19bb18-1", "data": { "call_sid": "b5e39996-bd2f-4bda-b928-355147186a2a", "direction": "inbound", "from": "+441173185201", "to": "+441303763875", "call_id": "7ade3efb-7163-123b-e6ba-023fd61c5256", "sip_status": 200, "sip_reason": "OK", "sip_reason_header": "Q.850;cause=16", "call_status": "completed", "account_sid": "300be250-5a79-46bd-8393-45e7d26c2e34", "trace_id": "654c5323d6f907233a1069136b8a330e", "local_sip_address": "10.0.150.88:5070", "defaults": { "synthesizer": { "vendor": "microsoft", "language": "en-US", "voice": "en-US-JennyNeural" }, "recognizer": { "vendor": "microsoft", "language": "en-US" } } } } ```