#[non_exhaustive]pub enum ServerEvent {
Show 31 variants
Error {
error: ServerErrorBody,
},
SessionCreated {
session: RealtimeSessionInfo,
},
SessionUpdated {
session: SessionConfig,
},
ConversationCreated {
conversation: RealtimeConversation,
},
ConversationItemCreated {
item: RealtimeConversationItem,
},
ConversationItemDeleted {
item_id: String,
},
ConversationItemRetrieved {
item: RealtimeConversationItem,
},
InputAudioTranscriptionCompleted {
item_id: String,
content_index: Option<u64>,
transcript: String,
},
InputAudioTranscriptionFailed {
item_id: String,
content_index: Option<u64>,
error: ServerErrorBody,
},
InputAudioBufferCommitted {
item_id: String,
},
InputAudioBufferCleared,
InputAudioBufferSpeechStarted {
audio_start_ms: Option<u64>,
item_id: Option<String>,
},
InputAudioBufferSpeechStopped {
audio_end_ms: Option<u64>,
item_id: Option<String>,
},
ResponseOutputItemAdded {
response_id: String,
output_index: u64,
item: RealtimeConversationItem,
},
ResponseOutputItemDone {
response_id: String,
output_index: u64,
item: RealtimeConversationItem,
},
ResponseContentPartAdded {
response_id: String,
item_id: String,
output_index: u64,
content_index: u64,
part: ItemContent,
},
ResponseContentPartDone {
response_id: String,
item_id: String,
output_index: u64,
content_index: u64,
part: ItemContent,
},
ResponseCreated {
response: RealtimeResponse,
},
ResponseDone {
response: RealtimeResponse,
},
ResponseCancelled {
response: RealtimeResponse,
},
ResponseTextDelta {
response_id: String,
item_id: String,
output_index: Option<u64>,
content_index: Option<u64>,
delta: String,
},
ResponseTextDone {
response_id: String,
item_id: String,
output_index: Option<u64>,
content_index: Option<u64>,
text: Option<String>,
},
ResponseAudioDelta {
response_id: String,
item_id: String,
output_index: Option<u64>,
content_index: Option<u64>,
delta: String,
},
ResponseAudioDone {
response_id: String,
item_id: String,
output_index: Option<u64>,
content_index: Option<u64>,
},
ResponseAudioTranscriptDelta {
response_id: String,
item_id: String,
output_index: Option<u64>,
content_index: Option<u64>,
delta: String,
},
ResponseAudioTranscriptDone {
response_id: String,
item_id: String,
output_index: Option<u64>,
content_index: Option<u64>,
transcript: String,
},
ResponseFunctionCallArgumentsDone {
response_id: String,
output_index: Option<u64>,
name: String,
arguments: String,
},
ResponseFunctionCallSimpleBrowser {
name: String,
session: Option<Value>,
},
RateLimitsUpdated {
rate_limits: Vec<RealtimeRateLimit>,
},
Heartbeat,
Unknown,
}realtime only.Expand description
A server event, tagged by type.
Extra fields on a known event are ignored. Unknown event types deserialize
as ServerEvent::Unknown so a newer server cannot tear down an otherwise
healthy session. The enum is non-exhaustive because the server protocol can
add event types independently of this crate.
Variants (Non-exhaustive)§
This enum is marked as non-exhaustive
Error
Server-side error (most are recoverable; the session stays open).
Fields
error: ServerErrorBodyError detail body.
SessionCreated
session.created — session established with effective server defaults.
Fields
session: RealtimeSessionInfoServer-created session metadata.
SessionUpdated
session.updated — confirms a session.update.
Fields
session: SessionConfigEffective server-side session configuration.
ConversationCreated
conversation.created — one per session.
Fields
conversation: RealtimeConversationNewly created conversation metadata.
ConversationItemCreated
conversation.item.created.
Fields
item: RealtimeConversationItemThe conversation item that was created.
ConversationItemDeleted
conversation.item.deleted.
ConversationItemRetrieved
conversation.item.retrieved.
Fields
item: RealtimeConversationItemRetrieved conversation item.
InputAudioTranscriptionCompleted
conversation.item.input_audio_transcription.completed.
Fields
InputAudioTranscriptionFailed
conversation.item.input_audio_transcription.failed.
Fields
error: ServerErrorBodyError detail body.
InputAudioBufferCommitted
input_audio_buffer.committed.
InputAudioBufferCleared
input_audio_buffer.cleared.
InputAudioBufferSpeechStarted
input_audio_buffer.speech_started (server-VAD only).
Fields
InputAudioBufferSpeechStopped
input_audio_buffer.speech_stopped (server-VAD only).
Fields
ResponseOutputItemAdded
response.output_item.added — a response output item began streaming.
Fields
item: RealtimeConversationItemNewly added output item.
ResponseOutputItemDone
response.output_item.done — a response output item finished.
Fields
item: RealtimeConversationItemFinal output item.
ResponseContentPartAdded
response.content_part.added — a content part began streaming.
Fields
part: ItemContentNewly added content part.
ResponseContentPartDone
response.content_part.done — a content part finished streaming.
Fields
part: ItemContentFinal content part.
ResponseCreated
response.created.
Fields
response: RealtimeResponseThe response object.
ResponseDone
response.done — final state + usage. Always emitted.
Fields
response: RealtimeResponseThe final response object.
ResponseCancelled
response.cancelled — confirms cancellation and carries final state.
Fields
response: RealtimeResponseThe cancelled response object.
ResponseTextDelta
response.text.delta — incremental model text.
Fields
ResponseTextDone
response.text.done — final text for one content part.
Fields
ResponseAudioDelta
response.audio.delta — base64 24 kHz, mono PCM chunk.
Fields
ResponseAudioDone
response.audio.done.
Fields
ResponseAudioTranscriptDelta
response.audio_transcript.delta — incremental transcript text.
Fields
ResponseAudioTranscriptDone
response.audio_transcript.done — final transcript.
Fields
ResponseFunctionCallArgumentsDone
response.function_call_arguments.done — completed tool call.
Fields
ResponseFunctionCallSimpleBrowser
response.function_call.simple_browser — video link triggered search.
Fields
RateLimitsUpdated
rate_limits.updated — current request quota information.
Fields
rate_limits: Vec<RealtimeRateLimit>Current limits reported by the server.
Heartbeat
heartbeat — keepalive (every ~30s).
Unknown
A valid event type introduced by a newer server.
The event payload is intentionally not retained because it has no stable schema yet. Applications should use a wildcard match arm and upgrade the crate when they need the new event.
Trait Implementations§
Source§impl Clone for ServerEvent
impl Clone for ServerEvent
Source§fn clone(&self) -> ServerEvent
fn clone(&self) -> ServerEvent
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more