SAP AI SDK for JavaScript - v2.15.0
    Preparing search index...

    Class SapOpenAiRealtimeWsExperimental

    A pre-configured OpenAI Realtime API (speech-to-speech) client for SAP AI Core.

    Only gpt-realtime is supported. Session configuration must use the GA session.update schema (output_modalities, nested audio), not the preview schema.

    Use SapOpenAiRealtimeWs.createClient to create an instance. This class is experimental and may change at any time without prior notice.

    Hierarchy

    • OpenAIRealtimeWS
      • SapOpenAiRealtimeWs
    Index
    • Experimental

      Parameters

      • props: RealtimeConnectionConfig & {
            __resolvedApiKey?: boolean;
            options?: ClientOptions;
        }
      • Optionalclient: Pick<OpenAI, "apiKey" | "baseURL">

      Returns SapOpenAiRealtimeWs

    socket: WebSocket
    url: URL
    azure: never
    create: never
    • Experimental

      Type Parameters

      • Event extends
            | "error"
            | "event"
            | "conversation.created"
            | "conversation.item.created"
            | "conversation.item.deleted"
            | "conversation.item.input_audio_transcription.completed"
            | "conversation.item.input_audio_transcription.delta"
            | "conversation.item.input_audio_transcription.failed"
            | "conversation.item.retrieved"
            | "conversation.item.truncated"
            | "input_audio_buffer.cleared"
            | "input_audio_buffer.committed"
            | "input_audio_buffer.dtmf_event_received"
            | "input_audio_buffer.speech_started"
            | "input_audio_buffer.speech_stopped"
            | "rate_limits.updated"
            | "response.output_audio.delta"
            | "response.output_audio.done"
            | "response.output_audio_transcript.delta"
            | "response.output_audio_transcript.done"
            | "response.content_part.added"
            | "response.content_part.done"
            | "response.created"
            | "response.done"
            | "response.function_call_arguments.delta"
            | "response.function_call_arguments.done"
            | "response.output_item.added"
            | "response.output_item.done"
            | "response.output_text.delta"
            | "response.output_text.done"
            | "session.created"
            | "session.updated"
            | "output_audio_buffer.started"
            | "output_audio_buffer.stopped"
            | "output_audio_buffer.cleared"
            | "conversation.item.added"
            | "conversation.item.done"
            | "input_audio_buffer.timeout_triggered"
            | "conversation.item.input_audio_transcription.segment"
            | "mcp_list_tools.in_progress"
            | "mcp_list_tools.completed"
            | "mcp_list_tools.failed"
            | "response.mcp_call_arguments.delta"
            | "response.mcp_call_arguments.done"
            | "response.mcp_call.in_progress"
            | "response.mcp_call.completed"
            | "response.mcp_call.failed"

      Parameters

      • this: EventEmitter<
            {
                "conversation.created": (event: ConversationCreatedEvent) => unknown;
                "conversation.item.added": (event: ConversationItemAdded) => unknown;
                "conversation.item.created": (
                    event: ConversationItemCreatedEvent,
                ) => unknown;
                "conversation.item.deleted": (
                    event: ConversationItemDeletedEvent,
                ) => unknown;
                "conversation.item.done": (event: ConversationItemDone) => unknown;
                "conversation.item.input_audio_transcription.completed": (
                    event: ConversationItemInputAudioTranscriptionCompletedEvent,
                ) => unknown;
                "conversation.item.input_audio_transcription.delta": (
                    event: ConversationItemInputAudioTranscriptionDeltaEvent,
                ) => unknown;
                "conversation.item.input_audio_transcription.failed": (
                    event: ConversationItemInputAudioTranscriptionFailedEvent,
                ) => unknown;
                "conversation.item.input_audio_transcription.segment": (
                    event: ConversationItemInputAudioTranscriptionSegment,
                ) => unknown;
                "conversation.item.retrieved": (
                    event: ConversationItemRetrieved,
                ) => unknown;
                "conversation.item.truncated": (
                    event: ConversationItemTruncatedEvent,
                ) => unknown;
                error: (error: OpenAIRealtimeError) => void;
                event: (event: RealtimeServerEvent) => void;
                "input_audio_buffer.cleared": (
                    event: InputAudioBufferClearedEvent,
                ) => unknown;
                "input_audio_buffer.committed": (
                    event: InputAudioBufferCommittedEvent,
                ) => unknown;
                "input_audio_buffer.dtmf_event_received": (
                    event: InputAudioBufferDtmfEventReceivedEvent,
                ) => unknown;
                "input_audio_buffer.speech_started": (
                    event: InputAudioBufferSpeechStartedEvent,
                ) => unknown;
                "input_audio_buffer.speech_stopped": (
                    event: InputAudioBufferSpeechStoppedEvent,
                ) => unknown;
                "input_audio_buffer.timeout_triggered": (
                    event: InputAudioBufferTimeoutTriggered,
                ) => unknown;
                "mcp_list_tools.completed": (event: McpListToolsCompleted) => unknown;
                "mcp_list_tools.failed": (event: McpListToolsFailed) => unknown;
                "mcp_list_tools.in_progress": (event: McpListToolsInProgress) => unknown;
                "output_audio_buffer.cleared": (
                    event: OutputAudioBufferCleared,
                ) => unknown;
                "output_audio_buffer.started": (
                    event: OutputAudioBufferStarted,
                ) => unknown;
                "output_audio_buffer.stopped": (
                    event: OutputAudioBufferStopped,
                ) => unknown;
                "rate_limits.updated": (event: RateLimitsUpdatedEvent) => unknown;
                "response.content_part.added": (
                    event: ResponseContentPartAddedEvent,
                ) => unknown;
                "response.content_part.done": (
                    event: ResponseContentPartDoneEvent,
                ) => unknown;
                "response.created": (event: ResponseCreatedEvent) => unknown;
                "response.done": (event: ResponseDoneEvent) => unknown;
                "response.function_call_arguments.delta": (
                    event: ResponseFunctionCallArgumentsDeltaEvent,
                ) => unknown;
                "response.function_call_arguments.done": (
                    event: ResponseFunctionCallArgumentsDoneEvent,
                ) => unknown;
                "response.mcp_call_arguments.delta": (
                    event: ResponseMcpCallArgumentsDelta,
                ) => unknown;
                "response.mcp_call_arguments.done": (
                    event: ResponseMcpCallArgumentsDone,
                ) => unknown;
                "response.mcp_call.completed": (
                    event: ResponseMcpCallCompleted,
                ) => unknown;
                "response.mcp_call.failed": (event: ResponseMcpCallFailed) => unknown;
                "response.mcp_call.in_progress": (
                    event: ResponseMcpCallInProgress,
                ) => unknown;
                "response.output_audio_transcript.delta": (
                    event: ResponseAudioTranscriptDeltaEvent,
                ) => unknown;
                "response.output_audio_transcript.done": (
                    event: ResponseAudioTranscriptDoneEvent,
                ) => unknown;
                "response.output_audio.delta": (event: ResponseAudioDeltaEvent) => unknown;
                "response.output_audio.done": (event: ResponseAudioDoneEvent) => unknown;
                "response.output_item.added": (
                    event: ResponseOutputItemAddedEvent,
                ) => unknown;
                "response.output_item.done": (
                    event: ResponseOutputItemDoneEvent,
                ) => unknown;
                "response.output_text.delta": (event: ResponseTextDeltaEvent) => unknown;
                "response.output_text.done": (event: ResponseTextDoneEvent) => unknown;
                "session.created": (event: SessionCreatedEvent) => unknown;
                "session.updated": (event: SessionUpdatedEvent) => unknown;
            },
        >
      • event: Event
      • ...args: EventParameters<
            {
                "conversation.created": (event: ConversationCreatedEvent) => unknown;
                "conversation.item.added": (event: ConversationItemAdded) => unknown;
                "conversation.item.created": (
                    event: ConversationItemCreatedEvent,
                ) => unknown;
                "conversation.item.deleted": (
                    event: ConversationItemDeletedEvent,
                ) => unknown;
                "conversation.item.done": (event: ConversationItemDone) => unknown;
                "conversation.item.input_audio_transcription.completed": (
                    event: ConversationItemInputAudioTranscriptionCompletedEvent,
                ) => unknown;
                "conversation.item.input_audio_transcription.delta": (
                    event: ConversationItemInputAudioTranscriptionDeltaEvent,
                ) => unknown;
                "conversation.item.input_audio_transcription.failed": (
                    event: ConversationItemInputAudioTranscriptionFailedEvent,
                ) => unknown;
                "conversation.item.input_audio_transcription.segment": (
                    event: ConversationItemInputAudioTranscriptionSegment,
                ) => unknown;
                "conversation.item.retrieved": (
                    event: ConversationItemRetrieved,
                ) => unknown;
                "conversation.item.truncated": (
                    event: ConversationItemTruncatedEvent,
                ) => unknown;
                error: (error: OpenAIRealtimeError) => void;
                event: (event: RealtimeServerEvent) => void;
                "input_audio_buffer.cleared": (
                    event: InputAudioBufferClearedEvent,
                ) => unknown;
                "input_audio_buffer.committed": (
                    event: InputAudioBufferCommittedEvent,
                ) => unknown;
                "input_audio_buffer.dtmf_event_received": (
                    event: InputAudioBufferDtmfEventReceivedEvent,
                ) => unknown;
                "input_audio_buffer.speech_started": (
                    event: InputAudioBufferSpeechStartedEvent,
                ) => unknown;
                "input_audio_buffer.speech_stopped": (
                    event: InputAudioBufferSpeechStoppedEvent,
                ) => unknown;
                "input_audio_buffer.timeout_triggered": (
                    event: InputAudioBufferTimeoutTriggered,
                ) => unknown;
                "mcp_list_tools.completed": (event: McpListToolsCompleted) => unknown;
                "mcp_list_tools.failed": (event: McpListToolsFailed) => unknown;
                "mcp_list_tools.in_progress": (event: McpListToolsInProgress) => unknown;
                "output_audio_buffer.cleared": (
                    event: OutputAudioBufferCleared,
                ) => unknown;
                "output_audio_buffer.started": (
                    event: OutputAudioBufferStarted,
                ) => unknown;
                "output_audio_buffer.stopped": (
                    event: OutputAudioBufferStopped,
                ) => unknown;
                "rate_limits.updated": (event: RateLimitsUpdatedEvent) => unknown;
                "response.content_part.added": (
                    event: ResponseContentPartAddedEvent,
                ) => unknown;
                "response.content_part.done": (
                    event: ResponseContentPartDoneEvent,
                ) => unknown;
                "response.created": (event: ResponseCreatedEvent) => unknown;
                "response.done": (event: ResponseDoneEvent) => unknown;
                "response.function_call_arguments.delta": (
                    event: ResponseFunctionCallArgumentsDeltaEvent,
                ) => unknown;
                "response.function_call_arguments.done": (
                    event: ResponseFunctionCallArgumentsDoneEvent,
                ) => unknown;
                "response.mcp_call_arguments.delta": (
                    event: ResponseMcpCallArgumentsDelta,
                ) => unknown;
                "response.mcp_call_arguments.done": (
                    event: ResponseMcpCallArgumentsDone,
                ) => unknown;
                "response.mcp_call.completed": (
                    event: ResponseMcpCallCompleted,
                ) => unknown;
                "response.mcp_call.failed": (event: ResponseMcpCallFailed) => unknown;
                "response.mcp_call.in_progress": (
                    event: ResponseMcpCallInProgress,
                ) => unknown;
                "response.output_audio_transcript.delta": (
                    event: ResponseAudioTranscriptDeltaEvent,
                ) => unknown;
                "response.output_audio_transcript.done": (
                    event: ResponseAudioTranscriptDoneEvent,
                ) => unknown;
                "response.output_audio.delta": (event: ResponseAudioDeltaEvent) => unknown;
                "response.output_audio.done": (event: ResponseAudioDoneEvent) => unknown;
                "response.output_item.added": (
                    event: ResponseOutputItemAddedEvent,
                ) => unknown;
                "response.output_item.done": (
                    event: ResponseOutputItemDoneEvent,
                ) => unknown;
                "response.output_text.delta": (event: ResponseTextDeltaEvent) => unknown;
                "response.output_text.done": (event: ResponseTextDoneEvent) => unknown;
                "session.created": (event: SessionCreatedEvent) => unknown;
                "session.updated": (event: SessionUpdatedEvent) => unknown;
            },
            Event,
        >

      Returns void

    • Experimental

      Parameters

      • event:
            | "error"
            | "event"
            | "conversation.created"
            | "conversation.item.created"
            | "conversation.item.deleted"
            | "conversation.item.input_audio_transcription.completed"
            | "conversation.item.input_audio_transcription.delta"
            | "conversation.item.input_audio_transcription.failed"
            | "conversation.item.retrieved"
            | "conversation.item.truncated"
            | "input_audio_buffer.cleared"
            | "input_audio_buffer.committed"
            | "input_audio_buffer.dtmf_event_received"
            | "input_audio_buffer.speech_started"
            | "input_audio_buffer.speech_stopped"
            | "rate_limits.updated"
            | "response.output_audio.delta"
            | "response.output_audio.done"
            | "response.output_audio_transcript.delta"
            | "response.output_audio_transcript.done"
            | "response.content_part.added"
            | "response.content_part.done"
            | "response.created"
            | "response.done"
            | "response.function_call_arguments.delta"
            | "response.function_call_arguments.done"
            | "response.output_item.added"
            | "response.output_item.done"
            | "response.output_text.delta"
            | "response.output_text.done"
            | "session.created"
            | "session.updated"
            | "output_audio_buffer.started"
            | "output_audio_buffer.stopped"
            | "output_audio_buffer.cleared"
            | "conversation.item.added"
            | "conversation.item.done"
            | "input_audio_buffer.timeout_triggered"
            | "conversation.item.input_audio_transcription.segment"
            | "mcp_list_tools.in_progress"
            | "mcp_list_tools.completed"
            | "mcp_list_tools.failed"
            | "response.mcp_call_arguments.delta"
            | "response.mcp_call_arguments.done"
            | "response.mcp_call.in_progress"
            | "response.mcp_call.completed"
            | "response.mcp_call.failed"

      Returns boolean

    • Experimental

      Parameters

      • event: null
      • message: string
      • cause: any

      Returns void

    • Experimental

      Parameters

      • event: RealtimeErrorEvent
      • Optionalmessage: string

      Returns void

    • Experimental

      Close the websocket connection.

      Parameters

      • Optionalprops: { code: number; reason: string }

      Returns void

    • Experimental

      This is similar to .once(), but returns a Promise that resolves the next time the event is triggered, instead of calling a listener callback.

      Type Parameters

      • Event extends
            | "error"
            | "event"
            | "conversation.created"
            | "conversation.item.created"
            | "conversation.item.deleted"
            | "conversation.item.input_audio_transcription.completed"
            | "conversation.item.input_audio_transcription.delta"
            | "conversation.item.input_audio_transcription.failed"
            | "conversation.item.retrieved"
            | "conversation.item.truncated"
            | "input_audio_buffer.cleared"
            | "input_audio_buffer.committed"
            | "input_audio_buffer.dtmf_event_received"
            | "input_audio_buffer.speech_started"
            | "input_audio_buffer.speech_stopped"
            | "rate_limits.updated"
            | "response.output_audio.delta"
            | "response.output_audio.done"
            | "response.output_audio_transcript.delta"
            | "response.output_audio_transcript.done"
            | "response.content_part.added"
            | "response.content_part.done"
            | "response.created"
            | "response.done"
            | "response.function_call_arguments.delta"
            | "response.function_call_arguments.done"
            | "response.output_item.added"
            | "response.output_item.done"
            | "response.output_text.delta"
            | "response.output_text.done"
            | "session.created"
            | "session.updated"
            | "output_audio_buffer.started"
            | "output_audio_buffer.stopped"
            | "output_audio_buffer.cleared"
            | "conversation.item.added"
            | "conversation.item.done"
            | "input_audio_buffer.timeout_triggered"
            | "conversation.item.input_audio_transcription.segment"
            | "mcp_list_tools.in_progress"
            | "mcp_list_tools.completed"
            | "mcp_list_tools.failed"
            | "response.mcp_call_arguments.delta"
            | "response.mcp_call_arguments.done"
            | "response.mcp_call.in_progress"
            | "response.mcp_call.completed"
            | "response.mcp_call.failed"

      Parameters

      Returns Promise<
          EventParameters<
              {
                  "conversation.created": (event: ConversationCreatedEvent) => unknown;
                  "conversation.item.added": (event: ConversationItemAdded) => unknown;
                  "conversation.item.created": (
                      event: ConversationItemCreatedEvent,
                  ) => unknown;
                  "conversation.item.deleted": (
                      event: ConversationItemDeletedEvent,
                  ) => unknown;
                  "conversation.item.done": (event: ConversationItemDone) => unknown;
                  "conversation.item.input_audio_transcription.completed": (
                      event: ConversationItemInputAudioTranscriptionCompletedEvent,
                  ) => unknown;
                  "conversation.item.input_audio_transcription.delta": (
                      event: ConversationItemInputAudioTranscriptionDeltaEvent,
                  ) => unknown;
                  "conversation.item.input_audio_transcription.failed": (
                      event: ConversationItemInputAudioTranscriptionFailedEvent,
                  ) => unknown;
                  "conversation.item.input_audio_transcription.segment": (
                      event: ConversationItemInputAudioTranscriptionSegment,
                  ) => unknown;
                  "conversation.item.retrieved": (
                      event: ConversationItemRetrieved,
                  ) => unknown;
                  "conversation.item.truncated": (
                      event: ConversationItemTruncatedEvent,
                  ) => unknown;
                  error: (error: OpenAIRealtimeError) => void;
                  event: (event: RealtimeServerEvent) => void;
                  "input_audio_buffer.cleared": (
                      event: InputAudioBufferClearedEvent,
                  ) => unknown;
                  "input_audio_buffer.committed": (
                      event: InputAudioBufferCommittedEvent,
                  ) => unknown;
                  "input_audio_buffer.dtmf_event_received": (
                      event: InputAudioBufferDtmfEventReceivedEvent,
                  ) => unknown;
                  "input_audio_buffer.speech_started": (
                      event: InputAudioBufferSpeechStartedEvent,
                  ) => unknown;
                  "input_audio_buffer.speech_stopped": (
                      event: InputAudioBufferSpeechStoppedEvent,
                  ) => unknown;
                  "input_audio_buffer.timeout_triggered": (
                      event: InputAudioBufferTimeoutTriggered,
                  ) => unknown;
                  "mcp_list_tools.completed": (event: McpListToolsCompleted) => unknown;
                  "mcp_list_tools.failed": (event: McpListToolsFailed) => unknown;
                  "mcp_list_tools.in_progress": (event: McpListToolsInProgress) => unknown;
                  "output_audio_buffer.cleared": (
                      event: OutputAudioBufferCleared,
                  ) => unknown;
                  "output_audio_buffer.started": (
                      event: OutputAudioBufferStarted,
                  ) => unknown;
                  "output_audio_buffer.stopped": (
                      event: OutputAudioBufferStopped,
                  ) => unknown;
                  "rate_limits.updated": (event: RateLimitsUpdatedEvent) => unknown;
                  "response.content_part.added": (
                      event: ResponseContentPartAddedEvent,
                  ) => unknown;
                  "response.content_part.done": (
                      event: ResponseContentPartDoneEvent,
                  ) => unknown;
                  "response.created": (event: ResponseCreatedEvent) => unknown;
                  "response.done": (event: ResponseDoneEvent) => unknown;
                  "response.function_call_arguments.delta": (
                      event: ResponseFunctionCallArgumentsDeltaEvent,
                  ) => unknown;
                  "response.function_call_arguments.done": (
                      event: ResponseFunctionCallArgumentsDoneEvent,
                  ) => unknown;
                  "response.mcp_call_arguments.delta": (
                      event: ResponseMcpCallArgumentsDelta,
                  ) => unknown;
                  "response.mcp_call_arguments.done": (
                      event: ResponseMcpCallArgumentsDone,
                  ) => unknown;
                  "response.mcp_call.completed": (
                      event: ResponseMcpCallCompleted,
                  ) => unknown;
                  "response.mcp_call.failed": (event: ResponseMcpCallFailed) => unknown;
                  "response.mcp_call.in_progress": (
                      event: ResponseMcpCallInProgress,
                  ) => unknown;
                  "response.output_audio_transcript.delta": (
                      event: ResponseAudioTranscriptDeltaEvent,
                  ) => unknown;
                  "response.output_audio_transcript.done": (
                      event: ResponseAudioTranscriptDoneEvent,
                  ) => unknown;
                  "response.output_audio.delta": (
                      event: ResponseAudioDeltaEvent,
                  ) => unknown;
                  "response.output_audio.done": (event: ResponseAudioDoneEvent) => unknown;
                  "response.output_item.added": (
                      event: ResponseOutputItemAddedEvent,
                  ) => unknown;
                  "response.output_item.done": (
                      event: ResponseOutputItemDoneEvent,
                  ) => unknown;
                  "response.output_text.delta": (event: ResponseTextDeltaEvent) => unknown;
                  "response.output_text.done": (event: ResponseTextDoneEvent) => unknown;
                  "session.created": (event: SessionCreatedEvent) => unknown;
                  "session.updated": (event: SessionUpdatedEvent) => unknown;
              },
              Event,
          > extends [Param]
              ? Param
              : EventParameters<
                  {
                      "conversation.created": (event: ConversationCreatedEvent) => unknown;
                      "conversation.item.added": (event: ConversationItemAdded) => unknown;
                      "conversation.item.created": (
                          event: ConversationItemCreatedEvent,
                      ) => unknown;
                      "conversation.item.deleted": (
                          event: ConversationItemDeletedEvent,
                      ) => unknown;
                      "conversation.item.done": (event: ConversationItemDone) => unknown;
                      "conversation.item.input_audio_transcription.completed": (
                          event: ConversationItemInputAudioTranscriptionCompletedEvent,
                      ) => unknown;
                      "conversation.item.input_audio_transcription.delta": (
                          event: ConversationItemInputAudioTranscriptionDeltaEvent,
                      ) => unknown;
                      "conversation.item.input_audio_transcription.failed": (
                          event: ConversationItemInputAudioTranscriptionFailedEvent,
                      ) => unknown;
                      "conversation.item.input_audio_transcription.segment": (
                          event: ConversationItemInputAudioTranscriptionSegment,
                      ) => unknown;
                      "conversation.item.retrieved": (
                          event: ConversationItemRetrieved,
                      ) => unknown;
                      "conversation.item.truncated": (
                          event: ConversationItemTruncatedEvent,
                      ) => unknown;
                      error: (error: OpenAIRealtimeError) => void;
                      event: (event: RealtimeServerEvent) => void;
                      "input_audio_buffer.cleared": (
                          event: InputAudioBufferClearedEvent,
                      ) => unknown;
                      "input_audio_buffer.committed": (
                          event: InputAudioBufferCommittedEvent,
                      ) => unknown;
                      "input_audio_buffer.dtmf_event_received": (
                          event: InputAudioBufferDtmfEventReceivedEvent,
                      ) => unknown;
                      "input_audio_buffer.speech_started": (
                          event: InputAudioBufferSpeechStartedEvent,
                      ) => unknown;
                      "input_audio_buffer.speech_stopped": (
                          event: InputAudioBufferSpeechStoppedEvent,
                      ) => unknown;
                      "input_audio_buffer.timeout_triggered": (
                          event: InputAudioBufferTimeoutTriggered,
                      ) => unknown;
                      "mcp_list_tools.completed": (event: McpListToolsCompleted) => unknown;
                      "mcp_list_tools.failed": (event: McpListToolsFailed) => unknown;
                      "mcp_list_tools.in_progress": (event: McpListToolsInProgress) => unknown;
                      "output_audio_buffer.cleared": (
                          event: OutputAudioBufferCleared,
                      ) => unknown;
                      "output_audio_buffer.started": (
                          event: OutputAudioBufferStarted,
                      ) => unknown;
                      "output_audio_buffer.stopped": (
                          event: OutputAudioBufferStopped,
                      ) => unknown;
                      "rate_limits.updated": (event: RateLimitsUpdatedEvent) => unknown;
                      "response.content_part.added": (
                          event: ResponseContentPartAddedEvent,
                      ) => unknown;
                      "response.content_part.done": (
                          event: ResponseContentPartDoneEvent,
                      ) => unknown;
                      "response.created": (event: ResponseCreatedEvent) => unknown;
                      "response.done": (event: ResponseDoneEvent) => unknown;
                      "response.function_call_arguments.delta": (
                          event: ResponseFunctionCallArgumentsDeltaEvent,
                      ) => unknown;
                      "response.function_call_arguments.done": (
                          event: ResponseFunctionCallArgumentsDoneEvent,
                      ) => unknown;
                      "response.mcp_call_arguments.delta": (
                          event: ResponseMcpCallArgumentsDelta,
                      ) => unknown;
                      "response.mcp_call_arguments.done": (
                          event: ResponseMcpCallArgumentsDone,
                      ) => unknown;
                      "response.mcp_call.completed": (
                          event: ResponseMcpCallCompleted,
                      ) => unknown;
                      "response.mcp_call.failed": (event: ResponseMcpCallFailed) => unknown;
                      "response.mcp_call.in_progress": (
                          event: ResponseMcpCallInProgress,
                      ) => unknown;
                      "response.output_audio_transcript.delta": (
                          event: ResponseAudioTranscriptDeltaEvent,
                      ) => unknown;
                      "response.output_audio_transcript.done": (
                          event: ResponseAudioTranscriptDoneEvent,
                      ) => unknown;
                      "response.output_audio.delta": (
                          event: ResponseAudioDeltaEvent,
                      ) => unknown;
                      "response.output_audio.done": (event: ResponseAudioDoneEvent) => unknown;
                      "response.output_item.added": (
                          event: ResponseOutputItemAddedEvent,
                      ) => unknown;
                      "response.output_item.done": (
                          event: ResponseOutputItemDoneEvent,
                      ) => unknown;
                      "response.output_text.delta": (event: ResponseTextDeltaEvent) => unknown;
                      "response.output_text.done": (event: ResponseTextDoneEvent) => unknown;
                      "session.created": (event: SessionCreatedEvent) => unknown;
                      "session.updated": (event: SessionUpdatedEvent) => unknown;
                  },
                  Event,
              > extends []
                  ? void
                  : EventParameters<
                      {
                          "conversation.created": (event: ConversationCreatedEvent) => unknown;
                          "conversation.item.added": (event: ConversationItemAdded) => unknown;
                          "conversation.item.created": (
                              event: ConversationItemCreatedEvent,
                          ) => unknown;
                          "conversation.item.deleted": (
                              event: ConversationItemDeletedEvent,
                          ) => unknown;
                          "conversation.item.done": (event: ConversationItemDone) => unknown;
                          "conversation.item.input_audio_transcription.completed": (
                              event: ConversationItemInputAudioTranscriptionCompletedEvent,
                          ) => unknown;
                          "conversation.item.input_audio_transcription.delta": (
                              event: ConversationItemInputAudioTranscriptionDeltaEvent,
                          ) => unknown;
                          "conversation.item.input_audio_transcription.failed": (
                              event: ConversationItemInputAudioTranscriptionFailedEvent,
                          ) => unknown;
                          "conversation.item.input_audio_transcription.segment": (
                              event: ConversationItemInputAudioTranscriptionSegment,
                          ) => unknown;
                          "conversation.item.retrieved": (
                              event: ConversationItemRetrieved,
                          ) => unknown;
                          "conversation.item.truncated": (
                              event: ConversationItemTruncatedEvent,
                          ) => unknown;
                          error: (error: OpenAIRealtimeError) => void;
                          event: (event: RealtimeServerEvent) => void;
                          "input_audio_buffer.cleared": (
                              event: InputAudioBufferClearedEvent,
                          ) => unknown;
                          "input_audio_buffer.committed": (
                              event: InputAudioBufferCommittedEvent,
                          ) => unknown;
                          "input_audio_buffer.dtmf_event_received": (
                              event: InputAudioBufferDtmfEventReceivedEvent,
                          ) => unknown;
                          "input_audio_buffer.speech_started": (
                              event: InputAudioBufferSpeechStartedEvent,
                          ) => unknown;
                          "input_audio_buffer.speech_stopped": (
                              event: InputAudioBufferSpeechStoppedEvent,
                          ) => unknown;
                          "input_audio_buffer.timeout_triggered": (
                              event: InputAudioBufferTimeoutTriggered,
                          ) => unknown;
                          "mcp_list_tools.completed": (event: McpListToolsCompleted) => unknown;
                          "mcp_list_tools.failed": (event: McpListToolsFailed) => unknown;
                          "mcp_list_tools.in_progress": (
                              event: McpListToolsInProgress,
                          ) => unknown;
                          "output_audio_buffer.cleared": (
                              event: OutputAudioBufferCleared,
                          ) => unknown;
                          "output_audio_buffer.started": (
                              event: OutputAudioBufferStarted,
                          ) => unknown;
                          "output_audio_buffer.stopped": (
                              event: OutputAudioBufferStopped,
                          ) => unknown;
                          "rate_limits.updated": (event: RateLimitsUpdatedEvent) => unknown;
                          "response.content_part.added": (
                              event: ResponseContentPartAddedEvent,
                          ) => unknown;
                          "response.content_part.done": (
                              event: ResponseContentPartDoneEvent,
                          ) => unknown;
                          "response.created": (event: ResponseCreatedEvent) => unknown;
                          "response.done": (event: ResponseDoneEvent) => unknown;
                          "response.function_call_arguments.delta": (
                              event: ResponseFunctionCallArgumentsDeltaEvent,
                          ) => unknown;
                          "response.function_call_arguments.done": (
                              event: ResponseFunctionCallArgumentsDoneEvent,
                          ) => unknown;
                          "response.mcp_call_arguments.delta": (
                              event: ResponseMcpCallArgumentsDelta,
                          ) => unknown;
                          "response.mcp_call_arguments.done": (
                              event: ResponseMcpCallArgumentsDone,
                          ) => unknown;
                          "response.mcp_call.completed": (
                              event: ResponseMcpCallCompleted,
                          ) => unknown;
                          "response.mcp_call.failed": (event: ResponseMcpCallFailed) => unknown;
                          "response.mcp_call.in_progress": (
                              event: ResponseMcpCallInProgress,
                          ) => unknown;
                          "response.output_audio_transcript.delta": (
                              event: ResponseAudioTranscriptDeltaEvent,
                          ) => unknown;
                          "response.output_audio_transcript.done": (
                              event: ResponseAudioTranscriptDoneEvent,
                          ) => unknown;
                          "response.output_audio.delta": (
                              event: ResponseAudioDeltaEvent,
                          ) => unknown;
                          "response.output_audio.done": (
                              event: ResponseAudioDoneEvent,
                          ) => unknown;
                          "response.output_item.added": (
                              event: ResponseOutputItemAddedEvent,
                          ) => unknown;
                          "response.output_item.done": (
                              event: ResponseOutputItemDoneEvent,
                          ) => unknown;
                          "response.output_text.delta": (
                              event: ResponseTextDeltaEvent,
                          ) => unknown;
                          "response.output_text.done": (event: ResponseTextDoneEvent) => unknown;
                          "session.created": (event: SessionCreatedEvent) => unknown;
                          "session.updated": (event: SessionUpdatedEvent) => unknown;
                      },
                      Event,
                  >,
      >

      a Promise that resolves the next time given event is triggered, or rejects if an error is emitted. (If you request the 'error' event, returns a promise that resolves with the error).

      Example:

      const message = await stream.emitted('message') // rejects if the stream errors

    • Experimental

      Removes the specified listener from the listener array for the event. off() will remove, at most, one instance of a listener from the listener array. If any single listener has been added multiple times to the listener array for the specified event, then off() must be called multiple times to remove each instance.

      Type Parameters

      • Event extends
            | "error"
            | "event"
            | "conversation.created"
            | "conversation.item.created"
            | "conversation.item.deleted"
            | "conversation.item.input_audio_transcription.completed"
            | "conversation.item.input_audio_transcription.delta"
            | "conversation.item.input_audio_transcription.failed"
            | "conversation.item.retrieved"
            | "conversation.item.truncated"
            | "input_audio_buffer.cleared"
            | "input_audio_buffer.committed"
            | "input_audio_buffer.dtmf_event_received"
            | "input_audio_buffer.speech_started"
            | "input_audio_buffer.speech_stopped"
            | "rate_limits.updated"
            | "response.output_audio.delta"
            | "response.output_audio.done"
            | "response.output_audio_transcript.delta"
            | "response.output_audio_transcript.done"
            | "response.content_part.added"
            | "response.content_part.done"
            | "response.created"
            | "response.done"
            | "response.function_call_arguments.delta"
            | "response.function_call_arguments.done"
            | "response.output_item.added"
            | "response.output_item.done"
            | "response.output_text.delta"
            | "response.output_text.done"
            | "session.created"
            | "session.updated"
            | "output_audio_buffer.started"
            | "output_audio_buffer.stopped"
            | "output_audio_buffer.cleared"
            | "conversation.item.added"
            | "conversation.item.done"
            | "input_audio_buffer.timeout_triggered"
            | "conversation.item.input_audio_transcription.segment"
            | "mcp_list_tools.in_progress"
            | "mcp_list_tools.completed"
            | "mcp_list_tools.failed"
            | "response.mcp_call_arguments.delta"
            | "response.mcp_call_arguments.done"
            | "response.mcp_call.in_progress"
            | "response.mcp_call.completed"
            | "response.mcp_call.failed"

      Parameters

      • event: Event
      • listener: EventListener<
            {
                "conversation.created": (event: ConversationCreatedEvent) => unknown;
                "conversation.item.added": (event: ConversationItemAdded) => unknown;
                "conversation.item.created": (
                    event: ConversationItemCreatedEvent,
                ) => unknown;
                "conversation.item.deleted": (
                    event: ConversationItemDeletedEvent,
                ) => unknown;
                "conversation.item.done": (event: ConversationItemDone) => unknown;
                "conversation.item.input_audio_transcription.completed": (
                    event: ConversationItemInputAudioTranscriptionCompletedEvent,
                ) => unknown;
                "conversation.item.input_audio_transcription.delta": (
                    event: ConversationItemInputAudioTranscriptionDeltaEvent,
                ) => unknown;
                "conversation.item.input_audio_transcription.failed": (
                    event: ConversationItemInputAudioTranscriptionFailedEvent,
                ) => unknown;
                "conversation.item.input_audio_transcription.segment": (
                    event: ConversationItemInputAudioTranscriptionSegment,
                ) => unknown;
                "conversation.item.retrieved": (
                    event: ConversationItemRetrieved,
                ) => unknown;
                "conversation.item.truncated": (
                    event: ConversationItemTruncatedEvent,
                ) => unknown;
                error: (error: OpenAIRealtimeError) => void;
                event: (event: RealtimeServerEvent) => void;
                "input_audio_buffer.cleared": (
                    event: InputAudioBufferClearedEvent,
                ) => unknown;
                "input_audio_buffer.committed": (
                    event: InputAudioBufferCommittedEvent,
                ) => unknown;
                "input_audio_buffer.dtmf_event_received": (
                    event: InputAudioBufferDtmfEventReceivedEvent,
                ) => unknown;
                "input_audio_buffer.speech_started": (
                    event: InputAudioBufferSpeechStartedEvent,
                ) => unknown;
                "input_audio_buffer.speech_stopped": (
                    event: InputAudioBufferSpeechStoppedEvent,
                ) => unknown;
                "input_audio_buffer.timeout_triggered": (
                    event: InputAudioBufferTimeoutTriggered,
                ) => unknown;
                "mcp_list_tools.completed": (event: McpListToolsCompleted) => unknown;
                "mcp_list_tools.failed": (event: McpListToolsFailed) => unknown;
                "mcp_list_tools.in_progress": (event: McpListToolsInProgress) => unknown;
                "output_audio_buffer.cleared": (
                    event: OutputAudioBufferCleared,
                ) => unknown;
                "output_audio_buffer.started": (
                    event: OutputAudioBufferStarted,
                ) => unknown;
                "output_audio_buffer.stopped": (
                    event: OutputAudioBufferStopped,
                ) => unknown;
                "rate_limits.updated": (event: RateLimitsUpdatedEvent) => unknown;
                "response.content_part.added": (
                    event: ResponseContentPartAddedEvent,
                ) => unknown;
                "response.content_part.done": (
                    event: ResponseContentPartDoneEvent,
                ) => unknown;
                "response.created": (event: ResponseCreatedEvent) => unknown;
                "response.done": (event: ResponseDoneEvent) => unknown;
                "response.function_call_arguments.delta": (
                    event: ResponseFunctionCallArgumentsDeltaEvent,
                ) => unknown;
                "response.function_call_arguments.done": (
                    event: ResponseFunctionCallArgumentsDoneEvent,
                ) => unknown;
                "response.mcp_call_arguments.delta": (
                    event: ResponseMcpCallArgumentsDelta,
                ) => unknown;
                "response.mcp_call_arguments.done": (
                    event: ResponseMcpCallArgumentsDone,
                ) => unknown;
                "response.mcp_call.completed": (
                    event: ResponseMcpCallCompleted,
                ) => unknown;
                "response.mcp_call.failed": (event: ResponseMcpCallFailed) => unknown;
                "response.mcp_call.in_progress": (
                    event: ResponseMcpCallInProgress,
                ) => unknown;
                "response.output_audio_transcript.delta": (
                    event: ResponseAudioTranscriptDeltaEvent,
                ) => unknown;
                "response.output_audio_transcript.done": (
                    event: ResponseAudioTranscriptDoneEvent,
                ) => unknown;
                "response.output_audio.delta": (event: ResponseAudioDeltaEvent) => unknown;
                "response.output_audio.done": (event: ResponseAudioDoneEvent) => unknown;
                "response.output_item.added": (
                    event: ResponseOutputItemAddedEvent,
                ) => unknown;
                "response.output_item.done": (
                    event: ResponseOutputItemDoneEvent,
                ) => unknown;
                "response.output_text.delta": (event: ResponseTextDeltaEvent) => unknown;
                "response.output_text.done": (event: ResponseTextDoneEvent) => unknown;
                "session.created": (event: SessionCreatedEvent) => unknown;
                "session.updated": (event: SessionUpdatedEvent) => unknown;
            },
            Event,
        >

      Returns this

      this, so that calls can be chained

    • Experimental

      Adds the listener function to the end of the listeners array for the event. No checks are made to see if the listener has already been added. Multiple calls passing the same combination of event and listener will result in the listener being added, and called, multiple times.

      Type Parameters

      • Event extends
            | "error"
            | "event"
            | "conversation.created"
            | "conversation.item.created"
            | "conversation.item.deleted"
            | "conversation.item.input_audio_transcription.completed"
            | "conversation.item.input_audio_transcription.delta"
            | "conversation.item.input_audio_transcription.failed"
            | "conversation.item.retrieved"
            | "conversation.item.truncated"
            | "input_audio_buffer.cleared"
            | "input_audio_buffer.committed"
            | "input_audio_buffer.dtmf_event_received"
            | "input_audio_buffer.speech_started"
            | "input_audio_buffer.speech_stopped"
            | "rate_limits.updated"
            | "response.output_audio.delta"
            | "response.output_audio.done"
            | "response.output_audio_transcript.delta"
            | "response.output_audio_transcript.done"
            | "response.content_part.added"
            | "response.content_part.done"
            | "response.created"
            | "response.done"
            | "response.function_call_arguments.delta"
            | "response.function_call_arguments.done"
            | "response.output_item.added"
            | "response.output_item.done"
            | "response.output_text.delta"
            | "response.output_text.done"
            | "session.created"
            | "session.updated"
            | "output_audio_buffer.started"
            | "output_audio_buffer.stopped"
            | "output_audio_buffer.cleared"
            | "conversation.item.added"
            | "conversation.item.done"
            | "input_audio_buffer.timeout_triggered"
            | "conversation.item.input_audio_transcription.segment"
            | "mcp_list_tools.in_progress"
            | "mcp_list_tools.completed"
            | "mcp_list_tools.failed"
            | "response.mcp_call_arguments.delta"
            | "response.mcp_call_arguments.done"
            | "response.mcp_call.in_progress"
            | "response.mcp_call.completed"
            | "response.mcp_call.failed"

      Parameters

      • event: Event
      • listener: EventListener<
            {
                "conversation.created": (event: ConversationCreatedEvent) => unknown;
                "conversation.item.added": (event: ConversationItemAdded) => unknown;
                "conversation.item.created": (
                    event: ConversationItemCreatedEvent,
                ) => unknown;
                "conversation.item.deleted": (
                    event: ConversationItemDeletedEvent,
                ) => unknown;
                "conversation.item.done": (event: ConversationItemDone) => unknown;
                "conversation.item.input_audio_transcription.completed": (
                    event: ConversationItemInputAudioTranscriptionCompletedEvent,
                ) => unknown;
                "conversation.item.input_audio_transcription.delta": (
                    event: ConversationItemInputAudioTranscriptionDeltaEvent,
                ) => unknown;
                "conversation.item.input_audio_transcription.failed": (
                    event: ConversationItemInputAudioTranscriptionFailedEvent,
                ) => unknown;
                "conversation.item.input_audio_transcription.segment": (
                    event: ConversationItemInputAudioTranscriptionSegment,
                ) => unknown;
                "conversation.item.retrieved": (
                    event: ConversationItemRetrieved,
                ) => unknown;
                "conversation.item.truncated": (
                    event: ConversationItemTruncatedEvent,
                ) => unknown;
                error: (error: OpenAIRealtimeError) => void;
                event: (event: RealtimeServerEvent) => void;
                "input_audio_buffer.cleared": (
                    event: InputAudioBufferClearedEvent,
                ) => unknown;
                "input_audio_buffer.committed": (
                    event: InputAudioBufferCommittedEvent,
                ) => unknown;
                "input_audio_buffer.dtmf_event_received": (
                    event: InputAudioBufferDtmfEventReceivedEvent,
                ) => unknown;
                "input_audio_buffer.speech_started": (
                    event: InputAudioBufferSpeechStartedEvent,
                ) => unknown;
                "input_audio_buffer.speech_stopped": (
                    event: InputAudioBufferSpeechStoppedEvent,
                ) => unknown;
                "input_audio_buffer.timeout_triggered": (
                    event: InputAudioBufferTimeoutTriggered,
                ) => unknown;
                "mcp_list_tools.completed": (event: McpListToolsCompleted) => unknown;
                "mcp_list_tools.failed": (event: McpListToolsFailed) => unknown;
                "mcp_list_tools.in_progress": (event: McpListToolsInProgress) => unknown;
                "output_audio_buffer.cleared": (
                    event: OutputAudioBufferCleared,
                ) => unknown;
                "output_audio_buffer.started": (
                    event: OutputAudioBufferStarted,
                ) => unknown;
                "output_audio_buffer.stopped": (
                    event: OutputAudioBufferStopped,
                ) => unknown;
                "rate_limits.updated": (event: RateLimitsUpdatedEvent) => unknown;
                "response.content_part.added": (
                    event: ResponseContentPartAddedEvent,
                ) => unknown;
                "response.content_part.done": (
                    event: ResponseContentPartDoneEvent,
                ) => unknown;
                "response.created": (event: ResponseCreatedEvent) => unknown;
                "response.done": (event: ResponseDoneEvent) => unknown;
                "response.function_call_arguments.delta": (
                    event: ResponseFunctionCallArgumentsDeltaEvent,
                ) => unknown;
                "response.function_call_arguments.done": (
                    event: ResponseFunctionCallArgumentsDoneEvent,
                ) => unknown;
                "response.mcp_call_arguments.delta": (
                    event: ResponseMcpCallArgumentsDelta,
                ) => unknown;
                "response.mcp_call_arguments.done": (
                    event: ResponseMcpCallArgumentsDone,
                ) => unknown;
                "response.mcp_call.completed": (
                    event: ResponseMcpCallCompleted,
                ) => unknown;
                "response.mcp_call.failed": (event: ResponseMcpCallFailed) => unknown;
                "response.mcp_call.in_progress": (
                    event: ResponseMcpCallInProgress,
                ) => unknown;
                "response.output_audio_transcript.delta": (
                    event: ResponseAudioTranscriptDeltaEvent,
                ) => unknown;
                "response.output_audio_transcript.done": (
                    event: ResponseAudioTranscriptDoneEvent,
                ) => unknown;
                "response.output_audio.delta": (event: ResponseAudioDeltaEvent) => unknown;
                "response.output_audio.done": (event: ResponseAudioDoneEvent) => unknown;
                "response.output_item.added": (
                    event: ResponseOutputItemAddedEvent,
                ) => unknown;
                "response.output_item.done": (
                    event: ResponseOutputItemDoneEvent,
                ) => unknown;
                "response.output_text.delta": (event: ResponseTextDeltaEvent) => unknown;
                "response.output_text.done": (event: ResponseTextDoneEvent) => unknown;
                "session.created": (event: SessionCreatedEvent) => unknown;
                "session.updated": (event: SessionUpdatedEvent) => unknown;
            },
            Event,
        >

      Returns this

      this, so that calls can be chained

    • Experimental

      Adds a one-time listener function for the event. The next time the event is triggered, this listener is removed and then invoked.

      Type Parameters

      • Event extends
            | "error"
            | "event"
            | "conversation.created"
            | "conversation.item.created"
            | "conversation.item.deleted"
            | "conversation.item.input_audio_transcription.completed"
            | "conversation.item.input_audio_transcription.delta"
            | "conversation.item.input_audio_transcription.failed"
            | "conversation.item.retrieved"
            | "conversation.item.truncated"
            | "input_audio_buffer.cleared"
            | "input_audio_buffer.committed"
            | "input_audio_buffer.dtmf_event_received"
            | "input_audio_buffer.speech_started"
            | "input_audio_buffer.speech_stopped"
            | "rate_limits.updated"
            | "response.output_audio.delta"
            | "response.output_audio.done"
            | "response.output_audio_transcript.delta"
            | "response.output_audio_transcript.done"
            | "response.content_part.added"
            | "response.content_part.done"
            | "response.created"
            | "response.done"
            | "response.function_call_arguments.delta"
            | "response.function_call_arguments.done"
            | "response.output_item.added"
            | "response.output_item.done"
            | "response.output_text.delta"
            | "response.output_text.done"
            | "session.created"
            | "session.updated"
            | "output_audio_buffer.started"
            | "output_audio_buffer.stopped"
            | "output_audio_buffer.cleared"
            | "conversation.item.added"
            | "conversation.item.done"
            | "input_audio_buffer.timeout_triggered"
            | "conversation.item.input_audio_transcription.segment"
            | "mcp_list_tools.in_progress"
            | "mcp_list_tools.completed"
            | "mcp_list_tools.failed"
            | "response.mcp_call_arguments.delta"
            | "response.mcp_call_arguments.done"
            | "response.mcp_call.in_progress"
            | "response.mcp_call.completed"
            | "response.mcp_call.failed"

      Parameters

      • event: Event
      • listener: EventListener<
            {
                "conversation.created": (event: ConversationCreatedEvent) => unknown;
                "conversation.item.added": (event: ConversationItemAdded) => unknown;
                "conversation.item.created": (
                    event: ConversationItemCreatedEvent,
                ) => unknown;
                "conversation.item.deleted": (
                    event: ConversationItemDeletedEvent,
                ) => unknown;
                "conversation.item.done": (event: ConversationItemDone) => unknown;
                "conversation.item.input_audio_transcription.completed": (
                    event: ConversationItemInputAudioTranscriptionCompletedEvent,
                ) => unknown;
                "conversation.item.input_audio_transcription.delta": (
                    event: ConversationItemInputAudioTranscriptionDeltaEvent,
                ) => unknown;
                "conversation.item.input_audio_transcription.failed": (
                    event: ConversationItemInputAudioTranscriptionFailedEvent,
                ) => unknown;
                "conversation.item.input_audio_transcription.segment": (
                    event: ConversationItemInputAudioTranscriptionSegment,
                ) => unknown;
                "conversation.item.retrieved": (
                    event: ConversationItemRetrieved,
                ) => unknown;
                "conversation.item.truncated": (
                    event: ConversationItemTruncatedEvent,
                ) => unknown;
                error: (error: OpenAIRealtimeError) => void;
                event: (event: RealtimeServerEvent) => void;
                "input_audio_buffer.cleared": (
                    event: InputAudioBufferClearedEvent,
                ) => unknown;
                "input_audio_buffer.committed": (
                    event: InputAudioBufferCommittedEvent,
                ) => unknown;
                "input_audio_buffer.dtmf_event_received": (
                    event: InputAudioBufferDtmfEventReceivedEvent,
                ) => unknown;
                "input_audio_buffer.speech_started": (
                    event: InputAudioBufferSpeechStartedEvent,
                ) => unknown;
                "input_audio_buffer.speech_stopped": (
                    event: InputAudioBufferSpeechStoppedEvent,
                ) => unknown;
                "input_audio_buffer.timeout_triggered": (
                    event: InputAudioBufferTimeoutTriggered,
                ) => unknown;
                "mcp_list_tools.completed": (event: McpListToolsCompleted) => unknown;
                "mcp_list_tools.failed": (event: McpListToolsFailed) => unknown;
                "mcp_list_tools.in_progress": (event: McpListToolsInProgress) => unknown;
                "output_audio_buffer.cleared": (
                    event: OutputAudioBufferCleared,
                ) => unknown;
                "output_audio_buffer.started": (
                    event: OutputAudioBufferStarted,
                ) => unknown;
                "output_audio_buffer.stopped": (
                    event: OutputAudioBufferStopped,
                ) => unknown;
                "rate_limits.updated": (event: RateLimitsUpdatedEvent) => unknown;
                "response.content_part.added": (
                    event: ResponseContentPartAddedEvent,
                ) => unknown;
                "response.content_part.done": (
                    event: ResponseContentPartDoneEvent,
                ) => unknown;
                "response.created": (event: ResponseCreatedEvent) => unknown;
                "response.done": (event: ResponseDoneEvent) => unknown;
                "response.function_call_arguments.delta": (
                    event: ResponseFunctionCallArgumentsDeltaEvent,
                ) => unknown;
                "response.function_call_arguments.done": (
                    event: ResponseFunctionCallArgumentsDoneEvent,
                ) => unknown;
                "response.mcp_call_arguments.delta": (
                    event: ResponseMcpCallArgumentsDelta,
                ) => unknown;
                "response.mcp_call_arguments.done": (
                    event: ResponseMcpCallArgumentsDone,
                ) => unknown;
                "response.mcp_call.completed": (
                    event: ResponseMcpCallCompleted,
                ) => unknown;
                "response.mcp_call.failed": (event: ResponseMcpCallFailed) => unknown;
                "response.mcp_call.in_progress": (
                    event: ResponseMcpCallInProgress,
                ) => unknown;
                "response.output_audio_transcript.delta": (
                    event: ResponseAudioTranscriptDeltaEvent,
                ) => unknown;
                "response.output_audio_transcript.done": (
                    event: ResponseAudioTranscriptDoneEvent,
                ) => unknown;
                "response.output_audio.delta": (event: ResponseAudioDeltaEvent) => unknown;
                "response.output_audio.done": (event: ResponseAudioDoneEvent) => unknown;
                "response.output_item.added": (
                    event: ResponseOutputItemAddedEvent,
                ) => unknown;
                "response.output_item.done": (
                    event: ResponseOutputItemDoneEvent,
                ) => unknown;
                "response.output_text.delta": (event: ResponseTextDeltaEvent) => unknown;
                "response.output_text.done": (event: ResponseTextDoneEvent) => unknown;
                "session.created": (event: SessionCreatedEvent) => unknown;
                "session.updated": (event: SessionUpdatedEvent) => unknown;
            },
            Event,
        >

      Returns this

      this, so that calls can be chained

    • Experimental

      Send an event to the API.

      Parameters

      • event: RealtimeClientEvent

      Returns void

    • Experimental

      Creates a pre-configured SapOpenAiRealtimeWs client and opens the WebSocket connection to SAP AI Core. Resolves the deployment, fetches a bearer token, and sets the SAP-specific headers automatically.

      Parameters

      • options: SapOpenAiRealtimeInput

        Options including model deployment, destination, and client type. A plain model name string is accepted as shorthand for { deployment: modelName }.

      Returns Promise<SapOpenAiRealtimeWs>

      A promise that resolves to a connected SapOpenAiRealtimeWs instance.

      import { SapOpenAiRealtimeWs } from '@sap-ai-sdk/openai/realtime';

      const client = await SapOpenAiRealtimeWs.createClient('gpt-realtime');
      client.on('session.created', () => {
      client.send({
      type: 'session.update',
      session: { type: 'realtime', output_modalities: ['audio'] }
      });
      });