Realtime Sessions
The Go SDK exposes the TypeScript AI SDK experimental realtime model surface through provider.Experimental_RealtimeModelV4 and the provider-neutral helper ai.ConnectRealtime.
model, err := openaiProvider.RealtimeModel(openai.ModelGPT4oRealtimePreview)
if err != nil {
log.Fatal(err)
}
instructions := "Answer briefly."
session, err := ai.ConnectRealtime(ctx, model, ai.RealtimeSessionOptions{
SessionConfig: &provider.RealtimeSessionConfig{
Instructions: &instructions,
},
})
if err != nil {
log.Fatal(err)
}
defer session.Close()
The helper creates a provider client secret, opens the provider WebSocket, sends an initial session update when SessionConfig is supplied, and normalizes provider server events. Unknown provider events are preserved on RealtimeServerEvent.Raw with their raw provider event type so callers can handle new provider events before the SDK adds first-class fields.
Providers
- OpenAI realtime:
openai.Provider.RealtimeModel,ExperimentalRealtimeModel, andGetRealtimeToken. - Google Gemini Live:
google.Provider.RealtimeModel,ExperimentalRealtimeModel, andGetRealtimeToken. - xAI realtime:
xai.Provider.RealtimeModel,ExperimentalRealtimeModel, andGetRealtimeToken.
Gateway realtime is not exposed because the June 6 TypeScript range did not include a Gateway realtime model, factory, tests, or changeset.
Not Applicable Browser Pieces
The TypeScript SDK also ships browser-only realtime transports and React helpers. They are intentionally not implemented in Go:
BrowserRealtimeTransportBrowserRealtimeAudiouseRealtime
Go callers provide a server-side WebSocket dialer through RealtimeSessionOptions.Dialer when they need custom transport behavior.