Skip to main content

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, and GetRealtimeToken.
  • Google Gemini Live: google.Provider.RealtimeModel, ExperimentalRealtimeModel, and GetRealtimeToken.
  • xAI realtime: xai.Provider.RealtimeModel, ExperimentalRealtimeModel, and GetRealtimeToken.

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:

  • BrowserRealtimeTransport
  • BrowserRealtimeAudio
  • useRealtime

Go callers provide a server-side WebSocket dialer through RealtimeSessionOptions.Dialer when they need custom transport behavior.