OptionalAvatarThe driver's decision at mint about the live avatar the session asked for: granted, or audio only and why. Unlike SessionConfig it is not part of the driver pact, so the server can merge it with its own reasons and hand it to the call. Absent when the session asked for no avatar, and from drivers that render none.
The short-lived client secret the browser presents to the provider to authenticate its
direct session. Server-scoped and expiring (see ClientRealtimeSessionConfig.ExpiresAt).
Empty on a relay session (ClientRealtimeSessionConfig.Transport 'relay'): the browser
holds no provider credential, and ClientRealtimeSessionConfig.RelayUrl carries the relay's ticket.
ISO-8601 timestamp at which ClientRealtimeSessionConfig.EphemeralToken (or a relay session's ticket) expires.
The provider realtime model id the session is scoped to (e.g. gpt-realtime).
The provider that minted the credential (e.g. 'openai'). Lets the browser select the
correct provider-direct client implementation.
OptionalRelayWhere a relay session's browser connects: MJAPI's realtime relay, wss://<mjapi>/realtime/relay/<ticket>.
Present only when ClientRealtimeSessionConfig.Transport is 'relay'. The URL carries the
session's ticket, so it is a credential: never log it or put it in an error message.
The provider-native session config the matching client driver applies when it opens its socket (instructions/system prompt, tools, audio formats, turn detection). Because the server builds this, prompt and tool authority stay server-side even in the client-direct topology. Typed as a JSON object so it stays serializable across the server→client boundary — but its SHAPE is a private pact between the same-keyed server and client drivers; hosts must treat it opaquely and never read or rewrite its fields.
OptionalTransportHow the browser reaches the provider (see RealtimeClientTransport). Absent means 'direct',
as for every session minted before this field existed.
The server-minted configuration a browser needs to open a client-direct realtime session.
Returned by BaseRealtimeModel.CreateClientSession. The browser authenticates to the provider with ClientRealtimeSessionConfig.EphemeralToken (or, on a relay session, connects to ClientRealtimeSessionConfig.RelayUrl) and hands ClientRealtimeSessionConfig.SessionConfig to the matching client driver — so the server retains control of the prompt and tool set even though the browser owns the socket.
SessionConfigis a private pact between same-keyed driver halves. The server driver that minted it (selected by ClientRealtimeSessionConfig.Provider) and the client driver registered under the same key are the ONLY parties that understand its shape. Hosts and any transport in between must treat it as an opaque, serializable blob — never inspect, edit, or depend on its fields. ClientRealtimeSessionConfig.Transport and ClientRealtimeSessionConfig.RelayUrl are not part of the pact: hosts carry them to the client driver as they are.