Skip to main content
WSS
Session Created
type:object

First frame Telnyx sends, once the conversation is ready. Every identifier key is always present, null where not known — a client matching on the shape does not have to distinguish "absent" from "not known yet". Keys describing a call are null for a conversation that is not a call. Frames you send before this one are refused with an error.

Session Ended
type:object

Last frame Telnyx sends before closing the connection. It is not sent when the connection was already unusable — a refused peer or a peer that stopped accepting frames is closed without it.

Conversation Item Created
type:object

A message was added to the conversation history — a caller utterance, an assistant reply, a tool call or a tool result. content varies by role: a text part for ordinary messages, a tool_calls part for an assistant turn that calls tools, and a text part carrying tool_call_id for a tool result. status is incomplete for an assistant item that is about to be streamed, and completed once it is final.

Conversation Item Deleted
type:object

An item was removed from the conversation history, for example when an assistant turn is discarded after a barge-in.

Participant Added
type:object

A third party joined a multi-participant conversation. Both human parties on a call are reported as role: "user" in the transcript, so this transition is what tells a client whose utterances start being possible. participant.id is the same identifier transcript items carry in item.participant_id.

Participant Removed
type:object

A party left a multi-participant conversation.

Response Created
type:object

The assistant started generating a response. response.id correlates every subsequent streaming frame for this turn.

Response Output Item Added
type:object

An output item was opened on the response being generated. It is incomplete until the turn finishes.

Response Content Part Added
type:object

A content part was opened on an output item. response.text.delta frames then fill it in.

Response Text Delta
type:object

An incremental chunk of the assistant's reply. Concatenate delta values sharing the same item_id and content_index to rebuild the text.

Call Answered
type:object

The underlying call was answered.

Call Hangup
type:object

The underlying call was hung up.

DTMF Received
type:object

The caller pressed a DTMF digit.

Machine Detection Ended
type:object

Answering-machine detection finished. Standard and premium detection are reported identically — which engine produced the result is not something a monitoring client should have to branch on.

Transfer Completed
type:object

A transfer out of this conversation succeeded, whether by bridging the call or by a completed SIP REFER. Which keys are present depends on the mechanism: a bridge carries only target, while a REFER also carries the leg it was sent on and the SIP response. Keys that do not apply are omitted rather than sent as null.

Transfer Failed
type:object

A SIP REFER transfer out of this conversation failed.

Assistant Handoff
type:object

The conversation was handed to a different assistant. The socket is not re-dialled against the new assistant's websocket_settings — that would drop events across the switch — so this event is how a monitoring client learns the conversation changed hands. A handoff that cascades through several assistants is reported once, with the assistant it landed on.

Delegation Created
type:object

The assistant is asking your server to answer a delegation. Only sent when the assistant runs delegation_settings.mode: "client". Answer it with a session.delegation.completed frame carrying the same id. request is null for a GPT-Live delegation — the model raises one with no text of its own, and you work from the conversation events this socket is already streaming you. If you do not answer in time, or there is no socket connected when the delegation is raised, the assistant tells the caller it cannot look things up right now and carries on.

Error
type:object

Sent when a frame you sent is invalid or cannot be accepted right now. The connection is closed after ten consecutive invalid frames, and immediately on an oversized one. Rate-limited and refused frames are answered and discarded without counting toward that limit.

Create Conversation Item
type:object

Inject a message into the conversation. A user item triggers an answer exactly as a spoken turn does — the assistant owns turn-taking, so there is no response.create verb. An assistant item is added to the history without provoking a reply. Only text content parts are read: input_text, output_text and text. Parts of any other type are ignored, and an item whose text is empty after trimming is rejected.

Delegation Completed
type:object

Answer a session.delegation.created frame. Text only — this socket offers no tool vocabulary. id must be the id from the delegation being answered; an id with no delegation waiting on it resolves nothing. An output that is empty after trimming is rejected, because the assistant has already told the caller it is checking and appending nothing would be dead air.