start | start | Opens a conversation. api_key may be omitted when the WebSocket handshake supplied Authorization: Bearer <key>. Voice mode requires audio; text mode omits it and requires the WebSocket transport. |
inputText | inputText | Commit a user turn in text mode. Dialt emits the ordinary asr, turn, text_delta, utterance, and done events without audio frames. |
reset | reset | |
setVoice | setVoice | |
toolResult | toolResult | |
toolDeferred | toolDeferred | Detach an eligible call from its voice turn while preserving managed job identity. |
toolProgress | toolProgress | |
toolPartialResult | toolPartialResult | Deliver a structured segment of an in-flight tool's eventual result without resolving the call. |
toolInteractionUpdate | toolInteractionUpdate | Host-side close of an open interaction (docs/client-tool-protocol.md §3a): the decision was resolved out-of-band, cancelled, or superseded by newer intent -- without completing the parent call. Stops the ask's queued or actively-speaking narration and tells the model the decision is closed. Always answered by toolInteractionUpdateAck; late/duplicate/unknown updates are rejected deterministically. |
toolCancelClient | toolCancelClient | |
playbackStopped | playbackStopped | |
ready | ready | |
silentMic | silentMic | |
turn | turn | |
asr | asr | |
injectContextAck | injectContextAck | Authoritative accepted/rejected acknowledgement for a correlated inject_context request. |
utterance | utterance | |
done | done | |
sessionEndRequested | sessionEndRequested | |
interrupted | interrupted | |
canceled | canceled | |
textDelta | textDelta | Streamed assistant text, sent as the model produces it (ahead of audio and the final utterance frame). |
permissionPending | permissionPending | A tool call declared requires_permission is held pending explicit user approval. |
permissionApproved | permissionApproved | A pending permission was approved and the held tool call ran. |
permissionRefused | permissionRefused | A pending permission was declined; the held tool call did not run. |
toolCall | toolCall | |
toolDeferredAck | toolDeferredAck | |
toolDeferredResume | toolDeferredResume | |
toolCancelServer | toolCancelServer | |
toolJobDeliveryFailed | toolJobDeliveryFailed | A queued background-job completion voiceover could not be delivered. The turn still closes with done; job_ids lists jobs whose spoken delivery is terminally failed (their results remain in conversation context and can be asked about), requeued lists jobs re-queued for one more proactive spoken attempt (a newer user turn may supersede it, as with any queued completion). |
toolJobNarration | toolJobNarration | Narration-lifecycle ack for a queued tool_partial_result `interaction` (docs/client-tool-protocol.md §3a). Scoped to interaction-kind jobs only -- a plain completion has no such wire-visible lifecycle. |
working | working | Dialt is blocking on a tool result with nothing audible (the silence after the spoken bridge, until the final reply's first audio), or that wait has ended. |
toolInteractionUpdateAck | toolInteractionUpdateAck | Deterministic answer to every toolInteractionUpdate. applied=false carries a stable reason: invalid_interaction_id, invalid_state, unknown_interaction (never seen, or from before a reconnect -- interaction state does not survive a resume), or already_closed (first close wins: cancel dismissed it, its call resolved, a newer ask replaced it, or a duplicate of this very frame -- a user turn superseding the ask's narration deliberately does NOT close the decision). |
voiceChanged | voiceChanged | |
error | error | |
webrtcIce | webrtcIce | Experimental. Sent over the signaling WebSocket right after a start frame carrying transport.kind webrtc. Build the RTCPeerConnection with these ice_servers, then send webrtcOffer. |
webrtcOffer | webrtcOffer | Experimental. Client's SDP offer, sent over the signaling WebSocket once the RTCPeerConnection is built with webrtcIce's servers. |
webrtcAnswer | webrtcAnswer | Experimental. Server's SDP answer to webrtcOffer. The call then lives on the peer connection; the signaling socket may drop afterwards without affecting it. |
webrtcBye | bye | Sent on the webrtc "control" data channel just before the server closes the peer connection — the webrtc transport's counterpart of a WebSocket close frame/code. |
microphoneAudio | microphoneAudio | |
assistantAudio | assistantAudio | |
ambience | ambience | |
interrupt | interrupt | Host-initiated stop (moderation, a "stop talking" button, programmatic interruption). Unlike reset, this only drops the in-flight reply — conversation context and endpointer state are left intact. No payload beyond type. |
setTools | setTools | Mid-session tool swap: agents that change capability by call phase no longer need a reconnect, which would destroy the conversation. |
setToolChoice | setToolChoice | Replace the effective tool_choice mid-session; applies from the next reply. one_shot: true reverts to the previous choice after the next user turn consumes the new one ("the next turn must use one of these"). An invalid value is rejected with an `error` frame (code invalid_tool_choice) and changes nothing. A mid-session setTools resets tool_choice to "auto" — re-apply it after swapping tools. |
triggerReply | triggerReply | Client-triggered reply. Silently ignored if a reply is already in flight — do not stack these. |
injectContext | injectContext | Text/context injection with authoritative delivery acknowledgement. Supply message_id to correlate inject_context_ack and typed-turn asr events. |
sessionClosingSoon | sessionClosingSoon | Warns the client shortly before the server closes the connection due to the session time limit (or scoped credential expiry) — gives the client a chance to wrap up, or to reconnect with start.resume_token once closed. |
lowCreditWarning | lowCreditWarning | API-key (paid) sessions only. Warns the client once when the account's remaining balance is running low, so the call doesn't just cut off mid-conversation when credit runs out. |
playbackReport | playbackReport | |