ServerEvent: { session?: { id?: string | null; }; type: "session.started"; } | { delta?: string; type: "session.output_audio.delta"; } | { delta?: string; end_ms?: number | null; start_ms?: number | null; type: "session.output_transcript.delta" | "session.input_transcript.delta"; } | { delegation?: { id?: string | null; target?: DelegationTarget | null; }; type: "session.delegation.created"; } | { delegation_id?: string | null; event?: ResponsesEvent; type: "response.event"; } | { context_window?: { usage_ratio?: number | null; } | null; type: "session.usage.updated"; usage?: { seconds?: number; }; } | { context_window?: { usage_ratio?: number | null; } | null; reason?: "close_requested" | "expired" | "content" | "remote_hangup" | "connection_lost" | null; type: "session.closed"; usage?: { seconds?: number; }; } | { error?: ErrorBody; type: "error"; } | { client_event_id?: string; type: "session.updated" | "session.input_audio.muted" | "session.input_audio.unmuted"; } | { client_event_id?: string; type: "session.instructions.appended" | "session.thinking.appended" | "session.commentary.appended"; } Type declaration
Optional session?: {
id?: string | null;
}
Optional id?: string | null
type: "session.started"
Type declaration
Optional delta?: string
type: "session.output_audio.delta"
Type declaration
Optional delta?: string
Optional end_ms?: number | null
Optional start_ms?: number | null
type: "session.output_transcript.delta" | "session.input_transcript.delta"
Type declaration
Optional delegation?: {
id?: string | null;
target?: DelegationTarget | null;
}
Optional id?: string | null
type: "session.delegation.created"
Type declaration
Optional delegation_id?: string | null
type: "response.event"
Type declaration
Optional context_window?: {
usage_ratio?: number | null;
} | null
type: "session.usage.updated"
Optional usage?: {
seconds?: number;
}
Optional seconds?: number
Type declaration
Optional context_window?: {
usage_ratio?: number | null;
} | null
Optional reason?: "close_requested" | "expired" | "content" | "remote_hangup" | "connection_lost" | null
type: "session.closed"
Optional usage?: {
seconds?: number;
}
Optional seconds?: number
Type declaration
Optional client_event_id?: string
type: "session.updated" | "session.input_audio.muted" | "session.input_audio.unmuted"
Type declaration
Optional client_event_id?: string
type: "session.instructions.appended" | "session.thinking.appended" | "session.commentary.appended"
Server fields are optional so missing fields do not end a session.