Meeting Session agent stream
Bidirectional, customer-facing stream for one account-owned, non-terminal Meeting Session. This is not a provider media or assistant loopback socket.
{
"action": "speak",
"text": "Welcome to the meeting.",
"voice": "Telnyx.KokoroTTS.af_heart",
"interrupt": true
}{
"action": "stop_speaking"
}{
"action": "send_chat",
"text": "The notes will be shared after the meeting."
}{
"kind": "event",
"seq": 42,
"type": "session.status_changed",
"payload": {
"status": "active",
"status_detail": null,
"recording": false
},
"occurred_at": "2026-07-30T15:04:05.000Z"
}{
"kind": "event",
"type": "transcript.segment",
"payload": {
"seq": 87,
"text": "We can begin now.",
"confidence": 0.97,
"speaker_label": "Casey",
"relative_ts": 12.45
},
"occurred_at": "2026-07-30T15:04:17.450Z"
}{
"kind": "transcript",
"seq": 87,
"text": "We can begin now.",
"confidence": 0.97,
"speaker_label": "Casey",
"relative_ts": 12.45,
"occurred_at": "2026-07-30T15:04:17.450Z"
}{
"kind": "truncated",
"store": "events"
}{
"kind": "error",
"code": "invalid_frame",
"message": "frame must be a valid action command"
}Identifier of the Meeting Session owned by the authenticated account.
Telnyx API v2 key sent in the Authorization upgrade header.
Telnyx API v2 key using the Bearer scheme (the production gateway
requires the exact Bearer capitalization), exactly one ASCII space,
and a non-empty token containing no ASCII control or whitespace
character (U+0000 through U+0020), comma, or DEL (U+007F).
Example uses a fake value: Bearer KEY_FAKE_EXAMPLE_ONLY.
Bearer KEY_FAKE_EXAMPLE_ONLYEvent-store cursor. Catch-up returns stored events whose top-level
seq is greater than this value. Missing or non-finite values are
treated as 0.
Transcript-store cursor. Catch-up returns transcript segments whose
seq is greater than this value. Missing or non-finite values are
treated as 0.
Synthesizes text and plays it into the meeting. Set interrupt to stop
current speech before playing the new utterance. No success acknowledgement
is sent.
Stops audio currently being spoken by the meeting bot.
Sends a text chat message into the meeting.
Durable event replayed from the event store after connection. Unlike a live
event frame, this shape always contains the stored top-level seq.
Best-effort live bus event. The server adds kind: event and spreads the bus
envelope. The top-level seq is optional and is normally absent. The example
shows a live transcript event; its payload embeds the durable transcript
sequence number even though the frame has no top-level event-store sequence.
Durable transcript segment replayed from the transcript store. This
standalone shape is used for transcript catch-up; live transcript segments
arrive as LiveEventFrame messages with type transcript.segment.
More than 1,000 records matched the supplied cursor in the named store. The server fetched up to 1,001, sent the first 1,000, and withheld at least one. Exactly 1,000 matching records produce no marker. Reconnect using the last sequence number received for that store as its corresponding cursor.
Error produced after the WebSocket has been established. invalid_frame
covers binary frames, malformed JSON, and commands that do not match the
strict command schemas. command_queue_full means eight commands are
already active or queued. Other listed values are command-processing errors.
Handshake failures are HTTP responses, not this frame.
Was this page helpful?
{
"action": "speak",
"text": "Welcome to the meeting.",
"voice": "Telnyx.KokoroTTS.af_heart",
"interrupt": true
}{
"action": "stop_speaking"
}{
"action": "send_chat",
"text": "The notes will be shared after the meeting."
}{
"kind": "event",
"seq": 42,
"type": "session.status_changed",
"payload": {
"status": "active",
"status_detail": null,
"recording": false
},
"occurred_at": "2026-07-30T15:04:05.000Z"
}{
"kind": "event",
"type": "transcript.segment",
"payload": {
"seq": 87,
"text": "We can begin now.",
"confidence": 0.97,
"speaker_label": "Casey",
"relative_ts": 12.45
},
"occurred_at": "2026-07-30T15:04:17.450Z"
}{
"kind": "transcript",
"seq": 87,
"text": "We can begin now.",
"confidence": 0.97,
"speaker_label": "Casey",
"relative_ts": 12.45,
"occurred_at": "2026-07-30T15:04:17.450Z"
}{
"kind": "truncated",
"store": "events"
}{
"kind": "error",
"code": "invalid_frame",
"message": "frame must be a valid action command"
}