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.
OptionalMaxThe effective session cap in seconds for this minted session: min(provider ceiling, host cap).
With no host cap it reports the provider ceiling; undefined when the driver does not know the cap that
applies. ElevenLabs Agents is that case without a host cap (or with a verbatim agent id): the agent's own
max_duration_seconds applies, which ElevenLabs sets to 600 s on a new agent, not the 7200 s ceiling.
Server-side information carried on the prep result — the GraphQL resolver does not forward it
to the browser today — and never an input: the cap on the wire is the driver's own decision.
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.