pub enum ServerEvent {
Show 47 variants
SessionCreated {
event_id: String,
session: Box<SessionConfig>,
},
SessionUpdated {
event_id: String,
session: Box<SessionConfig>,
},
ConversationCreated {
conversation: Conversation,
event_id: String,
},
ConversationItemCreated {
event_id: String,
item: RealtimeConversationItem,
previous_item_id: Option<String>,
},
ConversationItemAdded {
event_id: String,
item: RealtimeConversationItem,
previous_item_id: Option<String>,
},
ConversationItemDone {
event_id: String,
item: RealtimeConversationItem,
previous_item_id: Option<String>,
},
ConversationItemDeleted {
event_id: String,
item_id: String,
},
ConversationItemRetrieved {
event_id: String,
item: RealtimeConversationItem,
},
ConversationItemTruncated {
audio_end_ms: u32,
content_index: u32,
event_id: String,
item_id: String,
},
InputAudioTranscriptionCompleted {
content_index: u32,
event_id: String,
item_id: String,
transcript: String,
usage: TranscriptionUsage,
logprobs: Option<Vec<LogProbProperties>>,
},
InputAudioTranscriptionDelta {
event_id: String,
item_id: String,
content_index: Option<u32>,
delta: Option<String>,
logprobs: Option<Vec<LogProbProperties>>,
},
InputAudioTranscriptionFailed {
content_index: u32,
error: TranscriptionError,
event_id: String,
item_id: String,
},
InputAudioTranscriptionSegment {
id: String,
content_index: u32,
end: f32,
event_id: String,
item_id: String,
speaker: String,
start: f32,
text: String,
},
InputAudioBufferCleared {
event_id: String,
},
InputAudioBufferCommitted {
event_id: String,
item_id: String,
previous_item_id: Option<String>,
},
InputAudioBufferSpeechStarted {
audio_start_ms: u32,
event_id: String,
item_id: String,
},
InputAudioBufferSpeechStopped {
audio_end_ms: u32,
event_id: String,
item_id: String,
},
InputAudioBufferTimeoutTriggered {
audio_end_ms: u32,
audio_start_ms: u32,
event_id: String,
item_id: String,
},
InputAudioBufferDtmfEventReceived {
event: String,
received_at: i64,
},
OutputAudioBufferStarted {
event_id: String,
response_id: String,
},
OutputAudioBufferStopped {
event_id: String,
response_id: String,
},
OutputAudioBufferCleared {
event_id: String,
response_id: String,
},
ResponseCreated {
event_id: String,
response: Box<RealtimeResponse>,
},
ResponseDone {
event_id: String,
response: Box<RealtimeResponse>,
},
ResponseOutputItemAdded {
event_id: String,
item: RealtimeConversationItem,
output_index: u32,
response_id: String,
},
ResponseOutputItemDone {
event_id: String,
item: RealtimeConversationItem,
output_index: u32,
response_id: String,
},
ResponseContentPartAdded {
content_index: u32,
event_id: String,
item_id: String,
output_index: u32,
part: ResponseContentPart,
response_id: String,
},
ResponseContentPartDone {
content_index: u32,
event_id: String,
item_id: String,
output_index: u32,
part: ResponseContentPart,
response_id: String,
},
ResponseOutputTextDelta {
content_index: u32,
delta: String,
event_id: String,
item_id: String,
output_index: u32,
response_id: String,
},
ResponseOutputTextDone {
content_index: u32,
event_id: String,
item_id: String,
output_index: u32,
response_id: String,
text: String,
},
ResponseOutputAudioDelta {
content_index: u32,
delta: String,
event_id: String,
item_id: String,
output_index: u32,
response_id: String,
},
ResponseOutputAudioDone {
content_index: u32,
event_id: String,
item_id: String,
output_index: u32,
response_id: String,
},
ResponseOutputAudioTranscriptDelta {
content_index: u32,
delta: String,
event_id: String,
item_id: String,
output_index: u32,
response_id: String,
},
ResponseOutputAudioTranscriptDone {
content_index: u32,
event_id: String,
item_id: String,
output_index: u32,
response_id: String,
transcript: String,
},
ResponseFunctionCallArgumentsDelta {
call_id: String,
delta: String,
event_id: String,
item_id: String,
output_index: u32,
response_id: String,
},
ResponseFunctionCallArgumentsDone {
arguments: String,
call_id: String,
event_id: String,
item_id: String,
name: String,
output_index: u32,
response_id: String,
},
ResponseMcpCallArgumentsDelta {
delta: String,
event_id: String,
item_id: String,
output_index: u32,
response_id: String,
obfuscation: Option<String>,
},
ResponseMcpCallArgumentsDone {
arguments: String,
event_id: String,
item_id: String,
output_index: u32,
response_id: String,
},
ResponseMcpCallInProgress {
event_id: String,
item_id: String,
output_index: u32,
},
ResponseMcpCallCompleted {
event_id: String,
item_id: String,
output_index: u32,
},
ResponseMcpCallFailed {
event_id: String,
item_id: String,
output_index: u32,
},
McpListToolsInProgress {
event_id: String,
item_id: String,
},
McpListToolsCompleted {
event_id: String,
item_id: String,
},
McpListToolsFailed {
event_id: String,
item_id: String,
},
RateLimitsUpdated {
event_id: String,
rate_limits: Vec<RealtimeRateLimit>,
},
Error {
error: RealtimeError,
event_id: String,
},
Unknown,
}Expand description
A server-to-client event in the OpenAI Realtime API.
Sent by the server over WebSocket, WebRTC, or SIP connections.
Discriminated by the type field in the JSON wire format.
Large payloads (SessionConfig 624 B, RealtimeResponse 352 B) are
Box-ed so the enum stays ≈232 bytes instead of ≈656.
Variants§
SessionCreated
Emitted when a new connection is established with the default session config.
SessionUpdated
Emitted after a successful session.update.
ConversationCreated
Emitted when a conversation is created (right after session creation).
ConversationItemCreated
Emitted when a conversation item is created (legacy event).
ConversationItemAdded
Emitted when an item is added to the default conversation.
ConversationItemDone
Emitted when a conversation item is finalized.
ConversationItemDeleted
Emitted when a conversation item is deleted.
ConversationItemRetrieved
Emitted in response to conversation.item.retrieve.
ConversationItemTruncated
Emitted when an assistant audio message item is truncated.
InputAudioTranscriptionCompleted
Emitted when input audio transcription completes.
InputAudioTranscriptionDelta
Emitted with incremental transcription results.
Fields
logprobs: Option<Vec<LogProbProperties>>InputAudioTranscriptionFailed
Emitted when input audio transcription fails.
InputAudioTranscriptionSegment
Emitted when an input audio transcription segment is identified (used with diarization models).
Fields
InputAudioBufferCleared
Emitted when the input audio buffer is cleared.
InputAudioBufferCommitted
Emitted when the input audio buffer is committed.
InputAudioBufferSpeechStarted
Emitted when speech is detected in the audio buffer (server VAD mode).
InputAudioBufferSpeechStopped
Emitted when the end of speech is detected (server VAD mode).
InputAudioBufferTimeoutTriggered
Emitted when the VAD idle timeout triggers.
InputAudioBufferDtmfEventReceived
SIP Only: Emitted when a DTMF keypad event is received.
NOTE: This is the only server event without an event_id field per the
OpenAI spec. Downstream code that generically extracts event_id from
all server events must handle this variant as a special case.
OutputAudioBufferStarted
Emitted when the server begins streaming audio to the client.
OutputAudioBufferStopped
Emitted when the output audio buffer has been completely drained.
OutputAudioBufferCleared
Emitted when the output audio buffer is cleared (user interrupt or
explicit output_audio_buffer.clear).
ResponseCreated
Emitted when a new response is created (status in_progress).
ResponseDone
Emitted when a response is done streaming.
ResponseOutputItemAdded
Emitted when a new output item is created during response generation.
ResponseOutputItemDone
Emitted when an output item is done streaming.
ResponseContentPartAdded
Emitted when a new content part is added to an assistant message.
Fields
part: ResponseContentPartResponseContentPartDone
Emitted when a content part is done streaming.
Fields
part: ResponseContentPartResponseOutputTextDelta
Emitted when the text of an output_text content part is updated.
Fields
ResponseOutputTextDone
Emitted when an output_text content part is done streaming.
Fields
ResponseOutputAudioDelta
Emitted when model-generated audio is updated.
WARNING: delta contains a base64 audio chunk. Avoid logging this
variant with Debug in production; prefer event_type().
Fields
ResponseOutputAudioDone
Emitted when model-generated audio is done.
ResponseOutputAudioTranscriptDelta
Emitted when the transcription of audio output is updated.
Fields
ResponseOutputAudioTranscriptDone
Emitted when the transcription of audio output is done.
Fields
ResponseFunctionCallArgumentsDelta
Emitted when function call arguments are updated.
Fields
ResponseFunctionCallArgumentsDone
Emitted when function call arguments are done streaming.
Fields
ResponseMcpCallArgumentsDelta
Emitted when MCP tool call arguments are updated.
Fields
ResponseMcpCallArgumentsDone
Emitted when MCP tool call arguments are finalized.
ResponseMcpCallInProgress
Emitted when an MCP tool call starts.
ResponseMcpCallCompleted
Emitted when an MCP tool call completes successfully.
ResponseMcpCallFailed
Emitted when an MCP tool call fails.
McpListToolsInProgress
Emitted when listing MCP tools is in progress.
McpListToolsCompleted
Emitted when listing MCP tools has completed.
McpListToolsFailed
Emitted when listing MCP tools has failed.
RateLimitsUpdated
Emitted at the beginning of a response with updated rate limit info.
Error
Emitted when an error occurs. Most errors are recoverable.
Unknown
Unrecognized event type. Serde automatically deserializes any
unrecognized type value into this variant (no data preserved).
For proxy use, forward the raw frame instead of re-serializing.
Implementations§
Source§impl ServerEvent
impl ServerEvent
Sourcepub fn session_created(
event_id: impl Into<String>,
session: SessionConfig,
) -> Self
pub fn session_created( event_id: impl Into<String>, session: SessionConfig, ) -> Self
Build a session.created event.
Sourcepub fn session_updated(
event_id: impl Into<String>,
session: SessionConfig,
) -> Self
pub fn session_updated( event_id: impl Into<String>, session: SessionConfig, ) -> Self
Build a session.updated event.
Sourcepub fn conversation_created(
event_id: impl Into<String>,
conversation: Conversation,
) -> Self
pub fn conversation_created( event_id: impl Into<String>, conversation: Conversation, ) -> Self
Build a conversation.created event.
Sourcepub fn conversation_item_created(
event_id: impl Into<String>,
previous_item_id: Option<String>,
item: RealtimeConversationItem,
) -> Self
pub fn conversation_item_created( event_id: impl Into<String>, previous_item_id: Option<String>, item: RealtimeConversationItem, ) -> Self
Build a conversation.item.created event.
Sourcepub fn conversation_item_added(
event_id: impl Into<String>,
previous_item_id: Option<String>,
item: RealtimeConversationItem,
) -> Self
pub fn conversation_item_added( event_id: impl Into<String>, previous_item_id: Option<String>, item: RealtimeConversationItem, ) -> Self
Build a conversation.item.added event.
Sourcepub fn conversation_item_done(
event_id: impl Into<String>,
previous_item_id: Option<String>,
item: RealtimeConversationItem,
) -> Self
pub fn conversation_item_done( event_id: impl Into<String>, previous_item_id: Option<String>, item: RealtimeConversationItem, ) -> Self
Build a conversation.item.done event.
Sourcepub fn conversation_item_deleted(
event_id: impl Into<String>,
item_id: impl Into<String>,
) -> Self
pub fn conversation_item_deleted( event_id: impl Into<String>, item_id: impl Into<String>, ) -> Self
Build a conversation.item.deleted event.
Sourcepub fn conversation_item_retrieved(
event_id: impl Into<String>,
item: RealtimeConversationItem,
) -> Self
pub fn conversation_item_retrieved( event_id: impl Into<String>, item: RealtimeConversationItem, ) -> Self
Build a conversation.item.retrieved event.
Sourcepub fn conversation_item_truncated(
event_id: impl Into<String>,
item_id: impl Into<String>,
content_index: u32,
audio_end_ms: u32,
) -> Self
pub fn conversation_item_truncated( event_id: impl Into<String>, item_id: impl Into<String>, content_index: u32, audio_end_ms: u32, ) -> Self
Build a conversation.item.truncated event.
Sourcepub fn input_audio_transcription_completed(
event_id: impl Into<String>,
item_id: impl Into<String>,
content_index: u32,
transcript: impl Into<String>,
usage: TranscriptionUsage,
) -> Self
pub fn input_audio_transcription_completed( event_id: impl Into<String>, item_id: impl Into<String>, content_index: u32, transcript: impl Into<String>, usage: TranscriptionUsage, ) -> Self
Build a conversation.item.input_audio_transcription.completed event.
Sourcepub fn input_audio_transcription_completed_with_logprobs(
event_id: impl Into<String>,
item_id: impl Into<String>,
content_index: u32,
transcript: impl Into<String>,
usage: TranscriptionUsage,
logprobs: Vec<LogProbProperties>,
) -> Self
pub fn input_audio_transcription_completed_with_logprobs( event_id: impl Into<String>, item_id: impl Into<String>, content_index: u32, transcript: impl Into<String>, usage: TranscriptionUsage, logprobs: Vec<LogProbProperties>, ) -> Self
Build a conversation.item.input_audio_transcription.completed event with logprobs.
Sourcepub fn input_audio_transcription_delta(
event_id: impl Into<String>,
item_id: impl Into<String>,
content_index: Option<u32>,
delta: Option<String>,
logprobs: Option<Vec<LogProbProperties>>,
) -> Self
pub fn input_audio_transcription_delta( event_id: impl Into<String>, item_id: impl Into<String>, content_index: Option<u32>, delta: Option<String>, logprobs: Option<Vec<LogProbProperties>>, ) -> Self
Build a conversation.item.input_audio_transcription.delta event.
Sourcepub fn input_audio_transcription_failed(
event_id: impl Into<String>,
item_id: impl Into<String>,
content_index: u32,
error: TranscriptionError,
) -> Self
pub fn input_audio_transcription_failed( event_id: impl Into<String>, item_id: impl Into<String>, content_index: u32, error: TranscriptionError, ) -> Self
Build a conversation.item.input_audio_transcription.failed event.
Sourcepub fn input_audio_transcription_segment(
event_id: impl Into<String>,
item_id: impl Into<String>,
content_index: u32,
text: impl Into<String>,
id: impl Into<String>,
speaker: impl Into<String>,
start: f32,
end: f32,
) -> Self
pub fn input_audio_transcription_segment( event_id: impl Into<String>, item_id: impl Into<String>, content_index: u32, text: impl Into<String>, id: impl Into<String>, speaker: impl Into<String>, start: f32, end: f32, ) -> Self
Build a conversation.item.input_audio_transcription.segment event.
Sourcepub fn input_audio_buffer_cleared(event_id: impl Into<String>) -> Self
pub fn input_audio_buffer_cleared(event_id: impl Into<String>) -> Self
Build an input_audio_buffer.cleared event.
Sourcepub fn input_audio_buffer_committed(
event_id: impl Into<String>,
item_id: impl Into<String>,
previous_item_id: Option<String>,
) -> Self
pub fn input_audio_buffer_committed( event_id: impl Into<String>, item_id: impl Into<String>, previous_item_id: Option<String>, ) -> Self
Build an input_audio_buffer.committed event.
Sourcepub fn input_audio_buffer_speech_started(
event_id: impl Into<String>,
audio_start_ms: u32,
item_id: impl Into<String>,
) -> Self
pub fn input_audio_buffer_speech_started( event_id: impl Into<String>, audio_start_ms: u32, item_id: impl Into<String>, ) -> Self
Build an input_audio_buffer.speech_started event.
Sourcepub fn input_audio_buffer_speech_stopped(
event_id: impl Into<String>,
audio_end_ms: u32,
item_id: impl Into<String>,
) -> Self
pub fn input_audio_buffer_speech_stopped( event_id: impl Into<String>, audio_end_ms: u32, item_id: impl Into<String>, ) -> Self
Build an input_audio_buffer.speech_stopped event.
Sourcepub fn input_audio_buffer_timeout_triggered(
event_id: impl Into<String>,
audio_start_ms: u32,
audio_end_ms: u32,
item_id: impl Into<String>,
) -> Self
pub fn input_audio_buffer_timeout_triggered( event_id: impl Into<String>, audio_start_ms: u32, audio_end_ms: u32, item_id: impl Into<String>, ) -> Self
Build an input_audio_buffer.timeout_triggered event.
Sourcepub fn dtmf_event_received(event: impl Into<String>, received_at: i64) -> Self
pub fn dtmf_event_received(event: impl Into<String>, received_at: i64) -> Self
Build an input_audio_buffer.dtmf_event_received event.
DTMF events have no event_id per the OpenAI spec.
Sourcepub fn mcp_list_tools_in_progress(
event_id: impl Into<String>,
item_id: impl Into<String>,
) -> Self
pub fn mcp_list_tools_in_progress( event_id: impl Into<String>, item_id: impl Into<String>, ) -> Self
Build an mcp_list_tools.in_progress event.
Sourcepub fn mcp_list_tools_completed(
event_id: impl Into<String>,
item_id: impl Into<String>,
) -> Self
pub fn mcp_list_tools_completed( event_id: impl Into<String>, item_id: impl Into<String>, ) -> Self
Build an mcp_list_tools.completed event.
Sourcepub fn mcp_list_tools_failed(
event_id: impl Into<String>,
item_id: impl Into<String>,
) -> Self
pub fn mcp_list_tools_failed( event_id: impl Into<String>, item_id: impl Into<String>, ) -> Self
Build an mcp_list_tools.failed event.
Sourcepub fn mcp_call_in_progress(
event_id: impl Into<String>,
item_id: impl Into<String>,
output_index: u32,
) -> Self
pub fn mcp_call_in_progress( event_id: impl Into<String>, item_id: impl Into<String>, output_index: u32, ) -> Self
Build a response.mcp_call.in_progress event.
Sourcepub fn mcp_call_completed(
event_id: impl Into<String>,
item_id: impl Into<String>,
output_index: u32,
) -> Self
pub fn mcp_call_completed( event_id: impl Into<String>, item_id: impl Into<String>, output_index: u32, ) -> Self
Build a response.mcp_call.completed event.
Sourcepub fn mcp_call_failed(
event_id: impl Into<String>,
item_id: impl Into<String>,
output_index: u32,
) -> Self
pub fn mcp_call_failed( event_id: impl Into<String>, item_id: impl Into<String>, output_index: u32, ) -> Self
Build a response.mcp_call.failed event.
Sourcepub fn rate_limits_updated(
event_id: impl Into<String>,
rate_limits: Vec<RealtimeRateLimit>,
) -> Self
pub fn rate_limits_updated( event_id: impl Into<String>, rate_limits: Vec<RealtimeRateLimit>, ) -> Self
Build a rate_limits.updated event.
Sourcepub fn response_created(
event_id: impl Into<String>,
response: RealtimeResponse,
) -> Self
pub fn response_created( event_id: impl Into<String>, response: RealtimeResponse, ) -> Self
Build a response.created event.
Sourcepub fn response_done(
event_id: impl Into<String>,
response: RealtimeResponse,
) -> Self
pub fn response_done( event_id: impl Into<String>, response: RealtimeResponse, ) -> Self
Build a response.done event.
Sourcepub fn error_event(event_id: impl Into<String>, error: RealtimeError) -> Self
pub fn error_event(event_id: impl Into<String>, error: RealtimeError) -> Self
Build an error event.
Source§impl ServerEvent
impl ServerEvent
Sourcepub fn event_type(&self) -> &str
pub fn event_type(&self) -> &str
Returns the event type string (e.g. "session.created").
For known events, returns a &'static str from the event type constants.
For unknown events, returns "unknown".
Sourcepub fn to_event_type(&self) -> Option<RealtimeServerEvent>
pub fn to_event_type(&self) -> Option<RealtimeServerEvent>
Maps this event to its corresponding RealtimeServerEvent constant.
Returns None for Unknown events.
Sourcepub fn is_function_call_done(&self) -> bool
pub fn is_function_call_done(&self) -> bool
Returns true if this is a response.function_call_arguments.done event.
Trait Implementations§
Source§impl Clone for ServerEvent
impl Clone for ServerEvent
Source§fn clone(&self) -> ServerEvent
fn clone(&self) -> ServerEvent
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more