Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .release-please-manifest.json
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
{
".": "1.107.0"
".": "1.107.1"
}
6 changes: 3 additions & 3 deletions .stats.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
configured_endpoints: 118
openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/openai%2Fopenai-7807ec6037efcee1af7decbfd3974a42b761fb6c6a71b4050fe43484d7fcbac4.yml
openapi_spec_hash: da6851e3891ad2659a50ed6a736fd32a
config_hash: 74d955cdc2377213f5268ea309090f6c
openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/openai%2Fopenai-16cb18bed32bae8c5840fb39a1bf664026cc40463ad0c487dcb0df1bd3d72db0.yml
openapi_spec_hash: 4cb51b22f98dee1a90bc7add82d1d132
config_hash: 930dac3aa861344867e4ac84f037b5df
8 changes: 8 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,13 @@
# Changelog

## 1.107.1 (2025-09-10)

Full Changelog: [v1.107.0...v1.107.1](https://github.com/openai/openai-python/compare/v1.107.0...v1.107.1)

### Chores

* **api:** fix realtime GA types ([570fc5a](https://github.com/openai/openai-python/commit/570fc5a28ada665fd658b24675361680cfeb086f))

## 1.107.0 (2025-09-08)

Full Changelog: [v1.106.1...v1.107.0](https://github.com/openai/openai-python/compare/v1.106.1...v1.107.0)
Expand Down
5 changes: 1 addition & 4 deletions api.md
Original file line number Diff line number Diff line change
Expand Up @@ -892,7 +892,6 @@ from openai.types.realtime import (
McpListToolsCompleted,
McpListToolsFailed,
McpListToolsInProgress,
Models,
NoiseReductionType,
OutputAudioBufferClearEvent,
RateLimitsUpdatedEvent,
Expand All @@ -909,6 +908,7 @@ from openai.types.realtime import (
RealtimeConversationItemUserMessage,
RealtimeError,
RealtimeErrorEvent,
RealtimeFunctionTool,
RealtimeMcpApprovalRequest,
RealtimeMcpApprovalResponse,
RealtimeMcpListTools,
Expand Down Expand Up @@ -961,7 +961,6 @@ from openai.types.realtime import (
SessionCreatedEvent,
SessionUpdateEvent,
SessionUpdatedEvent,
TranscriptionSessionCreated,
TranscriptionSessionUpdate,
TranscriptionSessionUpdatedEvent,
)
Expand All @@ -975,9 +974,7 @@ Types:
from openai.types.realtime import (
RealtimeSessionClientSecret,
RealtimeSessionCreateResponse,
RealtimeTranscriptionSessionClientSecret,
RealtimeTranscriptionSessionCreateResponse,
RealtimeTranscriptionSessionInputAudioTranscription,
RealtimeTranscriptionSessionTurnDetection,
ClientSecretCreateResponse,
)
Expand Down
2 changes: 1 addition & 1 deletion pyproject.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[project]
name = "openai"
version = "1.107.0"
version = "1.107.1"
description = "The official Python library for the openai API"
dynamic = ["readme"]
license = "Apache-2.0"
Expand Down
2 changes: 1 addition & 1 deletion src/openai/_version.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.

__title__ = "openai"
__version__ = "1.107.0" # x-release-please-version
__version__ = "1.107.1" # x-release-please-version
38 changes: 3 additions & 35 deletions src/openai/resources/realtime/realtime.py
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@
ClientSecretsWithStreamingResponse,
AsyncClientSecretsWithStreamingResponse,
)
from ...types.realtime import session_update_event_param, transcription_session_update_param
from ...types.realtime import session_update_event_param
from ...types.websocket_connection_options import WebsocketConnectionOptions
from ...types.realtime.realtime_client_event import RealtimeClientEvent
from ...types.realtime.realtime_server_event import RealtimeServerEvent
Expand Down Expand Up @@ -199,7 +199,6 @@ class AsyncRealtimeConnection:
input_audio_buffer: AsyncRealtimeInputAudioBufferResource
conversation: AsyncRealtimeConversationResource
output_audio_buffer: AsyncRealtimeOutputAudioBufferResource
transcription_session: AsyncRealtimeTranscriptionSessionResource

_connection: AsyncWebsocketConnection

Expand All @@ -211,7 +210,6 @@ def __init__(self, connection: AsyncWebsocketConnection) -> None:
self.input_audio_buffer = AsyncRealtimeInputAudioBufferResource(self)
self.conversation = AsyncRealtimeConversationResource(self)
self.output_audio_buffer = AsyncRealtimeOutputAudioBufferResource(self)
self.transcription_session = AsyncRealtimeTranscriptionSessionResource(self)

async def __aiter__(self) -> AsyncIterator[RealtimeServerEvent]:
"""
Expand Down Expand Up @@ -381,7 +379,6 @@ class RealtimeConnection:
input_audio_buffer: RealtimeInputAudioBufferResource
conversation: RealtimeConversationResource
output_audio_buffer: RealtimeOutputAudioBufferResource
transcription_session: RealtimeTranscriptionSessionResource

_connection: WebsocketConnection

Expand All @@ -393,7 +390,6 @@ def __init__(self, connection: WebsocketConnection) -> None:
self.input_audio_buffer = RealtimeInputAudioBufferResource(self)
self.conversation = RealtimeConversationResource(self)
self.output_audio_buffer = RealtimeOutputAudioBufferResource(self)
self.transcription_session = RealtimeTranscriptionSessionResource(self)

def __iter__(self) -> Iterator[RealtimeServerEvent]:
"""
Expand Down Expand Up @@ -565,8 +561,7 @@ def update(self, *, session: session_update_event_param.Session, event_id: str |
"""
Send this event to update the session’s configuration.
The client may send this event at any time to update any field
except for `voice` and `model`. `voice` can be updated only if there have been no other
audio outputs yet.
except for `voice` and `model`. `voice` can be updated only if there have been no other audio outputs yet.

When the server receives a `session.update`, it will respond
with a `session.updated` event showing the full, effective configuration.
Expand Down Expand Up @@ -800,19 +795,6 @@ def clear(self, *, event_id: str | NotGiven = NOT_GIVEN) -> None:
)


class RealtimeTranscriptionSessionResource(BaseRealtimeConnectionResource):
def update(
self, *, session: transcription_session_update_param.Session, event_id: str | NotGiven = NOT_GIVEN
) -> None:
"""Send this event to update a transcription session."""
self._connection.send(
cast(
RealtimeClientEventParam,
strip_not_given({"type": "transcription_session.update", "session": session, "event_id": event_id}),
)
)


class BaseAsyncRealtimeConnectionResource:
def __init__(self, connection: AsyncRealtimeConnection) -> None:
self._connection = connection
Expand All @@ -825,8 +807,7 @@ async def update(
"""
Send this event to update the session’s configuration.
The client may send this event at any time to update any field
except for `voice` and `model`. `voice` can be updated only if there have been no other
audio outputs yet.
except for `voice` and `model`. `voice` can be updated only if there have been no other audio outputs yet.

When the server receives a `session.update`, it will respond
with a `session.updated` event showing the full, effective configuration.
Expand Down Expand Up @@ -1058,16 +1039,3 @@ async def clear(self, *, event_id: str | NotGiven = NOT_GIVEN) -> None:
await self._connection.send(
cast(RealtimeClientEventParam, strip_not_given({"type": "output_audio_buffer.clear", "event_id": event_id}))
)


class AsyncRealtimeTranscriptionSessionResource(BaseAsyncRealtimeConnectionResource):
async def update(
self, *, session: transcription_session_update_param.Session, event_id: str | NotGiven = NOT_GIVEN
) -> None:
"""Send this event to update a transcription session."""
await self._connection.send(
cast(
RealtimeClientEventParam,
strip_not_given({"type": "transcription_session.update", "session": session, "event_id": event_id}),
)
)
14 changes: 2 additions & 12 deletions src/openai/types/realtime/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,6 @@

from __future__ import annotations

from .models import Models as Models
from .models_param import ModelsParam as ModelsParam
from .realtime_error import RealtimeError as RealtimeError
from .conversation_item import ConversationItem as ConversationItem
from .realtime_response import RealtimeResponse as RealtimeResponse
Expand All @@ -25,6 +23,7 @@
from .session_updated_event import SessionUpdatedEvent as SessionUpdatedEvent
from .conversation_item_done import ConversationItemDone as ConversationItemDone
from .realtime_audio_formats import RealtimeAudioFormats as RealtimeAudioFormats
from .realtime_function_tool import RealtimeFunctionTool as RealtimeFunctionTool
from .realtime_mcp_tool_call import RealtimeMcpToolCall as RealtimeMcpToolCall
from .realtime_mcphttp_error import RealtimeMcphttpError as RealtimeMcphttpError
from .response_created_event import ResponseCreatedEvent as ResponseCreatedEvent
Expand Down Expand Up @@ -60,15 +59,14 @@
from .response_mcp_call_completed import ResponseMcpCallCompleted as ResponseMcpCallCompleted
from .realtime_audio_config_output import RealtimeAudioConfigOutput as RealtimeAudioConfigOutput
from .realtime_audio_formats_param import RealtimeAudioFormatsParam as RealtimeAudioFormatsParam
from .realtime_function_tool_param import RealtimeFunctionToolParam as RealtimeFunctionToolParam
from .realtime_mcp_tool_call_param import RealtimeMcpToolCallParam as RealtimeMcpToolCallParam
from .realtime_mcphttp_error_param import RealtimeMcphttpErrorParam as RealtimeMcphttpErrorParam
from .transcription_session_update import TranscriptionSessionUpdate as TranscriptionSessionUpdate
from .client_secret_create_response import ClientSecretCreateResponse as ClientSecretCreateResponse
from .realtime_mcp_approval_request import RealtimeMcpApprovalRequest as RealtimeMcpApprovalRequest
from .realtime_mcp_list_tools_param import RealtimeMcpListToolsParam as RealtimeMcpListToolsParam
from .realtime_tracing_config_param import RealtimeTracingConfigParam as RealtimeTracingConfigParam
from .response_mcp_call_in_progress import ResponseMcpCallInProgress as ResponseMcpCallInProgress
from .transcription_session_created import TranscriptionSessionCreated as TranscriptionSessionCreated
from .conversation_item_create_event import ConversationItemCreateEvent as ConversationItemCreateEvent
from .conversation_item_delete_event import ConversationItemDeleteEvent as ConversationItemDeleteEvent
from .input_audio_buffer_clear_event import InputAudioBufferClearEvent as InputAudioBufferClearEvent
Expand Down Expand Up @@ -100,11 +98,9 @@
from .response_mcp_call_arguments_delta import ResponseMcpCallArgumentsDelta as ResponseMcpCallArgumentsDelta
from .input_audio_buffer_committed_event import InputAudioBufferCommittedEvent as InputAudioBufferCommittedEvent
from .realtime_audio_config_output_param import RealtimeAudioConfigOutputParam as RealtimeAudioConfigOutputParam
from .transcription_session_update_param import TranscriptionSessionUpdateParam as TranscriptionSessionUpdateParam
from .realtime_audio_input_turn_detection import RealtimeAudioInputTurnDetection as RealtimeAudioInputTurnDetection
from .realtime_mcp_approval_request_param import RealtimeMcpApprovalRequestParam as RealtimeMcpApprovalRequestParam
from .realtime_truncation_retention_ratio import RealtimeTruncationRetentionRatio as RealtimeTruncationRetentionRatio
from .transcription_session_updated_event import TranscriptionSessionUpdatedEvent as TranscriptionSessionUpdatedEvent
from .conversation_item_create_event_param import ConversationItemCreateEventParam as ConversationItemCreateEventParam
from .conversation_item_delete_event_param import ConversationItemDeleteEventParam as ConversationItemDeleteEventParam
from .input_audio_buffer_clear_event_param import InputAudioBufferClearEventParam as InputAudioBufferClearEventParam
Expand Down Expand Up @@ -181,9 +177,6 @@
from .realtime_response_usage_output_token_details import (
RealtimeResponseUsageOutputTokenDetails as RealtimeResponseUsageOutputTokenDetails,
)
from .realtime_transcription_session_client_secret import (
RealtimeTranscriptionSessionClientSecret as RealtimeTranscriptionSessionClientSecret,
)
from .response_function_call_arguments_delta_event import (
ResponseFunctionCallArgumentsDeltaEvent as ResponseFunctionCallArgumentsDeltaEvent,
)
Expand Down Expand Up @@ -229,9 +222,6 @@
from .conversation_item_input_audio_transcription_failed_event import (
ConversationItemInputAudioTranscriptionFailedEvent as ConversationItemInputAudioTranscriptionFailedEvent,
)
from .realtime_transcription_session_input_audio_transcription import (
RealtimeTranscriptionSessionInputAudioTranscription as RealtimeTranscriptionSessionInputAudioTranscription,
)
from .realtime_transcription_session_audio_input_turn_detection import (
RealtimeTranscriptionSessionAudioInputTurnDetection as RealtimeTranscriptionSessionAudioInputTurnDetection,
)
Expand Down
7 changes: 5 additions & 2 deletions src/openai/types/realtime/client_secret_create_response.py
Original file line number Diff line number Diff line change
@@ -1,15 +1,18 @@
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.

from typing import Union
from typing_extensions import TypeAlias
from typing_extensions import Annotated, TypeAlias

from ..._utils import PropertyInfo
from ..._models import BaseModel
from .realtime_session_create_response import RealtimeSessionCreateResponse
from .realtime_transcription_session_create_response import RealtimeTranscriptionSessionCreateResponse

__all__ = ["ClientSecretCreateResponse", "Session"]

Session: TypeAlias = Union[RealtimeSessionCreateResponse, RealtimeTranscriptionSessionCreateResponse]
Session: TypeAlias = Annotated[
Union[RealtimeSessionCreateResponse, RealtimeTranscriptionSessionCreateResponse], PropertyInfo(discriminator="type")
]


class ClientSecretCreateResponse(BaseModel):
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ class RealtimeAudioInputTurnDetection(BaseModel):
idle_timeout_ms: Optional[int] = None
"""
Optional idle timeout after which turn detection will auto-timeout when no
additional audio is received.
additional audio is received and emits a `timeout_triggered` event.
"""

interrupt_response: Optional[bool] = None
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ class RealtimeAudioInputTurnDetectionParam(TypedDict, total=False):
idle_timeout_ms: Optional[int]
"""
Optional idle timeout after which turn detection will auto-timeout when no
additional audio is received.
additional audio is received and emits a `timeout_triggered` event.
"""

interrupt_response: bool
Expand Down
2 changes: 0 additions & 2 deletions src/openai/types/realtime/realtime_client_event.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@
from .session_update_event import SessionUpdateEvent
from .response_cancel_event import ResponseCancelEvent
from .response_create_event import ResponseCreateEvent
from .transcription_session_update import TranscriptionSessionUpdate
from .conversation_item_create_event import ConversationItemCreateEvent
from .conversation_item_delete_event import ConversationItemDeleteEvent
from .input_audio_buffer_clear_event import InputAudioBufferClearEvent
Expand All @@ -32,7 +31,6 @@
ResponseCancelEvent,
ResponseCreateEvent,
SessionUpdateEvent,
TranscriptionSessionUpdate,
],
PropertyInfo(discriminator="type"),
]
2 changes: 0 additions & 2 deletions src/openai/types/realtime/realtime_client_event_param.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,6 @@
from .session_update_event_param import SessionUpdateEventParam
from .response_cancel_event_param import ResponseCancelEventParam
from .response_create_event_param import ResponseCreateEventParam
from .transcription_session_update_param import TranscriptionSessionUpdateParam
from .conversation_item_create_event_param import ConversationItemCreateEventParam
from .conversation_item_delete_event_param import ConversationItemDeleteEventParam
from .input_audio_buffer_clear_event_param import InputAudioBufferClearEventParam
Expand All @@ -32,5 +31,4 @@
ResponseCancelEventParam,
ResponseCreateEventParam,
SessionUpdateEventParam,
TranscriptionSessionUpdateParam,
]
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,10 @@

from ..._models import BaseModel

__all__ = ["Models"]
__all__ = ["RealtimeFunctionTool"]


class Models(BaseModel):
class RealtimeFunctionTool(BaseModel):
description: Optional[str] = None
"""
The description of the function, including guidance on when and how to call it,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,10 @@

from typing_extensions import Literal, TypedDict

__all__ = ["ModelsParam"]
__all__ = ["RealtimeFunctionToolParam"]


class ModelsParam(TypedDict, total=False):
class RealtimeFunctionToolParam(TypedDict, total=False):
description: str
"""
The description of the function, including guidance on when and how to call it,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,10 @@
from typing import List, Union, Optional
from typing_extensions import Literal, TypeAlias

from .models import Models
from ..._models import BaseModel
from ..shared.metadata import Metadata
from .conversation_item import ConversationItem
from .realtime_function_tool import RealtimeFunctionTool
from ..responses.response_prompt import ResponsePrompt
from ..responses.tool_choice_mcp import ToolChoiceMcp
from ..responses.tool_choice_options import ToolChoiceOptions
Expand All @@ -18,7 +18,7 @@

ToolChoice: TypeAlias = Union[ToolChoiceOptions, ToolChoiceFunction, ToolChoiceMcp]

Tool: TypeAlias = Union[Models, RealtimeResponseCreateMcpTool]
Tool: TypeAlias = Union[RealtimeFunctionTool, RealtimeResponseCreateMcpTool]


class RealtimeResponseCreateParams(BaseModel):
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,9 @@
from typing import List, Union, Iterable, Optional
from typing_extensions import Literal, TypeAlias, TypedDict

from .models_param import ModelsParam
from ..shared_params.metadata import Metadata
from .conversation_item_param import ConversationItemParam
from .realtime_function_tool_param import RealtimeFunctionToolParam
from ..responses.tool_choice_options import ToolChoiceOptions
from ..responses.response_prompt_param import ResponsePromptParam
from ..responses.tool_choice_mcp_param import ToolChoiceMcpParam
Expand All @@ -19,7 +19,7 @@

ToolChoice: TypeAlias = Union[ToolChoiceOptions, ToolChoiceFunctionParam, ToolChoiceMcpParam]

Tool: TypeAlias = Union[ModelsParam, RealtimeResponseCreateMcpToolParam]
Tool: TypeAlias = Union[RealtimeFunctionToolParam, RealtimeResponseCreateMcpToolParam]


class RealtimeResponseCreateParamsParam(TypedDict, total=False):
Expand Down
Loading
Loading