Connect
Fork a stored Live session over WebSocket. Send session.start with an overrides object (which may be empty), then wait for session.started. The model is inherited.
WebSocket wss://api.openai.com/v1/live/sessions/{session_id}/fork
Connect
require "openai"
require "async"
# Use the ID of a stored, closed Live session whose recording has finalized.
client = OpenAI::Client.new
Sync do |task|
# Stop waiting if the peer never sends the expected events.
task.with_timeout(60) do
# The block always releases this session's transport.
client.live.forks.connect('sess_123') do |connection|
connection.send_event(type: "session.start", session: {})
complete = false
close_requested = false
connection.each do |event|
case event
when OpenAI::Live::ErrorEvent
raise "Live reported a session error."
when OpenAI::Live::SessionStartedEvent
# Wait for startup before closing the session this example owns.
puts "Session ready: #{event.session.id} #{event.session.model}"
connection.send_event(type: "session.close")
close_requested = true
when OpenAI::Live::SessionClosedEvent
unless close_requested && event.reason == :close_requested
raise "Session ended unexpectedly: #{event.reason}; usage=#{event.usage}"
end
puts "Final usage: #{event.usage}"
complete = true
break
end
end
raise "Connection closed before session.closed; final usage unconfirmed" unless complete
end
end
end