diff --git a/.fern/metadata.json b/.fern/metadata.json
index d89058f0..1b7623da 100644
--- a/.fern/metadata.json
+++ b/.fern/metadata.json
@@ -55,5 +55,5 @@
}
]
},
- "originGitCommit": "6c42e37ab55baee85654fffddd43af522c9fd27b"
+ "originGitCommit": "d70d58e8e6cdede07532d2bc772e5363b0647f48"
}
\ No newline at end of file
diff --git a/.fern/replay.lock b/.fern/replay.lock
new file mode 100644
index 00000000..8448e0ca
--- /dev/null
+++ b/.fern/replay.lock
@@ -0,0 +1,10 @@
+# DO NOT EDIT MANUALLY - Managed by Fern Replay
+version: "1.0"
+generations:
+ - commit_sha: 6cdc807dbce06ea8b7e9037f018adb6816f39236
+ tree_hash: 86240007aae7bfde82f6e453828a4b21974b8d3b
+ timestamp: 2026-05-20T07:38:29.115Z
+ cli_version: unknown
+ generator_versions: {}
+current_generation: 6cdc807dbce06ea8b7e9037f018adb6816f39236
+patches: []
diff --git a/.fernignore b/.fernignore
index 093cdb6f..220a3b5d 100644
--- a/.fernignore
+++ b/.fernignore
@@ -23,3 +23,6 @@ assets/
# Ignore custom tests
tests/
+.fern/replay.lock
+.fern/replay.yml
+.gitattributes
diff --git a/.gitattributes b/.gitattributes
new file mode 100644
index 00000000..74928d6a
--- /dev/null
+++ b/.gitattributes
@@ -0,0 +1 @@
+.fern/replay.lock linguist-generated=true
diff --git a/pyproject.toml b/pyproject.toml
index 91169602..41850495 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -4,7 +4,7 @@ dynamic = ["version"]
[tool.poetry]
name = "elevenlabs"
-version = "2.48.0"
+version = "2.49.0"
description = ""
readme = "README.md"
authors = []
diff --git a/reference.md b/reference.md
index af30ff63..1ea54006 100644
--- a/reference.md
+++ b/reference.md
@@ -5835,7 +5835,7 @@ client.audio_native.update_content_from_url(
-
-(Deprecated) This endpoint is deprecated. Use /v1/workspace/analytics/query/usage-by-product-over-time instead. Returns the usage metrics for the current user or the entire workspace they are part of. The response provides a time axis based on the specified aggregation interval (default: day), with usage values for each interval along that axis. Usage is broken down by the selected breakdown type. For example, breakdown type "voice" will return the usage of each voice for each interval along the time axis.
+(Deprecated) This endpoint is deprecated. Use /v1/workspace/analytics/query/usage-by-product-over-time instead, which exposes the bucket size as `interval_seconds` (an integer in seconds) rather than `aggregation_interval`. Returns the usage metrics for the current user or the entire workspace they are part of. The response provides a time axis based on the specified aggregation interval (default: day), with usage values for each interval along that axis. Usage is broken down by the selected breakdown type. For example, breakdown type "voice" will return the usage of each voice for each interval along the time axis.
@@ -7760,6 +7760,14 @@ client.speech_engine.create(
-
+**overrides:** `typing.Optional[SpeechEngineConversationInitiationClientDataConfig]` — Override settings the client may set during conversation initiation
+
+
+
+
+
+-
+
**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.
@@ -8050,6 +8058,14 @@ client.speech_engine.update(
-
+**overrides:** `typing.Optional[SpeechEngineConversationInitiationClientDataConfig]`
+
+
+
+
+
+-
+
**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.
@@ -8947,6 +8963,14 @@ client.conversational_ai.conversations.get(
-
+**format:** `typing.Optional[ConversationsGetRequestFormat]` — Response format. Defaults to 'json'. Set to 'opentelemetry' for an OTLP-compatible trace payload using the same structure as the post-call webhook.
+
+
+
+
+
+-
+
**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.
@@ -22366,6 +22390,914 @@ client.music.composition_plan.create(
+
+
+
+
+## Productions Orders
+client.productions.orders.list(...)
+
+-
+
+#### 📝 Description
+
+
+-
+
+
+-
+
+Lists Productions orders in the workspace. Supports filtering by status and date range, with pagination.
+
+
+
+
+
+#### 🔌 Usage
+
+
+-
+
+
+-
+
+```python
+import datetime
+
+from elevenlabs import ElevenLabs
+
+client = ElevenLabs(
+ api_key="YOUR_API_KEY",
+)
+client.productions.orders.list(
+ page_size=1,
+ offset=1,
+ status=["open"],
+ start_date=datetime.datetime.fromisoformat(
+ "2024-01-15 09:30:00+00:00",
+ ),
+ end_date=datetime.datetime.fromisoformat(
+ "2024-01-15 09:30:00+00:00",
+ ),
+)
+
+```
+
+
+
+
+
+#### ⚙️ Parameters
+
+
+-
+
+
+-
+
+**page_size:** `typing.Optional[int]` — Maximum number of orders to return per page.
+
+
+
+
+
+-
+
+**offset:** `typing.Optional[int]` — Number of orders to skip for pagination.
+
+
+
+
+
+-
+
+**status:** `typing.Optional[
+ typing.Union[OrderRequestState, typing.Sequence[OrderRequestState]]
+]` — Filter orders by one or more statuses.
+
+
+
+
+
+-
+
+**start_date:** `typing.Optional[dt.datetime]` — Filter orders created on or after this date.
+
+
+
+
+
+-
+
+**end_date:** `typing.Optional[dt.datetime]` — Filter orders created on or before this date.
+
+
+
+
+
+-
+
+**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.
+
+
+
+
+
+
+
+
+
+
+
+client.productions.orders.create()
+
+-
+
+#### 📝 Description
+
+
+-
+
+
+-
+
+Creates a new Productions order in the workspace. The order starts in the open state and can be configured with items before submission.
+
+
+
+
+
+#### 🔌 Usage
+
+
+-
+
+
+-
+
+```python
+from elevenlabs import ElevenLabs
+
+client = ElevenLabs(
+ api_key="YOUR_API_KEY",
+)
+client.productions.orders.create()
+
+```
+
+
+
+
+
+#### ⚙️ Parameters
+
+
+-
+
+
+-
+
+**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.
+
+
+
+
+
+
+
+
+
+
+
+client.productions.orders.get(...)
+
+-
+
+#### 📝 Description
+
+
+-
+
+
+-
+
+Retrieves full details for a Productions order.
+
+Quote and pricing information may not be available immediately; if you wish to see the quote before submission, you may need to poll the order details until it is ready.
+
+
+
+
+
+#### 🔌 Usage
+
+
+-
+
+
+-
+
+```python
+from elevenlabs import ElevenLabs
+
+client = ElevenLabs(
+ api_key="YOUR_API_KEY",
+)
+client.productions.orders.get(
+ order_id="order_id",
+)
+
+```
+
+
+
+
+
+#### ⚙️ Parameters
+
+
+-
+
+
+-
+
+**order_id:** `OrderId` — The ID of the order.
+
+
+
+
+
+-
+
+**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.
+
+
+
+
+
+
+
+
+
+
+
+client.productions.orders.update(...)
+
+-
+
+#### 📝 Description
+
+
+-
+
+
+-
+
+Updates an open order.
+
+
+
+
+
+#### 🔌 Usage
+
+
+-
+
+
+-
+
+```python
+from elevenlabs import ElevenLabs, UpdateOrderRequest
+
+client = ElevenLabs(
+ api_key="YOUR_API_KEY",
+)
+client.productions.orders.update(
+ order_id="order_id",
+ request=UpdateOrderRequest(
+ name="Spanish Dubs",
+ ),
+)
+
+```
+
+
+
+
+
+#### ⚙️ Parameters
+
+
+-
+
+
+-
+
+**order_id:** `OrderId` — The ID of the order.
+
+
+
+
+
+-
+
+**request:** `UpdateOrderRequest`
+
+
+
+
+
+-
+
+**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.
+
+
+
+
+
+
+
+
+
+
+
+client.productions.orders.submit(...)
+
+-
+
+#### 📝 Description
+
+
+-
+
+
+-
+
+Submits an open order for processing. The order must have at least one item. Once submitted, items can no longer be modified.
+
+Upon submission, the workspace will be charged for the order. The quote is based on information extracted from the uploaded media, such as its duration. The quote may not be available immediately; if you wish to see the quote before submission, you may need to poll the order details until the quote is ready.
+
+
+
+
+
+#### 🔌 Usage
+
+
+-
+
+
+-
+
+```python
+from elevenlabs import ElevenLabs
+
+client = ElevenLabs(
+ api_key="YOUR_API_KEY",
+)
+client.productions.orders.submit(
+ order_id="order_id",
+)
+
+```
+
+
+
+
+
+#### ⚙️ Parameters
+
+
+-
+
+
+-
+
+**order_id:** `OrderId` — The ID of the order.
+
+
+
+
+
+-
+
+**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.
+
+
+
+
+
+
+
+
+
+
+
+## Productions Orders Media
+client.productions.orders.media.register(...)
+
+-
+
+#### 📝 Description
+
+
+-
+
+
+-
+
+Registers a media file with an order, either by uploading it directly or by providing a URL to fetch it from. Exactly one of `media` or `media_url` must be provided. The registered media can then be referenced when adding order items.
+
+
+
+
+
+#### 🔌 Usage
+
+
+-
+
+
+-
+
+```python
+from elevenlabs import ElevenLabs
+
+client = ElevenLabs(
+ api_key="YOUR_API_KEY",
+)
+client.productions.orders.media.register(
+ order_id="order_id",
+ declared_language="declared_language",
+)
+
+```
+
+
+
+
+
+#### ⚙️ Parameters
+
+
+-
+
+
+-
+
+**order_id:** `OrderId` — The ID of the order to which this media will be attached.
+
+
+
+
+
+-
+
+**declared_language:** `str` — The language code of the media content (e.g. 'en', 'es-ES'). Must be a supported source language for some order item kind.
+
+
+
+
+
+-
+
+**media:** `from __future__ import annotations
+
+typing.Optional[core.File]` — See core.File for more documentation
+
+
+
+
+
+-
+
+**media_url:** `typing.Optional[str]` — A URL to fetch the media file from. Mutually exclusive with media.
+
+
+
+
+
+-
+
+**media_url_filename:** `typing.Optional[str]` — The filename for URL-sourced media (e.g. 'example.mp4'). Required when using media_url.
+
+
+
+
+
+-
+
+**media_url_content_type:** `typing.Optional[str]` — The MIME type for URL-sourced media (e.g. 'video/mp4'). Required when using media_url.
+
+
+
+
+
+-
+
+**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.
+
+
+
+
+
+
+
+
+
+
+
+client.productions.orders.media.get(...)
+
+-
+
+#### 📝 Description
+
+
+-
+
+
+-
+
+Retrieves metadata and a time-limited download URL for a previously uploaded media file.
+
+
+
+
+
+#### 🔌 Usage
+
+
+-
+
+
+-
+
+```python
+from elevenlabs import ElevenLabs
+
+client = ElevenLabs(
+ api_key="YOUR_API_KEY",
+)
+client.productions.orders.media.get(
+ order_id="order_id",
+ media_id="media_id",
+)
+
+```
+
+
+
+
+
+#### ⚙️ Parameters
+
+
+-
+
+
+-
+
+**order_id:** `OrderId` — The ID of the order.
+
+
+
+
+
+-
+
+**media_id:** `MediaId` — The ID of the media file.
+
+
+
+
+
+-
+
+**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.
+
+
+
+
+
+
+
+
+
+
+
+## Productions Orders Items
+client.productions.orders.items.upsert(...)
+
+-
+
+#### 📝 Description
+
+
+-
+
+
+-
+
+Adds or updates an order item on an open order. Returns the item ID and the quoted price.
+
+
+
+
+
+#### 🔌 Usage
+
+
+-
+
+
+-
+
+```python
+from elevenlabs import (
+ ElevenLabs,
+ RootModelAnnotatedUnionDubOrderItemRequestSubtitleOrderItemRequestFieldInfoAnnotationNoneTypeRequiredTrueDiscriminatorKindInput_Dub,
+ UpsertOrderItemRequest,
+)
+
+client = ElevenLabs(
+ api_key="YOUR_API_KEY",
+)
+client.productions.orders.items.upsert(
+ order_id="order_id",
+ request=UpsertOrderItemRequest(
+ item=RootModelAnnotatedUnionDubOrderItemRequestSubtitleOrderItemRequestFieldInfoAnnotationNoneTypeRequiredTrueDiscriminatorKindInput_Dub(
+ media_id="prodmedia_01jgatk6h0fwxrtbjade61yqhx",
+ source_language="en",
+ destination_languages=["hi", "fr-FR", "de"],
+ include_captions=True,
+ include_source_captions=False,
+ instructions="Voices don't need to match the originals, prioritize native-sounding voices",
+ captions_sdh=False,
+ ),
+ ),
+)
+
+```
+
+
+
+
+
+#### ⚙️ Parameters
+
+
+-
+
+
+-
+
+**order_id:** `OrderId` — The ID of the order.
+
+
+
+
+
+-
+
+**request:** `UpsertOrderItemRequest`
+
+
+
+
+
+-
+
+**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.
+
+
+
+
+
+
+
+
+
+
+
+client.productions.orders.items.remove(...)
+
+-
+
+#### 📝 Description
+
+
+-
+
+
+-
+
+Removes an order item from an open order.
+
+
+
+
+
+#### 🔌 Usage
+
+
+-
+
+
+-
+
+```python
+from elevenlabs import ElevenLabs
+
+client = ElevenLabs(
+ api_key="YOUR_API_KEY",
+)
+client.productions.orders.items.remove(
+ order_id="order_id",
+ item_id="item_id",
+)
+
+```
+
+
+
+
+
+#### ⚙️ Parameters
+
+
+-
+
+
+-
+
+**order_id:** `OrderId` — The ID of the order.
+
+
+
+
+
+-
+
+**item_id:** `ItemId` — The ID of the order item.
+
+
+
+
+
+-
+
+**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.
+
+
+
+
+
+
+
+
+
+
+
+## Productions Orders Deliverables
+client.productions.orders.deliverables.list(...)
+
+-
+
+#### 📝 Description
+
+
+-
+
+
+-
+
+Retrieves the delivered files for a completed order. Returns an empty list if the order is not yet completed.
+
+
+
+
+
+#### 🔌 Usage
+
+
+-
+
+
+-
+
+```python
+from elevenlabs import ElevenLabs
+
+client = ElevenLabs(
+ api_key="YOUR_API_KEY",
+)
+client.productions.orders.deliverables.list(
+ order_id="order_id",
+)
+
+```
+
+
+
+
+
+#### ⚙️ Parameters
+
+
+-
+
+
+-
+
+**order_id:** `OrderId` — The ID of the order.
+
+
+
+
+
+-
+
+**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.
+
+
+
+
+
+
+
+
+
+
+
+## Productions Orders Languages
+client.productions.orders.languages.list(...)
+
+-
+
+#### 📝 Description
+
+
+-
+
+
+-
+
+Returns the available languages for a given order item kind.
+
+
+
+
+
+#### 🔌 Usage
+
+
+-
+
+
+-
+
+```python
+from elevenlabs import ElevenLabs
+
+client = ElevenLabs(
+ api_key="YOUR_API_KEY",
+)
+client.productions.orders.languages.list(
+ order_item_kind="dub",
+)
+
+```
+
+
+
+
+
+#### ⚙️ Parameters
+
+
+-
+
+
+-
+
+**order_item_kind:** `OrderItemKind` — The kind of order item.
+
+
+
+
+
+-
+
+**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.
+
+
+
+
+
+
+
@@ -28367,7 +29299,7 @@ client.workspace.usage.get_usage_by_product_over_time(
-
-**interval_seconds:** `typing.Optional[int]`
+**interval_seconds:** `typing.Optional[int]` — Bucket size in seconds. Each row in the response covers this many seconds of usage. For example, pass 3600 for hourly buckets or 86400 for daily buckets.
diff --git a/src/elevenlabs/__init__.py b/src/elevenlabs/__init__.py
index b90ed8bc..54b8f037 100644
--- a/src/elevenlabs/__init__.py
+++ b/src/elevenlabs/__init__.py
@@ -29,6 +29,7 @@
Age,
AgentAlertingMonitorConfig,
AgentAlertingSettings,
+ AgentAlertingWebhookNotifier,
AgentBranchBasicInfo,
AgentBranchResponse,
AgentBranchSummary,
@@ -88,7 +89,6 @@
AnalysisPropertyConstantValue,
AnalysisPropertyType,
AnalysisScope,
- ApiIntegrationDocResponse,
ApiIntegrationOAuth2AuthCodeResponse,
ApiIntegrationOAuth2AuthCodeResponseScopeSeparator,
ApiIntegrationOAuth2CustomAppResponse,
@@ -108,6 +108,8 @@
ArrayJsonSchemaPropertyOutputConstantValueItem,
ArrayJsonSchemaPropertyOutputItems,
AsrConversationalConfig,
+ AsrConversationalConfigOverride,
+ AsrConversationalConfigOverrideConfig,
AsrConversationalConfigWorkflowOverride,
AsrInputFormat,
AsrProvider,
@@ -490,6 +492,7 @@
CreateOAuth2JwtRequest,
CreateOAuth2JwtRequestAlgorithm,
CreateOAuth2JwtRequestTokenResponseField,
+ CreateOrderResponse,
CreatePhoneNumberResponseModel,
CreatePreviouslyGeneratedVoiceRequest,
CreatePrivateKeyJwtRequest,
@@ -501,12 +504,12 @@
CreateServiceParams,
CreateSimulationTestRequest,
CreateSipTrunkPhoneNumberRequest,
- CreateSpeechEngineResponse,
CreateStaffParams,
CreateStringEnvironmentVariableRequest,
CreateToolCallUnitTestRequest,
CreateTranscriptRequest,
CreateTwilioPhoneNumberRequest,
+ CueOptionsRequest,
Currency,
CustomGuardrailConfig,
CustomGuardrailConfigTriggerAction,
@@ -552,6 +555,7 @@
DeleteWorkspaceGroupMemberResponseModel,
DeleteWorkspaceInviteResponseModel,
DeleteWorkspaceWebhookResponseModel,
+ DeliverableInfo,
DependentAvailableAgentIdentifier,
DependentAvailableAgentIdentifierAccessLevel,
DependentAvailableMcpServerIdentifier,
@@ -580,6 +584,7 @@
DocumentUsageModeEnum,
DocxExportOptions,
DtmfInputConfig,
+ DubOrderItemRequest,
DubbedSegment,
DubbingMediaMetadata,
DubbingMediaReference,
@@ -793,6 +798,7 @@
InvoiceResponse,
InvoiceResponseModelPaymentIntentStatus,
InvoiceResponseModelPaymentIntentStatussesItem,
+ ItemId,
KeepContextAlive,
KnowledgeBaseContentSearchResponseModel,
KnowledgeBaseContentSearchResult,
@@ -823,6 +829,8 @@
LanguageAddedResponse,
LanguageDetectionToolConfig,
LanguageDetectionToolResultModel,
+ LanguageInfo,
+ LanguagePairInfo,
LanguagePresetInput,
LanguagePresetOutput,
LanguagePresetTranslation,
@@ -853,9 +861,9 @@
ListHolidaysParams,
ListLocationsParams,
ListMcpToolsResponseModel,
+ ListOrdersResponse,
ListProductsParams,
ListResponseAgentBranchSummary,
- ListResponseApiIntegrationDocResponse,
ListResponseMeta,
ListServicesParams,
ListSpeechEnginesResponse,
@@ -920,6 +928,7 @@
McpToolConfigOverrideOutputInputOverridesValue_Constant,
McpToolConfigOverrideOutputInputOverridesValue_DynamicVariable,
McpToolConfigOverrideOutputInputOverridesValue_Llm,
+ MediaId,
MemoryEntrySearchResult,
MemoryEntrySearchResultSource,
MessageSearchSortBy,
@@ -956,10 +965,20 @@
ObjectJsonSchemaPropertyOutputPropertiesValue,
OrbAvatar,
OrchestratorToolMockBehaviorConfig,
+ OrderDeliverablesResponse,
+ OrderId,
+ OrderItemInfo,
+ OrderItemKind,
+ OrderMediaResponse,
+ OrderRequestState,
+ OrderResponse,
+ OrderState,
+ OrderSummary,
OutboundCallRecipient,
OutboundCallRecipientResponseModel,
OutboundSipTrunkConfigRequestModel,
OutputFormat,
+ PairedLanguagesResponse,
PartialTranscriptPayload,
PatchWorkspaceWebhookResponseModel,
PdfExportOptions,
@@ -1109,6 +1128,7 @@
PydanticPronunciationDictionaryVersionLocator,
QualityPresetType,
QueryParamsJsonSchema,
+ QuoteInfo,
RagChunkMetadata,
RagConfig,
RagConfigWorkflowOverride,
@@ -1133,7 +1153,9 @@
RegionConfigRequest,
RegionalProcessingSurchargeInfo,
RegisterForGroupSessionParams,
+ RegisterMediaResponse,
RemoveMemberFromGroupRequest,
+ RemoveOrderItemResponse,
Render,
RenderStatus,
RenderType,
@@ -1154,6 +1176,26 @@
ReviewResponseModelRejectReasonsItem,
ReviewResponseModelReviewStatus,
ReviewStatus,
+ RootModelAnnotatedUnionDubOrderItemRequestSubtitleOrderItemRequestFieldInfoAnnotationNoneTypeRequiredTrueDiscriminatorKindInput,
+ RootModelAnnotatedUnionDubOrderItemRequestSubtitleOrderItemRequestFieldInfoAnnotationNoneTypeRequiredTrueDiscriminatorKindInput_Dub,
+ RootModelAnnotatedUnionDubOrderItemRequestSubtitleOrderItemRequestFieldInfoAnnotationNoneTypeRequiredTrueDiscriminatorKindInput_Subtitles,
+ RootModelAnnotatedUnionDubOrderItemRequestSubtitleOrderItemRequestFieldInfoAnnotationNoneTypeRequiredTrueDiscriminatorKindOutput,
+ RootModelAnnotatedUnionDubOrderItemRequestSubtitleOrderItemRequestFieldInfoAnnotationNoneTypeRequiredTrueDiscriminatorKindOutput_Dub,
+ RootModelAnnotatedUnionDubOrderItemRequestSubtitleOrderItemRequestFieldInfoAnnotationNoneTypeRequiredTrueDiscriminatorKindOutput_Subtitles,
+ RootModelAnnotatedUnionPairedLanguagesResponseSingleLanguagesResponseFieldInfoAnnotationNoneTypeRequiredTrueDiscriminatorKind,
+ RootModelAnnotatedUnionPairedLanguagesResponseSingleLanguagesResponseFieldInfoAnnotationNoneTypeRequiredTrueDiscriminatorKind_Pair,
+ RootModelAnnotatedUnionPairedLanguagesResponseSingleLanguagesResponseFieldInfoAnnotationNoneTypeRequiredTrueDiscriminatorKind_Single,
+ RttAudioPayload,
+ RttEndOfStreamPayload,
+ RttErrorPayload,
+ RttFinalTranscriptPayload,
+ RttInputAudioChunkPayload,
+ RttInputFormatEnum,
+ RttOutputFormatEnum,
+ RttPartialTranscriptPayload,
+ RttSessionStartedPayload,
+ RttStatusPayload,
+ RttTranslationPayload,
SafetyCommonModel,
SafetyEvaluation,
SafetyResponseModel,
@@ -1209,6 +1251,7 @@
SimilarVoicesForSpeakerResponse,
SimulationTestModel,
SimulationToolMockBehaviorConfig,
+ SingleLanguagesResponse,
SingleTestRunRequestModel,
SingleUseTokenResponseModel,
SingleUseTokenType,
@@ -1243,6 +1286,7 @@
SpeakerUpdatedResponse,
SpeechEngineConfig,
SpeechEngineConfigRequestHeadersValue,
+ SpeechEngineConversationInitiationClientDataConfig,
SpeechEngineResponse,
SpeechEngineSummaryResponse,
SpeechHistoryItemResponse,
@@ -1266,10 +1310,12 @@
StudioClipReferenceClipType,
StudioTextStyleOutlineModel,
StudioTextStyleShadowModel,
+ SubmitOrderResponse,
Subscription,
SubscriptionResponse,
SubscriptionResponseModelMaxCreditLimitExtension,
SubscriptionStatusType,
+ SubtitleOrderItemRequest,
SuggestedAudioTag,
SupportedVoice,
SystemToolConfigInput,
@@ -1431,6 +1477,8 @@
UpdateOAuth2JwtRequest,
UpdateOAuth2JwtRequestAlgorithm,
UpdateOAuth2JwtRequestTokenResponseField,
+ UpdateOrderRequest,
+ UpdateOrderResponse,
UpdateProductParams,
UpdateProjectRequest,
UpdatePronunciationDictionariesRequest,
@@ -1440,6 +1488,8 @@
UpdateStaffParams,
UpdateToolCallUnitTestRequest,
UpdateWorkspaceMemberResponseModel,
+ UpsertOrderItemRequest,
+ UpsertOrderItemResponse,
UrlAvatar,
UrlModel,
UsageAggregationInterval,
@@ -1680,6 +1730,7 @@
history,
models,
music,
+ productions,
pronunciation_dictionaries,
samples,
service_accounts,
@@ -1694,6 +1745,7 @@
tokens,
usage,
user,
+ v_1_realtime_translation,
v_1_speech_to_text_realtime,
v_1_text_to_dialogue_stream_input,
v_1_text_to_speech_voice_id_multi_stream_input,
@@ -1784,6 +1836,7 @@
TextToSpeechStreamWithTimestampsRequestOutputFormat,
)
from .text_to_voice import VoiceDesignRequestModelModelId
+ from .v_1_realtime_translation import ReceiveRttMessage, SendRttMessage
from .v_1_speech_to_text_realtime import ReceiveTranscription, TextToSpeechCommitStrategy
from .v_1_text_to_dialogue_stream_input import ReceiveTextToDialogueWebsocketMessage
from .v_1_text_to_speech_voice_id_multi_stream_input import ReceiveMessageMulti, SendMessageMulti
@@ -1810,6 +1863,7 @@
"Age": ".types",
"AgentAlertingMonitorConfig": ".types",
"AgentAlertingSettings": ".types",
+ "AgentAlertingWebhookNotifier": ".types",
"AgentBranchBasicInfo": ".types",
"AgentBranchResponse": ".types",
"AgentBranchSummary": ".types",
@@ -1869,7 +1923,6 @@
"AnalysisPropertyConstantValue": ".types",
"AnalysisPropertyType": ".types",
"AnalysisScope": ".types",
- "ApiIntegrationDocResponse": ".types",
"ApiIntegrationOAuth2AuthCodeResponse": ".types",
"ApiIntegrationOAuth2AuthCodeResponseScopeSeparator": ".types",
"ApiIntegrationOAuth2CustomAppResponse": ".types",
@@ -1889,6 +1942,8 @@
"ArrayJsonSchemaPropertyOutputConstantValueItem": ".types",
"ArrayJsonSchemaPropertyOutputItems": ".types",
"AsrConversationalConfig": ".types",
+ "AsrConversationalConfigOverride": ".types",
+ "AsrConversationalConfigOverrideConfig": ".types",
"AsrConversationalConfigWorkflowOverride": ".types",
"AsrInputFormat": ".types",
"AsrProvider": ".types",
@@ -2300,6 +2355,7 @@
"CreateOAuth2JwtRequest": ".types",
"CreateOAuth2JwtRequestAlgorithm": ".types",
"CreateOAuth2JwtRequestTokenResponseField": ".types",
+ "CreateOrderResponse": ".types",
"CreatePhoneNumberResponseModel": ".types",
"CreatePreviouslyGeneratedVoiceRequest": ".types",
"CreatePrivateKeyJwtRequest": ".types",
@@ -2311,12 +2367,12 @@
"CreateServiceParams": ".types",
"CreateSimulationTestRequest": ".types",
"CreateSipTrunkPhoneNumberRequest": ".types",
- "CreateSpeechEngineResponse": ".types",
"CreateStaffParams": ".types",
"CreateStringEnvironmentVariableRequest": ".types",
"CreateToolCallUnitTestRequest": ".types",
"CreateTranscriptRequest": ".types",
"CreateTwilioPhoneNumberRequest": ".types",
+ "CueOptionsRequest": ".types",
"Currency": ".types",
"CustomGuardrailConfig": ".types",
"CustomGuardrailConfigTriggerAction": ".types",
@@ -2362,6 +2418,7 @@
"DeleteWorkspaceGroupMemberResponseModel": ".types",
"DeleteWorkspaceInviteResponseModel": ".types",
"DeleteWorkspaceWebhookResponseModel": ".types",
+ "DeliverableInfo": ".types",
"DependentAvailableAgentIdentifier": ".types",
"DependentAvailableAgentIdentifierAccessLevel": ".types",
"DependentAvailableMcpServerIdentifier": ".types",
@@ -2390,6 +2447,7 @@
"DocumentUsageModeEnum": ".types",
"DocxExportOptions": ".types",
"DtmfInputConfig": ".types",
+ "DubOrderItemRequest": ".types",
"DubbedSegment": ".types",
"DubbingCreateRequestMode": ".dubbing",
"DubbingListRequestDubbingStatus": ".dubbing",
@@ -2617,6 +2675,7 @@
"InvoiceResponse": ".types",
"InvoiceResponseModelPaymentIntentStatus": ".types",
"InvoiceResponseModelPaymentIntentStatussesItem": ".types",
+ "ItemId": ".types",
"KeepContextAlive": ".types",
"KnowledgeBaseContentSearchResponseModel": ".types",
"KnowledgeBaseContentSearchResult": ".types",
@@ -2647,6 +2706,8 @@
"LanguageAddedResponse": ".types",
"LanguageDetectionToolConfig": ".types",
"LanguageDetectionToolResultModel": ".types",
+ "LanguageInfo": ".types",
+ "LanguagePairInfo": ".types",
"LanguagePresetInput": ".types",
"LanguagePresetOutput": ".types",
"LanguagePresetTranslation": ".types",
@@ -2677,9 +2738,9 @@
"ListHolidaysParams": ".types",
"ListLocationsParams": ".types",
"ListMcpToolsResponseModel": ".types",
+ "ListOrdersResponse": ".types",
"ListProductsParams": ".types",
"ListResponseAgentBranchSummary": ".types",
- "ListResponseApiIntegrationDocResponse": ".types",
"ListResponseMeta": ".types",
"ListServicesParams": ".types",
"ListSpeechEnginesResponse": ".types",
@@ -2744,6 +2805,7 @@
"McpToolConfigOverrideOutputInputOverridesValue_Constant": ".types",
"McpToolConfigOverrideOutputInputOverridesValue_DynamicVariable": ".types",
"McpToolConfigOverrideOutputInputOverridesValue_Llm": ".types",
+ "MediaId": ".types",
"MemoryEntrySearchResult": ".types",
"MemoryEntrySearchResultSource": ".types",
"MessageSearchSortBy": ".types",
@@ -2782,10 +2844,20 @@
"ObjectJsonSchemaPropertyOutputPropertiesValue": ".types",
"OrbAvatar": ".types",
"OrchestratorToolMockBehaviorConfig": ".types",
+ "OrderDeliverablesResponse": ".types",
+ "OrderId": ".types",
+ "OrderItemInfo": ".types",
+ "OrderItemKind": ".types",
+ "OrderMediaResponse": ".types",
+ "OrderRequestState": ".types",
+ "OrderResponse": ".types",
+ "OrderState": ".types",
+ "OrderSummary": ".types",
"OutboundCallRecipient": ".types",
"OutboundCallRecipientResponseModel": ".types",
"OutboundSipTrunkConfigRequestModel": ".types",
"OutputFormat": ".types",
+ "PairedLanguagesResponse": ".types",
"PartialTranscriptPayload": ".types",
"PatchWorkspaceWebhookResponseModel": ".types",
"PdfExportOptions": ".types",
@@ -2937,6 +3009,7 @@
"PydanticPronunciationDictionaryVersionLocator": ".types",
"QualityPresetType": ".types",
"QueryParamsJsonSchema": ".types",
+ "QuoteInfo": ".types",
"RagChunkMetadata": ".types",
"RagConfig": ".types",
"RagConfigWorkflowOverride": ".types",
@@ -2959,6 +3032,7 @@
"RealtimeVoiceSettings": ".types",
"ReceiveMessage": ".v_1_text_to_speech_voice_id_stream_input",
"ReceiveMessageMulti": ".v_1_text_to_speech_voice_id_multi_stream_input",
+ "ReceiveRttMessage": ".v_1_realtime_translation",
"ReceiveTextToDialogueWebsocketMessage": ".v_1_text_to_dialogue_stream_input",
"ReceiveTranscription": ".v_1_speech_to_text_realtime",
"RecordingResponse": ".types",
@@ -2969,7 +3043,9 @@
"RegionConfigRequest": ".types",
"RegionalProcessingSurchargeInfo": ".types",
"RegisterForGroupSessionParams": ".types",
+ "RegisterMediaResponse": ".types",
"RemoveMemberFromGroupRequest": ".types",
+ "RemoveOrderItemResponse": ".types",
"Render": ".types",
"RenderStatus": ".types",
"RenderType": ".types",
@@ -2990,6 +3066,26 @@
"ReviewResponseModelRejectReasonsItem": ".types",
"ReviewResponseModelReviewStatus": ".types",
"ReviewStatus": ".types",
+ "RootModelAnnotatedUnionDubOrderItemRequestSubtitleOrderItemRequestFieldInfoAnnotationNoneTypeRequiredTrueDiscriminatorKindInput": ".types",
+ "RootModelAnnotatedUnionDubOrderItemRequestSubtitleOrderItemRequestFieldInfoAnnotationNoneTypeRequiredTrueDiscriminatorKindInput_Dub": ".types",
+ "RootModelAnnotatedUnionDubOrderItemRequestSubtitleOrderItemRequestFieldInfoAnnotationNoneTypeRequiredTrueDiscriminatorKindInput_Subtitles": ".types",
+ "RootModelAnnotatedUnionDubOrderItemRequestSubtitleOrderItemRequestFieldInfoAnnotationNoneTypeRequiredTrueDiscriminatorKindOutput": ".types",
+ "RootModelAnnotatedUnionDubOrderItemRequestSubtitleOrderItemRequestFieldInfoAnnotationNoneTypeRequiredTrueDiscriminatorKindOutput_Dub": ".types",
+ "RootModelAnnotatedUnionDubOrderItemRequestSubtitleOrderItemRequestFieldInfoAnnotationNoneTypeRequiredTrueDiscriminatorKindOutput_Subtitles": ".types",
+ "RootModelAnnotatedUnionPairedLanguagesResponseSingleLanguagesResponseFieldInfoAnnotationNoneTypeRequiredTrueDiscriminatorKind": ".types",
+ "RootModelAnnotatedUnionPairedLanguagesResponseSingleLanguagesResponseFieldInfoAnnotationNoneTypeRequiredTrueDiscriminatorKind_Pair": ".types",
+ "RootModelAnnotatedUnionPairedLanguagesResponseSingleLanguagesResponseFieldInfoAnnotationNoneTypeRequiredTrueDiscriminatorKind_Single": ".types",
+ "RttAudioPayload": ".types",
+ "RttEndOfStreamPayload": ".types",
+ "RttErrorPayload": ".types",
+ "RttFinalTranscriptPayload": ".types",
+ "RttInputAudioChunkPayload": ".types",
+ "RttInputFormatEnum": ".types",
+ "RttOutputFormatEnum": ".types",
+ "RttPartialTranscriptPayload": ".types",
+ "RttSessionStartedPayload": ".types",
+ "RttStatusPayload": ".types",
+ "RttTranslationPayload": ".types",
"SafetyCommonModel": ".types",
"SafetyEvaluation": ".types",
"SafetyResponseModel": ".types",
@@ -3033,6 +3129,7 @@
"SegmentedJsonExportOptions": ".types",
"SendMessage": ".v_1_text_to_speech_voice_id_stream_input",
"SendMessageMulti": ".v_1_text_to_speech_voice_id_multi_stream_input",
+ "SendRttMessage": ".v_1_realtime_translation",
"SendText": ".types",
"SendTextMulti": ".types",
"SessionStartedPayload": ".types",
@@ -3047,6 +3144,7 @@
"SimilarVoicesForSpeakerResponse": ".types",
"SimulationTestModel": ".types",
"SimulationToolMockBehaviorConfig": ".types",
+ "SingleLanguagesResponse": ".types",
"SingleTestRunRequestModel": ".types",
"SingleUseTokenResponseModel": ".types",
"SingleUseTokenType": ".types",
@@ -3081,6 +3179,7 @@
"SpeakerUpdatedResponse": ".types",
"SpeechEngineConfig": ".types",
"SpeechEngineConfigRequestHeadersValue": ".types",
+ "SpeechEngineConversationInitiationClientDataConfig": ".types",
"SpeechEngineResponse": ".types",
"SpeechEngineSummaryResponse": ".types",
"SpeechHistoryItemResponse": ".types",
@@ -3115,10 +3214,12 @@
"StudioClipReferenceClipType": ".types",
"StudioTextStyleOutlineModel": ".types",
"StudioTextStyleShadowModel": ".types",
+ "SubmitOrderResponse": ".types",
"Subscription": ".types",
"SubscriptionResponse": ".types",
"SubscriptionResponseModelMaxCreditLimitExtension": ".types",
"SubscriptionStatusType": ".types",
+ "SubtitleOrderItemRequest": ".types",
"SuggestedAudioTag": ".types",
"SupportedVoice": ".types",
"SystemToolConfigInput": ".types",
@@ -3291,6 +3392,8 @@
"UpdateOAuth2JwtRequest": ".types",
"UpdateOAuth2JwtRequestAlgorithm": ".types",
"UpdateOAuth2JwtRequestTokenResponseField": ".types",
+ "UpdateOrderRequest": ".types",
+ "UpdateOrderResponse": ".types",
"UpdateProductParams": ".types",
"UpdateProjectRequest": ".types",
"UpdatePronunciationDictionariesRequest": ".types",
@@ -3300,6 +3403,8 @@
"UpdateStaffParams": ".types",
"UpdateToolCallUnitTestRequest": ".types",
"UpdateWorkspaceMemberResponseModel": ".types",
+ "UpsertOrderItemRequest": ".types",
+ "UpsertOrderItemResponse": ".types",
"UrlAvatar": ".types",
"UrlModel": ".types",
"UsageAggregationInterval": ".types",
@@ -3534,6 +3639,7 @@
"models": ".models",
"music": ".music",
"play": ".play",
+ "productions": ".productions",
"pronunciation_dictionaries": ".pronunciation_dictionaries",
"samples": ".samples",
"save": ".play",
@@ -3550,6 +3656,7 @@
"tokens": ".tokens",
"usage": ".usage",
"user": ".user",
+ "v_1_realtime_translation": ".v_1_realtime_translation",
"v_1_speech_to_text_realtime": ".v_1_speech_to_text_realtime",
"v_1_text_to_dialogue_stream_input": ".v_1_text_to_dialogue_stream_input",
"v_1_text_to_speech_voice_id_multi_stream_input": ".v_1_text_to_speech_voice_id_multi_stream_input",
@@ -3601,6 +3708,7 @@ def __dir__():
"Age",
"AgentAlertingMonitorConfig",
"AgentAlertingSettings",
+ "AgentAlertingWebhookNotifier",
"AgentBranchBasicInfo",
"AgentBranchResponse",
"AgentBranchSummary",
@@ -3660,7 +3768,6 @@ def __dir__():
"AnalysisPropertyConstantValue",
"AnalysisPropertyType",
"AnalysisScope",
- "ApiIntegrationDocResponse",
"ApiIntegrationOAuth2AuthCodeResponse",
"ApiIntegrationOAuth2AuthCodeResponseScopeSeparator",
"ApiIntegrationOAuth2CustomAppResponse",
@@ -3680,6 +3787,8 @@ def __dir__():
"ArrayJsonSchemaPropertyOutputConstantValueItem",
"ArrayJsonSchemaPropertyOutputItems",
"AsrConversationalConfig",
+ "AsrConversationalConfigOverride",
+ "AsrConversationalConfigOverrideConfig",
"AsrConversationalConfigWorkflowOverride",
"AsrInputFormat",
"AsrProvider",
@@ -4091,6 +4200,7 @@ def __dir__():
"CreateOAuth2JwtRequest",
"CreateOAuth2JwtRequestAlgorithm",
"CreateOAuth2JwtRequestTokenResponseField",
+ "CreateOrderResponse",
"CreatePhoneNumberResponseModel",
"CreatePreviouslyGeneratedVoiceRequest",
"CreatePrivateKeyJwtRequest",
@@ -4102,12 +4212,12 @@ def __dir__():
"CreateServiceParams",
"CreateSimulationTestRequest",
"CreateSipTrunkPhoneNumberRequest",
- "CreateSpeechEngineResponse",
"CreateStaffParams",
"CreateStringEnvironmentVariableRequest",
"CreateToolCallUnitTestRequest",
"CreateTranscriptRequest",
"CreateTwilioPhoneNumberRequest",
+ "CueOptionsRequest",
"Currency",
"CustomGuardrailConfig",
"CustomGuardrailConfigTriggerAction",
@@ -4153,6 +4263,7 @@ def __dir__():
"DeleteWorkspaceGroupMemberResponseModel",
"DeleteWorkspaceInviteResponseModel",
"DeleteWorkspaceWebhookResponseModel",
+ "DeliverableInfo",
"DependentAvailableAgentIdentifier",
"DependentAvailableAgentIdentifierAccessLevel",
"DependentAvailableMcpServerIdentifier",
@@ -4181,6 +4292,7 @@ def __dir__():
"DocumentUsageModeEnum",
"DocxExportOptions",
"DtmfInputConfig",
+ "DubOrderItemRequest",
"DubbedSegment",
"DubbingCreateRequestMode",
"DubbingListRequestDubbingStatus",
@@ -4408,6 +4520,7 @@ def __dir__():
"InvoiceResponse",
"InvoiceResponseModelPaymentIntentStatus",
"InvoiceResponseModelPaymentIntentStatussesItem",
+ "ItemId",
"KeepContextAlive",
"KnowledgeBaseContentSearchResponseModel",
"KnowledgeBaseContentSearchResult",
@@ -4438,6 +4551,8 @@ def __dir__():
"LanguageAddedResponse",
"LanguageDetectionToolConfig",
"LanguageDetectionToolResultModel",
+ "LanguageInfo",
+ "LanguagePairInfo",
"LanguagePresetInput",
"LanguagePresetOutput",
"LanguagePresetTranslation",
@@ -4468,9 +4583,9 @@ def __dir__():
"ListHolidaysParams",
"ListLocationsParams",
"ListMcpToolsResponseModel",
+ "ListOrdersResponse",
"ListProductsParams",
"ListResponseAgentBranchSummary",
- "ListResponseApiIntegrationDocResponse",
"ListResponseMeta",
"ListServicesParams",
"ListSpeechEnginesResponse",
@@ -4535,6 +4650,7 @@ def __dir__():
"McpToolConfigOverrideOutputInputOverridesValue_Constant",
"McpToolConfigOverrideOutputInputOverridesValue_DynamicVariable",
"McpToolConfigOverrideOutputInputOverridesValue_Llm",
+ "MediaId",
"MemoryEntrySearchResult",
"MemoryEntrySearchResultSource",
"MessageSearchSortBy",
@@ -4573,10 +4689,20 @@ def __dir__():
"ObjectJsonSchemaPropertyOutputPropertiesValue",
"OrbAvatar",
"OrchestratorToolMockBehaviorConfig",
+ "OrderDeliverablesResponse",
+ "OrderId",
+ "OrderItemInfo",
+ "OrderItemKind",
+ "OrderMediaResponse",
+ "OrderRequestState",
+ "OrderResponse",
+ "OrderState",
+ "OrderSummary",
"OutboundCallRecipient",
"OutboundCallRecipientResponseModel",
"OutboundSipTrunkConfigRequestModel",
"OutputFormat",
+ "PairedLanguagesResponse",
"PartialTranscriptPayload",
"PatchWorkspaceWebhookResponseModel",
"PdfExportOptions",
@@ -4728,6 +4854,7 @@ def __dir__():
"PydanticPronunciationDictionaryVersionLocator",
"QualityPresetType",
"QueryParamsJsonSchema",
+ "QuoteInfo",
"RagChunkMetadata",
"RagConfig",
"RagConfigWorkflowOverride",
@@ -4750,6 +4877,7 @@ def __dir__():
"RealtimeVoiceSettings",
"ReceiveMessage",
"ReceiveMessageMulti",
+ "ReceiveRttMessage",
"ReceiveTextToDialogueWebsocketMessage",
"ReceiveTranscription",
"RecordingResponse",
@@ -4760,7 +4888,9 @@ def __dir__():
"RegionConfigRequest",
"RegionalProcessingSurchargeInfo",
"RegisterForGroupSessionParams",
+ "RegisterMediaResponse",
"RemoveMemberFromGroupRequest",
+ "RemoveOrderItemResponse",
"Render",
"RenderStatus",
"RenderType",
@@ -4781,6 +4911,26 @@ def __dir__():
"ReviewResponseModelRejectReasonsItem",
"ReviewResponseModelReviewStatus",
"ReviewStatus",
+ "RootModelAnnotatedUnionDubOrderItemRequestSubtitleOrderItemRequestFieldInfoAnnotationNoneTypeRequiredTrueDiscriminatorKindInput",
+ "RootModelAnnotatedUnionDubOrderItemRequestSubtitleOrderItemRequestFieldInfoAnnotationNoneTypeRequiredTrueDiscriminatorKindInput_Dub",
+ "RootModelAnnotatedUnionDubOrderItemRequestSubtitleOrderItemRequestFieldInfoAnnotationNoneTypeRequiredTrueDiscriminatorKindInput_Subtitles",
+ "RootModelAnnotatedUnionDubOrderItemRequestSubtitleOrderItemRequestFieldInfoAnnotationNoneTypeRequiredTrueDiscriminatorKindOutput",
+ "RootModelAnnotatedUnionDubOrderItemRequestSubtitleOrderItemRequestFieldInfoAnnotationNoneTypeRequiredTrueDiscriminatorKindOutput_Dub",
+ "RootModelAnnotatedUnionDubOrderItemRequestSubtitleOrderItemRequestFieldInfoAnnotationNoneTypeRequiredTrueDiscriminatorKindOutput_Subtitles",
+ "RootModelAnnotatedUnionPairedLanguagesResponseSingleLanguagesResponseFieldInfoAnnotationNoneTypeRequiredTrueDiscriminatorKind",
+ "RootModelAnnotatedUnionPairedLanguagesResponseSingleLanguagesResponseFieldInfoAnnotationNoneTypeRequiredTrueDiscriminatorKind_Pair",
+ "RootModelAnnotatedUnionPairedLanguagesResponseSingleLanguagesResponseFieldInfoAnnotationNoneTypeRequiredTrueDiscriminatorKind_Single",
+ "RttAudioPayload",
+ "RttEndOfStreamPayload",
+ "RttErrorPayload",
+ "RttFinalTranscriptPayload",
+ "RttInputAudioChunkPayload",
+ "RttInputFormatEnum",
+ "RttOutputFormatEnum",
+ "RttPartialTranscriptPayload",
+ "RttSessionStartedPayload",
+ "RttStatusPayload",
+ "RttTranslationPayload",
"SafetyCommonModel",
"SafetyEvaluation",
"SafetyResponseModel",
@@ -4824,6 +4974,7 @@ def __dir__():
"SegmentedJsonExportOptions",
"SendMessage",
"SendMessageMulti",
+ "SendRttMessage",
"SendText",
"SendTextMulti",
"SessionStartedPayload",
@@ -4838,6 +4989,7 @@ def __dir__():
"SimilarVoicesForSpeakerResponse",
"SimulationTestModel",
"SimulationToolMockBehaviorConfig",
+ "SingleLanguagesResponse",
"SingleTestRunRequestModel",
"SingleUseTokenResponseModel",
"SingleUseTokenType",
@@ -4872,6 +5024,7 @@ def __dir__():
"SpeakerUpdatedResponse",
"SpeechEngineConfig",
"SpeechEngineConfigRequestHeadersValue",
+ "SpeechEngineConversationInitiationClientDataConfig",
"SpeechEngineResponse",
"SpeechEngineSummaryResponse",
"SpeechHistoryItemResponse",
@@ -4906,10 +5059,12 @@ def __dir__():
"StudioClipReferenceClipType",
"StudioTextStyleOutlineModel",
"StudioTextStyleShadowModel",
+ "SubmitOrderResponse",
"Subscription",
"SubscriptionResponse",
"SubscriptionResponseModelMaxCreditLimitExtension",
"SubscriptionStatusType",
+ "SubtitleOrderItemRequest",
"SuggestedAudioTag",
"SupportedVoice",
"SystemToolConfigInput",
@@ -5082,6 +5237,8 @@ def __dir__():
"UpdateOAuth2JwtRequest",
"UpdateOAuth2JwtRequestAlgorithm",
"UpdateOAuth2JwtRequestTokenResponseField",
+ "UpdateOrderRequest",
+ "UpdateOrderResponse",
"UpdateProductParams",
"UpdateProjectRequest",
"UpdatePronunciationDictionariesRequest",
@@ -5091,6 +5248,8 @@ def __dir__():
"UpdateStaffParams",
"UpdateToolCallUnitTestRequest",
"UpdateWorkspaceMemberResponseModel",
+ "UpsertOrderItemRequest",
+ "UpsertOrderItemResponse",
"UrlAvatar",
"UrlModel",
"UsageAggregationInterval",
@@ -5325,6 +5484,7 @@ def __dir__():
"models",
"music",
"play",
+ "productions",
"pronunciation_dictionaries",
"samples",
"save",
@@ -5341,6 +5501,7 @@ def __dir__():
"tokens",
"usage",
"user",
+ "v_1_realtime_translation",
"v_1_speech_to_text_realtime",
"v_1_text_to_dialogue_stream_input",
"v_1_text_to_speech_voice_id_multi_stream_input",
diff --git a/src/elevenlabs/base_client.py b/src/elevenlabs/base_client.py
index bcc0caa4..468bc57e 100644
--- a/src/elevenlabs/base_client.py
+++ b/src/elevenlabs/base_client.py
@@ -21,6 +21,7 @@
from .history.client import AsyncHistoryClient, HistoryClient
from .models.client import AsyncModelsClient, ModelsClient
from .music.client import AsyncMusicClient, MusicClient
+ from .productions.client import AsyncProductionsClient, ProductionsClient
from .pronunciation_dictionaries.client import AsyncPronunciationDictionariesClient, PronunciationDictionariesClient
from .samples.client import AsyncSamplesClient, SamplesClient
from .service_accounts.client import AsyncServiceAccountsClient, ServiceAccountsClient
@@ -130,6 +131,7 @@ def __init__(
self._conversational_ai: typing.Optional[ConversationalAiClient] = None
self._speech_engine: typing.Optional[SpeechEngineClient] = None
self._environment_variables: typing.Optional[EnvironmentVariablesClient] = None
+ self._productions: typing.Optional[ProductionsClient] = None
self._tokens: typing.Optional[TokensClient] = None
self._workspace: typing.Optional[WorkspaceClient] = None
@@ -361,6 +363,14 @@ def environment_variables(self):
self._environment_variables = EnvironmentVariablesClient(client_wrapper=self._client_wrapper)
return self._environment_variables
+ @property
+ def productions(self):
+ if self._productions is None:
+ from .productions.client import ProductionsClient # noqa: E402
+
+ self._productions = ProductionsClient(client_wrapper=self._client_wrapper)
+ return self._productions
+
@property
def tokens(self):
if self._tokens is None:
@@ -468,6 +478,7 @@ def __init__(
self._conversational_ai: typing.Optional[AsyncConversationalAiClient] = None
self._speech_engine: typing.Optional[AsyncSpeechEngineClient] = None
self._environment_variables: typing.Optional[AsyncEnvironmentVariablesClient] = None
+ self._productions: typing.Optional[AsyncProductionsClient] = None
self._tokens: typing.Optional[AsyncTokensClient] = None
self._workspace: typing.Optional[AsyncWorkspaceClient] = None
@@ -707,6 +718,14 @@ def environment_variables(self):
self._environment_variables = AsyncEnvironmentVariablesClient(client_wrapper=self._client_wrapper)
return self._environment_variables
+ @property
+ def productions(self):
+ if self._productions is None:
+ from .productions.client import AsyncProductionsClient # noqa: E402
+
+ self._productions = AsyncProductionsClient(client_wrapper=self._client_wrapper)
+ return self._productions
+
@property
def tokens(self):
if self._tokens is None:
diff --git a/src/elevenlabs/conversational_ai/__init__.py b/src/elevenlabs/conversational_ai/__init__.py
index 457ea3fb..8375c882 100644
--- a/src/elevenlabs/conversational_ai/__init__.py
+++ b/src/elevenlabs/conversational_ai/__init__.py
@@ -27,7 +27,11 @@
whatsapp,
whatsapp_accounts,
)
- from .conversations import ConversationsListRequestExcludeStatusesItem, ConversationsListRequestSummaryMode
+ from .conversations import (
+ ConversationsGetRequestFormat,
+ ConversationsListRequestExcludeStatusesItem,
+ ConversationsListRequestSummaryMode,
+ )
from .knowledge_base import (
KnowledgeBaseGetOrCreateRagIndexesResponseValue,
KnowledgeBaseGetOrCreateRagIndexesResponseValue_Failure,
@@ -81,6 +85,7 @@
"BodySendAnOutboundMessageViaWhatsAppV1ConvaiWhatsappOutboundMessagePostTemplateParamsItem_Body": ".whatsapp",
"BodySendAnOutboundMessageViaWhatsAppV1ConvaiWhatsappOutboundMessagePostTemplateParamsItem_Button": ".whatsapp",
"BodySendAnOutboundMessageViaWhatsAppV1ConvaiWhatsappOutboundMessagePostTemplateParamsItem_Header": ".whatsapp",
+ "ConversationsGetRequestFormat": ".conversations",
"ConversationsListRequestExcludeStatusesItem": ".conversations",
"ConversationsListRequestSummaryMode": ".conversations",
"KnowledgeBaseGetOrCreateRagIndexesResponseValue": ".knowledge_base",
@@ -165,6 +170,7 @@ def __dir__():
"BodySendAnOutboundMessageViaWhatsAppV1ConvaiWhatsappOutboundMessagePostTemplateParamsItem_Body",
"BodySendAnOutboundMessageViaWhatsAppV1ConvaiWhatsappOutboundMessagePostTemplateParamsItem_Button",
"BodySendAnOutboundMessageViaWhatsAppV1ConvaiWhatsappOutboundMessagePostTemplateParamsItem_Header",
+ "ConversationsGetRequestFormat",
"ConversationsListRequestExcludeStatusesItem",
"ConversationsListRequestSummaryMode",
"KnowledgeBaseGetOrCreateRagIndexesResponseValue",
diff --git a/src/elevenlabs/conversational_ai/conversations/__init__.py b/src/elevenlabs/conversational_ai/conversations/__init__.py
index 7c3388e8..9e97bf5b 100644
--- a/src/elevenlabs/conversational_ai/conversations/__init__.py
+++ b/src/elevenlabs/conversational_ai/conversations/__init__.py
@@ -6,10 +6,15 @@
from importlib import import_module
if typing.TYPE_CHECKING:
- from .types import ConversationsListRequestExcludeStatusesItem, ConversationsListRequestSummaryMode
+ from .types import (
+ ConversationsGetRequestFormat,
+ ConversationsListRequestExcludeStatusesItem,
+ ConversationsListRequestSummaryMode,
+ )
from . import analysis, audio, feedback, files, messages, tags, topics
from .messages import MessagesTextSearchRequestSummaryMode
_dynamic_imports: typing.Dict[str, str] = {
+ "ConversationsGetRequestFormat": ".types",
"ConversationsListRequestExcludeStatusesItem": ".types",
"ConversationsListRequestSummaryMode": ".types",
"MessagesTextSearchRequestSummaryMode": ".messages",
@@ -45,6 +50,7 @@ def __dir__():
__all__ = [
+ "ConversationsGetRequestFormat",
"ConversationsListRequestExcludeStatusesItem",
"ConversationsListRequestSummaryMode",
"MessagesTextSearchRequestSummaryMode",
diff --git a/src/elevenlabs/conversational_ai/conversations/client.py b/src/elevenlabs/conversational_ai/conversations/client.py
index 6faa6f85..14de5e25 100644
--- a/src/elevenlabs/conversational_ai/conversations/client.py
+++ b/src/elevenlabs/conversational_ai/conversations/client.py
@@ -14,6 +14,7 @@
from ...types.get_sip_log_messages_response import GetSipLogMessagesResponse
from ...types.token_response_model import TokenResponseModel
from .raw_client import AsyncRawConversationsClient, RawConversationsClient
+from .types.conversations_get_request_format import ConversationsGetRequestFormat
from .types.conversations_list_request_exclude_statuses_item import ConversationsListRequestExcludeStatusesItem
from .types.conversations_list_request_summary_mode import ConversationsListRequestSummaryMode
@@ -357,7 +358,11 @@ def list(
return _response.data
def get(
- self, conversation_id: str, *, request_options: typing.Optional[RequestOptions] = None
+ self,
+ conversation_id: str,
+ *,
+ format: typing.Optional[ConversationsGetRequestFormat] = None,
+ request_options: typing.Optional[RequestOptions] = None,
) -> GetConversationResponseModel:
"""
Get the details of a particular conversation
@@ -367,6 +372,9 @@ def get(
conversation_id : str
The id of the conversation you're taking the action on.
+ format : typing.Optional[ConversationsGetRequestFormat]
+ Response format. Defaults to 'json'. Set to 'opentelemetry' for an OTLP-compatible trace payload using the same structure as the post-call webhook.
+
request_options : typing.Optional[RequestOptions]
Request-specific configuration.
@@ -386,7 +394,7 @@ def get(
conversation_id="123",
)
"""
- _response = self._raw_client.get(conversation_id, request_options=request_options)
+ _response = self._raw_client.get(conversation_id, format=format, request_options=request_options)
return _response.data
def delete(self, conversation_id: str, *, request_options: typing.Optional[RequestOptions] = None) -> typing.Any:
@@ -878,7 +886,11 @@ async def main() -> None:
return _response.data
async def get(
- self, conversation_id: str, *, request_options: typing.Optional[RequestOptions] = None
+ self,
+ conversation_id: str,
+ *,
+ format: typing.Optional[ConversationsGetRequestFormat] = None,
+ request_options: typing.Optional[RequestOptions] = None,
) -> GetConversationResponseModel:
"""
Get the details of a particular conversation
@@ -888,6 +900,9 @@ async def get(
conversation_id : str
The id of the conversation you're taking the action on.
+ format : typing.Optional[ConversationsGetRequestFormat]
+ Response format. Defaults to 'json'. Set to 'opentelemetry' for an OTLP-compatible trace payload using the same structure as the post-call webhook.
+
request_options : typing.Optional[RequestOptions]
Request-specific configuration.
@@ -915,7 +930,7 @@ async def main() -> None:
asyncio.run(main())
"""
- _response = await self._raw_client.get(conversation_id, request_options=request_options)
+ _response = await self._raw_client.get(conversation_id, format=format, request_options=request_options)
return _response.data
async def delete(
diff --git a/src/elevenlabs/conversational_ai/conversations/raw_client.py b/src/elevenlabs/conversational_ai/conversations/raw_client.py
index 4c48c584..124cc999 100644
--- a/src/elevenlabs/conversational_ai/conversations/raw_client.py
+++ b/src/elevenlabs/conversational_ai/conversations/raw_client.py
@@ -17,6 +17,7 @@
from ...types.get_conversations_page_response_model import GetConversationsPageResponseModel
from ...types.get_sip_log_messages_response import GetSipLogMessagesResponse
from ...types.token_response_model import TokenResponseModel
+from .types.conversations_get_request_format import ConversationsGetRequestFormat
from .types.conversations_list_request_exclude_statuses_item import ConversationsListRequestExcludeStatusesItem
from .types.conversations_list_request_summary_mode import ConversationsListRequestSummaryMode
@@ -352,7 +353,11 @@ def list(
raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
def get(
- self, conversation_id: str, *, request_options: typing.Optional[RequestOptions] = None
+ self,
+ conversation_id: str,
+ *,
+ format: typing.Optional[ConversationsGetRequestFormat] = None,
+ request_options: typing.Optional[RequestOptions] = None,
) -> HttpResponse[GetConversationResponseModel]:
"""
Get the details of a particular conversation
@@ -362,6 +367,9 @@ def get(
conversation_id : str
The id of the conversation you're taking the action on.
+ format : typing.Optional[ConversationsGetRequestFormat]
+ Response format. Defaults to 'json'. Set to 'opentelemetry' for an OTLP-compatible trace payload using the same structure as the post-call webhook.
+
request_options : typing.Optional[RequestOptions]
Request-specific configuration.
@@ -373,6 +381,9 @@ def get(
_response = self._client_wrapper.httpx_client.request(
f"v1/convai/conversations/{jsonable_encoder(conversation_id)}",
method="GET",
+ params={
+ "format": format,
+ },
request_options=request_options,
)
try:
@@ -849,7 +860,11 @@ async def list(
raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
async def get(
- self, conversation_id: str, *, request_options: typing.Optional[RequestOptions] = None
+ self,
+ conversation_id: str,
+ *,
+ format: typing.Optional[ConversationsGetRequestFormat] = None,
+ request_options: typing.Optional[RequestOptions] = None,
) -> AsyncHttpResponse[GetConversationResponseModel]:
"""
Get the details of a particular conversation
@@ -859,6 +874,9 @@ async def get(
conversation_id : str
The id of the conversation you're taking the action on.
+ format : typing.Optional[ConversationsGetRequestFormat]
+ Response format. Defaults to 'json'. Set to 'opentelemetry' for an OTLP-compatible trace payload using the same structure as the post-call webhook.
+
request_options : typing.Optional[RequestOptions]
Request-specific configuration.
@@ -870,6 +888,9 @@ async def get(
_response = await self._client_wrapper.httpx_client.request(
f"v1/convai/conversations/{jsonable_encoder(conversation_id)}",
method="GET",
+ params={
+ "format": format,
+ },
request_options=request_options,
)
try:
diff --git a/src/elevenlabs/conversational_ai/conversations/types/__init__.py b/src/elevenlabs/conversational_ai/conversations/types/__init__.py
index 21fb0c26..724948fc 100644
--- a/src/elevenlabs/conversational_ai/conversations/types/__init__.py
+++ b/src/elevenlabs/conversational_ai/conversations/types/__init__.py
@@ -6,9 +6,11 @@
from importlib import import_module
if typing.TYPE_CHECKING:
+ from .conversations_get_request_format import ConversationsGetRequestFormat
from .conversations_list_request_exclude_statuses_item import ConversationsListRequestExcludeStatusesItem
from .conversations_list_request_summary_mode import ConversationsListRequestSummaryMode
_dynamic_imports: typing.Dict[str, str] = {
+ "ConversationsGetRequestFormat": ".conversations_get_request_format",
"ConversationsListRequestExcludeStatusesItem": ".conversations_list_request_exclude_statuses_item",
"ConversationsListRequestSummaryMode": ".conversations_list_request_summary_mode",
}
@@ -35,4 +37,8 @@ def __dir__():
return sorted(lazy_attrs)
-__all__ = ["ConversationsListRequestExcludeStatusesItem", "ConversationsListRequestSummaryMode"]
+__all__ = [
+ "ConversationsGetRequestFormat",
+ "ConversationsListRequestExcludeStatusesItem",
+ "ConversationsListRequestSummaryMode",
+]
diff --git a/src/elevenlabs/conversational_ai/conversations/types/conversations_get_request_format.py b/src/elevenlabs/conversational_ai/conversations/types/conversations_get_request_format.py
new file mode 100644
index 00000000..093d0bf8
--- /dev/null
+++ b/src/elevenlabs/conversational_ai/conversations/types/conversations_get_request_format.py
@@ -0,0 +1,5 @@
+# This file was auto-generated by Fern from our API Definition.
+
+import typing
+
+ConversationsGetRequestFormat = typing.Union[typing.Literal["json", "opentelemetry"], typing.Any]
diff --git a/src/elevenlabs/core/client_wrapper.py b/src/elevenlabs/core/client_wrapper.py
index b59bd864..efe50811 100644
--- a/src/elevenlabs/core/client_wrapper.py
+++ b/src/elevenlabs/core/client_wrapper.py
@@ -22,10 +22,10 @@ def __init__(
def get_headers(self) -> typing.Dict[str, str]:
headers: typing.Dict[str, str] = {
- "User-Agent": "elevenlabs/2.48.0",
+ "User-Agent": "elevenlabs/2.49.0",
"X-Fern-Language": "Python",
"X-Fern-SDK-Name": "elevenlabs",
- "X-Fern-SDK-Version": "2.48.0",
+ "X-Fern-SDK-Version": "2.49.0",
**(self.get_custom_headers() or {}),
}
if self._api_key is not None:
diff --git a/src/elevenlabs/music/client.py b/src/elevenlabs/music/client.py
index 74425ddd..3169e86a 100644
--- a/src/elevenlabs/music/client.py
+++ b/src/elevenlabs/music/client.py
@@ -43,6 +43,7 @@ def video_to_music(
output_format: typing.Optional[AllowedOutputFormats] = None,
description: typing.Optional[str] = OMIT,
tags: typing.Optional[typing.List[str]] = OMIT,
+ model_id: typing.Optional[typing.Literal["music_v1"]] = OMIT,
sign_with_c_2_pa: typing.Optional[bool] = OMIT,
request_options: typing.Optional[RequestOptions] = None,
) -> typing.Iterator[bytes]:
@@ -63,6 +64,9 @@ def video_to_music(
tags : typing.Optional[typing.List[str]]
Optional list of style tags (e.g. ['upbeat', 'cinematic']). A maximum of 10 tags is allowed.
+ model_id : typing.Optional[typing.Literal["music_v1"]]
+ The model to use for the generation.
+
sign_with_c_2_pa : typing.Optional[bool]
Whether to sign the generated song with C2PA. Applicable only for mp3 files.
@@ -79,6 +83,7 @@ def video_to_music(
output_format=output_format,
description=description,
tags=tags,
+ model_id=model_id,
sign_with_c_2_pa=sign_with_c_2_pa,
request_options=request_options,
) as r:
@@ -441,6 +446,7 @@ async def video_to_music(
output_format: typing.Optional[AllowedOutputFormats] = None,
description: typing.Optional[str] = OMIT,
tags: typing.Optional[typing.List[str]] = OMIT,
+ model_id: typing.Optional[typing.Literal["music_v1"]] = OMIT,
sign_with_c_2_pa: typing.Optional[bool] = OMIT,
request_options: typing.Optional[RequestOptions] = None,
) -> typing.AsyncIterator[bytes]:
@@ -461,6 +467,9 @@ async def video_to_music(
tags : typing.Optional[typing.List[str]]
Optional list of style tags (e.g. ['upbeat', 'cinematic']). A maximum of 10 tags is allowed.
+ model_id : typing.Optional[typing.Literal["music_v1"]]
+ The model to use for the generation.
+
sign_with_c_2_pa : typing.Optional[bool]
Whether to sign the generated song with C2PA. Applicable only for mp3 files.
@@ -477,6 +486,7 @@ async def video_to_music(
output_format=output_format,
description=description,
tags=tags,
+ model_id=model_id,
sign_with_c_2_pa=sign_with_c_2_pa,
request_options=request_options,
) as r:
diff --git a/src/elevenlabs/music/raw_client.py b/src/elevenlabs/music/raw_client.py
index 4e18dc54..dd663524 100644
--- a/src/elevenlabs/music/raw_client.py
+++ b/src/elevenlabs/music/raw_client.py
@@ -34,6 +34,7 @@ def video_to_music(
output_format: typing.Optional[AllowedOutputFormats] = None,
description: typing.Optional[str] = OMIT,
tags: typing.Optional[typing.List[str]] = OMIT,
+ model_id: typing.Optional[typing.Literal["music_v1"]] = OMIT,
sign_with_c_2_pa: typing.Optional[bool] = OMIT,
request_options: typing.Optional[RequestOptions] = None,
) -> typing.Iterator[HttpResponse[typing.Iterator[bytes]]]:
@@ -54,6 +55,9 @@ def video_to_music(
tags : typing.Optional[typing.List[str]]
Optional list of style tags (e.g. ['upbeat', 'cinematic']). A maximum of 10 tags is allowed.
+ model_id : typing.Optional[typing.Literal["music_v1"]]
+ The model to use for the generation.
+
sign_with_c_2_pa : typing.Optional[bool]
Whether to sign the generated song with C2PA. Applicable only for mp3 files.
@@ -74,6 +78,7 @@ def video_to_music(
data={
"description": description,
"tags": tags,
+ "model_id": model_id,
"sign_with_c2pa": sign_with_c_2_pa,
},
files={
@@ -616,6 +621,7 @@ async def video_to_music(
output_format: typing.Optional[AllowedOutputFormats] = None,
description: typing.Optional[str] = OMIT,
tags: typing.Optional[typing.List[str]] = OMIT,
+ model_id: typing.Optional[typing.Literal["music_v1"]] = OMIT,
sign_with_c_2_pa: typing.Optional[bool] = OMIT,
request_options: typing.Optional[RequestOptions] = None,
) -> typing.AsyncIterator[AsyncHttpResponse[typing.AsyncIterator[bytes]]]:
@@ -636,6 +642,9 @@ async def video_to_music(
tags : typing.Optional[typing.List[str]]
Optional list of style tags (e.g. ['upbeat', 'cinematic']). A maximum of 10 tags is allowed.
+ model_id : typing.Optional[typing.Literal["music_v1"]]
+ The model to use for the generation.
+
sign_with_c_2_pa : typing.Optional[bool]
Whether to sign the generated song with C2PA. Applicable only for mp3 files.
@@ -656,6 +665,7 @@ async def video_to_music(
data={
"description": description,
"tags": tags,
+ "model_id": model_id,
"sign_with_c2pa": sign_with_c_2_pa,
},
files={
diff --git a/src/elevenlabs/productions/__init__.py b/src/elevenlabs/productions/__init__.py
new file mode 100644
index 00000000..60c065b3
--- /dev/null
+++ b/src/elevenlabs/productions/__init__.py
@@ -0,0 +1,34 @@
+# This file was auto-generated by Fern from our API Definition.
+
+# isort: skip_file
+
+import typing
+from importlib import import_module
+
+if typing.TYPE_CHECKING:
+ from . import orders
+_dynamic_imports: typing.Dict[str, str] = {"orders": ".orders"}
+
+
+def __getattr__(attr_name: str) -> typing.Any:
+ module_name = _dynamic_imports.get(attr_name)
+ if module_name is None:
+ raise AttributeError(f"No {attr_name} found in _dynamic_imports for module name -> {__name__}")
+ try:
+ module = import_module(module_name, __package__)
+ if module_name == f".{attr_name}":
+ return module
+ else:
+ return getattr(module, attr_name)
+ except ImportError as e:
+ raise ImportError(f"Failed to import {attr_name} from {module_name}: {e}") from e
+ except AttributeError as e:
+ raise AttributeError(f"Failed to get {attr_name} from {module_name}: {e}") from e
+
+
+def __dir__():
+ lazy_attrs = list(_dynamic_imports.keys())
+ return sorted(lazy_attrs)
+
+
+__all__ = ["orders"]
diff --git a/src/elevenlabs/productions/client.py b/src/elevenlabs/productions/client.py
new file mode 100644
index 00000000..16b54941
--- /dev/null
+++ b/src/elevenlabs/productions/client.py
@@ -0,0 +1,63 @@
+# This file was auto-generated by Fern from our API Definition.
+
+from __future__ import annotations
+
+import typing
+
+from ..core.client_wrapper import AsyncClientWrapper, SyncClientWrapper
+from .raw_client import AsyncRawProductionsClient, RawProductionsClient
+
+if typing.TYPE_CHECKING:
+ from .orders.client import AsyncOrdersClient, OrdersClient
+
+
+class ProductionsClient:
+ def __init__(self, *, client_wrapper: SyncClientWrapper):
+ self._raw_client = RawProductionsClient(client_wrapper=client_wrapper)
+ self._client_wrapper = client_wrapper
+ self._orders: typing.Optional[OrdersClient] = None
+
+ @property
+ def with_raw_response(self) -> RawProductionsClient:
+ """
+ Retrieves a raw implementation of this client that returns raw responses.
+
+ Returns
+ -------
+ RawProductionsClient
+ """
+ return self._raw_client
+
+ @property
+ def orders(self):
+ if self._orders is None:
+ from .orders.client import OrdersClient # noqa: E402
+
+ self._orders = OrdersClient(client_wrapper=self._client_wrapper)
+ return self._orders
+
+
+class AsyncProductionsClient:
+ def __init__(self, *, client_wrapper: AsyncClientWrapper):
+ self._raw_client = AsyncRawProductionsClient(client_wrapper=client_wrapper)
+ self._client_wrapper = client_wrapper
+ self._orders: typing.Optional[AsyncOrdersClient] = None
+
+ @property
+ def with_raw_response(self) -> AsyncRawProductionsClient:
+ """
+ Retrieves a raw implementation of this client that returns raw responses.
+
+ Returns
+ -------
+ AsyncRawProductionsClient
+ """
+ return self._raw_client
+
+ @property
+ def orders(self):
+ if self._orders is None:
+ from .orders.client import AsyncOrdersClient # noqa: E402
+
+ self._orders = AsyncOrdersClient(client_wrapper=self._client_wrapper)
+ return self._orders
diff --git a/src/elevenlabs/productions/orders/__init__.py b/src/elevenlabs/productions/orders/__init__.py
new file mode 100644
index 00000000..18d42c98
--- /dev/null
+++ b/src/elevenlabs/productions/orders/__init__.py
@@ -0,0 +1,39 @@
+# This file was auto-generated by Fern from our API Definition.
+
+# isort: skip_file
+
+import typing
+from importlib import import_module
+
+if typing.TYPE_CHECKING:
+ from . import deliverables, items, languages, media
+_dynamic_imports: typing.Dict[str, str] = {
+ "deliverables": ".deliverables",
+ "items": ".items",
+ "languages": ".languages",
+ "media": ".media",
+}
+
+
+def __getattr__(attr_name: str) -> typing.Any:
+ module_name = _dynamic_imports.get(attr_name)
+ if module_name is None:
+ raise AttributeError(f"No {attr_name} found in _dynamic_imports for module name -> {__name__}")
+ try:
+ module = import_module(module_name, __package__)
+ if module_name == f".{attr_name}":
+ return module
+ else:
+ return getattr(module, attr_name)
+ except ImportError as e:
+ raise ImportError(f"Failed to import {attr_name} from {module_name}: {e}") from e
+ except AttributeError as e:
+ raise AttributeError(f"Failed to get {attr_name} from {module_name}: {e}") from e
+
+
+def __dir__():
+ lazy_attrs = list(_dynamic_imports.keys())
+ return sorted(lazy_attrs)
+
+
+__all__ = ["deliverables", "items", "languages", "media"]
diff --git a/src/elevenlabs/productions/orders/client.py b/src/elevenlabs/productions/orders/client.py
new file mode 100644
index 00000000..1dd7fe9e
--- /dev/null
+++ b/src/elevenlabs/productions/orders/client.py
@@ -0,0 +1,573 @@
+# This file was auto-generated by Fern from our API Definition.
+
+from __future__ import annotations
+
+import datetime as dt
+import typing
+
+from ...core.client_wrapper import AsyncClientWrapper, SyncClientWrapper
+from ...core.request_options import RequestOptions
+from ...types.create_order_response import CreateOrderResponse
+from ...types.list_orders_response import ListOrdersResponse
+from ...types.order_id import OrderId
+from ...types.order_request_state import OrderRequestState
+from ...types.order_response import OrderResponse
+from ...types.submit_order_response import SubmitOrderResponse
+from ...types.update_order_request import UpdateOrderRequest
+from ...types.update_order_response import UpdateOrderResponse
+from .raw_client import AsyncRawOrdersClient, RawOrdersClient
+
+if typing.TYPE_CHECKING:
+ from .deliverables.client import AsyncDeliverablesClient, DeliverablesClient
+ from .items.client import AsyncItemsClient, ItemsClient
+ from .languages.client import AsyncLanguagesClient, LanguagesClient
+ from .media.client import AsyncMediaClient, MediaClient
+# this is used as the default value for optional parameters
+OMIT = typing.cast(typing.Any, ...)
+
+
+class OrdersClient:
+ def __init__(self, *, client_wrapper: SyncClientWrapper):
+ self._raw_client = RawOrdersClient(client_wrapper=client_wrapper)
+ self._client_wrapper = client_wrapper
+ self._media: typing.Optional[MediaClient] = None
+ self._items: typing.Optional[ItemsClient] = None
+ self._deliverables: typing.Optional[DeliverablesClient] = None
+ self._languages: typing.Optional[LanguagesClient] = None
+
+ @property
+ def with_raw_response(self) -> RawOrdersClient:
+ """
+ Retrieves a raw implementation of this client that returns raw responses.
+
+ Returns
+ -------
+ RawOrdersClient
+ """
+ return self._raw_client
+
+ def list(
+ self,
+ *,
+ page_size: typing.Optional[int] = None,
+ offset: typing.Optional[int] = None,
+ status: typing.Optional[typing.Union[OrderRequestState, typing.Sequence[OrderRequestState]]] = None,
+ start_date: typing.Optional[dt.datetime] = None,
+ end_date: typing.Optional[dt.datetime] = None,
+ request_options: typing.Optional[RequestOptions] = None,
+ ) -> ListOrdersResponse:
+ """
+ Lists Productions orders in the workspace. Supports filtering by status and date range, with pagination.
+
+ Parameters
+ ----------
+ page_size : typing.Optional[int]
+ Maximum number of orders to return per page.
+
+ offset : typing.Optional[int]
+ Number of orders to skip for pagination.
+
+ status : typing.Optional[typing.Union[OrderRequestState, typing.Sequence[OrderRequestState]]]
+ Filter orders by one or more statuses.
+
+ start_date : typing.Optional[dt.datetime]
+ Filter orders created on or after this date.
+
+ end_date : typing.Optional[dt.datetime]
+ Filter orders created on or before this date.
+
+ request_options : typing.Optional[RequestOptions]
+ Request-specific configuration.
+
+ Returns
+ -------
+ ListOrdersResponse
+ Successful Response
+
+ Examples
+ --------
+ import datetime
+
+ from elevenlabs import ElevenLabs
+
+ client = ElevenLabs(
+ api_key="YOUR_API_KEY",
+ )
+ client.productions.orders.list(
+ page_size=1,
+ offset=1,
+ status=["open"],
+ start_date=datetime.datetime.fromisoformat(
+ "2024-01-15 09:30:00+00:00",
+ ),
+ end_date=datetime.datetime.fromisoformat(
+ "2024-01-15 09:30:00+00:00",
+ ),
+ )
+ """
+ _response = self._raw_client.list(
+ page_size=page_size,
+ offset=offset,
+ status=status,
+ start_date=start_date,
+ end_date=end_date,
+ request_options=request_options,
+ )
+ return _response.data
+
+ def create(self, *, request_options: typing.Optional[RequestOptions] = None) -> CreateOrderResponse:
+ """
+ Creates a new Productions order in the workspace. The order starts in the open state and can be configured with items before submission.
+
+ Parameters
+ ----------
+ request_options : typing.Optional[RequestOptions]
+ Request-specific configuration.
+
+ Returns
+ -------
+ CreateOrderResponse
+ Successful Response
+
+ Examples
+ --------
+ from elevenlabs import ElevenLabs
+
+ client = ElevenLabs(
+ api_key="YOUR_API_KEY",
+ )
+ client.productions.orders.create()
+ """
+ _response = self._raw_client.create(request_options=request_options)
+ return _response.data
+
+ def get(self, order_id: OrderId, *, request_options: typing.Optional[RequestOptions] = None) -> OrderResponse:
+ """
+ Retrieves full details for a Productions order.
+
+ Quote and pricing information may not be available immediately; if you wish to see the quote before submission, you may need to poll the order details until it is ready.
+
+ Parameters
+ ----------
+ order_id : OrderId
+ The ID of the order.
+
+ request_options : typing.Optional[RequestOptions]
+ Request-specific configuration.
+
+ Returns
+ -------
+ OrderResponse
+ Successful Response
+
+ Examples
+ --------
+ from elevenlabs import ElevenLabs
+
+ client = ElevenLabs(
+ api_key="YOUR_API_KEY",
+ )
+ client.productions.orders.get(
+ order_id="order_id",
+ )
+ """
+ _response = self._raw_client.get(order_id, request_options=request_options)
+ return _response.data
+
+ def update(
+ self, order_id: OrderId, *, request: UpdateOrderRequest, request_options: typing.Optional[RequestOptions] = None
+ ) -> UpdateOrderResponse:
+ """
+ Updates an open order.
+
+ Parameters
+ ----------
+ order_id : OrderId
+ The ID of the order.
+
+ request : UpdateOrderRequest
+
+ request_options : typing.Optional[RequestOptions]
+ Request-specific configuration.
+
+ Returns
+ -------
+ UpdateOrderResponse
+ Successful Response
+
+ Examples
+ --------
+ from elevenlabs import ElevenLabs, UpdateOrderRequest
+
+ client = ElevenLabs(
+ api_key="YOUR_API_KEY",
+ )
+ client.productions.orders.update(
+ order_id="order_id",
+ request=UpdateOrderRequest(
+ name="Spanish Dubs",
+ ),
+ )
+ """
+ _response = self._raw_client.update(order_id, request=request, request_options=request_options)
+ return _response.data
+
+ def submit(
+ self, order_id: OrderId, *, request_options: typing.Optional[RequestOptions] = None
+ ) -> SubmitOrderResponse:
+ """
+ Submits an open order for processing. The order must have at least one item. Once submitted, items can no longer be modified.
+
+ Upon submission, the workspace will be charged for the order. The quote is based on information extracted from the uploaded media, such as its duration. The quote may not be available immediately; if you wish to see the quote before submission, you may need to poll the order details until the quote is ready.
+
+ Parameters
+ ----------
+ order_id : OrderId
+ The ID of the order.
+
+ request_options : typing.Optional[RequestOptions]
+ Request-specific configuration.
+
+ Returns
+ -------
+ SubmitOrderResponse
+ Successful Response
+
+ Examples
+ --------
+ from elevenlabs import ElevenLabs
+
+ client = ElevenLabs(
+ api_key="YOUR_API_KEY",
+ )
+ client.productions.orders.submit(
+ order_id="order_id",
+ )
+ """
+ _response = self._raw_client.submit(order_id, request_options=request_options)
+ return _response.data
+
+ @property
+ def media(self):
+ if self._media is None:
+ from .media.client import MediaClient # noqa: E402
+
+ self._media = MediaClient(client_wrapper=self._client_wrapper)
+ return self._media
+
+ @property
+ def items(self):
+ if self._items is None:
+ from .items.client import ItemsClient # noqa: E402
+
+ self._items = ItemsClient(client_wrapper=self._client_wrapper)
+ return self._items
+
+ @property
+ def deliverables(self):
+ if self._deliverables is None:
+ from .deliverables.client import DeliverablesClient # noqa: E402
+
+ self._deliverables = DeliverablesClient(client_wrapper=self._client_wrapper)
+ return self._deliverables
+
+ @property
+ def languages(self):
+ if self._languages is None:
+ from .languages.client import LanguagesClient # noqa: E402
+
+ self._languages = LanguagesClient(client_wrapper=self._client_wrapper)
+ return self._languages
+
+
+class AsyncOrdersClient:
+ def __init__(self, *, client_wrapper: AsyncClientWrapper):
+ self._raw_client = AsyncRawOrdersClient(client_wrapper=client_wrapper)
+ self._client_wrapper = client_wrapper
+ self._media: typing.Optional[AsyncMediaClient] = None
+ self._items: typing.Optional[AsyncItemsClient] = None
+ self._deliverables: typing.Optional[AsyncDeliverablesClient] = None
+ self._languages: typing.Optional[AsyncLanguagesClient] = None
+
+ @property
+ def with_raw_response(self) -> AsyncRawOrdersClient:
+ """
+ Retrieves a raw implementation of this client that returns raw responses.
+
+ Returns
+ -------
+ AsyncRawOrdersClient
+ """
+ return self._raw_client
+
+ async def list(
+ self,
+ *,
+ page_size: typing.Optional[int] = None,
+ offset: typing.Optional[int] = None,
+ status: typing.Optional[typing.Union[OrderRequestState, typing.Sequence[OrderRequestState]]] = None,
+ start_date: typing.Optional[dt.datetime] = None,
+ end_date: typing.Optional[dt.datetime] = None,
+ request_options: typing.Optional[RequestOptions] = None,
+ ) -> ListOrdersResponse:
+ """
+ Lists Productions orders in the workspace. Supports filtering by status and date range, with pagination.
+
+ Parameters
+ ----------
+ page_size : typing.Optional[int]
+ Maximum number of orders to return per page.
+
+ offset : typing.Optional[int]
+ Number of orders to skip for pagination.
+
+ status : typing.Optional[typing.Union[OrderRequestState, typing.Sequence[OrderRequestState]]]
+ Filter orders by one or more statuses.
+
+ start_date : typing.Optional[dt.datetime]
+ Filter orders created on or after this date.
+
+ end_date : typing.Optional[dt.datetime]
+ Filter orders created on or before this date.
+
+ request_options : typing.Optional[RequestOptions]
+ Request-specific configuration.
+
+ Returns
+ -------
+ ListOrdersResponse
+ Successful Response
+
+ Examples
+ --------
+ import asyncio
+ import datetime
+
+ from elevenlabs import AsyncElevenLabs
+
+ client = AsyncElevenLabs(
+ api_key="YOUR_API_KEY",
+ )
+
+
+ async def main() -> None:
+ await client.productions.orders.list(
+ page_size=1,
+ offset=1,
+ status=["open"],
+ start_date=datetime.datetime.fromisoformat(
+ "2024-01-15 09:30:00+00:00",
+ ),
+ end_date=datetime.datetime.fromisoformat(
+ "2024-01-15 09:30:00+00:00",
+ ),
+ )
+
+
+ asyncio.run(main())
+ """
+ _response = await self._raw_client.list(
+ page_size=page_size,
+ offset=offset,
+ status=status,
+ start_date=start_date,
+ end_date=end_date,
+ request_options=request_options,
+ )
+ return _response.data
+
+ async def create(self, *, request_options: typing.Optional[RequestOptions] = None) -> CreateOrderResponse:
+ """
+ Creates a new Productions order in the workspace. The order starts in the open state and can be configured with items before submission.
+
+ Parameters
+ ----------
+ request_options : typing.Optional[RequestOptions]
+ Request-specific configuration.
+
+ Returns
+ -------
+ CreateOrderResponse
+ Successful Response
+
+ Examples
+ --------
+ import asyncio
+
+ from elevenlabs import AsyncElevenLabs
+
+ client = AsyncElevenLabs(
+ api_key="YOUR_API_KEY",
+ )
+
+
+ async def main() -> None:
+ await client.productions.orders.create()
+
+
+ asyncio.run(main())
+ """
+ _response = await self._raw_client.create(request_options=request_options)
+ return _response.data
+
+ async def get(self, order_id: OrderId, *, request_options: typing.Optional[RequestOptions] = None) -> OrderResponse:
+ """
+ Retrieves full details for a Productions order.
+
+ Quote and pricing information may not be available immediately; if you wish to see the quote before submission, you may need to poll the order details until it is ready.
+
+ Parameters
+ ----------
+ order_id : OrderId
+ The ID of the order.
+
+ request_options : typing.Optional[RequestOptions]
+ Request-specific configuration.
+
+ Returns
+ -------
+ OrderResponse
+ Successful Response
+
+ Examples
+ --------
+ import asyncio
+
+ from elevenlabs import AsyncElevenLabs
+
+ client = AsyncElevenLabs(
+ api_key="YOUR_API_KEY",
+ )
+
+
+ async def main() -> None:
+ await client.productions.orders.get(
+ order_id="order_id",
+ )
+
+
+ asyncio.run(main())
+ """
+ _response = await self._raw_client.get(order_id, request_options=request_options)
+ return _response.data
+
+ async def update(
+ self, order_id: OrderId, *, request: UpdateOrderRequest, request_options: typing.Optional[RequestOptions] = None
+ ) -> UpdateOrderResponse:
+ """
+ Updates an open order.
+
+ Parameters
+ ----------
+ order_id : OrderId
+ The ID of the order.
+
+ request : UpdateOrderRequest
+
+ request_options : typing.Optional[RequestOptions]
+ Request-specific configuration.
+
+ Returns
+ -------
+ UpdateOrderResponse
+ Successful Response
+
+ Examples
+ --------
+ import asyncio
+
+ from elevenlabs import AsyncElevenLabs, UpdateOrderRequest
+
+ client = AsyncElevenLabs(
+ api_key="YOUR_API_KEY",
+ )
+
+
+ async def main() -> None:
+ await client.productions.orders.update(
+ order_id="order_id",
+ request=UpdateOrderRequest(
+ name="Spanish Dubs",
+ ),
+ )
+
+
+ asyncio.run(main())
+ """
+ _response = await self._raw_client.update(order_id, request=request, request_options=request_options)
+ return _response.data
+
+ async def submit(
+ self, order_id: OrderId, *, request_options: typing.Optional[RequestOptions] = None
+ ) -> SubmitOrderResponse:
+ """
+ Submits an open order for processing. The order must have at least one item. Once submitted, items can no longer be modified.
+
+ Upon submission, the workspace will be charged for the order. The quote is based on information extracted from the uploaded media, such as its duration. The quote may not be available immediately; if you wish to see the quote before submission, you may need to poll the order details until the quote is ready.
+
+ Parameters
+ ----------
+ order_id : OrderId
+ The ID of the order.
+
+ request_options : typing.Optional[RequestOptions]
+ Request-specific configuration.
+
+ Returns
+ -------
+ SubmitOrderResponse
+ Successful Response
+
+ Examples
+ --------
+ import asyncio
+
+ from elevenlabs import AsyncElevenLabs
+
+ client = AsyncElevenLabs(
+ api_key="YOUR_API_KEY",
+ )
+
+
+ async def main() -> None:
+ await client.productions.orders.submit(
+ order_id="order_id",
+ )
+
+
+ asyncio.run(main())
+ """
+ _response = await self._raw_client.submit(order_id, request_options=request_options)
+ return _response.data
+
+ @property
+ def media(self):
+ if self._media is None:
+ from .media.client import AsyncMediaClient # noqa: E402
+
+ self._media = AsyncMediaClient(client_wrapper=self._client_wrapper)
+ return self._media
+
+ @property
+ def items(self):
+ if self._items is None:
+ from .items.client import AsyncItemsClient # noqa: E402
+
+ self._items = AsyncItemsClient(client_wrapper=self._client_wrapper)
+ return self._items
+
+ @property
+ def deliverables(self):
+ if self._deliverables is None:
+ from .deliverables.client import AsyncDeliverablesClient # noqa: E402
+
+ self._deliverables = AsyncDeliverablesClient(client_wrapper=self._client_wrapper)
+ return self._deliverables
+
+ @property
+ def languages(self):
+ if self._languages is None:
+ from .languages.client import AsyncLanguagesClient # noqa: E402
+
+ self._languages = AsyncLanguagesClient(client_wrapper=self._client_wrapper)
+ return self._languages
diff --git a/src/elevenlabs/productions/orders/deliverables/__init__.py b/src/elevenlabs/productions/orders/deliverables/__init__.py
new file mode 100644
index 00000000..5cde0202
--- /dev/null
+++ b/src/elevenlabs/productions/orders/deliverables/__init__.py
@@ -0,0 +1,4 @@
+# This file was auto-generated by Fern from our API Definition.
+
+# isort: skip_file
+
diff --git a/src/elevenlabs/productions/orders/deliverables/client.py b/src/elevenlabs/productions/orders/deliverables/client.py
new file mode 100644
index 00000000..2b0bf946
--- /dev/null
+++ b/src/elevenlabs/productions/orders/deliverables/client.py
@@ -0,0 +1,115 @@
+# This file was auto-generated by Fern from our API Definition.
+
+import typing
+
+from ....core.client_wrapper import AsyncClientWrapper, SyncClientWrapper
+from ....core.request_options import RequestOptions
+from ....types.order_deliverables_response import OrderDeliverablesResponse
+from ....types.order_id import OrderId
+from .raw_client import AsyncRawDeliverablesClient, RawDeliverablesClient
+
+
+class DeliverablesClient:
+ def __init__(self, *, client_wrapper: SyncClientWrapper):
+ self._raw_client = RawDeliverablesClient(client_wrapper=client_wrapper)
+
+ @property
+ def with_raw_response(self) -> RawDeliverablesClient:
+ """
+ Retrieves a raw implementation of this client that returns raw responses.
+
+ Returns
+ -------
+ RawDeliverablesClient
+ """
+ return self._raw_client
+
+ def list(
+ self, order_id: OrderId, *, request_options: typing.Optional[RequestOptions] = None
+ ) -> OrderDeliverablesResponse:
+ """
+ Retrieves the delivered files for a completed order. Returns an empty list if the order is not yet completed.
+
+ Parameters
+ ----------
+ order_id : OrderId
+ The ID of the order.
+
+ request_options : typing.Optional[RequestOptions]
+ Request-specific configuration.
+
+ Returns
+ -------
+ OrderDeliverablesResponse
+ Successful Response
+
+ Examples
+ --------
+ from elevenlabs import ElevenLabs
+
+ client = ElevenLabs(
+ api_key="YOUR_API_KEY",
+ )
+ client.productions.orders.deliverables.list(
+ order_id="order_id",
+ )
+ """
+ _response = self._raw_client.list(order_id, request_options=request_options)
+ return _response.data
+
+
+class AsyncDeliverablesClient:
+ def __init__(self, *, client_wrapper: AsyncClientWrapper):
+ self._raw_client = AsyncRawDeliverablesClient(client_wrapper=client_wrapper)
+
+ @property
+ def with_raw_response(self) -> AsyncRawDeliverablesClient:
+ """
+ Retrieves a raw implementation of this client that returns raw responses.
+
+ Returns
+ -------
+ AsyncRawDeliverablesClient
+ """
+ return self._raw_client
+
+ async def list(
+ self, order_id: OrderId, *, request_options: typing.Optional[RequestOptions] = None
+ ) -> OrderDeliverablesResponse:
+ """
+ Retrieves the delivered files for a completed order. Returns an empty list if the order is not yet completed.
+
+ Parameters
+ ----------
+ order_id : OrderId
+ The ID of the order.
+
+ request_options : typing.Optional[RequestOptions]
+ Request-specific configuration.
+
+ Returns
+ -------
+ OrderDeliverablesResponse
+ Successful Response
+
+ Examples
+ --------
+ import asyncio
+
+ from elevenlabs import AsyncElevenLabs
+
+ client = AsyncElevenLabs(
+ api_key="YOUR_API_KEY",
+ )
+
+
+ async def main() -> None:
+ await client.productions.orders.deliverables.list(
+ order_id="order_id",
+ )
+
+
+ asyncio.run(main())
+ """
+ _response = await self._raw_client.list(order_id, request_options=request_options)
+ return _response.data
diff --git a/src/elevenlabs/productions/orders/deliverables/raw_client.py b/src/elevenlabs/productions/orders/deliverables/raw_client.py
new file mode 100644
index 00000000..8b0bd4fe
--- /dev/null
+++ b/src/elevenlabs/productions/orders/deliverables/raw_client.py
@@ -0,0 +1,124 @@
+# This file was auto-generated by Fern from our API Definition.
+
+import typing
+from json.decoder import JSONDecodeError
+
+from ....core.api_error import ApiError
+from ....core.client_wrapper import AsyncClientWrapper, SyncClientWrapper
+from ....core.http_response import AsyncHttpResponse, HttpResponse
+from ....core.jsonable_encoder import jsonable_encoder
+from ....core.request_options import RequestOptions
+from ....core.unchecked_base_model import construct_type
+from ....errors.unprocessable_entity_error import UnprocessableEntityError
+from ....types.order_deliverables_response import OrderDeliverablesResponse
+from ....types.order_id import OrderId
+
+
+class RawDeliverablesClient:
+ def __init__(self, *, client_wrapper: SyncClientWrapper):
+ self._client_wrapper = client_wrapper
+
+ def list(
+ self, order_id: OrderId, *, request_options: typing.Optional[RequestOptions] = None
+ ) -> HttpResponse[OrderDeliverablesResponse]:
+ """
+ Retrieves the delivered files for a completed order. Returns an empty list if the order is not yet completed.
+
+ Parameters
+ ----------
+ order_id : OrderId
+ The ID of the order.
+
+ request_options : typing.Optional[RequestOptions]
+ Request-specific configuration.
+
+ Returns
+ -------
+ HttpResponse[OrderDeliverablesResponse]
+ Successful Response
+ """
+ _response = self._client_wrapper.httpx_client.request(
+ f"v1/productions/orders/{jsonable_encoder(order_id)}/deliverables",
+ method="GET",
+ request_options=request_options,
+ )
+ try:
+ if 200 <= _response.status_code < 300:
+ _data = typing.cast(
+ OrderDeliverablesResponse,
+ construct_type(
+ type_=OrderDeliverablesResponse, # type: ignore
+ object_=_response.json(),
+ ),
+ )
+ return HttpResponse(response=_response, data=_data)
+ if _response.status_code == 422:
+ raise UnprocessableEntityError(
+ headers=dict(_response.headers),
+ body=typing.cast(
+ typing.Any,
+ construct_type(
+ type_=typing.Any, # type: ignore
+ object_=_response.json(),
+ ),
+ ),
+ )
+ _response_json = _response.json()
+ except JSONDecodeError:
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
+
+
+class AsyncRawDeliverablesClient:
+ def __init__(self, *, client_wrapper: AsyncClientWrapper):
+ self._client_wrapper = client_wrapper
+
+ async def list(
+ self, order_id: OrderId, *, request_options: typing.Optional[RequestOptions] = None
+ ) -> AsyncHttpResponse[OrderDeliverablesResponse]:
+ """
+ Retrieves the delivered files for a completed order. Returns an empty list if the order is not yet completed.
+
+ Parameters
+ ----------
+ order_id : OrderId
+ The ID of the order.
+
+ request_options : typing.Optional[RequestOptions]
+ Request-specific configuration.
+
+ Returns
+ -------
+ AsyncHttpResponse[OrderDeliverablesResponse]
+ Successful Response
+ """
+ _response = await self._client_wrapper.httpx_client.request(
+ f"v1/productions/orders/{jsonable_encoder(order_id)}/deliverables",
+ method="GET",
+ request_options=request_options,
+ )
+ try:
+ if 200 <= _response.status_code < 300:
+ _data = typing.cast(
+ OrderDeliverablesResponse,
+ construct_type(
+ type_=OrderDeliverablesResponse, # type: ignore
+ object_=_response.json(),
+ ),
+ )
+ return AsyncHttpResponse(response=_response, data=_data)
+ if _response.status_code == 422:
+ raise UnprocessableEntityError(
+ headers=dict(_response.headers),
+ body=typing.cast(
+ typing.Any,
+ construct_type(
+ type_=typing.Any, # type: ignore
+ object_=_response.json(),
+ ),
+ ),
+ )
+ _response_json = _response.json()
+ except JSONDecodeError:
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
diff --git a/src/elevenlabs/productions/orders/items/__init__.py b/src/elevenlabs/productions/orders/items/__init__.py
new file mode 100644
index 00000000..5cde0202
--- /dev/null
+++ b/src/elevenlabs/productions/orders/items/__init__.py
@@ -0,0 +1,4 @@
+# This file was auto-generated by Fern from our API Definition.
+
+# isort: skip_file
+
diff --git a/src/elevenlabs/productions/orders/items/client.py b/src/elevenlabs/productions/orders/items/client.py
new file mode 100644
index 00000000..8e0c81dd
--- /dev/null
+++ b/src/elevenlabs/productions/orders/items/client.py
@@ -0,0 +1,245 @@
+# This file was auto-generated by Fern from our API Definition.
+
+import typing
+
+from ....core.client_wrapper import AsyncClientWrapper, SyncClientWrapper
+from ....core.request_options import RequestOptions
+from ....types.item_id import ItemId
+from ....types.order_id import OrderId
+from ....types.remove_order_item_response import RemoveOrderItemResponse
+from ....types.upsert_order_item_request import UpsertOrderItemRequest
+from ....types.upsert_order_item_response import UpsertOrderItemResponse
+from .raw_client import AsyncRawItemsClient, RawItemsClient
+
+# this is used as the default value for optional parameters
+OMIT = typing.cast(typing.Any, ...)
+
+
+class ItemsClient:
+ def __init__(self, *, client_wrapper: SyncClientWrapper):
+ self._raw_client = RawItemsClient(client_wrapper=client_wrapper)
+
+ @property
+ def with_raw_response(self) -> RawItemsClient:
+ """
+ Retrieves a raw implementation of this client that returns raw responses.
+
+ Returns
+ -------
+ RawItemsClient
+ """
+ return self._raw_client
+
+ def upsert(
+ self,
+ order_id: OrderId,
+ *,
+ request: UpsertOrderItemRequest,
+ request_options: typing.Optional[RequestOptions] = None,
+ ) -> UpsertOrderItemResponse:
+ """
+ Adds or updates an order item on an open order. Returns the item ID and the quoted price.
+
+ Parameters
+ ----------
+ order_id : OrderId
+ The ID of the order.
+
+ request : UpsertOrderItemRequest
+
+ request_options : typing.Optional[RequestOptions]
+ Request-specific configuration.
+
+ Returns
+ -------
+ UpsertOrderItemResponse
+ Successful Response
+
+ Examples
+ --------
+ from elevenlabs import (
+ ElevenLabs,
+ RootModelAnnotatedUnionDubOrderItemRequestSubtitleOrderItemRequestFieldInfoAnnotationNoneTypeRequiredTrueDiscriminatorKindInput_Dub,
+ UpsertOrderItemRequest,
+ )
+
+ client = ElevenLabs(
+ api_key="YOUR_API_KEY",
+ )
+ client.productions.orders.items.upsert(
+ order_id="order_id",
+ request=UpsertOrderItemRequest(
+ item=RootModelAnnotatedUnionDubOrderItemRequestSubtitleOrderItemRequestFieldInfoAnnotationNoneTypeRequiredTrueDiscriminatorKindInput_Dub(
+ media_id="prodmedia_01jgatk6h0fwxrtbjade61yqhx",
+ source_language="en",
+ destination_languages=["hi", "fr-FR", "de"],
+ include_captions=True,
+ include_source_captions=False,
+ instructions="Voices don't need to match the originals, prioritize native-sounding voices",
+ captions_sdh=False,
+ ),
+ ),
+ )
+ """
+ _response = self._raw_client.upsert(order_id, request=request, request_options=request_options)
+ return _response.data
+
+ def remove(
+ self, order_id: OrderId, item_id: ItemId, *, request_options: typing.Optional[RequestOptions] = None
+ ) -> RemoveOrderItemResponse:
+ """
+ Removes an order item from an open order.
+
+ Parameters
+ ----------
+ order_id : OrderId
+ The ID of the order.
+
+ item_id : ItemId
+ The ID of the order item.
+
+ request_options : typing.Optional[RequestOptions]
+ Request-specific configuration.
+
+ Returns
+ -------
+ RemoveOrderItemResponse
+ Successful Response
+
+ Examples
+ --------
+ from elevenlabs import ElevenLabs
+
+ client = ElevenLabs(
+ api_key="YOUR_API_KEY",
+ )
+ client.productions.orders.items.remove(
+ order_id="order_id",
+ item_id="item_id",
+ )
+ """
+ _response = self._raw_client.remove(order_id, item_id, request_options=request_options)
+ return _response.data
+
+
+class AsyncItemsClient:
+ def __init__(self, *, client_wrapper: AsyncClientWrapper):
+ self._raw_client = AsyncRawItemsClient(client_wrapper=client_wrapper)
+
+ @property
+ def with_raw_response(self) -> AsyncRawItemsClient:
+ """
+ Retrieves a raw implementation of this client that returns raw responses.
+
+ Returns
+ -------
+ AsyncRawItemsClient
+ """
+ return self._raw_client
+
+ async def upsert(
+ self,
+ order_id: OrderId,
+ *,
+ request: UpsertOrderItemRequest,
+ request_options: typing.Optional[RequestOptions] = None,
+ ) -> UpsertOrderItemResponse:
+ """
+ Adds or updates an order item on an open order. Returns the item ID and the quoted price.
+
+ Parameters
+ ----------
+ order_id : OrderId
+ The ID of the order.
+
+ request : UpsertOrderItemRequest
+
+ request_options : typing.Optional[RequestOptions]
+ Request-specific configuration.
+
+ Returns
+ -------
+ UpsertOrderItemResponse
+ Successful Response
+
+ Examples
+ --------
+ import asyncio
+
+ from elevenlabs import (
+ AsyncElevenLabs,
+ RootModelAnnotatedUnionDubOrderItemRequestSubtitleOrderItemRequestFieldInfoAnnotationNoneTypeRequiredTrueDiscriminatorKindInput_Dub,
+ UpsertOrderItemRequest,
+ )
+
+ client = AsyncElevenLabs(
+ api_key="YOUR_API_KEY",
+ )
+
+
+ async def main() -> None:
+ await client.productions.orders.items.upsert(
+ order_id="order_id",
+ request=UpsertOrderItemRequest(
+ item=RootModelAnnotatedUnionDubOrderItemRequestSubtitleOrderItemRequestFieldInfoAnnotationNoneTypeRequiredTrueDiscriminatorKindInput_Dub(
+ media_id="prodmedia_01jgatk6h0fwxrtbjade61yqhx",
+ source_language="en",
+ destination_languages=["hi", "fr-FR", "de"],
+ include_captions=True,
+ include_source_captions=False,
+ instructions="Voices don't need to match the originals, prioritize native-sounding voices",
+ captions_sdh=False,
+ ),
+ ),
+ )
+
+
+ asyncio.run(main())
+ """
+ _response = await self._raw_client.upsert(order_id, request=request, request_options=request_options)
+ return _response.data
+
+ async def remove(
+ self, order_id: OrderId, item_id: ItemId, *, request_options: typing.Optional[RequestOptions] = None
+ ) -> RemoveOrderItemResponse:
+ """
+ Removes an order item from an open order.
+
+ Parameters
+ ----------
+ order_id : OrderId
+ The ID of the order.
+
+ item_id : ItemId
+ The ID of the order item.
+
+ request_options : typing.Optional[RequestOptions]
+ Request-specific configuration.
+
+ Returns
+ -------
+ RemoveOrderItemResponse
+ Successful Response
+
+ Examples
+ --------
+ import asyncio
+
+ from elevenlabs import AsyncElevenLabs
+
+ client = AsyncElevenLabs(
+ api_key="YOUR_API_KEY",
+ )
+
+
+ async def main() -> None:
+ await client.productions.orders.items.remove(
+ order_id="order_id",
+ item_id="item_id",
+ )
+
+
+ asyncio.run(main())
+ """
+ _response = await self._raw_client.remove(order_id, item_id, request_options=request_options)
+ return _response.data
diff --git a/src/elevenlabs/productions/orders/items/raw_client.py b/src/elevenlabs/productions/orders/items/raw_client.py
new file mode 100644
index 00000000..f04d7150
--- /dev/null
+++ b/src/elevenlabs/productions/orders/items/raw_client.py
@@ -0,0 +1,267 @@
+# This file was auto-generated by Fern from our API Definition.
+
+import typing
+from json.decoder import JSONDecodeError
+
+from ....core.api_error import ApiError
+from ....core.client_wrapper import AsyncClientWrapper, SyncClientWrapper
+from ....core.http_response import AsyncHttpResponse, HttpResponse
+from ....core.jsonable_encoder import jsonable_encoder
+from ....core.request_options import RequestOptions
+from ....core.serialization import convert_and_respect_annotation_metadata
+from ....core.unchecked_base_model import construct_type
+from ....errors.unprocessable_entity_error import UnprocessableEntityError
+from ....types.item_id import ItemId
+from ....types.order_id import OrderId
+from ....types.remove_order_item_response import RemoveOrderItemResponse
+from ....types.upsert_order_item_request import UpsertOrderItemRequest
+from ....types.upsert_order_item_response import UpsertOrderItemResponse
+
+# this is used as the default value for optional parameters
+OMIT = typing.cast(typing.Any, ...)
+
+
+class RawItemsClient:
+ def __init__(self, *, client_wrapper: SyncClientWrapper):
+ self._client_wrapper = client_wrapper
+
+ def upsert(
+ self,
+ order_id: OrderId,
+ *,
+ request: UpsertOrderItemRequest,
+ request_options: typing.Optional[RequestOptions] = None,
+ ) -> HttpResponse[UpsertOrderItemResponse]:
+ """
+ Adds or updates an order item on an open order. Returns the item ID and the quoted price.
+
+ Parameters
+ ----------
+ order_id : OrderId
+ The ID of the order.
+
+ request : UpsertOrderItemRequest
+
+ request_options : typing.Optional[RequestOptions]
+ Request-specific configuration.
+
+ Returns
+ -------
+ HttpResponse[UpsertOrderItemResponse]
+ Successful Response
+ """
+ _response = self._client_wrapper.httpx_client.request(
+ f"v1/productions/orders/{jsonable_encoder(order_id)}/items",
+ method="POST",
+ json={
+ "request": convert_and_respect_annotation_metadata(
+ object_=request, annotation=UpsertOrderItemRequest, direction="write"
+ ),
+ },
+ headers={
+ "content-type": "application/json",
+ },
+ request_options=request_options,
+ omit=OMIT,
+ )
+ try:
+ if 200 <= _response.status_code < 300:
+ _data = typing.cast(
+ UpsertOrderItemResponse,
+ construct_type(
+ type_=UpsertOrderItemResponse, # type: ignore
+ object_=_response.json(),
+ ),
+ )
+ return HttpResponse(response=_response, data=_data)
+ if _response.status_code == 422:
+ raise UnprocessableEntityError(
+ headers=dict(_response.headers),
+ body=typing.cast(
+ typing.Any,
+ construct_type(
+ type_=typing.Any, # type: ignore
+ object_=_response.json(),
+ ),
+ ),
+ )
+ _response_json = _response.json()
+ except JSONDecodeError:
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
+
+ def remove(
+ self, order_id: OrderId, item_id: ItemId, *, request_options: typing.Optional[RequestOptions] = None
+ ) -> HttpResponse[RemoveOrderItemResponse]:
+ """
+ Removes an order item from an open order.
+
+ Parameters
+ ----------
+ order_id : OrderId
+ The ID of the order.
+
+ item_id : ItemId
+ The ID of the order item.
+
+ request_options : typing.Optional[RequestOptions]
+ Request-specific configuration.
+
+ Returns
+ -------
+ HttpResponse[RemoveOrderItemResponse]
+ Successful Response
+ """
+ _response = self._client_wrapper.httpx_client.request(
+ f"v1/productions/orders/{jsonable_encoder(order_id)}/items/{jsonable_encoder(item_id)}",
+ method="DELETE",
+ request_options=request_options,
+ )
+ try:
+ if 200 <= _response.status_code < 300:
+ _data = typing.cast(
+ RemoveOrderItemResponse,
+ construct_type(
+ type_=RemoveOrderItemResponse, # type: ignore
+ object_=_response.json(),
+ ),
+ )
+ return HttpResponse(response=_response, data=_data)
+ if _response.status_code == 422:
+ raise UnprocessableEntityError(
+ headers=dict(_response.headers),
+ body=typing.cast(
+ typing.Any,
+ construct_type(
+ type_=typing.Any, # type: ignore
+ object_=_response.json(),
+ ),
+ ),
+ )
+ _response_json = _response.json()
+ except JSONDecodeError:
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
+
+
+class AsyncRawItemsClient:
+ def __init__(self, *, client_wrapper: AsyncClientWrapper):
+ self._client_wrapper = client_wrapper
+
+ async def upsert(
+ self,
+ order_id: OrderId,
+ *,
+ request: UpsertOrderItemRequest,
+ request_options: typing.Optional[RequestOptions] = None,
+ ) -> AsyncHttpResponse[UpsertOrderItemResponse]:
+ """
+ Adds or updates an order item on an open order. Returns the item ID and the quoted price.
+
+ Parameters
+ ----------
+ order_id : OrderId
+ The ID of the order.
+
+ request : UpsertOrderItemRequest
+
+ request_options : typing.Optional[RequestOptions]
+ Request-specific configuration.
+
+ Returns
+ -------
+ AsyncHttpResponse[UpsertOrderItemResponse]
+ Successful Response
+ """
+ _response = await self._client_wrapper.httpx_client.request(
+ f"v1/productions/orders/{jsonable_encoder(order_id)}/items",
+ method="POST",
+ json={
+ "request": convert_and_respect_annotation_metadata(
+ object_=request, annotation=UpsertOrderItemRequest, direction="write"
+ ),
+ },
+ headers={
+ "content-type": "application/json",
+ },
+ request_options=request_options,
+ omit=OMIT,
+ )
+ try:
+ if 200 <= _response.status_code < 300:
+ _data = typing.cast(
+ UpsertOrderItemResponse,
+ construct_type(
+ type_=UpsertOrderItemResponse, # type: ignore
+ object_=_response.json(),
+ ),
+ )
+ return AsyncHttpResponse(response=_response, data=_data)
+ if _response.status_code == 422:
+ raise UnprocessableEntityError(
+ headers=dict(_response.headers),
+ body=typing.cast(
+ typing.Any,
+ construct_type(
+ type_=typing.Any, # type: ignore
+ object_=_response.json(),
+ ),
+ ),
+ )
+ _response_json = _response.json()
+ except JSONDecodeError:
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
+
+ async def remove(
+ self, order_id: OrderId, item_id: ItemId, *, request_options: typing.Optional[RequestOptions] = None
+ ) -> AsyncHttpResponse[RemoveOrderItemResponse]:
+ """
+ Removes an order item from an open order.
+
+ Parameters
+ ----------
+ order_id : OrderId
+ The ID of the order.
+
+ item_id : ItemId
+ The ID of the order item.
+
+ request_options : typing.Optional[RequestOptions]
+ Request-specific configuration.
+
+ Returns
+ -------
+ AsyncHttpResponse[RemoveOrderItemResponse]
+ Successful Response
+ """
+ _response = await self._client_wrapper.httpx_client.request(
+ f"v1/productions/orders/{jsonable_encoder(order_id)}/items/{jsonable_encoder(item_id)}",
+ method="DELETE",
+ request_options=request_options,
+ )
+ try:
+ if 200 <= _response.status_code < 300:
+ _data = typing.cast(
+ RemoveOrderItemResponse,
+ construct_type(
+ type_=RemoveOrderItemResponse, # type: ignore
+ object_=_response.json(),
+ ),
+ )
+ return AsyncHttpResponse(response=_response, data=_data)
+ if _response.status_code == 422:
+ raise UnprocessableEntityError(
+ headers=dict(_response.headers),
+ body=typing.cast(
+ typing.Any,
+ construct_type(
+ type_=typing.Any, # type: ignore
+ object_=_response.json(),
+ ),
+ ),
+ )
+ _response_json = _response.json()
+ except JSONDecodeError:
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
diff --git a/src/elevenlabs/productions/orders/languages/__init__.py b/src/elevenlabs/productions/orders/languages/__init__.py
new file mode 100644
index 00000000..5cde0202
--- /dev/null
+++ b/src/elevenlabs/productions/orders/languages/__init__.py
@@ -0,0 +1,4 @@
+# This file was auto-generated by Fern from our API Definition.
+
+# isort: skip_file
+
diff --git a/src/elevenlabs/productions/orders/languages/client.py b/src/elevenlabs/productions/orders/languages/client.py
new file mode 100644
index 00000000..f5b5d696
--- /dev/null
+++ b/src/elevenlabs/productions/orders/languages/client.py
@@ -0,0 +1,117 @@
+# This file was auto-generated by Fern from our API Definition.
+
+import typing
+
+from ....core.client_wrapper import AsyncClientWrapper, SyncClientWrapper
+from ....core.request_options import RequestOptions
+from ....types.order_item_kind import OrderItemKind
+from ....types.root_model_annotated_union_paired_languages_response_single_languages_response_field_info_annotation_none_type_required_true_discriminator_kind import (
+ RootModelAnnotatedUnionPairedLanguagesResponseSingleLanguagesResponseFieldInfoAnnotationNoneTypeRequiredTrueDiscriminatorKind,
+)
+from .raw_client import AsyncRawLanguagesClient, RawLanguagesClient
+
+
+class LanguagesClient:
+ def __init__(self, *, client_wrapper: SyncClientWrapper):
+ self._raw_client = RawLanguagesClient(client_wrapper=client_wrapper)
+
+ @property
+ def with_raw_response(self) -> RawLanguagesClient:
+ """
+ Retrieves a raw implementation of this client that returns raw responses.
+
+ Returns
+ -------
+ RawLanguagesClient
+ """
+ return self._raw_client
+
+ def list(
+ self, order_item_kind: OrderItemKind, *, request_options: typing.Optional[RequestOptions] = None
+ ) -> RootModelAnnotatedUnionPairedLanguagesResponseSingleLanguagesResponseFieldInfoAnnotationNoneTypeRequiredTrueDiscriminatorKind:
+ """
+ Returns the available languages for a given order item kind.
+
+ Parameters
+ ----------
+ order_item_kind : OrderItemKind
+ The kind of order item.
+
+ request_options : typing.Optional[RequestOptions]
+ Request-specific configuration.
+
+ Returns
+ -------
+ RootModelAnnotatedUnionPairedLanguagesResponseSingleLanguagesResponseFieldInfoAnnotationNoneTypeRequiredTrueDiscriminatorKind
+ Successful Response
+
+ Examples
+ --------
+ from elevenlabs import ElevenLabs
+
+ client = ElevenLabs(
+ api_key="YOUR_API_KEY",
+ )
+ client.productions.orders.languages.list(
+ order_item_kind="dub",
+ )
+ """
+ _response = self._raw_client.list(order_item_kind, request_options=request_options)
+ return _response.data
+
+
+class AsyncLanguagesClient:
+ def __init__(self, *, client_wrapper: AsyncClientWrapper):
+ self._raw_client = AsyncRawLanguagesClient(client_wrapper=client_wrapper)
+
+ @property
+ def with_raw_response(self) -> AsyncRawLanguagesClient:
+ """
+ Retrieves a raw implementation of this client that returns raw responses.
+
+ Returns
+ -------
+ AsyncRawLanguagesClient
+ """
+ return self._raw_client
+
+ async def list(
+ self, order_item_kind: OrderItemKind, *, request_options: typing.Optional[RequestOptions] = None
+ ) -> RootModelAnnotatedUnionPairedLanguagesResponseSingleLanguagesResponseFieldInfoAnnotationNoneTypeRequiredTrueDiscriminatorKind:
+ """
+ Returns the available languages for a given order item kind.
+
+ Parameters
+ ----------
+ order_item_kind : OrderItemKind
+ The kind of order item.
+
+ request_options : typing.Optional[RequestOptions]
+ Request-specific configuration.
+
+ Returns
+ -------
+ RootModelAnnotatedUnionPairedLanguagesResponseSingleLanguagesResponseFieldInfoAnnotationNoneTypeRequiredTrueDiscriminatorKind
+ Successful Response
+
+ Examples
+ --------
+ import asyncio
+
+ from elevenlabs import AsyncElevenLabs
+
+ client = AsyncElevenLabs(
+ api_key="YOUR_API_KEY",
+ )
+
+
+ async def main() -> None:
+ await client.productions.orders.languages.list(
+ order_item_kind="dub",
+ )
+
+
+ asyncio.run(main())
+ """
+ _response = await self._raw_client.list(order_item_kind, request_options=request_options)
+ return _response.data
diff --git a/src/elevenlabs/productions/orders/languages/raw_client.py b/src/elevenlabs/productions/orders/languages/raw_client.py
new file mode 100644
index 00000000..adcbf109
--- /dev/null
+++ b/src/elevenlabs/productions/orders/languages/raw_client.py
@@ -0,0 +1,130 @@
+# This file was auto-generated by Fern from our API Definition.
+
+import typing
+from json.decoder import JSONDecodeError
+
+from ....core.api_error import ApiError
+from ....core.client_wrapper import AsyncClientWrapper, SyncClientWrapper
+from ....core.http_response import AsyncHttpResponse, HttpResponse
+from ....core.jsonable_encoder import jsonable_encoder
+from ....core.request_options import RequestOptions
+from ....core.unchecked_base_model import construct_type
+from ....errors.unprocessable_entity_error import UnprocessableEntityError
+from ....types.order_item_kind import OrderItemKind
+from ....types.root_model_annotated_union_paired_languages_response_single_languages_response_field_info_annotation_none_type_required_true_discriminator_kind import (
+ RootModelAnnotatedUnionPairedLanguagesResponseSingleLanguagesResponseFieldInfoAnnotationNoneTypeRequiredTrueDiscriminatorKind,
+)
+
+
+class RawLanguagesClient:
+ def __init__(self, *, client_wrapper: SyncClientWrapper):
+ self._client_wrapper = client_wrapper
+
+ def list(
+ self, order_item_kind: OrderItemKind, *, request_options: typing.Optional[RequestOptions] = None
+ ) -> HttpResponse[
+ RootModelAnnotatedUnionPairedLanguagesResponseSingleLanguagesResponseFieldInfoAnnotationNoneTypeRequiredTrueDiscriminatorKind
+ ]:
+ """
+ Returns the available languages for a given order item kind.
+
+ Parameters
+ ----------
+ order_item_kind : OrderItemKind
+ The kind of order item.
+
+ request_options : typing.Optional[RequestOptions]
+ Request-specific configuration.
+
+ Returns
+ -------
+ HttpResponse[RootModelAnnotatedUnionPairedLanguagesResponseSingleLanguagesResponseFieldInfoAnnotationNoneTypeRequiredTrueDiscriminatorKind]
+ Successful Response
+ """
+ _response = self._client_wrapper.httpx_client.request(
+ f"v1/productions/orders/languages/{jsonable_encoder(order_item_kind)}",
+ method="GET",
+ request_options=request_options,
+ )
+ try:
+ if 200 <= _response.status_code < 300:
+ _data = typing.cast(
+ RootModelAnnotatedUnionPairedLanguagesResponseSingleLanguagesResponseFieldInfoAnnotationNoneTypeRequiredTrueDiscriminatorKind,
+ construct_type(
+ type_=RootModelAnnotatedUnionPairedLanguagesResponseSingleLanguagesResponseFieldInfoAnnotationNoneTypeRequiredTrueDiscriminatorKind, # type: ignore
+ object_=_response.json(),
+ ),
+ )
+ return HttpResponse(response=_response, data=_data)
+ if _response.status_code == 422:
+ raise UnprocessableEntityError(
+ headers=dict(_response.headers),
+ body=typing.cast(
+ typing.Any,
+ construct_type(
+ type_=typing.Any, # type: ignore
+ object_=_response.json(),
+ ),
+ ),
+ )
+ _response_json = _response.json()
+ except JSONDecodeError:
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
+
+
+class AsyncRawLanguagesClient:
+ def __init__(self, *, client_wrapper: AsyncClientWrapper):
+ self._client_wrapper = client_wrapper
+
+ async def list(
+ self, order_item_kind: OrderItemKind, *, request_options: typing.Optional[RequestOptions] = None
+ ) -> AsyncHttpResponse[
+ RootModelAnnotatedUnionPairedLanguagesResponseSingleLanguagesResponseFieldInfoAnnotationNoneTypeRequiredTrueDiscriminatorKind
+ ]:
+ """
+ Returns the available languages for a given order item kind.
+
+ Parameters
+ ----------
+ order_item_kind : OrderItemKind
+ The kind of order item.
+
+ request_options : typing.Optional[RequestOptions]
+ Request-specific configuration.
+
+ Returns
+ -------
+ AsyncHttpResponse[RootModelAnnotatedUnionPairedLanguagesResponseSingleLanguagesResponseFieldInfoAnnotationNoneTypeRequiredTrueDiscriminatorKind]
+ Successful Response
+ """
+ _response = await self._client_wrapper.httpx_client.request(
+ f"v1/productions/orders/languages/{jsonable_encoder(order_item_kind)}",
+ method="GET",
+ request_options=request_options,
+ )
+ try:
+ if 200 <= _response.status_code < 300:
+ _data = typing.cast(
+ RootModelAnnotatedUnionPairedLanguagesResponseSingleLanguagesResponseFieldInfoAnnotationNoneTypeRequiredTrueDiscriminatorKind,
+ construct_type(
+ type_=RootModelAnnotatedUnionPairedLanguagesResponseSingleLanguagesResponseFieldInfoAnnotationNoneTypeRequiredTrueDiscriminatorKind, # type: ignore
+ object_=_response.json(),
+ ),
+ )
+ return AsyncHttpResponse(response=_response, data=_data)
+ if _response.status_code == 422:
+ raise UnprocessableEntityError(
+ headers=dict(_response.headers),
+ body=typing.cast(
+ typing.Any,
+ construct_type(
+ type_=typing.Any, # type: ignore
+ object_=_response.json(),
+ ),
+ ),
+ )
+ _response_json = _response.json()
+ except JSONDecodeError:
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
diff --git a/src/elevenlabs/productions/orders/media/__init__.py b/src/elevenlabs/productions/orders/media/__init__.py
new file mode 100644
index 00000000..5cde0202
--- /dev/null
+++ b/src/elevenlabs/productions/orders/media/__init__.py
@@ -0,0 +1,4 @@
+# This file was auto-generated by Fern from our API Definition.
+
+# isort: skip_file
+
diff --git a/src/elevenlabs/productions/orders/media/client.py b/src/elevenlabs/productions/orders/media/client.py
new file mode 100644
index 00000000..26655821
--- /dev/null
+++ b/src/elevenlabs/productions/orders/media/client.py
@@ -0,0 +1,267 @@
+# This file was auto-generated by Fern from our API Definition.
+
+import typing
+
+from .... import core
+from ....core.client_wrapper import AsyncClientWrapper, SyncClientWrapper
+from ....core.request_options import RequestOptions
+from ....types.media_id import MediaId
+from ....types.order_id import OrderId
+from ....types.order_media_response import OrderMediaResponse
+from ....types.register_media_response import RegisterMediaResponse
+from .raw_client import AsyncRawMediaClient, RawMediaClient
+
+# this is used as the default value for optional parameters
+OMIT = typing.cast(typing.Any, ...)
+
+
+class MediaClient:
+ def __init__(self, *, client_wrapper: SyncClientWrapper):
+ self._raw_client = RawMediaClient(client_wrapper=client_wrapper)
+
+ @property
+ def with_raw_response(self) -> RawMediaClient:
+ """
+ Retrieves a raw implementation of this client that returns raw responses.
+
+ Returns
+ -------
+ RawMediaClient
+ """
+ return self._raw_client
+
+ def register(
+ self,
+ order_id: OrderId,
+ *,
+ declared_language: str,
+ media: typing.Optional[core.File] = OMIT,
+ media_url: typing.Optional[str] = OMIT,
+ media_url_filename: typing.Optional[str] = OMIT,
+ media_url_content_type: typing.Optional[str] = OMIT,
+ request_options: typing.Optional[RequestOptions] = None,
+ ) -> RegisterMediaResponse:
+ """
+ Registers a media file with an order, either by uploading it directly or by providing a URL to fetch it from. Exactly one of `media` or `media_url` must be provided. The registered media can then be referenced when adding order items.
+
+ Parameters
+ ----------
+ order_id : OrderId
+ The ID of the order to which this media will be attached.
+
+ declared_language : str
+ The language code of the media content (e.g. 'en', 'es-ES'). Must be a supported source language for some order item kind.
+
+ media : typing.Optional[core.File]
+ See core.File for more documentation
+
+ media_url : typing.Optional[str]
+ A URL to fetch the media file from. Mutually exclusive with media.
+
+ media_url_filename : typing.Optional[str]
+ The filename for URL-sourced media (e.g. 'example.mp4'). Required when using media_url.
+
+ media_url_content_type : typing.Optional[str]
+ The MIME type for URL-sourced media (e.g. 'video/mp4'). Required when using media_url.
+
+ request_options : typing.Optional[RequestOptions]
+ Request-specific configuration.
+
+ Returns
+ -------
+ RegisterMediaResponse
+ Successful Response
+
+ Examples
+ --------
+ from elevenlabs import ElevenLabs
+
+ client = ElevenLabs(
+ api_key="YOUR_API_KEY",
+ )
+ client.productions.orders.media.register(
+ order_id="order_id",
+ declared_language="declared_language",
+ )
+ """
+ _response = self._raw_client.register(
+ order_id,
+ declared_language=declared_language,
+ media=media,
+ media_url=media_url,
+ media_url_filename=media_url_filename,
+ media_url_content_type=media_url_content_type,
+ request_options=request_options,
+ )
+ return _response.data
+
+ def get(
+ self, order_id: OrderId, media_id: MediaId, *, request_options: typing.Optional[RequestOptions] = None
+ ) -> OrderMediaResponse:
+ """
+ Retrieves metadata and a time-limited download URL for a previously uploaded media file.
+
+ Parameters
+ ----------
+ order_id : OrderId
+ The ID of the order.
+
+ media_id : MediaId
+ The ID of the media file.
+
+ request_options : typing.Optional[RequestOptions]
+ Request-specific configuration.
+
+ Returns
+ -------
+ OrderMediaResponse
+ Successful Response
+
+ Examples
+ --------
+ from elevenlabs import ElevenLabs
+
+ client = ElevenLabs(
+ api_key="YOUR_API_KEY",
+ )
+ client.productions.orders.media.get(
+ order_id="order_id",
+ media_id="media_id",
+ )
+ """
+ _response = self._raw_client.get(order_id, media_id, request_options=request_options)
+ return _response.data
+
+
+class AsyncMediaClient:
+ def __init__(self, *, client_wrapper: AsyncClientWrapper):
+ self._raw_client = AsyncRawMediaClient(client_wrapper=client_wrapper)
+
+ @property
+ def with_raw_response(self) -> AsyncRawMediaClient:
+ """
+ Retrieves a raw implementation of this client that returns raw responses.
+
+ Returns
+ -------
+ AsyncRawMediaClient
+ """
+ return self._raw_client
+
+ async def register(
+ self,
+ order_id: OrderId,
+ *,
+ declared_language: str,
+ media: typing.Optional[core.File] = OMIT,
+ media_url: typing.Optional[str] = OMIT,
+ media_url_filename: typing.Optional[str] = OMIT,
+ media_url_content_type: typing.Optional[str] = OMIT,
+ request_options: typing.Optional[RequestOptions] = None,
+ ) -> RegisterMediaResponse:
+ """
+ Registers a media file with an order, either by uploading it directly or by providing a URL to fetch it from. Exactly one of `media` or `media_url` must be provided. The registered media can then be referenced when adding order items.
+
+ Parameters
+ ----------
+ order_id : OrderId
+ The ID of the order to which this media will be attached.
+
+ declared_language : str
+ The language code of the media content (e.g. 'en', 'es-ES'). Must be a supported source language for some order item kind.
+
+ media : typing.Optional[core.File]
+ See core.File for more documentation
+
+ media_url : typing.Optional[str]
+ A URL to fetch the media file from. Mutually exclusive with media.
+
+ media_url_filename : typing.Optional[str]
+ The filename for URL-sourced media (e.g. 'example.mp4'). Required when using media_url.
+
+ media_url_content_type : typing.Optional[str]
+ The MIME type for URL-sourced media (e.g. 'video/mp4'). Required when using media_url.
+
+ request_options : typing.Optional[RequestOptions]
+ Request-specific configuration.
+
+ Returns
+ -------
+ RegisterMediaResponse
+ Successful Response
+
+ Examples
+ --------
+ import asyncio
+
+ from elevenlabs import AsyncElevenLabs
+
+ client = AsyncElevenLabs(
+ api_key="YOUR_API_KEY",
+ )
+
+
+ async def main() -> None:
+ await client.productions.orders.media.register(
+ order_id="order_id",
+ declared_language="declared_language",
+ )
+
+
+ asyncio.run(main())
+ """
+ _response = await self._raw_client.register(
+ order_id,
+ declared_language=declared_language,
+ media=media,
+ media_url=media_url,
+ media_url_filename=media_url_filename,
+ media_url_content_type=media_url_content_type,
+ request_options=request_options,
+ )
+ return _response.data
+
+ async def get(
+ self, order_id: OrderId, media_id: MediaId, *, request_options: typing.Optional[RequestOptions] = None
+ ) -> OrderMediaResponse:
+ """
+ Retrieves metadata and a time-limited download URL for a previously uploaded media file.
+
+ Parameters
+ ----------
+ order_id : OrderId
+ The ID of the order.
+
+ media_id : MediaId
+ The ID of the media file.
+
+ request_options : typing.Optional[RequestOptions]
+ Request-specific configuration.
+
+ Returns
+ -------
+ OrderMediaResponse
+ Successful Response
+
+ Examples
+ --------
+ import asyncio
+
+ from elevenlabs import AsyncElevenLabs
+
+ client = AsyncElevenLabs(
+ api_key="YOUR_API_KEY",
+ )
+
+
+ async def main() -> None:
+ await client.productions.orders.media.get(
+ order_id="order_id",
+ media_id="media_id",
+ )
+
+
+ asyncio.run(main())
+ """
+ _response = await self._raw_client.get(order_id, media_id, request_options=request_options)
+ return _response.data
diff --git a/src/elevenlabs/productions/orders/media/raw_client.py b/src/elevenlabs/productions/orders/media/raw_client.py
new file mode 100644
index 00000000..a36170ae
--- /dev/null
+++ b/src/elevenlabs/productions/orders/media/raw_client.py
@@ -0,0 +1,304 @@
+# This file was auto-generated by Fern from our API Definition.
+
+import typing
+from json.decoder import JSONDecodeError
+
+from .... import core
+from ....core.api_error import ApiError
+from ....core.client_wrapper import AsyncClientWrapper, SyncClientWrapper
+from ....core.http_response import AsyncHttpResponse, HttpResponse
+from ....core.jsonable_encoder import jsonable_encoder
+from ....core.request_options import RequestOptions
+from ....core.unchecked_base_model import construct_type
+from ....errors.unprocessable_entity_error import UnprocessableEntityError
+from ....types.media_id import MediaId
+from ....types.order_id import OrderId
+from ....types.order_media_response import OrderMediaResponse
+from ....types.register_media_response import RegisterMediaResponse
+
+# this is used as the default value for optional parameters
+OMIT = typing.cast(typing.Any, ...)
+
+
+class RawMediaClient:
+ def __init__(self, *, client_wrapper: SyncClientWrapper):
+ self._client_wrapper = client_wrapper
+
+ def register(
+ self,
+ order_id: OrderId,
+ *,
+ declared_language: str,
+ media: typing.Optional[core.File] = OMIT,
+ media_url: typing.Optional[str] = OMIT,
+ media_url_filename: typing.Optional[str] = OMIT,
+ media_url_content_type: typing.Optional[str] = OMIT,
+ request_options: typing.Optional[RequestOptions] = None,
+ ) -> HttpResponse[RegisterMediaResponse]:
+ """
+ Registers a media file with an order, either by uploading it directly or by providing a URL to fetch it from. Exactly one of `media` or `media_url` must be provided. The registered media can then be referenced when adding order items.
+
+ Parameters
+ ----------
+ order_id : OrderId
+ The ID of the order to which this media will be attached.
+
+ declared_language : str
+ The language code of the media content (e.g. 'en', 'es-ES'). Must be a supported source language for some order item kind.
+
+ media : typing.Optional[core.File]
+ See core.File for more documentation
+
+ media_url : typing.Optional[str]
+ A URL to fetch the media file from. Mutually exclusive with media.
+
+ media_url_filename : typing.Optional[str]
+ The filename for URL-sourced media (e.g. 'example.mp4'). Required when using media_url.
+
+ media_url_content_type : typing.Optional[str]
+ The MIME type for URL-sourced media (e.g. 'video/mp4'). Required when using media_url.
+
+ request_options : typing.Optional[RequestOptions]
+ Request-specific configuration.
+
+ Returns
+ -------
+ HttpResponse[RegisterMediaResponse]
+ Successful Response
+ """
+ _response = self._client_wrapper.httpx_client.request(
+ f"v1/productions/orders/{jsonable_encoder(order_id)}/media",
+ method="POST",
+ data={
+ "declared_language": declared_language,
+ "media_url": media_url,
+ "media_url_filename": media_url_filename,
+ "media_url_content_type": media_url_content_type,
+ },
+ files={
+ **({"media": media} if media is not None else {}),
+ },
+ request_options=request_options,
+ omit=OMIT,
+ force_multipart=True,
+ )
+ try:
+ if 200 <= _response.status_code < 300:
+ _data = typing.cast(
+ RegisterMediaResponse,
+ construct_type(
+ type_=RegisterMediaResponse, # type: ignore
+ object_=_response.json(),
+ ),
+ )
+ return HttpResponse(response=_response, data=_data)
+ if _response.status_code == 422:
+ raise UnprocessableEntityError(
+ headers=dict(_response.headers),
+ body=typing.cast(
+ typing.Any,
+ construct_type(
+ type_=typing.Any, # type: ignore
+ object_=_response.json(),
+ ),
+ ),
+ )
+ _response_json = _response.json()
+ except JSONDecodeError:
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
+
+ def get(
+ self, order_id: OrderId, media_id: MediaId, *, request_options: typing.Optional[RequestOptions] = None
+ ) -> HttpResponse[OrderMediaResponse]:
+ """
+ Retrieves metadata and a time-limited download URL for a previously uploaded media file.
+
+ Parameters
+ ----------
+ order_id : OrderId
+ The ID of the order.
+
+ media_id : MediaId
+ The ID of the media file.
+
+ request_options : typing.Optional[RequestOptions]
+ Request-specific configuration.
+
+ Returns
+ -------
+ HttpResponse[OrderMediaResponse]
+ Successful Response
+ """
+ _response = self._client_wrapper.httpx_client.request(
+ f"v1/productions/orders/{jsonable_encoder(order_id)}/media/{jsonable_encoder(media_id)}",
+ method="GET",
+ request_options=request_options,
+ )
+ try:
+ if 200 <= _response.status_code < 300:
+ _data = typing.cast(
+ OrderMediaResponse,
+ construct_type(
+ type_=OrderMediaResponse, # type: ignore
+ object_=_response.json(),
+ ),
+ )
+ return HttpResponse(response=_response, data=_data)
+ if _response.status_code == 422:
+ raise UnprocessableEntityError(
+ headers=dict(_response.headers),
+ body=typing.cast(
+ typing.Any,
+ construct_type(
+ type_=typing.Any, # type: ignore
+ object_=_response.json(),
+ ),
+ ),
+ )
+ _response_json = _response.json()
+ except JSONDecodeError:
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
+
+
+class AsyncRawMediaClient:
+ def __init__(self, *, client_wrapper: AsyncClientWrapper):
+ self._client_wrapper = client_wrapper
+
+ async def register(
+ self,
+ order_id: OrderId,
+ *,
+ declared_language: str,
+ media: typing.Optional[core.File] = OMIT,
+ media_url: typing.Optional[str] = OMIT,
+ media_url_filename: typing.Optional[str] = OMIT,
+ media_url_content_type: typing.Optional[str] = OMIT,
+ request_options: typing.Optional[RequestOptions] = None,
+ ) -> AsyncHttpResponse[RegisterMediaResponse]:
+ """
+ Registers a media file with an order, either by uploading it directly or by providing a URL to fetch it from. Exactly one of `media` or `media_url` must be provided. The registered media can then be referenced when adding order items.
+
+ Parameters
+ ----------
+ order_id : OrderId
+ The ID of the order to which this media will be attached.
+
+ declared_language : str
+ The language code of the media content (e.g. 'en', 'es-ES'). Must be a supported source language for some order item kind.
+
+ media : typing.Optional[core.File]
+ See core.File for more documentation
+
+ media_url : typing.Optional[str]
+ A URL to fetch the media file from. Mutually exclusive with media.
+
+ media_url_filename : typing.Optional[str]
+ The filename for URL-sourced media (e.g. 'example.mp4'). Required when using media_url.
+
+ media_url_content_type : typing.Optional[str]
+ The MIME type for URL-sourced media (e.g. 'video/mp4'). Required when using media_url.
+
+ request_options : typing.Optional[RequestOptions]
+ Request-specific configuration.
+
+ Returns
+ -------
+ AsyncHttpResponse[RegisterMediaResponse]
+ Successful Response
+ """
+ _response = await self._client_wrapper.httpx_client.request(
+ f"v1/productions/orders/{jsonable_encoder(order_id)}/media",
+ method="POST",
+ data={
+ "declared_language": declared_language,
+ "media_url": media_url,
+ "media_url_filename": media_url_filename,
+ "media_url_content_type": media_url_content_type,
+ },
+ files={
+ **({"media": media} if media is not None else {}),
+ },
+ request_options=request_options,
+ omit=OMIT,
+ force_multipart=True,
+ )
+ try:
+ if 200 <= _response.status_code < 300:
+ _data = typing.cast(
+ RegisterMediaResponse,
+ construct_type(
+ type_=RegisterMediaResponse, # type: ignore
+ object_=_response.json(),
+ ),
+ )
+ return AsyncHttpResponse(response=_response, data=_data)
+ if _response.status_code == 422:
+ raise UnprocessableEntityError(
+ headers=dict(_response.headers),
+ body=typing.cast(
+ typing.Any,
+ construct_type(
+ type_=typing.Any, # type: ignore
+ object_=_response.json(),
+ ),
+ ),
+ )
+ _response_json = _response.json()
+ except JSONDecodeError:
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
+
+ async def get(
+ self, order_id: OrderId, media_id: MediaId, *, request_options: typing.Optional[RequestOptions] = None
+ ) -> AsyncHttpResponse[OrderMediaResponse]:
+ """
+ Retrieves metadata and a time-limited download URL for a previously uploaded media file.
+
+ Parameters
+ ----------
+ order_id : OrderId
+ The ID of the order.
+
+ media_id : MediaId
+ The ID of the media file.
+
+ request_options : typing.Optional[RequestOptions]
+ Request-specific configuration.
+
+ Returns
+ -------
+ AsyncHttpResponse[OrderMediaResponse]
+ Successful Response
+ """
+ _response = await self._client_wrapper.httpx_client.request(
+ f"v1/productions/orders/{jsonable_encoder(order_id)}/media/{jsonable_encoder(media_id)}",
+ method="GET",
+ request_options=request_options,
+ )
+ try:
+ if 200 <= _response.status_code < 300:
+ _data = typing.cast(
+ OrderMediaResponse,
+ construct_type(
+ type_=OrderMediaResponse, # type: ignore
+ object_=_response.json(),
+ ),
+ )
+ return AsyncHttpResponse(response=_response, data=_data)
+ if _response.status_code == 422:
+ raise UnprocessableEntityError(
+ headers=dict(_response.headers),
+ body=typing.cast(
+ typing.Any,
+ construct_type(
+ type_=typing.Any, # type: ignore
+ object_=_response.json(),
+ ),
+ ),
+ )
+ _response_json = _response.json()
+ except JSONDecodeError:
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
diff --git a/src/elevenlabs/productions/orders/raw_client.py b/src/elevenlabs/productions/orders/raw_client.py
new file mode 100644
index 00000000..7b148c7f
--- /dev/null
+++ b/src/elevenlabs/productions/orders/raw_client.py
@@ -0,0 +1,610 @@
+# This file was auto-generated by Fern from our API Definition.
+
+import datetime as dt
+import typing
+from json.decoder import JSONDecodeError
+
+from ...core.api_error import ApiError
+from ...core.client_wrapper import AsyncClientWrapper, SyncClientWrapper
+from ...core.datetime_utils import serialize_datetime
+from ...core.http_response import AsyncHttpResponse, HttpResponse
+from ...core.jsonable_encoder import jsonable_encoder
+from ...core.request_options import RequestOptions
+from ...core.serialization import convert_and_respect_annotation_metadata
+from ...core.unchecked_base_model import construct_type
+from ...errors.unprocessable_entity_error import UnprocessableEntityError
+from ...types.create_order_response import CreateOrderResponse
+from ...types.list_orders_response import ListOrdersResponse
+from ...types.order_id import OrderId
+from ...types.order_request_state import OrderRequestState
+from ...types.order_response import OrderResponse
+from ...types.submit_order_response import SubmitOrderResponse
+from ...types.update_order_request import UpdateOrderRequest
+from ...types.update_order_response import UpdateOrderResponse
+
+# this is used as the default value for optional parameters
+OMIT = typing.cast(typing.Any, ...)
+
+
+class RawOrdersClient:
+ def __init__(self, *, client_wrapper: SyncClientWrapper):
+ self._client_wrapper = client_wrapper
+
+ def list(
+ self,
+ *,
+ page_size: typing.Optional[int] = None,
+ offset: typing.Optional[int] = None,
+ status: typing.Optional[typing.Union[OrderRequestState, typing.Sequence[OrderRequestState]]] = None,
+ start_date: typing.Optional[dt.datetime] = None,
+ end_date: typing.Optional[dt.datetime] = None,
+ request_options: typing.Optional[RequestOptions] = None,
+ ) -> HttpResponse[ListOrdersResponse]:
+ """
+ Lists Productions orders in the workspace. Supports filtering by status and date range, with pagination.
+
+ Parameters
+ ----------
+ page_size : typing.Optional[int]
+ Maximum number of orders to return per page.
+
+ offset : typing.Optional[int]
+ Number of orders to skip for pagination.
+
+ status : typing.Optional[typing.Union[OrderRequestState, typing.Sequence[OrderRequestState]]]
+ Filter orders by one or more statuses.
+
+ start_date : typing.Optional[dt.datetime]
+ Filter orders created on or after this date.
+
+ end_date : typing.Optional[dt.datetime]
+ Filter orders created on or before this date.
+
+ request_options : typing.Optional[RequestOptions]
+ Request-specific configuration.
+
+ Returns
+ -------
+ HttpResponse[ListOrdersResponse]
+ Successful Response
+ """
+ _response = self._client_wrapper.httpx_client.request(
+ "v1/productions/orders",
+ method="GET",
+ params={
+ "page_size": page_size,
+ "offset": offset,
+ "status": status,
+ "start_date": serialize_datetime(start_date) if start_date is not None else None,
+ "end_date": serialize_datetime(end_date) if end_date is not None else None,
+ },
+ request_options=request_options,
+ )
+ try:
+ if 200 <= _response.status_code < 300:
+ _data = typing.cast(
+ ListOrdersResponse,
+ construct_type(
+ type_=ListOrdersResponse, # type: ignore
+ object_=_response.json(),
+ ),
+ )
+ return HttpResponse(response=_response, data=_data)
+ if _response.status_code == 422:
+ raise UnprocessableEntityError(
+ headers=dict(_response.headers),
+ body=typing.cast(
+ typing.Any,
+ construct_type(
+ type_=typing.Any, # type: ignore
+ object_=_response.json(),
+ ),
+ ),
+ )
+ _response_json = _response.json()
+ except JSONDecodeError:
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
+
+ def create(self, *, request_options: typing.Optional[RequestOptions] = None) -> HttpResponse[CreateOrderResponse]:
+ """
+ Creates a new Productions order in the workspace. The order starts in the open state and can be configured with items before submission.
+
+ Parameters
+ ----------
+ request_options : typing.Optional[RequestOptions]
+ Request-specific configuration.
+
+ Returns
+ -------
+ HttpResponse[CreateOrderResponse]
+ Successful Response
+ """
+ _response = self._client_wrapper.httpx_client.request(
+ "v1/productions/orders",
+ method="POST",
+ request_options=request_options,
+ )
+ try:
+ if 200 <= _response.status_code < 300:
+ _data = typing.cast(
+ CreateOrderResponse,
+ construct_type(
+ type_=CreateOrderResponse, # type: ignore
+ object_=_response.json(),
+ ),
+ )
+ return HttpResponse(response=_response, data=_data)
+ if _response.status_code == 422:
+ raise UnprocessableEntityError(
+ headers=dict(_response.headers),
+ body=typing.cast(
+ typing.Any,
+ construct_type(
+ type_=typing.Any, # type: ignore
+ object_=_response.json(),
+ ),
+ ),
+ )
+ _response_json = _response.json()
+ except JSONDecodeError:
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
+
+ def get(
+ self, order_id: OrderId, *, request_options: typing.Optional[RequestOptions] = None
+ ) -> HttpResponse[OrderResponse]:
+ """
+ Retrieves full details for a Productions order.
+
+ Quote and pricing information may not be available immediately; if you wish to see the quote before submission, you may need to poll the order details until it is ready.
+
+ Parameters
+ ----------
+ order_id : OrderId
+ The ID of the order.
+
+ request_options : typing.Optional[RequestOptions]
+ Request-specific configuration.
+
+ Returns
+ -------
+ HttpResponse[OrderResponse]
+ Successful Response
+ """
+ _response = self._client_wrapper.httpx_client.request(
+ f"v1/productions/orders/{jsonable_encoder(order_id)}",
+ method="GET",
+ request_options=request_options,
+ )
+ try:
+ if 200 <= _response.status_code < 300:
+ _data = typing.cast(
+ OrderResponse,
+ construct_type(
+ type_=OrderResponse, # type: ignore
+ object_=_response.json(),
+ ),
+ )
+ return HttpResponse(response=_response, data=_data)
+ if _response.status_code == 422:
+ raise UnprocessableEntityError(
+ headers=dict(_response.headers),
+ body=typing.cast(
+ typing.Any,
+ construct_type(
+ type_=typing.Any, # type: ignore
+ object_=_response.json(),
+ ),
+ ),
+ )
+ _response_json = _response.json()
+ except JSONDecodeError:
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
+
+ def update(
+ self, order_id: OrderId, *, request: UpdateOrderRequest, request_options: typing.Optional[RequestOptions] = None
+ ) -> HttpResponse[UpdateOrderResponse]:
+ """
+ Updates an open order.
+
+ Parameters
+ ----------
+ order_id : OrderId
+ The ID of the order.
+
+ request : UpdateOrderRequest
+
+ request_options : typing.Optional[RequestOptions]
+ Request-specific configuration.
+
+ Returns
+ -------
+ HttpResponse[UpdateOrderResponse]
+ Successful Response
+ """
+ _response = self._client_wrapper.httpx_client.request(
+ f"v1/productions/orders/{jsonable_encoder(order_id)}",
+ method="PATCH",
+ json={
+ "request": convert_and_respect_annotation_metadata(
+ object_=request, annotation=UpdateOrderRequest, direction="write"
+ ),
+ },
+ headers={
+ "content-type": "application/json",
+ },
+ request_options=request_options,
+ omit=OMIT,
+ )
+ try:
+ if 200 <= _response.status_code < 300:
+ _data = typing.cast(
+ UpdateOrderResponse,
+ construct_type(
+ type_=UpdateOrderResponse, # type: ignore
+ object_=_response.json(),
+ ),
+ )
+ return HttpResponse(response=_response, data=_data)
+ if _response.status_code == 422:
+ raise UnprocessableEntityError(
+ headers=dict(_response.headers),
+ body=typing.cast(
+ typing.Any,
+ construct_type(
+ type_=typing.Any, # type: ignore
+ object_=_response.json(),
+ ),
+ ),
+ )
+ _response_json = _response.json()
+ except JSONDecodeError:
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
+
+ def submit(
+ self, order_id: OrderId, *, request_options: typing.Optional[RequestOptions] = None
+ ) -> HttpResponse[SubmitOrderResponse]:
+ """
+ Submits an open order for processing. The order must have at least one item. Once submitted, items can no longer be modified.
+
+ Upon submission, the workspace will be charged for the order. The quote is based on information extracted from the uploaded media, such as its duration. The quote may not be available immediately; if you wish to see the quote before submission, you may need to poll the order details until the quote is ready.
+
+ Parameters
+ ----------
+ order_id : OrderId
+ The ID of the order.
+
+ request_options : typing.Optional[RequestOptions]
+ Request-specific configuration.
+
+ Returns
+ -------
+ HttpResponse[SubmitOrderResponse]
+ Successful Response
+ """
+ _response = self._client_wrapper.httpx_client.request(
+ f"v1/productions/orders/{jsonable_encoder(order_id)}/submit",
+ method="POST",
+ request_options=request_options,
+ )
+ try:
+ if 200 <= _response.status_code < 300:
+ _data = typing.cast(
+ SubmitOrderResponse,
+ construct_type(
+ type_=SubmitOrderResponse, # type: ignore
+ object_=_response.json(),
+ ),
+ )
+ return HttpResponse(response=_response, data=_data)
+ if _response.status_code == 422:
+ raise UnprocessableEntityError(
+ headers=dict(_response.headers),
+ body=typing.cast(
+ typing.Any,
+ construct_type(
+ type_=typing.Any, # type: ignore
+ object_=_response.json(),
+ ),
+ ),
+ )
+ _response_json = _response.json()
+ except JSONDecodeError:
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
+
+
+class AsyncRawOrdersClient:
+ def __init__(self, *, client_wrapper: AsyncClientWrapper):
+ self._client_wrapper = client_wrapper
+
+ async def list(
+ self,
+ *,
+ page_size: typing.Optional[int] = None,
+ offset: typing.Optional[int] = None,
+ status: typing.Optional[typing.Union[OrderRequestState, typing.Sequence[OrderRequestState]]] = None,
+ start_date: typing.Optional[dt.datetime] = None,
+ end_date: typing.Optional[dt.datetime] = None,
+ request_options: typing.Optional[RequestOptions] = None,
+ ) -> AsyncHttpResponse[ListOrdersResponse]:
+ """
+ Lists Productions orders in the workspace. Supports filtering by status and date range, with pagination.
+
+ Parameters
+ ----------
+ page_size : typing.Optional[int]
+ Maximum number of orders to return per page.
+
+ offset : typing.Optional[int]
+ Number of orders to skip for pagination.
+
+ status : typing.Optional[typing.Union[OrderRequestState, typing.Sequence[OrderRequestState]]]
+ Filter orders by one or more statuses.
+
+ start_date : typing.Optional[dt.datetime]
+ Filter orders created on or after this date.
+
+ end_date : typing.Optional[dt.datetime]
+ Filter orders created on or before this date.
+
+ request_options : typing.Optional[RequestOptions]
+ Request-specific configuration.
+
+ Returns
+ -------
+ AsyncHttpResponse[ListOrdersResponse]
+ Successful Response
+ """
+ _response = await self._client_wrapper.httpx_client.request(
+ "v1/productions/orders",
+ method="GET",
+ params={
+ "page_size": page_size,
+ "offset": offset,
+ "status": status,
+ "start_date": serialize_datetime(start_date) if start_date is not None else None,
+ "end_date": serialize_datetime(end_date) if end_date is not None else None,
+ },
+ request_options=request_options,
+ )
+ try:
+ if 200 <= _response.status_code < 300:
+ _data = typing.cast(
+ ListOrdersResponse,
+ construct_type(
+ type_=ListOrdersResponse, # type: ignore
+ object_=_response.json(),
+ ),
+ )
+ return AsyncHttpResponse(response=_response, data=_data)
+ if _response.status_code == 422:
+ raise UnprocessableEntityError(
+ headers=dict(_response.headers),
+ body=typing.cast(
+ typing.Any,
+ construct_type(
+ type_=typing.Any, # type: ignore
+ object_=_response.json(),
+ ),
+ ),
+ )
+ _response_json = _response.json()
+ except JSONDecodeError:
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
+
+ async def create(
+ self, *, request_options: typing.Optional[RequestOptions] = None
+ ) -> AsyncHttpResponse[CreateOrderResponse]:
+ """
+ Creates a new Productions order in the workspace. The order starts in the open state and can be configured with items before submission.
+
+ Parameters
+ ----------
+ request_options : typing.Optional[RequestOptions]
+ Request-specific configuration.
+
+ Returns
+ -------
+ AsyncHttpResponse[CreateOrderResponse]
+ Successful Response
+ """
+ _response = await self._client_wrapper.httpx_client.request(
+ "v1/productions/orders",
+ method="POST",
+ request_options=request_options,
+ )
+ try:
+ if 200 <= _response.status_code < 300:
+ _data = typing.cast(
+ CreateOrderResponse,
+ construct_type(
+ type_=CreateOrderResponse, # type: ignore
+ object_=_response.json(),
+ ),
+ )
+ return AsyncHttpResponse(response=_response, data=_data)
+ if _response.status_code == 422:
+ raise UnprocessableEntityError(
+ headers=dict(_response.headers),
+ body=typing.cast(
+ typing.Any,
+ construct_type(
+ type_=typing.Any, # type: ignore
+ object_=_response.json(),
+ ),
+ ),
+ )
+ _response_json = _response.json()
+ except JSONDecodeError:
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
+
+ async def get(
+ self, order_id: OrderId, *, request_options: typing.Optional[RequestOptions] = None
+ ) -> AsyncHttpResponse[OrderResponse]:
+ """
+ Retrieves full details for a Productions order.
+
+ Quote and pricing information may not be available immediately; if you wish to see the quote before submission, you may need to poll the order details until it is ready.
+
+ Parameters
+ ----------
+ order_id : OrderId
+ The ID of the order.
+
+ request_options : typing.Optional[RequestOptions]
+ Request-specific configuration.
+
+ Returns
+ -------
+ AsyncHttpResponse[OrderResponse]
+ Successful Response
+ """
+ _response = await self._client_wrapper.httpx_client.request(
+ f"v1/productions/orders/{jsonable_encoder(order_id)}",
+ method="GET",
+ request_options=request_options,
+ )
+ try:
+ if 200 <= _response.status_code < 300:
+ _data = typing.cast(
+ OrderResponse,
+ construct_type(
+ type_=OrderResponse, # type: ignore
+ object_=_response.json(),
+ ),
+ )
+ return AsyncHttpResponse(response=_response, data=_data)
+ if _response.status_code == 422:
+ raise UnprocessableEntityError(
+ headers=dict(_response.headers),
+ body=typing.cast(
+ typing.Any,
+ construct_type(
+ type_=typing.Any, # type: ignore
+ object_=_response.json(),
+ ),
+ ),
+ )
+ _response_json = _response.json()
+ except JSONDecodeError:
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
+
+ async def update(
+ self, order_id: OrderId, *, request: UpdateOrderRequest, request_options: typing.Optional[RequestOptions] = None
+ ) -> AsyncHttpResponse[UpdateOrderResponse]:
+ """
+ Updates an open order.
+
+ Parameters
+ ----------
+ order_id : OrderId
+ The ID of the order.
+
+ request : UpdateOrderRequest
+
+ request_options : typing.Optional[RequestOptions]
+ Request-specific configuration.
+
+ Returns
+ -------
+ AsyncHttpResponse[UpdateOrderResponse]
+ Successful Response
+ """
+ _response = await self._client_wrapper.httpx_client.request(
+ f"v1/productions/orders/{jsonable_encoder(order_id)}",
+ method="PATCH",
+ json={
+ "request": convert_and_respect_annotation_metadata(
+ object_=request, annotation=UpdateOrderRequest, direction="write"
+ ),
+ },
+ headers={
+ "content-type": "application/json",
+ },
+ request_options=request_options,
+ omit=OMIT,
+ )
+ try:
+ if 200 <= _response.status_code < 300:
+ _data = typing.cast(
+ UpdateOrderResponse,
+ construct_type(
+ type_=UpdateOrderResponse, # type: ignore
+ object_=_response.json(),
+ ),
+ )
+ return AsyncHttpResponse(response=_response, data=_data)
+ if _response.status_code == 422:
+ raise UnprocessableEntityError(
+ headers=dict(_response.headers),
+ body=typing.cast(
+ typing.Any,
+ construct_type(
+ type_=typing.Any, # type: ignore
+ object_=_response.json(),
+ ),
+ ),
+ )
+ _response_json = _response.json()
+ except JSONDecodeError:
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
+
+ async def submit(
+ self, order_id: OrderId, *, request_options: typing.Optional[RequestOptions] = None
+ ) -> AsyncHttpResponse[SubmitOrderResponse]:
+ """
+ Submits an open order for processing. The order must have at least one item. Once submitted, items can no longer be modified.
+
+ Upon submission, the workspace will be charged for the order. The quote is based on information extracted from the uploaded media, such as its duration. The quote may not be available immediately; if you wish to see the quote before submission, you may need to poll the order details until the quote is ready.
+
+ Parameters
+ ----------
+ order_id : OrderId
+ The ID of the order.
+
+ request_options : typing.Optional[RequestOptions]
+ Request-specific configuration.
+
+ Returns
+ -------
+ AsyncHttpResponse[SubmitOrderResponse]
+ Successful Response
+ """
+ _response = await self._client_wrapper.httpx_client.request(
+ f"v1/productions/orders/{jsonable_encoder(order_id)}/submit",
+ method="POST",
+ request_options=request_options,
+ )
+ try:
+ if 200 <= _response.status_code < 300:
+ _data = typing.cast(
+ SubmitOrderResponse,
+ construct_type(
+ type_=SubmitOrderResponse, # type: ignore
+ object_=_response.json(),
+ ),
+ )
+ return AsyncHttpResponse(response=_response, data=_data)
+ if _response.status_code == 422:
+ raise UnprocessableEntityError(
+ headers=dict(_response.headers),
+ body=typing.cast(
+ typing.Any,
+ construct_type(
+ type_=typing.Any, # type: ignore
+ object_=_response.json(),
+ ),
+ ),
+ )
+ _response_json = _response.json()
+ except JSONDecodeError:
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
diff --git a/src/elevenlabs/productions/raw_client.py b/src/elevenlabs/productions/raw_client.py
new file mode 100644
index 00000000..d2aa8c8e
--- /dev/null
+++ b/src/elevenlabs/productions/raw_client.py
@@ -0,0 +1,13 @@
+# This file was auto-generated by Fern from our API Definition.
+
+from ..core.client_wrapper import AsyncClientWrapper, SyncClientWrapper
+
+
+class RawProductionsClient:
+ def __init__(self, *, client_wrapper: SyncClientWrapper):
+ self._client_wrapper = client_wrapper
+
+
+class AsyncRawProductionsClient:
+ def __init__(self, *, client_wrapper: AsyncClientWrapper):
+ self._client_wrapper = client_wrapper
diff --git a/src/elevenlabs/speech_engine/client.py b/src/elevenlabs/speech_engine/client.py
index 3ca9d9ea..f6870885 100644
--- a/src/elevenlabs/speech_engine/client.py
+++ b/src/elevenlabs/speech_engine/client.py
@@ -9,7 +9,6 @@
from ..types.asr_conversational_config import AsrConversationalConfig
from ..types.base_turn_config import BaseTurnConfig
from ..types.conversation_config_input import ConversationConfigInput
-from ..types.create_speech_engine_response import CreateSpeechEngineResponse
from ..types.list_speech_engines_response import ListSpeechEnginesResponse
from ..types.privacy_config_input import PrivacyConfigInput
from ..types.sort_direction import SortDirection
@@ -114,7 +113,7 @@ def create(
language: typing.Optional[str] = OMIT,
tags: typing.Optional[typing.Sequence[str]] = OMIT,
request_options: typing.Optional[RequestOptions] = None,
- ) -> CreateSpeechEngineResponse:
+ ) -> SpeechEngineResponse:
"""
Create a new Speech Engine resource
@@ -155,7 +154,7 @@ def create(
Returns
-------
- CreateSpeechEngineResponse
+ SpeechEngineResponse
Successful Response
Examples
@@ -429,7 +428,7 @@ async def create(
language: typing.Optional[str] = OMIT,
tags: typing.Optional[typing.Sequence[str]] = OMIT,
request_options: typing.Optional[RequestOptions] = None,
- ) -> CreateSpeechEngineResponse:
+ ) -> SpeechEngineResponse:
"""
Create a new Speech Engine resource
@@ -470,7 +469,7 @@ async def create(
Returns
-------
- CreateSpeechEngineResponse
+ SpeechEngineResponse
Successful Response
Examples
diff --git a/src/elevenlabs/speech_engine/raw_client.py b/src/elevenlabs/speech_engine/raw_client.py
index d0767c0f..e7784e76 100644
--- a/src/elevenlabs/speech_engine/raw_client.py
+++ b/src/elevenlabs/speech_engine/raw_client.py
@@ -16,7 +16,6 @@
from ..types.asr_conversational_config import AsrConversationalConfig
from ..types.base_turn_config import BaseTurnConfig
from ..types.conversation_config_input import ConversationConfigInput
-from ..types.create_speech_engine_response import CreateSpeechEngineResponse
from ..types.list_speech_engines_response import ListSpeechEnginesResponse
from ..types.privacy_config_input import PrivacyConfigInput
from ..types.sort_direction import SortDirection
@@ -122,7 +121,7 @@ def create(
language: typing.Optional[str] = OMIT,
tags: typing.Optional[typing.Sequence[str]] = OMIT,
request_options: typing.Optional[RequestOptions] = None,
- ) -> HttpResponse[CreateSpeechEngineResponse]:
+ ) -> HttpResponse[SpeechEngineResponse]:
"""
Create a new Speech Engine resource
@@ -163,7 +162,7 @@ def create(
Returns
-------
- HttpResponse[CreateSpeechEngineResponse]
+ HttpResponse[SpeechEngineResponse]
Successful Response
"""
_response = self._client_wrapper.httpx_client.request(
@@ -204,9 +203,9 @@ def create(
try:
if 200 <= _response.status_code < 300:
_data = typing.cast(
- CreateSpeechEngineResponse,
+ SpeechEngineResponse,
construct_type(
- type_=CreateSpeechEngineResponse, # type: ignore
+ type_=SpeechEngineResponse, # type: ignore
object_=_response.json(),
),
)
@@ -527,7 +526,7 @@ async def create(
language: typing.Optional[str] = OMIT,
tags: typing.Optional[typing.Sequence[str]] = OMIT,
request_options: typing.Optional[RequestOptions] = None,
- ) -> AsyncHttpResponse[CreateSpeechEngineResponse]:
+ ) -> AsyncHttpResponse[SpeechEngineResponse]:
"""
Create a new Speech Engine resource
@@ -568,7 +567,7 @@ async def create(
Returns
-------
- AsyncHttpResponse[CreateSpeechEngineResponse]
+ AsyncHttpResponse[SpeechEngineResponse]
Successful Response
"""
_response = await self._client_wrapper.httpx_client.request(
@@ -609,9 +608,9 @@ async def create(
try:
if 200 <= _response.status_code < 300:
_data = typing.cast(
- CreateSpeechEngineResponse,
+ SpeechEngineResponse,
construct_type(
- type_=CreateSpeechEngineResponse, # type: ignore
+ type_=SpeechEngineResponse, # type: ignore
object_=_response.json(),
),
)
diff --git a/src/elevenlabs/types/__init__.py b/src/elevenlabs/types/__init__.py
index ab36392a..c2afe8f4 100644
--- a/src/elevenlabs/types/__init__.py
+++ b/src/elevenlabs/types/__init__.py
@@ -27,6 +27,7 @@
from .age import Age
from .agent_alerting_monitor_config import AgentAlertingMonitorConfig
from .agent_alerting_settings import AgentAlertingSettings
+ from .agent_alerting_webhook_notifier import AgentAlertingWebhookNotifier
from .agent_branch_basic_info import AgentBranchBasicInfo
from .agent_branch_response import AgentBranchResponse
from .agent_branch_summary import AgentBranchSummary
@@ -90,7 +91,6 @@
from .analysis_property_constant_value import AnalysisPropertyConstantValue
from .analysis_property_type import AnalysisPropertyType
from .analysis_scope import AnalysisScope
- from .api_integration_doc_response import ApiIntegrationDocResponse
from .api_integration_o_auth_2_auth_code_response import ApiIntegrationOAuth2AuthCodeResponse
from .api_integration_o_auth_2_auth_code_response_scope_separator import (
ApiIntegrationOAuth2AuthCodeResponseScopeSeparator,
@@ -118,6 +118,8 @@
from .array_json_schema_property_output_constant_value_item import ArrayJsonSchemaPropertyOutputConstantValueItem
from .array_json_schema_property_output_items import ArrayJsonSchemaPropertyOutputItems
from .asr_conversational_config import AsrConversationalConfig
+ from .asr_conversational_config_override import AsrConversationalConfigOverride
+ from .asr_conversational_config_override_config import AsrConversationalConfigOverrideConfig
from .asr_conversational_config_workflow_override import AsrConversationalConfigWorkflowOverride
from .asr_input_format import AsrInputFormat
from .asr_provider import AsrProvider
@@ -580,6 +582,7 @@
from .create_o_auth_2_jwt_request import CreateOAuth2JwtRequest
from .create_o_auth_2_jwt_request_algorithm import CreateOAuth2JwtRequestAlgorithm
from .create_o_auth_2_jwt_request_token_response_field import CreateOAuth2JwtRequestTokenResponseField
+ from .create_order_response import CreateOrderResponse
from .create_phone_number_response_model import CreatePhoneNumberResponseModel
from .create_previously_generated_voice_request import CreatePreviouslyGeneratedVoiceRequest
from .create_private_key_jwt_request import CreatePrivateKeyJwtRequest
@@ -591,12 +594,12 @@
from .create_service_params import CreateServiceParams
from .create_simulation_test_request import CreateSimulationTestRequest
from .create_sip_trunk_phone_number_request import CreateSipTrunkPhoneNumberRequest
- from .create_speech_engine_response import CreateSpeechEngineResponse
from .create_staff_params import CreateStaffParams
from .create_string_environment_variable_request import CreateStringEnvironmentVariableRequest
from .create_tool_call_unit_test_request import CreateToolCallUnitTestRequest
from .create_transcript_request import CreateTranscriptRequest
from .create_twilio_phone_number_request import CreateTwilioPhoneNumberRequest
+ from .cue_options_request import CueOptionsRequest
from .currency import Currency
from .custom_guardrail_config import CustomGuardrailConfig
from .custom_guardrail_config_trigger_action import (
@@ -644,6 +647,7 @@
from .delete_workspace_group_member_response_model import DeleteWorkspaceGroupMemberResponseModel
from .delete_workspace_invite_response_model import DeleteWorkspaceInviteResponseModel
from .delete_workspace_webhook_response_model import DeleteWorkspaceWebhookResponseModel
+ from .deliverable_info import DeliverableInfo
from .dependent_available_agent_identifier import DependentAvailableAgentIdentifier
from .dependent_available_agent_identifier_access_level import DependentAvailableAgentIdentifierAccessLevel
from .dependent_available_mcp_server_identifier import DependentAvailableMcpServerIdentifier
@@ -672,6 +676,7 @@
from .document_usage_mode_enum import DocumentUsageModeEnum
from .docx_export_options import DocxExportOptions
from .dtmf_input_config import DtmfInputConfig
+ from .dub_order_item_request import DubOrderItemRequest
from .dubbed_segment import DubbedSegment
from .dubbing_media_metadata import DubbingMediaMetadata
from .dubbing_media_reference import DubbingMediaReference
@@ -923,6 +928,7 @@
from .invoice_response import InvoiceResponse
from .invoice_response_model_payment_intent_status import InvoiceResponseModelPaymentIntentStatus
from .invoice_response_model_payment_intent_statusses_item import InvoiceResponseModelPaymentIntentStatussesItem
+ from .item_id import ItemId
from .keep_context_alive import KeepContextAlive
from .knowledge_base_content_search_response_model import KnowledgeBaseContentSearchResponseModel
from .knowledge_base_content_search_result import KnowledgeBaseContentSearchResult
@@ -959,6 +965,8 @@
from .language_added_response import LanguageAddedResponse
from .language_detection_tool_config import LanguageDetectionToolConfig
from .language_detection_tool_result_model import LanguageDetectionToolResultModel
+ from .language_info import LanguageInfo
+ from .language_pair_info import LanguagePairInfo
from .language_preset_input import LanguagePresetInput
from .language_preset_output import LanguagePresetOutput
from .language_preset_translation import LanguagePresetTranslation
@@ -991,9 +999,9 @@
from .list_holidays_params import ListHolidaysParams
from .list_locations_params import ListLocationsParams
from .list_mcp_tools_response_model import ListMcpToolsResponseModel
+ from .list_orders_response import ListOrdersResponse
from .list_products_params import ListProductsParams
from .list_response_agent_branch_summary import ListResponseAgentBranchSummary
- from .list_response_api_integration_doc_response import ListResponseApiIntegrationDocResponse
from .list_response_meta import ListResponseMeta
from .list_services_params import ListServicesParams
from .list_speech_engines_response import ListSpeechEnginesResponse
@@ -1064,6 +1072,7 @@
McpToolConfigOverrideOutputInputOverridesValue_DynamicVariable,
McpToolConfigOverrideOutputInputOverridesValue_Llm,
)
+ from .media_id import MediaId
from .memory_entry_search_result import MemoryEntrySearchResult
from .memory_entry_search_result_source import MemoryEntrySearchResultSource
from .message_search_sort_by import MessageSearchSortBy
@@ -1100,10 +1109,20 @@
from .object_json_schema_property_output_properties_value import ObjectJsonSchemaPropertyOutputPropertiesValue
from .orb_avatar import OrbAvatar
from .orchestrator_tool_mock_behavior_config import OrchestratorToolMockBehaviorConfig
+ from .order_deliverables_response import OrderDeliverablesResponse
+ from .order_id import OrderId
+ from .order_item_info import OrderItemInfo
+ from .order_item_kind import OrderItemKind
+ from .order_media_response import OrderMediaResponse
+ from .order_request_state import OrderRequestState
+ from .order_response import OrderResponse
+ from .order_state import OrderState
+ from .order_summary import OrderSummary
from .outbound_call_recipient import OutboundCallRecipient
from .outbound_call_recipient_response_model import OutboundCallRecipientResponseModel
from .outbound_sip_trunk_config_request_model import OutboundSipTrunkConfigRequestModel
from .output_format import OutputFormat
+ from .paired_languages_response import PairedLanguagesResponse
from .partial_transcript_payload import PartialTranscriptPayload
from .patch_workspace_webhook_response_model import PatchWorkspaceWebhookResponseModel
from .pdf_export_options import PdfExportOptions
@@ -1283,6 +1302,7 @@
from .pydantic_pronunciation_dictionary_version_locator import PydanticPronunciationDictionaryVersionLocator
from .quality_preset_type import QualityPresetType
from .query_params_json_schema import QueryParamsJsonSchema
+ from .quote_info import QuoteInfo
from .rag_chunk_metadata import RagChunkMetadata
from .rag_config import RagConfig
from .rag_config_workflow_override import RagConfigWorkflowOverride
@@ -1307,7 +1327,9 @@
from .region_config_request import RegionConfigRequest
from .regional_processing_surcharge_info import RegionalProcessingSurchargeInfo
from .register_for_group_session_params import RegisterForGroupSessionParams
+ from .register_media_response import RegisterMediaResponse
from .remove_member_from_group_request import RemoveMemberFromGroupRequest
+ from .remove_order_item_response import RemoveOrderItemResponse
from .render import Render
from .render_status import RenderStatus
from .render_type import RenderType
@@ -1330,6 +1352,32 @@
from .review_response_model_reject_reasons_item import ReviewResponseModelRejectReasonsItem
from .review_response_model_review_status import ReviewResponseModelReviewStatus
from .review_status import ReviewStatus
+ from .root_model_annotated_union_dub_order_item_request_subtitle_order_item_request_field_info_annotation_none_type_required_true_discriminator_kind_input import (
+ RootModelAnnotatedUnionDubOrderItemRequestSubtitleOrderItemRequestFieldInfoAnnotationNoneTypeRequiredTrueDiscriminatorKindInput,
+ RootModelAnnotatedUnionDubOrderItemRequestSubtitleOrderItemRequestFieldInfoAnnotationNoneTypeRequiredTrueDiscriminatorKindInput_Dub,
+ RootModelAnnotatedUnionDubOrderItemRequestSubtitleOrderItemRequestFieldInfoAnnotationNoneTypeRequiredTrueDiscriminatorKindInput_Subtitles,
+ )
+ from .root_model_annotated_union_dub_order_item_request_subtitle_order_item_request_field_info_annotation_none_type_required_true_discriminator_kind_output import (
+ RootModelAnnotatedUnionDubOrderItemRequestSubtitleOrderItemRequestFieldInfoAnnotationNoneTypeRequiredTrueDiscriminatorKindOutput,
+ RootModelAnnotatedUnionDubOrderItemRequestSubtitleOrderItemRequestFieldInfoAnnotationNoneTypeRequiredTrueDiscriminatorKindOutput_Dub,
+ RootModelAnnotatedUnionDubOrderItemRequestSubtitleOrderItemRequestFieldInfoAnnotationNoneTypeRequiredTrueDiscriminatorKindOutput_Subtitles,
+ )
+ from .root_model_annotated_union_paired_languages_response_single_languages_response_field_info_annotation_none_type_required_true_discriminator_kind import (
+ RootModelAnnotatedUnionPairedLanguagesResponseSingleLanguagesResponseFieldInfoAnnotationNoneTypeRequiredTrueDiscriminatorKind,
+ RootModelAnnotatedUnionPairedLanguagesResponseSingleLanguagesResponseFieldInfoAnnotationNoneTypeRequiredTrueDiscriminatorKind_Pair,
+ RootModelAnnotatedUnionPairedLanguagesResponseSingleLanguagesResponseFieldInfoAnnotationNoneTypeRequiredTrueDiscriminatorKind_Single,
+ )
+ from .rtt_audio_payload import RttAudioPayload
+ from .rtt_end_of_stream_payload import RttEndOfStreamPayload
+ from .rtt_error_payload import RttErrorPayload
+ from .rtt_final_transcript_payload import RttFinalTranscriptPayload
+ from .rtt_input_audio_chunk_payload import RttInputAudioChunkPayload
+ from .rtt_input_format_enum import RttInputFormatEnum
+ from .rtt_output_format_enum import RttOutputFormatEnum
+ from .rtt_partial_transcript_payload import RttPartialTranscriptPayload
+ from .rtt_session_started_payload import RttSessionStartedPayload
+ from .rtt_status_payload import RttStatusPayload
+ from .rtt_translation_payload import RttTranslationPayload
from .safety_common_model import SafetyCommonModel
from .safety_evaluation import SafetyEvaluation
from .safety_response_model import SafetyResponseModel
@@ -1385,6 +1433,7 @@
from .similar_voices_for_speaker_response import SimilarVoicesForSpeakerResponse
from .simulation_test_model import SimulationTestModel
from .simulation_tool_mock_behavior_config import SimulationToolMockBehaviorConfig
+ from .single_languages_response import SingleLanguagesResponse
from .single_test_run_request_model import SingleTestRunRequestModel
from .single_use_token_response_model import SingleUseTokenResponseModel
from .single_use_token_type import SingleUseTokenType
@@ -1419,6 +1468,9 @@
from .speaker_updated_response import SpeakerUpdatedResponse
from .speech_engine_config import SpeechEngineConfig
from .speech_engine_config_request_headers_value import SpeechEngineConfigRequestHeadersValue
+ from .speech_engine_conversation_initiation_client_data_config import (
+ SpeechEngineConversationInitiationClientDataConfig,
+ )
from .speech_engine_response import SpeechEngineResponse
from .speech_engine_summary_response import SpeechEngineSummaryResponse
from .speech_history_item_response import SpeechHistoryItemResponse
@@ -1444,10 +1496,12 @@
from .studio_clip_reference_clip_type import StudioClipReferenceClipType
from .studio_text_style_outline_model import StudioTextStyleOutlineModel
from .studio_text_style_shadow_model import StudioTextStyleShadowModel
+ from .submit_order_response import SubmitOrderResponse
from .subscription import Subscription
from .subscription_response import SubscriptionResponse
from .subscription_response_model_max_credit_limit_extension import SubscriptionResponseModelMaxCreditLimitExtension
from .subscription_status_type import SubscriptionStatusType
+ from .subtitle_order_item_request import SubtitleOrderItemRequest
from .suggested_audio_tag import SuggestedAudioTag
from .supported_voice import SupportedVoice
from .system_tool_config_input import SystemToolConfigInput
@@ -1627,6 +1681,8 @@
from .update_o_auth_2_jwt_request import UpdateOAuth2JwtRequest
from .update_o_auth_2_jwt_request_algorithm import UpdateOAuth2JwtRequestAlgorithm
from .update_o_auth_2_jwt_request_token_response_field import UpdateOAuth2JwtRequestTokenResponseField
+ from .update_order_request import UpdateOrderRequest
+ from .update_order_response import UpdateOrderResponse
from .update_product_params import UpdateProductParams
from .update_project_request import UpdateProjectRequest
from .update_pronunciation_dictionaries_request import UpdatePronunciationDictionariesRequest
@@ -1636,6 +1692,8 @@
from .update_staff_params import UpdateStaffParams
from .update_tool_call_unit_test_request import UpdateToolCallUnitTestRequest
from .update_workspace_member_response_model import UpdateWorkspaceMemberResponseModel
+ from .upsert_order_item_request import UpsertOrderItemRequest
+ from .upsert_order_item_response import UpsertOrderItemResponse
from .url_avatar import UrlAvatar
from .url_model import UrlModel
from .usage_aggregation_interval import UsageAggregationInterval
@@ -1920,6 +1978,7 @@
"Age": ".age",
"AgentAlertingMonitorConfig": ".agent_alerting_monitor_config",
"AgentAlertingSettings": ".agent_alerting_settings",
+ "AgentAlertingWebhookNotifier": ".agent_alerting_webhook_notifier",
"AgentBranchBasicInfo": ".agent_branch_basic_info",
"AgentBranchResponse": ".agent_branch_response",
"AgentBranchSummary": ".agent_branch_summary",
@@ -1979,7 +2038,6 @@
"AnalysisPropertyConstantValue": ".analysis_property_constant_value",
"AnalysisPropertyType": ".analysis_property_type",
"AnalysisScope": ".analysis_scope",
- "ApiIntegrationDocResponse": ".api_integration_doc_response",
"ApiIntegrationOAuth2AuthCodeResponse": ".api_integration_o_auth_2_auth_code_response",
"ApiIntegrationOAuth2AuthCodeResponseScopeSeparator": ".api_integration_o_auth_2_auth_code_response_scope_separator",
"ApiIntegrationOAuth2CustomAppResponse": ".api_integration_o_auth_2_custom_app_response",
@@ -1999,6 +2057,8 @@
"ArrayJsonSchemaPropertyOutputConstantValueItem": ".array_json_schema_property_output_constant_value_item",
"ArrayJsonSchemaPropertyOutputItems": ".array_json_schema_property_output_items",
"AsrConversationalConfig": ".asr_conversational_config",
+ "AsrConversationalConfigOverride": ".asr_conversational_config_override",
+ "AsrConversationalConfigOverrideConfig": ".asr_conversational_config_override_config",
"AsrConversationalConfigWorkflowOverride": ".asr_conversational_config_workflow_override",
"AsrInputFormat": ".asr_input_format",
"AsrProvider": ".asr_provider",
@@ -2381,6 +2441,7 @@
"CreateOAuth2JwtRequest": ".create_o_auth_2_jwt_request",
"CreateOAuth2JwtRequestAlgorithm": ".create_o_auth_2_jwt_request_algorithm",
"CreateOAuth2JwtRequestTokenResponseField": ".create_o_auth_2_jwt_request_token_response_field",
+ "CreateOrderResponse": ".create_order_response",
"CreatePhoneNumberResponseModel": ".create_phone_number_response_model",
"CreatePreviouslyGeneratedVoiceRequest": ".create_previously_generated_voice_request",
"CreatePrivateKeyJwtRequest": ".create_private_key_jwt_request",
@@ -2392,12 +2453,12 @@
"CreateServiceParams": ".create_service_params",
"CreateSimulationTestRequest": ".create_simulation_test_request",
"CreateSipTrunkPhoneNumberRequest": ".create_sip_trunk_phone_number_request",
- "CreateSpeechEngineResponse": ".create_speech_engine_response",
"CreateStaffParams": ".create_staff_params",
"CreateStringEnvironmentVariableRequest": ".create_string_environment_variable_request",
"CreateToolCallUnitTestRequest": ".create_tool_call_unit_test_request",
"CreateTranscriptRequest": ".create_transcript_request",
"CreateTwilioPhoneNumberRequest": ".create_twilio_phone_number_request",
+ "CueOptionsRequest": ".cue_options_request",
"Currency": ".currency",
"CustomGuardrailConfig": ".custom_guardrail_config",
"CustomGuardrailConfigTriggerAction": ".custom_guardrail_config_trigger_action",
@@ -2443,6 +2504,7 @@
"DeleteWorkspaceGroupMemberResponseModel": ".delete_workspace_group_member_response_model",
"DeleteWorkspaceInviteResponseModel": ".delete_workspace_invite_response_model",
"DeleteWorkspaceWebhookResponseModel": ".delete_workspace_webhook_response_model",
+ "DeliverableInfo": ".deliverable_info",
"DependentAvailableAgentIdentifier": ".dependent_available_agent_identifier",
"DependentAvailableAgentIdentifierAccessLevel": ".dependent_available_agent_identifier_access_level",
"DependentAvailableMcpServerIdentifier": ".dependent_available_mcp_server_identifier",
@@ -2471,6 +2533,7 @@
"DocumentUsageModeEnum": ".document_usage_mode_enum",
"DocxExportOptions": ".docx_export_options",
"DtmfInputConfig": ".dtmf_input_config",
+ "DubOrderItemRequest": ".dub_order_item_request",
"DubbedSegment": ".dubbed_segment",
"DubbingMediaMetadata": ".dubbing_media_metadata",
"DubbingMediaReference": ".dubbing_media_reference",
@@ -2684,6 +2747,7 @@
"InvoiceResponse": ".invoice_response",
"InvoiceResponseModelPaymentIntentStatus": ".invoice_response_model_payment_intent_status",
"InvoiceResponseModelPaymentIntentStatussesItem": ".invoice_response_model_payment_intent_statusses_item",
+ "ItemId": ".item_id",
"KeepContextAlive": ".keep_context_alive",
"KnowledgeBaseContentSearchResponseModel": ".knowledge_base_content_search_response_model",
"KnowledgeBaseContentSearchResult": ".knowledge_base_content_search_result",
@@ -2714,6 +2778,8 @@
"LanguageAddedResponse": ".language_added_response",
"LanguageDetectionToolConfig": ".language_detection_tool_config",
"LanguageDetectionToolResultModel": ".language_detection_tool_result_model",
+ "LanguageInfo": ".language_info",
+ "LanguagePairInfo": ".language_pair_info",
"LanguagePresetInput": ".language_preset_input",
"LanguagePresetOutput": ".language_preset_output",
"LanguagePresetTranslation": ".language_preset_translation",
@@ -2744,9 +2810,9 @@
"ListHolidaysParams": ".list_holidays_params",
"ListLocationsParams": ".list_locations_params",
"ListMcpToolsResponseModel": ".list_mcp_tools_response_model",
+ "ListOrdersResponse": ".list_orders_response",
"ListProductsParams": ".list_products_params",
"ListResponseAgentBranchSummary": ".list_response_agent_branch_summary",
- "ListResponseApiIntegrationDocResponse": ".list_response_api_integration_doc_response",
"ListResponseMeta": ".list_response_meta",
"ListServicesParams": ".list_services_params",
"ListSpeechEnginesResponse": ".list_speech_engines_response",
@@ -2811,6 +2877,7 @@
"McpToolConfigOverrideOutputInputOverridesValue_Constant": ".mcp_tool_config_override_output_input_overrides_value",
"McpToolConfigOverrideOutputInputOverridesValue_DynamicVariable": ".mcp_tool_config_override_output_input_overrides_value",
"McpToolConfigOverrideOutputInputOverridesValue_Llm": ".mcp_tool_config_override_output_input_overrides_value",
+ "MediaId": ".media_id",
"MemoryEntrySearchResult": ".memory_entry_search_result",
"MemoryEntrySearchResultSource": ".memory_entry_search_result_source",
"MessageSearchSortBy": ".message_search_sort_by",
@@ -2847,10 +2914,20 @@
"ObjectJsonSchemaPropertyOutputPropertiesValue": ".object_json_schema_property_output_properties_value",
"OrbAvatar": ".orb_avatar",
"OrchestratorToolMockBehaviorConfig": ".orchestrator_tool_mock_behavior_config",
+ "OrderDeliverablesResponse": ".order_deliverables_response",
+ "OrderId": ".order_id",
+ "OrderItemInfo": ".order_item_info",
+ "OrderItemKind": ".order_item_kind",
+ "OrderMediaResponse": ".order_media_response",
+ "OrderRequestState": ".order_request_state",
+ "OrderResponse": ".order_response",
+ "OrderState": ".order_state",
+ "OrderSummary": ".order_summary",
"OutboundCallRecipient": ".outbound_call_recipient",
"OutboundCallRecipientResponseModel": ".outbound_call_recipient_response_model",
"OutboundSipTrunkConfigRequestModel": ".outbound_sip_trunk_config_request_model",
"OutputFormat": ".output_format",
+ "PairedLanguagesResponse": ".paired_languages_response",
"PartialTranscriptPayload": ".partial_transcript_payload",
"PatchWorkspaceWebhookResponseModel": ".patch_workspace_webhook_response_model",
"PdfExportOptions": ".pdf_export_options",
@@ -3000,6 +3077,7 @@
"PydanticPronunciationDictionaryVersionLocator": ".pydantic_pronunciation_dictionary_version_locator",
"QualityPresetType": ".quality_preset_type",
"QueryParamsJsonSchema": ".query_params_json_schema",
+ "QuoteInfo": ".quote_info",
"RagChunkMetadata": ".rag_chunk_metadata",
"RagConfig": ".rag_config",
"RagConfigWorkflowOverride": ".rag_config_workflow_override",
@@ -3024,7 +3102,9 @@
"RegionConfigRequest": ".region_config_request",
"RegionalProcessingSurchargeInfo": ".regional_processing_surcharge_info",
"RegisterForGroupSessionParams": ".register_for_group_session_params",
+ "RegisterMediaResponse": ".register_media_response",
"RemoveMemberFromGroupRequest": ".remove_member_from_group_request",
+ "RemoveOrderItemResponse": ".remove_order_item_response",
"Render": ".render",
"RenderStatus": ".render_status",
"RenderType": ".render_type",
@@ -3045,6 +3125,26 @@
"ReviewResponseModelRejectReasonsItem": ".review_response_model_reject_reasons_item",
"ReviewResponseModelReviewStatus": ".review_response_model_review_status",
"ReviewStatus": ".review_status",
+ "RootModelAnnotatedUnionDubOrderItemRequestSubtitleOrderItemRequestFieldInfoAnnotationNoneTypeRequiredTrueDiscriminatorKindInput": ".root_model_annotated_union_dub_order_item_request_subtitle_order_item_request_field_info_annotation_none_type_required_true_discriminator_kind_input",
+ "RootModelAnnotatedUnionDubOrderItemRequestSubtitleOrderItemRequestFieldInfoAnnotationNoneTypeRequiredTrueDiscriminatorKindInput_Dub": ".root_model_annotated_union_dub_order_item_request_subtitle_order_item_request_field_info_annotation_none_type_required_true_discriminator_kind_input",
+ "RootModelAnnotatedUnionDubOrderItemRequestSubtitleOrderItemRequestFieldInfoAnnotationNoneTypeRequiredTrueDiscriminatorKindInput_Subtitles": ".root_model_annotated_union_dub_order_item_request_subtitle_order_item_request_field_info_annotation_none_type_required_true_discriminator_kind_input",
+ "RootModelAnnotatedUnionDubOrderItemRequestSubtitleOrderItemRequestFieldInfoAnnotationNoneTypeRequiredTrueDiscriminatorKindOutput": ".root_model_annotated_union_dub_order_item_request_subtitle_order_item_request_field_info_annotation_none_type_required_true_discriminator_kind_output",
+ "RootModelAnnotatedUnionDubOrderItemRequestSubtitleOrderItemRequestFieldInfoAnnotationNoneTypeRequiredTrueDiscriminatorKindOutput_Dub": ".root_model_annotated_union_dub_order_item_request_subtitle_order_item_request_field_info_annotation_none_type_required_true_discriminator_kind_output",
+ "RootModelAnnotatedUnionDubOrderItemRequestSubtitleOrderItemRequestFieldInfoAnnotationNoneTypeRequiredTrueDiscriminatorKindOutput_Subtitles": ".root_model_annotated_union_dub_order_item_request_subtitle_order_item_request_field_info_annotation_none_type_required_true_discriminator_kind_output",
+ "RootModelAnnotatedUnionPairedLanguagesResponseSingleLanguagesResponseFieldInfoAnnotationNoneTypeRequiredTrueDiscriminatorKind": ".root_model_annotated_union_paired_languages_response_single_languages_response_field_info_annotation_none_type_required_true_discriminator_kind",
+ "RootModelAnnotatedUnionPairedLanguagesResponseSingleLanguagesResponseFieldInfoAnnotationNoneTypeRequiredTrueDiscriminatorKind_Pair": ".root_model_annotated_union_paired_languages_response_single_languages_response_field_info_annotation_none_type_required_true_discriminator_kind",
+ "RootModelAnnotatedUnionPairedLanguagesResponseSingleLanguagesResponseFieldInfoAnnotationNoneTypeRequiredTrueDiscriminatorKind_Single": ".root_model_annotated_union_paired_languages_response_single_languages_response_field_info_annotation_none_type_required_true_discriminator_kind",
+ "RttAudioPayload": ".rtt_audio_payload",
+ "RttEndOfStreamPayload": ".rtt_end_of_stream_payload",
+ "RttErrorPayload": ".rtt_error_payload",
+ "RttFinalTranscriptPayload": ".rtt_final_transcript_payload",
+ "RttInputAudioChunkPayload": ".rtt_input_audio_chunk_payload",
+ "RttInputFormatEnum": ".rtt_input_format_enum",
+ "RttOutputFormatEnum": ".rtt_output_format_enum",
+ "RttPartialTranscriptPayload": ".rtt_partial_transcript_payload",
+ "RttSessionStartedPayload": ".rtt_session_started_payload",
+ "RttStatusPayload": ".rtt_status_payload",
+ "RttTranslationPayload": ".rtt_translation_payload",
"SafetyCommonModel": ".safety_common_model",
"SafetyEvaluation": ".safety_evaluation",
"SafetyResponseModel": ".safety_response_model",
@@ -3100,6 +3200,7 @@
"SimilarVoicesForSpeakerResponse": ".similar_voices_for_speaker_response",
"SimulationTestModel": ".simulation_test_model",
"SimulationToolMockBehaviorConfig": ".simulation_tool_mock_behavior_config",
+ "SingleLanguagesResponse": ".single_languages_response",
"SingleTestRunRequestModel": ".single_test_run_request_model",
"SingleUseTokenResponseModel": ".single_use_token_response_model",
"SingleUseTokenType": ".single_use_token_type",
@@ -3134,6 +3235,7 @@
"SpeakerUpdatedResponse": ".speaker_updated_response",
"SpeechEngineConfig": ".speech_engine_config",
"SpeechEngineConfigRequestHeadersValue": ".speech_engine_config_request_headers_value",
+ "SpeechEngineConversationInitiationClientDataConfig": ".speech_engine_conversation_initiation_client_data_config",
"SpeechEngineResponse": ".speech_engine_response",
"SpeechEngineSummaryResponse": ".speech_engine_summary_response",
"SpeechHistoryItemResponse": ".speech_history_item_response",
@@ -3157,10 +3259,12 @@
"StudioClipReferenceClipType": ".studio_clip_reference_clip_type",
"StudioTextStyleOutlineModel": ".studio_text_style_outline_model",
"StudioTextStyleShadowModel": ".studio_text_style_shadow_model",
+ "SubmitOrderResponse": ".submit_order_response",
"Subscription": ".subscription",
"SubscriptionResponse": ".subscription_response",
"SubscriptionResponseModelMaxCreditLimitExtension": ".subscription_response_model_max_credit_limit_extension",
"SubscriptionStatusType": ".subscription_status_type",
+ "SubtitleOrderItemRequest": ".subtitle_order_item_request",
"SuggestedAudioTag": ".suggested_audio_tag",
"SupportedVoice": ".supported_voice",
"SystemToolConfigInput": ".system_tool_config_input",
@@ -3322,6 +3426,8 @@
"UpdateOAuth2JwtRequest": ".update_o_auth_2_jwt_request",
"UpdateOAuth2JwtRequestAlgorithm": ".update_o_auth_2_jwt_request_algorithm",
"UpdateOAuth2JwtRequestTokenResponseField": ".update_o_auth_2_jwt_request_token_response_field",
+ "UpdateOrderRequest": ".update_order_request",
+ "UpdateOrderResponse": ".update_order_response",
"UpdateProductParams": ".update_product_params",
"UpdateProjectRequest": ".update_project_request",
"UpdatePronunciationDictionariesRequest": ".update_pronunciation_dictionaries_request",
@@ -3331,6 +3437,8 @@
"UpdateStaffParams": ".update_staff_params",
"UpdateToolCallUnitTestRequest": ".update_tool_call_unit_test_request",
"UpdateWorkspaceMemberResponseModel": ".update_workspace_member_response_model",
+ "UpsertOrderItemRequest": ".upsert_order_item_request",
+ "UpsertOrderItemResponse": ".upsert_order_item_response",
"UrlAvatar": ".url_avatar",
"UrlModel": ".url_model",
"UsageAggregationInterval": ".usage_aggregation_interval",
@@ -3595,6 +3703,7 @@ def __dir__():
"Age",
"AgentAlertingMonitorConfig",
"AgentAlertingSettings",
+ "AgentAlertingWebhookNotifier",
"AgentBranchBasicInfo",
"AgentBranchResponse",
"AgentBranchSummary",
@@ -3654,7 +3763,6 @@ def __dir__():
"AnalysisPropertyConstantValue",
"AnalysisPropertyType",
"AnalysisScope",
- "ApiIntegrationDocResponse",
"ApiIntegrationOAuth2AuthCodeResponse",
"ApiIntegrationOAuth2AuthCodeResponseScopeSeparator",
"ApiIntegrationOAuth2CustomAppResponse",
@@ -3674,6 +3782,8 @@ def __dir__():
"ArrayJsonSchemaPropertyOutputConstantValueItem",
"ArrayJsonSchemaPropertyOutputItems",
"AsrConversationalConfig",
+ "AsrConversationalConfigOverride",
+ "AsrConversationalConfigOverrideConfig",
"AsrConversationalConfigWorkflowOverride",
"AsrInputFormat",
"AsrProvider",
@@ -4056,6 +4166,7 @@ def __dir__():
"CreateOAuth2JwtRequest",
"CreateOAuth2JwtRequestAlgorithm",
"CreateOAuth2JwtRequestTokenResponseField",
+ "CreateOrderResponse",
"CreatePhoneNumberResponseModel",
"CreatePreviouslyGeneratedVoiceRequest",
"CreatePrivateKeyJwtRequest",
@@ -4067,12 +4178,12 @@ def __dir__():
"CreateServiceParams",
"CreateSimulationTestRequest",
"CreateSipTrunkPhoneNumberRequest",
- "CreateSpeechEngineResponse",
"CreateStaffParams",
"CreateStringEnvironmentVariableRequest",
"CreateToolCallUnitTestRequest",
"CreateTranscriptRequest",
"CreateTwilioPhoneNumberRequest",
+ "CueOptionsRequest",
"Currency",
"CustomGuardrailConfig",
"CustomGuardrailConfigTriggerAction",
@@ -4118,6 +4229,7 @@ def __dir__():
"DeleteWorkspaceGroupMemberResponseModel",
"DeleteWorkspaceInviteResponseModel",
"DeleteWorkspaceWebhookResponseModel",
+ "DeliverableInfo",
"DependentAvailableAgentIdentifier",
"DependentAvailableAgentIdentifierAccessLevel",
"DependentAvailableMcpServerIdentifier",
@@ -4146,6 +4258,7 @@ def __dir__():
"DocumentUsageModeEnum",
"DocxExportOptions",
"DtmfInputConfig",
+ "DubOrderItemRequest",
"DubbedSegment",
"DubbingMediaMetadata",
"DubbingMediaReference",
@@ -4359,6 +4472,7 @@ def __dir__():
"InvoiceResponse",
"InvoiceResponseModelPaymentIntentStatus",
"InvoiceResponseModelPaymentIntentStatussesItem",
+ "ItemId",
"KeepContextAlive",
"KnowledgeBaseContentSearchResponseModel",
"KnowledgeBaseContentSearchResult",
@@ -4389,6 +4503,8 @@ def __dir__():
"LanguageAddedResponse",
"LanguageDetectionToolConfig",
"LanguageDetectionToolResultModel",
+ "LanguageInfo",
+ "LanguagePairInfo",
"LanguagePresetInput",
"LanguagePresetOutput",
"LanguagePresetTranslation",
@@ -4419,9 +4535,9 @@ def __dir__():
"ListHolidaysParams",
"ListLocationsParams",
"ListMcpToolsResponseModel",
+ "ListOrdersResponse",
"ListProductsParams",
"ListResponseAgentBranchSummary",
- "ListResponseApiIntegrationDocResponse",
"ListResponseMeta",
"ListServicesParams",
"ListSpeechEnginesResponse",
@@ -4486,6 +4602,7 @@ def __dir__():
"McpToolConfigOverrideOutputInputOverridesValue_Constant",
"McpToolConfigOverrideOutputInputOverridesValue_DynamicVariable",
"McpToolConfigOverrideOutputInputOverridesValue_Llm",
+ "MediaId",
"MemoryEntrySearchResult",
"MemoryEntrySearchResultSource",
"MessageSearchSortBy",
@@ -4522,10 +4639,20 @@ def __dir__():
"ObjectJsonSchemaPropertyOutputPropertiesValue",
"OrbAvatar",
"OrchestratorToolMockBehaviorConfig",
+ "OrderDeliverablesResponse",
+ "OrderId",
+ "OrderItemInfo",
+ "OrderItemKind",
+ "OrderMediaResponse",
+ "OrderRequestState",
+ "OrderResponse",
+ "OrderState",
+ "OrderSummary",
"OutboundCallRecipient",
"OutboundCallRecipientResponseModel",
"OutboundSipTrunkConfigRequestModel",
"OutputFormat",
+ "PairedLanguagesResponse",
"PartialTranscriptPayload",
"PatchWorkspaceWebhookResponseModel",
"PdfExportOptions",
@@ -4675,6 +4802,7 @@ def __dir__():
"PydanticPronunciationDictionaryVersionLocator",
"QualityPresetType",
"QueryParamsJsonSchema",
+ "QuoteInfo",
"RagChunkMetadata",
"RagConfig",
"RagConfigWorkflowOverride",
@@ -4699,7 +4827,9 @@ def __dir__():
"RegionConfigRequest",
"RegionalProcessingSurchargeInfo",
"RegisterForGroupSessionParams",
+ "RegisterMediaResponse",
"RemoveMemberFromGroupRequest",
+ "RemoveOrderItemResponse",
"Render",
"RenderStatus",
"RenderType",
@@ -4720,6 +4850,26 @@ def __dir__():
"ReviewResponseModelRejectReasonsItem",
"ReviewResponseModelReviewStatus",
"ReviewStatus",
+ "RootModelAnnotatedUnionDubOrderItemRequestSubtitleOrderItemRequestFieldInfoAnnotationNoneTypeRequiredTrueDiscriminatorKindInput",
+ "RootModelAnnotatedUnionDubOrderItemRequestSubtitleOrderItemRequestFieldInfoAnnotationNoneTypeRequiredTrueDiscriminatorKindInput_Dub",
+ "RootModelAnnotatedUnionDubOrderItemRequestSubtitleOrderItemRequestFieldInfoAnnotationNoneTypeRequiredTrueDiscriminatorKindInput_Subtitles",
+ "RootModelAnnotatedUnionDubOrderItemRequestSubtitleOrderItemRequestFieldInfoAnnotationNoneTypeRequiredTrueDiscriminatorKindOutput",
+ "RootModelAnnotatedUnionDubOrderItemRequestSubtitleOrderItemRequestFieldInfoAnnotationNoneTypeRequiredTrueDiscriminatorKindOutput_Dub",
+ "RootModelAnnotatedUnionDubOrderItemRequestSubtitleOrderItemRequestFieldInfoAnnotationNoneTypeRequiredTrueDiscriminatorKindOutput_Subtitles",
+ "RootModelAnnotatedUnionPairedLanguagesResponseSingleLanguagesResponseFieldInfoAnnotationNoneTypeRequiredTrueDiscriminatorKind",
+ "RootModelAnnotatedUnionPairedLanguagesResponseSingleLanguagesResponseFieldInfoAnnotationNoneTypeRequiredTrueDiscriminatorKind_Pair",
+ "RootModelAnnotatedUnionPairedLanguagesResponseSingleLanguagesResponseFieldInfoAnnotationNoneTypeRequiredTrueDiscriminatorKind_Single",
+ "RttAudioPayload",
+ "RttEndOfStreamPayload",
+ "RttErrorPayload",
+ "RttFinalTranscriptPayload",
+ "RttInputAudioChunkPayload",
+ "RttInputFormatEnum",
+ "RttOutputFormatEnum",
+ "RttPartialTranscriptPayload",
+ "RttSessionStartedPayload",
+ "RttStatusPayload",
+ "RttTranslationPayload",
"SafetyCommonModel",
"SafetyEvaluation",
"SafetyResponseModel",
@@ -4775,6 +4925,7 @@ def __dir__():
"SimilarVoicesForSpeakerResponse",
"SimulationTestModel",
"SimulationToolMockBehaviorConfig",
+ "SingleLanguagesResponse",
"SingleTestRunRequestModel",
"SingleUseTokenResponseModel",
"SingleUseTokenType",
@@ -4809,6 +4960,7 @@ def __dir__():
"SpeakerUpdatedResponse",
"SpeechEngineConfig",
"SpeechEngineConfigRequestHeadersValue",
+ "SpeechEngineConversationInitiationClientDataConfig",
"SpeechEngineResponse",
"SpeechEngineSummaryResponse",
"SpeechHistoryItemResponse",
@@ -4832,10 +4984,12 @@ def __dir__():
"StudioClipReferenceClipType",
"StudioTextStyleOutlineModel",
"StudioTextStyleShadowModel",
+ "SubmitOrderResponse",
"Subscription",
"SubscriptionResponse",
"SubscriptionResponseModelMaxCreditLimitExtension",
"SubscriptionStatusType",
+ "SubtitleOrderItemRequest",
"SuggestedAudioTag",
"SupportedVoice",
"SystemToolConfigInput",
@@ -4997,6 +5151,8 @@ def __dir__():
"UpdateOAuth2JwtRequest",
"UpdateOAuth2JwtRequestAlgorithm",
"UpdateOAuth2JwtRequestTokenResponseField",
+ "UpdateOrderRequest",
+ "UpdateOrderResponse",
"UpdateProductParams",
"UpdateProjectRequest",
"UpdatePronunciationDictionariesRequest",
@@ -5006,6 +5162,8 @@ def __dir__():
"UpdateStaffParams",
"UpdateToolCallUnitTestRequest",
"UpdateWorkspaceMemberResponseModel",
+ "UpsertOrderItemRequest",
+ "UpsertOrderItemResponse",
"UrlAvatar",
"UrlModel",
"UsageAggregationInterval",
diff --git a/src/elevenlabs/types/agent_alerting_settings.py b/src/elevenlabs/types/agent_alerting_settings.py
index 6b6e6635..241869c4 100644
--- a/src/elevenlabs/types/agent_alerting_settings.py
+++ b/src/elevenlabs/types/agent_alerting_settings.py
@@ -6,6 +6,7 @@
from ..core.pydantic_utilities import IS_PYDANTIC_V2
from ..core.unchecked_base_model import UncheckedBaseModel
from .agent_alerting_monitor_config import AgentAlertingMonitorConfig
+from .agent_alerting_webhook_notifier import AgentAlertingWebhookNotifier
class AgentAlertingSettings(UncheckedBaseModel):
@@ -19,6 +20,11 @@ class AgentAlertingSettings(UncheckedBaseModel):
How many minutes an alert can stay inactive before it is auto-resolved.
"""
+ notifiers: typing.Optional[typing.List[AgentAlertingWebhookNotifier]] = pydantic.Field(default=None)
+ """
+ Delivery channels for alert lifecycle notifications. Currently supports webhook notifiers.
+ """
+
if IS_PYDANTIC_V2:
model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
else:
diff --git a/src/elevenlabs/types/agent_alerting_webhook_notifier.py b/src/elevenlabs/types/agent_alerting_webhook_notifier.py
new file mode 100644
index 00000000..c7af95ad
--- /dev/null
+++ b/src/elevenlabs/types/agent_alerting_webhook_notifier.py
@@ -0,0 +1,29 @@
+# This file was auto-generated by Fern from our API Definition.
+
+import typing
+
+import pydantic
+from ..core.pydantic_utilities import IS_PYDANTIC_V2
+from ..core.unchecked_base_model import UncheckedBaseModel
+
+
+class AgentAlertingWebhookNotifier(UncheckedBaseModel):
+ type: typing.Optional[typing.Literal["webhook"]] = None
+ url: str = pydantic.Field()
+ """
+ The URL to send alert lifecycle notifications to.
+ """
+
+ request_headers: typing.Optional[typing.Dict[str, typing.Optional[str]]] = pydantic.Field(default=None)
+ """
+ Optional static request headers sent with each alert webhook call, for example to authenticate with the receiving endpoint.
+ """
+
+ if IS_PYDANTIC_V2:
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
+ else:
+
+ class Config:
+ frozen = True
+ smart_union = True
+ extra = pydantic.Extra.allow
diff --git a/src/elevenlabs/types/asr_conversational_config_override.py b/src/elevenlabs/types/asr_conversational_config_override.py
new file mode 100644
index 00000000..0743ccf1
--- /dev/null
+++ b/src/elevenlabs/types/asr_conversational_config_override.py
@@ -0,0 +1,23 @@
+# This file was auto-generated by Fern from our API Definition.
+
+import typing
+
+import pydantic
+from ..core.pydantic_utilities import IS_PYDANTIC_V2
+from ..core.unchecked_base_model import UncheckedBaseModel
+
+
+class AsrConversationalConfigOverride(UncheckedBaseModel):
+ keywords: typing.Optional[typing.List[str]] = pydantic.Field(default=None)
+ """
+ Keywords to boost prediction probability for
+ """
+
+ if IS_PYDANTIC_V2:
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
+ else:
+
+ class Config:
+ frozen = True
+ smart_union = True
+ extra = pydantic.Extra.allow
diff --git a/src/elevenlabs/types/list_response_api_integration_doc_response.py b/src/elevenlabs/types/asr_conversational_config_override_config.py
similarity index 64%
rename from src/elevenlabs/types/list_response_api_integration_doc_response.py
rename to src/elevenlabs/types/asr_conversational_config_override_config.py
index 6aa4c7da..fbdaa23f 100644
--- a/src/elevenlabs/types/list_response_api_integration_doc_response.py
+++ b/src/elevenlabs/types/asr_conversational_config_override_config.py
@@ -5,13 +5,13 @@
import pydantic
from ..core.pydantic_utilities import IS_PYDANTIC_V2
from ..core.unchecked_base_model import UncheckedBaseModel
-from .api_integration_doc_response import ApiIntegrationDocResponse
-from .list_response_meta import ListResponseMeta
-class ListResponseApiIntegrationDocResponse(UncheckedBaseModel):
- meta: typing.Optional[ListResponseMeta] = None
- results: typing.List[ApiIntegrationDocResponse]
+class AsrConversationalConfigOverrideConfig(UncheckedBaseModel):
+ keywords: typing.Optional[bool] = pydantic.Field(default=None)
+ """
+ Whether to allow overriding the keywords field.
+ """
if IS_PYDANTIC_V2:
model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
diff --git a/src/elevenlabs/types/chapter_statistics_response.py b/src/elevenlabs/types/chapter_statistics_response.py
index e0c43024..e3b5629d 100644
--- a/src/elevenlabs/types/chapter_statistics_response.py
+++ b/src/elevenlabs/types/chapter_statistics_response.py
@@ -29,6 +29,11 @@ class ChapterStatisticsResponse(UncheckedBaseModel):
The number of unconverted paragraphs.
"""
+ credits_needed_to_convert: typing.Optional[int] = pydantic.Field(default=None)
+ """
+ The number of credits needed to convert the remaining paragraphs.
+ """
+
voice_statistics: typing.Optional[typing.List[VoiceStatisticsResponseModel]] = pydantic.Field(default=None)
"""
Per-voice breakdown of character counts.
diff --git a/src/elevenlabs/types/conversation_config_client_override_config_input.py b/src/elevenlabs/types/conversation_config_client_override_config_input.py
index cc947979..b14cba64 100644
--- a/src/elevenlabs/types/conversation_config_client_override_config_input.py
+++ b/src/elevenlabs/types/conversation_config_client_override_config_input.py
@@ -6,12 +6,18 @@
from ..core.pydantic_utilities import IS_PYDANTIC_V2
from ..core.unchecked_base_model import UncheckedBaseModel
from .agent_config_override_config import AgentConfigOverrideConfig
+from .asr_conversational_config_override_config import AsrConversationalConfigOverrideConfig
from .conversation_config_override_config import ConversationConfigOverrideConfig
from .tts_conversational_config_override_config import TtsConversationalConfigOverrideConfig
from .turn_config_override_config import TurnConfigOverrideConfig
class ConversationConfigClientOverrideConfigInput(UncheckedBaseModel):
+ asr: typing.Optional[AsrConversationalConfigOverrideConfig] = pydantic.Field(default=None)
+ """
+ Configures overrides for nested fields.
+ """
+
turn: typing.Optional[TurnConfigOverrideConfig] = pydantic.Field(default=None)
"""
Configures overrides for nested fields.
diff --git a/src/elevenlabs/types/conversation_config_client_override_config_output.py b/src/elevenlabs/types/conversation_config_client_override_config_output.py
index 88ec4fc4..0d2dcc2f 100644
--- a/src/elevenlabs/types/conversation_config_client_override_config_output.py
+++ b/src/elevenlabs/types/conversation_config_client_override_config_output.py
@@ -6,12 +6,18 @@
from ..core.pydantic_utilities import IS_PYDANTIC_V2
from ..core.unchecked_base_model import UncheckedBaseModel
from .agent_config_override_config import AgentConfigOverrideConfig
+from .asr_conversational_config_override_config import AsrConversationalConfigOverrideConfig
from .conversation_config_override_config import ConversationConfigOverrideConfig
from .tts_conversational_config_override_config import TtsConversationalConfigOverrideConfig
from .turn_config_override_config import TurnConfigOverrideConfig
class ConversationConfigClientOverrideConfigOutput(UncheckedBaseModel):
+ asr: typing.Optional[AsrConversationalConfigOverrideConfig] = pydantic.Field(default=None)
+ """
+ Configures overrides for nested fields.
+ """
+
turn: typing.Optional[TurnConfigOverrideConfig] = pydantic.Field(default=None)
"""
Configures overrides for nested fields.
diff --git a/src/elevenlabs/types/conversation_config_client_override_input.py b/src/elevenlabs/types/conversation_config_client_override_input.py
index 8a04d1e9..a70e728c 100644
--- a/src/elevenlabs/types/conversation_config_client_override_input.py
+++ b/src/elevenlabs/types/conversation_config_client_override_input.py
@@ -6,12 +6,18 @@
from ..core.pydantic_utilities import IS_PYDANTIC_V2
from ..core.unchecked_base_model import UncheckedBaseModel
from .agent_config_override_input import AgentConfigOverrideInput
+from .asr_conversational_config_override import AsrConversationalConfigOverride
from .conversation_config_override import ConversationConfigOverride
from .tts_conversational_config_override import TtsConversationalConfigOverride
from .turn_config_override import TurnConfigOverride
class ConversationConfigClientOverrideInput(UncheckedBaseModel):
+ asr: typing.Optional[AsrConversationalConfigOverride] = pydantic.Field(default=None)
+ """
+ Configuration for conversational transcription
+ """
+
turn: typing.Optional[TurnConfigOverride] = pydantic.Field(default=None)
"""
Configuration for turn detection
diff --git a/src/elevenlabs/types/conversation_config_client_override_output.py b/src/elevenlabs/types/conversation_config_client_override_output.py
index abaad9bc..ad717d6e 100644
--- a/src/elevenlabs/types/conversation_config_client_override_output.py
+++ b/src/elevenlabs/types/conversation_config_client_override_output.py
@@ -6,12 +6,18 @@
from ..core.pydantic_utilities import IS_PYDANTIC_V2
from ..core.unchecked_base_model import UncheckedBaseModel
from .agent_config_override_output import AgentConfigOverrideOutput
+from .asr_conversational_config_override import AsrConversationalConfigOverride
from .conversation_config_override import ConversationConfigOverride
from .tts_conversational_config_override import TtsConversationalConfigOverride
from .turn_config_override import TurnConfigOverride
class ConversationConfigClientOverrideOutput(UncheckedBaseModel):
+ asr: typing.Optional[AsrConversationalConfigOverride] = pydantic.Field(default=None)
+ """
+ Configuration for conversational transcription
+ """
+
turn: typing.Optional[TurnConfigOverride] = pydantic.Field(default=None)
"""
Configuration for turn detection
diff --git a/src/elevenlabs/types/create_order_response.py b/src/elevenlabs/types/create_order_response.py
new file mode 100644
index 00000000..f3dde063
--- /dev/null
+++ b/src/elevenlabs/types/create_order_response.py
@@ -0,0 +1,24 @@
+# This file was auto-generated by Fern from our API Definition.
+
+import typing
+
+import pydantic
+from ..core.pydantic_utilities import IS_PYDANTIC_V2
+from ..core.unchecked_base_model import UncheckedBaseModel
+from .order_id import OrderId
+
+
+class CreateOrderResponse(UncheckedBaseModel):
+ order_id: OrderId = pydantic.Field()
+ """
+ The ID of the newly created order.
+ """
+
+ if IS_PYDANTIC_V2:
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
+ else:
+
+ class Config:
+ frozen = True
+ smart_union = True
+ extra = pydantic.Extra.allow
diff --git a/src/elevenlabs/types/cue_options_request.py b/src/elevenlabs/types/cue_options_request.py
new file mode 100644
index 00000000..a5989350
--- /dev/null
+++ b/src/elevenlabs/types/cue_options_request.py
@@ -0,0 +1,48 @@
+# This file was auto-generated by Fern from our API Definition.
+
+import typing
+
+import pydantic
+from ..core.pydantic_utilities import IS_PYDANTIC_V2
+from ..core.unchecked_base_model import UncheckedBaseModel
+
+
+class CueOptionsRequest(UncheckedBaseModel):
+ min_duration_ms: typing.Optional[int] = pydantic.Field(default=None)
+ """
+ Minimum duration of each cue in milliseconds.
+ """
+
+ max_duration_ms: typing.Optional[int] = pydantic.Field(default=None)
+ """
+ Maximum duration of each cue in milliseconds.
+ """
+
+ max_lines_per_cue: typing.Optional[int] = pydantic.Field(default=None)
+ """
+ Maximum number of lines per cue.
+ """
+
+ max_chars_per_line: typing.Optional[int] = pydantic.Field(default=None)
+ """
+ Maximum number of characters per line in a cue.
+ """
+
+ max_chars_per_s: typing.Optional[int] = pydantic.Field(default=None)
+ """
+ Maximum characters per second reading speed. If not set, no reading speed limit is applied.
+ """
+
+ min_gap_between_cues_frames: typing.Optional[int] = pydantic.Field(default=None)
+ """
+ Minimum gap between consecutive cues in frames. If not set, no minimum gap is enforced.
+ """
+
+ if IS_PYDANTIC_V2:
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
+ else:
+
+ class Config:
+ frozen = True
+ smart_union = True
+ extra = pydantic.Extra.allow
diff --git a/src/elevenlabs/types/deliverable_info.py b/src/elevenlabs/types/deliverable_info.py
new file mode 100644
index 00000000..6b6bb3c9
--- /dev/null
+++ b/src/elevenlabs/types/deliverable_info.py
@@ -0,0 +1,38 @@
+# This file was auto-generated by Fern from our API Definition.
+
+import typing
+
+import pydantic
+from ..core.pydantic_utilities import IS_PYDANTIC_V2
+from ..core.unchecked_base_model import UncheckedBaseModel
+
+
+class DeliverableInfo(UncheckedBaseModel):
+ signed_url: str = pydantic.Field()
+ """
+ A time-limited URL to download the delivered file.
+ """
+
+ content_type: str = pydantic.Field()
+ """
+ The MIME type of the delivered file (e.g. 'video/mp4').
+ """
+
+ name: str = pydantic.Field()
+ """
+ The name of the delivered file.
+ """
+
+ version: typing.Optional[int] = pydantic.Field(default=None)
+ """
+ The version number of the deliverable.
+ """
+
+ if IS_PYDANTIC_V2:
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
+ else:
+
+ class Config:
+ frozen = True
+ smart_union = True
+ extra = pydantic.Extra.allow
diff --git a/src/elevenlabs/types/dub_order_item_request.py b/src/elevenlabs/types/dub_order_item_request.py
new file mode 100644
index 00000000..1ff54ff3
--- /dev/null
+++ b/src/elevenlabs/types/dub_order_item_request.py
@@ -0,0 +1,54 @@
+# This file was auto-generated by Fern from our API Definition.
+
+import typing
+
+import pydantic
+from ..core.pydantic_utilities import IS_PYDANTIC_V2
+from ..core.unchecked_base_model import UncheckedBaseModel
+from .media_id import MediaId
+
+
+class DubOrderItemRequest(UncheckedBaseModel):
+ media_id: MediaId = pydantic.Field()
+ """
+ The ID of the uploaded media file to dub.
+ """
+
+ source_language: str = pydantic.Field()
+ """
+ The language code of the source media (e.g. 'en', 'es').
+ """
+
+ destination_languages: typing.List[str] = pydantic.Field()
+ """
+ List of target language codes to dub the media into.
+ """
+
+ include_captions: bool = pydantic.Field()
+ """
+ Whether to generate captions for the dubbed outputs.
+ """
+
+ include_source_captions: bool = pydantic.Field()
+ """
+ Whether to generate captions for the source language.
+ """
+
+ instructions: typing.Optional[str] = pydantic.Field(default=None)
+ """
+ Optional free-text instructions for the dubbing team.
+ """
+
+ captions_sdh: typing.Optional[bool] = pydantic.Field(default=None)
+ """
+ Whether captions should use SDH format, which includes descriptions for deaf and hard-of-hearing viewers.
+ """
+
+ if IS_PYDANTIC_V2:
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
+ else:
+
+ class Config:
+ frozen = True
+ smart_union = True
+ extra = pydantic.Extra.allow
diff --git a/src/elevenlabs/types/get_conversation_response_model.py b/src/elevenlabs/types/get_conversation_response_model.py
index 17a6d318..f8cc0a77 100644
--- a/src/elevenlabs/types/get_conversation_response_model.py
+++ b/src/elevenlabs/types/get_conversation_response_model.py
@@ -41,6 +41,11 @@ class GetConversationResponseModel(UncheckedBaseModel):
Conversation tag ids assigned to this conversation.
"""
+ otlp_traces: typing.Optional[typing.Dict[str, typing.Any]] = pydantic.Field(default=None)
+ """
+ OpenTelemetry trace payload when the request uses format=opentelemetry; otherwise omitted.
+ """
+
if IS_PYDANTIC_V2:
model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
else:
diff --git a/src/elevenlabs/types/item_id.py b/src/elevenlabs/types/item_id.py
new file mode 100644
index 00000000..84514dfe
--- /dev/null
+++ b/src/elevenlabs/types/item_id.py
@@ -0,0 +1,3 @@
+# This file was auto-generated by Fern from our API Definition.
+
+ItemId = str
diff --git a/src/elevenlabs/types/language_info.py b/src/elevenlabs/types/language_info.py
new file mode 100644
index 00000000..eba6c7b0
--- /dev/null
+++ b/src/elevenlabs/types/language_info.py
@@ -0,0 +1,28 @@
+# This file was auto-generated by Fern from our API Definition.
+
+import typing
+
+import pydantic
+from ..core.pydantic_utilities import IS_PYDANTIC_V2
+from ..core.unchecked_base_model import UncheckedBaseModel
+
+
+class LanguageInfo(UncheckedBaseModel):
+ code: str = pydantic.Field()
+ """
+ The language code (e.g. 'en', 'fr', 'es-ES').
+ """
+
+ label: str = pydantic.Field()
+ """
+ The human-readable language name (e.g. 'English', 'French', 'Spanish (Spain)').
+ """
+
+ if IS_PYDANTIC_V2:
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
+ else:
+
+ class Config:
+ frozen = True
+ smart_union = True
+ extra = pydantic.Extra.allow
diff --git a/src/elevenlabs/types/language_pair_info.py b/src/elevenlabs/types/language_pair_info.py
new file mode 100644
index 00000000..348fe5c6
--- /dev/null
+++ b/src/elevenlabs/types/language_pair_info.py
@@ -0,0 +1,29 @@
+# This file was auto-generated by Fern from our API Definition.
+
+import typing
+
+import pydantic
+from ..core.pydantic_utilities import IS_PYDANTIC_V2
+from ..core.unchecked_base_model import UncheckedBaseModel
+from .language_info import LanguageInfo
+
+
+class LanguagePairInfo(UncheckedBaseModel):
+ source_language: LanguageInfo = pydantic.Field()
+ """
+ The source language.
+ """
+
+ destination_languages: typing.List[LanguageInfo] = pydantic.Field()
+ """
+ The available destination languages for this source language.
+ """
+
+ if IS_PYDANTIC_V2:
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
+ else:
+
+ class Config:
+ frozen = True
+ smart_union = True
+ extra = pydantic.Extra.allow
diff --git a/src/elevenlabs/types/list_orders_response.py b/src/elevenlabs/types/list_orders_response.py
new file mode 100644
index 00000000..98a82be4
--- /dev/null
+++ b/src/elevenlabs/types/list_orders_response.py
@@ -0,0 +1,24 @@
+# This file was auto-generated by Fern from our API Definition.
+
+import typing
+
+import pydantic
+from ..core.pydantic_utilities import IS_PYDANTIC_V2
+from ..core.unchecked_base_model import UncheckedBaseModel
+from .order_summary import OrderSummary
+
+
+class ListOrdersResponse(UncheckedBaseModel):
+ orders: typing.List[OrderSummary] = pydantic.Field()
+ """
+ The list of orders matching the query.
+ """
+
+ if IS_PYDANTIC_V2:
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
+ else:
+
+ class Config:
+ frozen = True
+ smart_union = True
+ extra = pydantic.Extra.allow
diff --git a/src/elevenlabs/types/media_id.py b/src/elevenlabs/types/media_id.py
new file mode 100644
index 00000000..aadddb56
--- /dev/null
+++ b/src/elevenlabs/types/media_id.py
@@ -0,0 +1,3 @@
+# This file was auto-generated by Fern from our API Definition.
+
+MediaId = str
diff --git a/src/elevenlabs/types/order_deliverables_response.py b/src/elevenlabs/types/order_deliverables_response.py
new file mode 100644
index 00000000..2011b1aa
--- /dev/null
+++ b/src/elevenlabs/types/order_deliverables_response.py
@@ -0,0 +1,24 @@
+# This file was auto-generated by Fern from our API Definition.
+
+import typing
+
+import pydantic
+from ..core.pydantic_utilities import IS_PYDANTIC_V2
+from ..core.unchecked_base_model import UncheckedBaseModel
+from .deliverable_info import DeliverableInfo
+
+
+class OrderDeliverablesResponse(UncheckedBaseModel):
+ deliverables: typing.List[DeliverableInfo] = pydantic.Field()
+ """
+ The list of delivered files for the order. Empty if the order is not yet completed.
+ """
+
+ if IS_PYDANTIC_V2:
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
+ else:
+
+ class Config:
+ frozen = True
+ smart_union = True
+ extra = pydantic.Extra.allow
diff --git a/src/elevenlabs/types/order_id.py b/src/elevenlabs/types/order_id.py
new file mode 100644
index 00000000..72b7e34d
--- /dev/null
+++ b/src/elevenlabs/types/order_id.py
@@ -0,0 +1,3 @@
+# This file was auto-generated by Fern from our API Definition.
+
+OrderId = str
diff --git a/src/elevenlabs/types/order_item_info.py b/src/elevenlabs/types/order_item_info.py
new file mode 100644
index 00000000..a5f4e690
--- /dev/null
+++ b/src/elevenlabs/types/order_item_info.py
@@ -0,0 +1,38 @@
+# This file was auto-generated by Fern from our API Definition.
+
+import typing
+
+import pydantic
+from ..core.pydantic_utilities import IS_PYDANTIC_V2
+from ..core.unchecked_base_model import UncheckedBaseModel
+from .item_id import ItemId
+from .quote_info import QuoteInfo
+from .root_model_annotated_union_dub_order_item_request_subtitle_order_item_request_field_info_annotation_none_type_required_true_discriminator_kind_output import (
+ RootModelAnnotatedUnionDubOrderItemRequestSubtitleOrderItemRequestFieldInfoAnnotationNoneTypeRequiredTrueDiscriminatorKindOutput,
+)
+
+
+class OrderItemInfo(UncheckedBaseModel):
+ item_id: ItemId = pydantic.Field()
+ """
+ The ID of the order item.
+ """
+
+ item: RootModelAnnotatedUnionDubOrderItemRequestSubtitleOrderItemRequestFieldInfoAnnotationNoneTypeRequiredTrueDiscriminatorKindOutput = pydantic.Field()
+ """
+ The item configuration details.
+ """
+
+ quote: typing.Optional[QuoteInfo] = pydantic.Field(default=None)
+ """
+ The quoted price for this item.
+ """
+
+ if IS_PYDANTIC_V2:
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
+ else:
+
+ class Config:
+ frozen = True
+ smart_union = True
+ extra = pydantic.Extra.allow
diff --git a/src/elevenlabs/types/order_item_kind.py b/src/elevenlabs/types/order_item_kind.py
new file mode 100644
index 00000000..14d7dc79
--- /dev/null
+++ b/src/elevenlabs/types/order_item_kind.py
@@ -0,0 +1,5 @@
+# This file was auto-generated by Fern from our API Definition.
+
+import typing
+
+OrderItemKind = typing.Union[typing.Literal["dub", "subtitles"], typing.Any]
diff --git a/src/elevenlabs/types/order_media_response.py b/src/elevenlabs/types/order_media_response.py
new file mode 100644
index 00000000..d784a968
--- /dev/null
+++ b/src/elevenlabs/types/order_media_response.py
@@ -0,0 +1,44 @@
+# This file was auto-generated by Fern from our API Definition.
+
+import typing
+
+import pydantic
+from ..core.pydantic_utilities import IS_PYDANTIC_V2
+from ..core.unchecked_base_model import UncheckedBaseModel
+from .media_id import MediaId
+
+
+class OrderMediaResponse(UncheckedBaseModel):
+ media_id: MediaId = pydantic.Field()
+ """
+ The ID of the media file.
+ """
+
+ name: str = pydantic.Field()
+ """
+ The original filename of the uploaded media.
+ """
+
+ content_type: str = pydantic.Field()
+ """
+ The MIME type of the media file (e.g. 'video/mp4').
+ """
+
+ language: typing.Optional[str] = pydantic.Field(default=None)
+ """
+ The detected or declared language of the media, if available.
+ """
+
+ signed_url: str = pydantic.Field()
+ """
+ A time-limited URL to download the media file.
+ """
+
+ if IS_PYDANTIC_V2:
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
+ else:
+
+ class Config:
+ frozen = True
+ smart_union = True
+ extra = pydantic.Extra.allow
diff --git a/src/elevenlabs/types/order_request_state.py b/src/elevenlabs/types/order_request_state.py
new file mode 100644
index 00000000..08c43865
--- /dev/null
+++ b/src/elevenlabs/types/order_request_state.py
@@ -0,0 +1,7 @@
+# This file was auto-generated by Fern from our API Definition.
+
+import typing
+
+OrderRequestState = typing.Union[
+ typing.Literal["open", "submitted", "paid", "accepted", "rejected", "done"], typing.Any
+]
diff --git a/src/elevenlabs/types/order_response.py b/src/elevenlabs/types/order_response.py
new file mode 100644
index 00000000..ad442b0a
--- /dev/null
+++ b/src/elevenlabs/types/order_response.py
@@ -0,0 +1,72 @@
+# This file was auto-generated by Fern from our API Definition.
+
+import datetime as dt
+import typing
+
+import pydantic
+from ..core.pydantic_utilities import IS_PYDANTIC_V2
+from ..core.unchecked_base_model import UncheckedBaseModel
+from .order_id import OrderId
+from .order_item_info import OrderItemInfo
+from .order_state import OrderState
+
+
+class OrderResponse(UncheckedBaseModel):
+ order_id: OrderId = pydantic.Field()
+ """
+ The ID of the order.
+ """
+
+ name: str = pydantic.Field()
+ """
+ The display name of the order.
+ """
+
+ state: OrderState = pydantic.Field()
+ """
+ The current state of the order.
+ """
+
+ items: typing.List[OrderItemInfo] = pydantic.Field()
+ """
+ The list of items in this order with their quotes.
+ """
+
+ total_amount_usd: typing.Optional[float] = pydantic.Field(default=None)
+ """
+ The total price for all items in USD. Excluded from response until quotes are available.
+ """
+
+ created_at: dt.datetime = pydantic.Field()
+ """
+ The timestamp when the order was created.
+ """
+
+ submitted_at: typing.Optional[dt.datetime] = pydantic.Field(default=None)
+ """
+ The timestamp when the order was submitted, if applicable.
+ """
+
+ paid_at: typing.Optional[dt.datetime] = pydantic.Field(default=None)
+ """
+ The timestamp when payment was received, if applicable.
+ """
+
+ accepted_at: typing.Optional[dt.datetime] = pydantic.Field(default=None)
+ """
+ The timestamp when the order was accepted for production, if applicable.
+ """
+
+ completed_at: typing.Optional[dt.datetime] = pydantic.Field(default=None)
+ """
+ The timestamp when the order was completed, if applicable.
+ """
+
+ if IS_PYDANTIC_V2:
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
+ else:
+
+ class Config:
+ frozen = True
+ smart_union = True
+ extra = pydantic.Extra.allow
diff --git a/src/elevenlabs/types/order_state.py b/src/elevenlabs/types/order_state.py
new file mode 100644
index 00000000..b4e89fd5
--- /dev/null
+++ b/src/elevenlabs/types/order_state.py
@@ -0,0 +1,5 @@
+# This file was auto-generated by Fern from our API Definition.
+
+import typing
+
+OrderState = typing.Union[typing.Literal["open", "submitted", "paid", "accepted", "rejected", "done"], typing.Any]
diff --git a/src/elevenlabs/types/order_summary.py b/src/elevenlabs/types/order_summary.py
new file mode 100644
index 00000000..14e3873d
--- /dev/null
+++ b/src/elevenlabs/types/order_summary.py
@@ -0,0 +1,51 @@
+# This file was auto-generated by Fern from our API Definition.
+
+import datetime as dt
+import typing
+
+import pydantic
+from ..core.pydantic_utilities import IS_PYDANTIC_V2
+from ..core.unchecked_base_model import UncheckedBaseModel
+from .order_id import OrderId
+from .order_state import OrderState
+
+
+class OrderSummary(UncheckedBaseModel):
+ order_id: OrderId = pydantic.Field()
+ """
+ The ID of the order.
+ """
+
+ name: str = pydantic.Field()
+ """
+ The display name of the order.
+ """
+
+ state: OrderState = pydantic.Field()
+ """
+ The current state of the order.
+ """
+
+ total_amount_usd: typing.Optional[float] = pydantic.Field(default=None)
+ """
+ The total price for all items in USD. Excluded from response until quotes are available.
+ """
+
+ submitted_at: typing.Optional[dt.datetime] = pydantic.Field(default=None)
+ """
+ The timestamp when the order was submitted, if applicable.
+ """
+
+ updated_at: typing.Optional[dt.datetime] = pydantic.Field(default=None)
+ """
+ The timestamp when the order was last modified, if applicable.
+ """
+
+ if IS_PYDANTIC_V2:
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
+ else:
+
+ class Config:
+ frozen = True
+ smart_union = True
+ extra = pydantic.Extra.allow
diff --git a/src/elevenlabs/types/paired_languages_response.py b/src/elevenlabs/types/paired_languages_response.py
new file mode 100644
index 00000000..6bf32ef0
--- /dev/null
+++ b/src/elevenlabs/types/paired_languages_response.py
@@ -0,0 +1,24 @@
+# This file was auto-generated by Fern from our API Definition.
+
+import typing
+
+import pydantic
+from ..core.pydantic_utilities import IS_PYDANTIC_V2
+from ..core.unchecked_base_model import UncheckedBaseModel
+from .language_pair_info import LanguagePairInfo
+
+
+class PairedLanguagesResponse(UncheckedBaseModel):
+ language_pairs: typing.List[LanguagePairInfo] = pydantic.Field()
+ """
+ The list of available source-to-destination language mappings.
+ """
+
+ if IS_PYDANTIC_V2:
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
+ else:
+
+ class Config:
+ frozen = True
+ smart_union = True
+ extra = pydantic.Extra.allow
diff --git a/src/elevenlabs/types/quote_info.py b/src/elevenlabs/types/quote_info.py
new file mode 100644
index 00000000..62ffe3ce
--- /dev/null
+++ b/src/elevenlabs/types/quote_info.py
@@ -0,0 +1,23 @@
+# This file was auto-generated by Fern from our API Definition.
+
+import typing
+
+import pydantic
+from ..core.pydantic_utilities import IS_PYDANTIC_V2
+from ..core.unchecked_base_model import UncheckedBaseModel
+
+
+class QuoteInfo(UncheckedBaseModel):
+ amount_usd: float = pydantic.Field()
+ """
+ The quoted price for this item in USD. Use the order's total_amount_usd for the combined order total.
+ """
+
+ if IS_PYDANTIC_V2:
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
+ else:
+
+ class Config:
+ frozen = True
+ smart_union = True
+ extra = pydantic.Extra.allow
diff --git a/src/elevenlabs/types/register_media_response.py b/src/elevenlabs/types/register_media_response.py
new file mode 100644
index 00000000..312fc140
--- /dev/null
+++ b/src/elevenlabs/types/register_media_response.py
@@ -0,0 +1,24 @@
+# This file was auto-generated by Fern from our API Definition.
+
+import typing
+
+import pydantic
+from ..core.pydantic_utilities import IS_PYDANTIC_V2
+from ..core.unchecked_base_model import UncheckedBaseModel
+from .media_id import MediaId
+
+
+class RegisterMediaResponse(UncheckedBaseModel):
+ media_id: MediaId = pydantic.Field()
+ """
+ The ID of the uploaded media file.
+ """
+
+ if IS_PYDANTIC_V2:
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
+ else:
+
+ class Config:
+ frozen = True
+ smart_union = True
+ extra = pydantic.Extra.allow
diff --git a/src/elevenlabs/types/remove_order_item_response.py b/src/elevenlabs/types/remove_order_item_response.py
new file mode 100644
index 00000000..f3a2c174
--- /dev/null
+++ b/src/elevenlabs/types/remove_order_item_response.py
@@ -0,0 +1,23 @@
+# This file was auto-generated by Fern from our API Definition.
+
+import typing
+
+import pydantic
+from ..core.pydantic_utilities import IS_PYDANTIC_V2
+from ..core.unchecked_base_model import UncheckedBaseModel
+
+
+class RemoveOrderItemResponse(UncheckedBaseModel):
+ success: bool = pydantic.Field()
+ """
+ Whether the item was successfully removed.
+ """
+
+ if IS_PYDANTIC_V2:
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
+ else:
+
+ class Config:
+ frozen = True
+ smart_union = True
+ extra = pydantic.Extra.allow
diff --git a/src/elevenlabs/types/root_model_annotated_union_dub_order_item_request_subtitle_order_item_request_field_info_annotation_none_type_required_true_discriminator_kind_input.py b/src/elevenlabs/types/root_model_annotated_union_dub_order_item_request_subtitle_order_item_request_field_info_annotation_none_type_required_true_discriminator_kind_input.py
new file mode 100644
index 00000000..8c11e86a
--- /dev/null
+++ b/src/elevenlabs/types/root_model_annotated_union_dub_order_item_request_subtitle_order_item_request_field_info_annotation_none_type_required_true_discriminator_kind_input.py
@@ -0,0 +1,64 @@
+# This file was auto-generated by Fern from our API Definition.
+
+from __future__ import annotations
+
+import typing
+
+import pydantic
+import typing_extensions
+from ..core.pydantic_utilities import IS_PYDANTIC_V2
+from ..core.unchecked_base_model import UncheckedBaseModel, UnionMetadata
+from .cue_options_request import CueOptionsRequest
+from .media_id import MediaId
+
+
+class RootModelAnnotatedUnionDubOrderItemRequestSubtitleOrderItemRequestFieldInfoAnnotationNoneTypeRequiredTrueDiscriminatorKindInput_Dub(
+ UncheckedBaseModel
+):
+ kind: typing.Literal["dub"] = "dub"
+ media_id: MediaId
+ source_language: str
+ destination_languages: typing.List[str]
+ include_captions: bool
+ include_source_captions: bool
+ instructions: typing.Optional[str] = None
+ captions_sdh: typing.Optional[bool] = None
+
+ if IS_PYDANTIC_V2:
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
+ else:
+
+ class Config:
+ frozen = True
+ smart_union = True
+ extra = pydantic.Extra.allow
+
+
+class RootModelAnnotatedUnionDubOrderItemRequestSubtitleOrderItemRequestFieldInfoAnnotationNoneTypeRequiredTrueDiscriminatorKindInput_Subtitles(
+ UncheckedBaseModel
+):
+ kind: typing.Literal["subtitles"] = "subtitles"
+ media_ids: typing.List[MediaId]
+ source_language: str
+ destination_languages: typing.List[str]
+ cue_options: typing.Optional[CueOptionsRequest] = None
+ sdh: typing.Optional[bool] = None
+ instructions: typing.Optional[str] = None
+
+ if IS_PYDANTIC_V2:
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
+ else:
+
+ class Config:
+ frozen = True
+ smart_union = True
+ extra = pydantic.Extra.allow
+
+
+RootModelAnnotatedUnionDubOrderItemRequestSubtitleOrderItemRequestFieldInfoAnnotationNoneTypeRequiredTrueDiscriminatorKindInput = typing_extensions.Annotated[
+ typing.Union[
+ RootModelAnnotatedUnionDubOrderItemRequestSubtitleOrderItemRequestFieldInfoAnnotationNoneTypeRequiredTrueDiscriminatorKindInput_Dub,
+ RootModelAnnotatedUnionDubOrderItemRequestSubtitleOrderItemRequestFieldInfoAnnotationNoneTypeRequiredTrueDiscriminatorKindInput_Subtitles,
+ ],
+ UnionMetadata(discriminant="kind"),
+]
diff --git a/src/elevenlabs/types/root_model_annotated_union_dub_order_item_request_subtitle_order_item_request_field_info_annotation_none_type_required_true_discriminator_kind_output.py b/src/elevenlabs/types/root_model_annotated_union_dub_order_item_request_subtitle_order_item_request_field_info_annotation_none_type_required_true_discriminator_kind_output.py
new file mode 100644
index 00000000..6c3cef13
--- /dev/null
+++ b/src/elevenlabs/types/root_model_annotated_union_dub_order_item_request_subtitle_order_item_request_field_info_annotation_none_type_required_true_discriminator_kind_output.py
@@ -0,0 +1,64 @@
+# This file was auto-generated by Fern from our API Definition.
+
+from __future__ import annotations
+
+import typing
+
+import pydantic
+import typing_extensions
+from ..core.pydantic_utilities import IS_PYDANTIC_V2
+from ..core.unchecked_base_model import UncheckedBaseModel, UnionMetadata
+from .cue_options_request import CueOptionsRequest
+from .media_id import MediaId
+
+
+class RootModelAnnotatedUnionDubOrderItemRequestSubtitleOrderItemRequestFieldInfoAnnotationNoneTypeRequiredTrueDiscriminatorKindOutput_Dub(
+ UncheckedBaseModel
+):
+ kind: typing.Literal["dub"] = "dub"
+ media_id: MediaId
+ source_language: str
+ destination_languages: typing.List[str]
+ include_captions: bool
+ include_source_captions: bool
+ instructions: typing.Optional[str] = None
+ captions_sdh: typing.Optional[bool] = None
+
+ if IS_PYDANTIC_V2:
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
+ else:
+
+ class Config:
+ frozen = True
+ smart_union = True
+ extra = pydantic.Extra.allow
+
+
+class RootModelAnnotatedUnionDubOrderItemRequestSubtitleOrderItemRequestFieldInfoAnnotationNoneTypeRequiredTrueDiscriminatorKindOutput_Subtitles(
+ UncheckedBaseModel
+):
+ kind: typing.Literal["subtitles"] = "subtitles"
+ media_ids: typing.List[MediaId]
+ source_language: str
+ destination_languages: typing.List[str]
+ cue_options: typing.Optional[CueOptionsRequest] = None
+ sdh: typing.Optional[bool] = None
+ instructions: typing.Optional[str] = None
+
+ if IS_PYDANTIC_V2:
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
+ else:
+
+ class Config:
+ frozen = True
+ smart_union = True
+ extra = pydantic.Extra.allow
+
+
+RootModelAnnotatedUnionDubOrderItemRequestSubtitleOrderItemRequestFieldInfoAnnotationNoneTypeRequiredTrueDiscriminatorKindOutput = typing_extensions.Annotated[
+ typing.Union[
+ RootModelAnnotatedUnionDubOrderItemRequestSubtitleOrderItemRequestFieldInfoAnnotationNoneTypeRequiredTrueDiscriminatorKindOutput_Dub,
+ RootModelAnnotatedUnionDubOrderItemRequestSubtitleOrderItemRequestFieldInfoAnnotationNoneTypeRequiredTrueDiscriminatorKindOutput_Subtitles,
+ ],
+ UnionMetadata(discriminant="kind"),
+]
diff --git a/src/elevenlabs/types/root_model_annotated_union_paired_languages_response_single_languages_response_field_info_annotation_none_type_required_true_discriminator_kind.py b/src/elevenlabs/types/root_model_annotated_union_paired_languages_response_single_languages_response_field_info_annotation_none_type_required_true_discriminator_kind.py
new file mode 100644
index 00000000..b34240c9
--- /dev/null
+++ b/src/elevenlabs/types/root_model_annotated_union_paired_languages_response_single_languages_response_field_info_annotation_none_type_required_true_discriminator_kind.py
@@ -0,0 +1,53 @@
+# This file was auto-generated by Fern from our API Definition.
+
+from __future__ import annotations
+
+import typing
+
+import pydantic
+import typing_extensions
+from ..core.pydantic_utilities import IS_PYDANTIC_V2
+from ..core.unchecked_base_model import UncheckedBaseModel, UnionMetadata
+from .language_info import LanguageInfo
+from .language_pair_info import LanguagePairInfo
+
+
+class RootModelAnnotatedUnionPairedLanguagesResponseSingleLanguagesResponseFieldInfoAnnotationNoneTypeRequiredTrueDiscriminatorKind_Pair(
+ UncheckedBaseModel
+):
+ kind: typing.Literal["pair"] = "pair"
+ language_pairs: typing.List[LanguagePairInfo]
+
+ if IS_PYDANTIC_V2:
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
+ else:
+
+ class Config:
+ frozen = True
+ smart_union = True
+ extra = pydantic.Extra.allow
+
+
+class RootModelAnnotatedUnionPairedLanguagesResponseSingleLanguagesResponseFieldInfoAnnotationNoneTypeRequiredTrueDiscriminatorKind_Single(
+ UncheckedBaseModel
+):
+ kind: typing.Literal["single"] = "single"
+ languages: typing.List[LanguageInfo]
+
+ if IS_PYDANTIC_V2:
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
+ else:
+
+ class Config:
+ frozen = True
+ smart_union = True
+ extra = pydantic.Extra.allow
+
+
+RootModelAnnotatedUnionPairedLanguagesResponseSingleLanguagesResponseFieldInfoAnnotationNoneTypeRequiredTrueDiscriminatorKind = typing_extensions.Annotated[
+ typing.Union[
+ RootModelAnnotatedUnionPairedLanguagesResponseSingleLanguagesResponseFieldInfoAnnotationNoneTypeRequiredTrueDiscriminatorKind_Pair,
+ RootModelAnnotatedUnionPairedLanguagesResponseSingleLanguagesResponseFieldInfoAnnotationNoneTypeRequiredTrueDiscriminatorKind_Single,
+ ],
+ UnionMetadata(discriminant="kind"),
+]
diff --git a/src/elevenlabs/types/rtt_audio_payload.py b/src/elevenlabs/types/rtt_audio_payload.py
new file mode 100644
index 00000000..faf25e41
--- /dev/null
+++ b/src/elevenlabs/types/rtt_audio_payload.py
@@ -0,0 +1,37 @@
+# This file was auto-generated by Fern from our API Definition.
+
+import typing
+
+import pydantic
+from ..core.pydantic_utilities import IS_PYDANTIC_V2
+from ..core.unchecked_base_model import UncheckedBaseModel
+
+
+class RttAudioPayload(UncheckedBaseModel):
+ """
+ Base64-encoded audio of the translated speech.
+ """
+
+ message_type: typing.Literal["audio"] = pydantic.Field(default="audio")
+ """
+ The message type identifier.
+ """
+
+ data: str = pydantic.Field()
+ """
+ Base64-encoded audio data.
+ """
+
+ sample_rate: int = pydantic.Field()
+ """
+ Sample rate of the audio in Hz.
+ """
+
+ if IS_PYDANTIC_V2:
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
+ else:
+
+ class Config:
+ frozen = True
+ smart_union = True
+ extra = pydantic.Extra.allow
diff --git a/src/elevenlabs/types/rtt_end_of_stream_payload.py b/src/elevenlabs/types/rtt_end_of_stream_payload.py
new file mode 100644
index 00000000..070f9ea9
--- /dev/null
+++ b/src/elevenlabs/types/rtt_end_of_stream_payload.py
@@ -0,0 +1,27 @@
+# This file was auto-generated by Fern from our API Definition.
+
+import typing
+
+import pydantic
+from ..core.pydantic_utilities import IS_PYDANTIC_V2
+from ..core.unchecked_base_model import UncheckedBaseModel
+
+
+class RttEndOfStreamPayload(UncheckedBaseModel):
+ """
+ Signal that the client has finished sending audio.
+ """
+
+ message_type: typing.Literal["end_of_stream"] = pydantic.Field(default="end_of_stream")
+ """
+ The message type identifier.
+ """
+
+ if IS_PYDANTIC_V2:
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
+ else:
+
+ class Config:
+ frozen = True
+ smart_union = True
+ extra = pydantic.Extra.allow
diff --git a/src/elevenlabs/types/api_integration_doc_response.py b/src/elevenlabs/types/rtt_error_payload.py
similarity index 67%
rename from src/elevenlabs/types/api_integration_doc_response.py
rename to src/elevenlabs/types/rtt_error_payload.py
index 2e1021ea..e04cff3b 100644
--- a/src/elevenlabs/types/api_integration_doc_response.py
+++ b/src/elevenlabs/types/rtt_error_payload.py
@@ -7,20 +7,19 @@
from ..core.unchecked_base_model import UncheckedBaseModel
-class ApiIntegrationDocResponse(UncheckedBaseModel):
- id: str = pydantic.Field()
+class RttErrorPayload(UncheckedBaseModel):
"""
- Integration identifier
+ Error encountered during translation.
"""
- name: str = pydantic.Field()
+ message_type: typing.Literal["error"] = pydantic.Field(default="error")
"""
- Display name of the integration
+ The message type identifier.
"""
- doc_mdx: str = pydantic.Field()
+ error: str = pydantic.Field()
"""
- Full MDX documentation content for the integration
+ Error message.
"""
if IS_PYDANTIC_V2:
diff --git a/src/elevenlabs/types/rtt_final_transcript_payload.py b/src/elevenlabs/types/rtt_final_transcript_payload.py
new file mode 100644
index 00000000..aee4ac82
--- /dev/null
+++ b/src/elevenlabs/types/rtt_final_transcript_payload.py
@@ -0,0 +1,32 @@
+# This file was auto-generated by Fern from our API Definition.
+
+import typing
+
+import pydantic
+from ..core.pydantic_utilities import IS_PYDANTIC_V2
+from ..core.unchecked_base_model import UncheckedBaseModel
+
+
+class RttFinalTranscriptPayload(UncheckedBaseModel):
+ """
+ Final transcription of a completed segment.
+ """
+
+ message_type: typing.Literal["final_transcript"] = pydantic.Field(default="final_transcript")
+ """
+ The message type identifier.
+ """
+
+ text: str = pydantic.Field()
+ """
+ Final transcription text.
+ """
+
+ if IS_PYDANTIC_V2:
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
+ else:
+
+ class Config:
+ frozen = True
+ smart_union = True
+ extra = pydantic.Extra.allow
diff --git a/src/elevenlabs/types/rtt_input_audio_chunk_payload.py b/src/elevenlabs/types/rtt_input_audio_chunk_payload.py
new file mode 100644
index 00000000..e2f74fe2
--- /dev/null
+++ b/src/elevenlabs/types/rtt_input_audio_chunk_payload.py
@@ -0,0 +1,32 @@
+# This file was auto-generated by Fern from our API Definition.
+
+import typing
+
+import pydantic
+from ..core.pydantic_utilities import IS_PYDANTIC_V2
+from ..core.unchecked_base_model import UncheckedBaseModel
+
+
+class RttInputAudioChunkPayload(UncheckedBaseModel):
+ """
+ A chunk of audio to be translated.
+ """
+
+ message_type: typing.Literal["input_audio_chunk"] = pydantic.Field(default="input_audio_chunk")
+ """
+ The message type identifier.
+ """
+
+ audio_base_64: str = pydantic.Field()
+ """
+ Base64-encoded audio data. Recommended chunk size is around 100 ms of audio.
+ """
+
+ if IS_PYDANTIC_V2:
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
+ else:
+
+ class Config:
+ frozen = True
+ smart_union = True
+ extra = pydantic.Extra.allow
diff --git a/src/elevenlabs/types/rtt_input_format_enum.py b/src/elevenlabs/types/rtt_input_format_enum.py
new file mode 100644
index 00000000..9760b10e
--- /dev/null
+++ b/src/elevenlabs/types/rtt_input_format_enum.py
@@ -0,0 +1,7 @@
+# This file was auto-generated by Fern from our API Definition.
+
+import typing
+
+RttInputFormatEnum = typing.Union[
+ typing.Literal["pcm_8000", "pcm_16000", "pcm_22050", "pcm_24000", "pcm_44100", "pcm_48000", "ulaw_8000"], typing.Any
+]
diff --git a/src/elevenlabs/types/rtt_output_format_enum.py b/src/elevenlabs/types/rtt_output_format_enum.py
new file mode 100644
index 00000000..873943e3
--- /dev/null
+++ b/src/elevenlabs/types/rtt_output_format_enum.py
@@ -0,0 +1,20 @@
+# This file was auto-generated by Fern from our API Definition.
+
+import typing
+
+RttOutputFormatEnum = typing.Union[
+ typing.Literal[
+ "mp3_22050_32",
+ "mp3_44100_32",
+ "mp3_44100_64",
+ "mp3_44100_96",
+ "mp3_44100_128",
+ "mp3_44100_192",
+ "pcm_16000",
+ "pcm_22050",
+ "pcm_24000",
+ "pcm_44100",
+ "ulaw_8000",
+ ],
+ typing.Any,
+]
diff --git a/src/elevenlabs/types/rtt_partial_transcript_payload.py b/src/elevenlabs/types/rtt_partial_transcript_payload.py
new file mode 100644
index 00000000..afd94eac
--- /dev/null
+++ b/src/elevenlabs/types/rtt_partial_transcript_payload.py
@@ -0,0 +1,32 @@
+# This file was auto-generated by Fern from our API Definition.
+
+import typing
+
+import pydantic
+from ..core.pydantic_utilities import IS_PYDANTIC_V2
+from ..core.unchecked_base_model import UncheckedBaseModel
+
+
+class RttPartialTranscriptPayload(UncheckedBaseModel):
+ """
+ Interim transcription of the source audio.
+ """
+
+ message_type: typing.Literal["partial_transcript"] = pydantic.Field(default="partial_transcript")
+ """
+ The message type identifier.
+ """
+
+ text: str = pydantic.Field()
+ """
+ Partial transcription text.
+ """
+
+ if IS_PYDANTIC_V2:
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
+ else:
+
+ class Config:
+ frozen = True
+ smart_union = True
+ extra = pydantic.Extra.allow
diff --git a/src/elevenlabs/types/rtt_session_started_payload.py b/src/elevenlabs/types/rtt_session_started_payload.py
new file mode 100644
index 00000000..b23237bf
--- /dev/null
+++ b/src/elevenlabs/types/rtt_session_started_payload.py
@@ -0,0 +1,37 @@
+# This file was auto-generated by Fern from our API Definition.
+
+import typing
+
+import pydantic
+from ..core.pydantic_utilities import IS_PYDANTIC_V2
+from ..core.unchecked_base_model import UncheckedBaseModel
+
+
+class RttSessionStartedPayload(UncheckedBaseModel):
+ """
+ Confirms the session has been initialized.
+ """
+
+ message_type: typing.Literal["session_started"] = pydantic.Field(default="session_started")
+ """
+ The message type identifier.
+ """
+
+ session_id: str = pydantic.Field()
+ """
+ Unique identifier for this session.
+ """
+
+ client_session_id: typing.Optional[str] = pydantic.Field(default=None)
+ """
+ Client-defined session identifier, if provided during connection.
+ """
+
+ if IS_PYDANTIC_V2:
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
+ else:
+
+ class Config:
+ frozen = True
+ smart_union = True
+ extra = pydantic.Extra.allow
diff --git a/src/elevenlabs/types/rtt_status_payload.py b/src/elevenlabs/types/rtt_status_payload.py
new file mode 100644
index 00000000..a5e6ed76
--- /dev/null
+++ b/src/elevenlabs/types/rtt_status_payload.py
@@ -0,0 +1,32 @@
+# This file was auto-generated by Fern from our API Definition.
+
+import typing
+
+import pydantic
+from ..core.pydantic_utilities import IS_PYDANTIC_V2
+from ..core.unchecked_base_model import UncheckedBaseModel
+
+
+class RttStatusPayload(UncheckedBaseModel):
+ """
+ Session lifecycle update.
+ """
+
+ message_type: typing.Literal["status"] = pydantic.Field(default="status")
+ """
+ The message type identifier.
+ """
+
+ status: str = pydantic.Field()
+ """
+ Current session status (`started` or `stopped`).
+ """
+
+ if IS_PYDANTIC_V2:
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
+ else:
+
+ class Config:
+ frozen = True
+ smart_union = True
+ extra = pydantic.Extra.allow
diff --git a/src/elevenlabs/types/rtt_translation_payload.py b/src/elevenlabs/types/rtt_translation_payload.py
new file mode 100644
index 00000000..f093f862
--- /dev/null
+++ b/src/elevenlabs/types/rtt_translation_payload.py
@@ -0,0 +1,32 @@
+# This file was auto-generated by Fern from our API Definition.
+
+import typing
+
+import pydantic
+from ..core.pydantic_utilities import IS_PYDANTIC_V2
+from ..core.unchecked_base_model import UncheckedBaseModel
+
+
+class RttTranslationPayload(UncheckedBaseModel):
+ """
+ Translated text in the target language.
+ """
+
+ message_type: typing.Literal["translation"] = pydantic.Field(default="translation")
+ """
+ The message type identifier.
+ """
+
+ text: str = pydantic.Field()
+ """
+ Translated text.
+ """
+
+ if IS_PYDANTIC_V2:
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
+ else:
+
+ class Config:
+ frozen = True
+ smart_union = True
+ extra = pydantic.Extra.allow
diff --git a/src/elevenlabs/types/single_languages_response.py b/src/elevenlabs/types/single_languages_response.py
new file mode 100644
index 00000000..5087c22c
--- /dev/null
+++ b/src/elevenlabs/types/single_languages_response.py
@@ -0,0 +1,24 @@
+# This file was auto-generated by Fern from our API Definition.
+
+import typing
+
+import pydantic
+from ..core.pydantic_utilities import IS_PYDANTIC_V2
+from ..core.unchecked_base_model import UncheckedBaseModel
+from .language_info import LanguageInfo
+
+
+class SingleLanguagesResponse(UncheckedBaseModel):
+ languages: typing.List[LanguageInfo] = pydantic.Field()
+ """
+ The list of available languages.
+ """
+
+ if IS_PYDANTIC_V2:
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
+ else:
+
+ class Config:
+ frozen = True
+ smart_union = True
+ extra = pydantic.Extra.allow
diff --git a/src/elevenlabs/types/speech_engine_conversation_initiation_client_data_config.py b/src/elevenlabs/types/speech_engine_conversation_initiation_client_data_config.py
new file mode 100644
index 00000000..a536a4f6
--- /dev/null
+++ b/src/elevenlabs/types/speech_engine_conversation_initiation_client_data_config.py
@@ -0,0 +1,23 @@
+# This file was auto-generated by Fern from our API Definition.
+
+import typing
+
+import pydantic
+from ..core.pydantic_utilities import IS_PYDANTIC_V2
+from ..core.unchecked_base_model import UncheckedBaseModel
+
+
+class SpeechEngineConversationInitiationClientDataConfig(UncheckedBaseModel):
+ first_message: typing.Optional[bool] = pydantic.Field(default=None)
+ """
+ Whether the first message can be overridden by the client
+ """
+
+ if IS_PYDANTIC_V2:
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
+ else:
+
+ class Config:
+ frozen = True
+ smart_union = True
+ extra = pydantic.Extra.allow
diff --git a/src/elevenlabs/types/speech_engine_response.py b/src/elevenlabs/types/speech_engine_response.py
index b3901795..fd08544f 100644
--- a/src/elevenlabs/types/speech_engine_response.py
+++ b/src/elevenlabs/types/speech_engine_response.py
@@ -12,6 +12,7 @@
from .conversation_config_output import ConversationConfigOutput
from .privacy_config_output import PrivacyConfigOutput
from .speech_engine_config import SpeechEngineConfig
+from .speech_engine_conversation_initiation_client_data_config import SpeechEngineConversationInitiationClientDataConfig
from .tts_conversational_config_output import TtsConversationalConfigOutput
@@ -71,6 +72,11 @@ class SpeechEngineResponse(UncheckedBaseModel):
Arbitrary tags for categorization and filtering
"""
+ overrides: SpeechEngineConversationInitiationClientDataConfig = pydantic.Field()
+ """
+ Override settings the client may set during conversation initiation
+ """
+
metadata: AgentMetadataDbModel = pydantic.Field()
"""
Creation and update timestamps with source information
diff --git a/src/elevenlabs/types/submit_order_response.py b/src/elevenlabs/types/submit_order_response.py
new file mode 100644
index 00000000..ca8c3a9f
--- /dev/null
+++ b/src/elevenlabs/types/submit_order_response.py
@@ -0,0 +1,36 @@
+# This file was auto-generated by Fern from our API Definition.
+
+import datetime as dt
+import typing
+
+import pydantic
+from ..core.pydantic_utilities import IS_PYDANTIC_V2
+from ..core.unchecked_base_model import UncheckedBaseModel
+from .order_id import OrderId
+from .order_state import OrderState
+
+
+class SubmitOrderResponse(UncheckedBaseModel):
+ order_id: OrderId = pydantic.Field()
+ """
+ The ID of the submitted order.
+ """
+
+ state: OrderState = pydantic.Field()
+ """
+ The current state of the order after submission.
+ """
+
+ submitted_at: dt.datetime = pydantic.Field()
+ """
+ The timestamp when the order was submitted.
+ """
+
+ if IS_PYDANTIC_V2:
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
+ else:
+
+ class Config:
+ frozen = True
+ smart_union = True
+ extra = pydantic.Extra.allow
diff --git a/src/elevenlabs/types/subtitle_order_item_request.py b/src/elevenlabs/types/subtitle_order_item_request.py
new file mode 100644
index 00000000..3c2f6eb3
--- /dev/null
+++ b/src/elevenlabs/types/subtitle_order_item_request.py
@@ -0,0 +1,50 @@
+# This file was auto-generated by Fern from our API Definition.
+
+import typing
+
+import pydantic
+from ..core.pydantic_utilities import IS_PYDANTIC_V2
+from ..core.unchecked_base_model import UncheckedBaseModel
+from .cue_options_request import CueOptionsRequest
+from .media_id import MediaId
+
+
+class SubtitleOrderItemRequest(UncheckedBaseModel):
+ media_ids: typing.List[MediaId] = pydantic.Field()
+ """
+ The IDs of the uploaded media files to generate subtitles for.
+ """
+
+ source_language: str = pydantic.Field()
+ """
+ The language code of the source media (e.g. 'en', 'es').
+ """
+
+ destination_languages: typing.List[str] = pydantic.Field()
+ """
+ List of target language codes. Subtitles will be generated for each media file in each destination language.
+ """
+
+ cue_options: typing.Optional[CueOptionsRequest] = pydantic.Field(default=None)
+ """
+ Formatting options for subtitle cues such as duration, line count, and character limits.
+ """
+
+ sdh: typing.Optional[bool] = pydantic.Field(default=None)
+ """
+ Whether subtitles should use SDH format, which includes descriptions for deaf and hard-of-hearing viewers.
+ """
+
+ instructions: typing.Optional[str] = pydantic.Field(default=None)
+ """
+ Optional free-text instructions for the subtitling team.
+ """
+
+ if IS_PYDANTIC_V2:
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
+ else:
+
+ class Config:
+ frozen = True
+ smart_union = True
+ extra = pydantic.Extra.allow
diff --git a/src/elevenlabs/types/create_speech_engine_response.py b/src/elevenlabs/types/update_order_request.py
similarity index 79%
rename from src/elevenlabs/types/create_speech_engine_response.py
rename to src/elevenlabs/types/update_order_request.py
index 4f389e2c..61ca1c72 100644
--- a/src/elevenlabs/types/create_speech_engine_response.py
+++ b/src/elevenlabs/types/update_order_request.py
@@ -7,10 +7,10 @@
from ..core.unchecked_base_model import UncheckedBaseModel
-class CreateSpeechEngineResponse(UncheckedBaseModel):
- speech_engine_id: str = pydantic.Field()
+class UpdateOrderRequest(UncheckedBaseModel):
+ name: str = pydantic.Field()
"""
- The speech engine resource ID
+ The new name for the order.
"""
if IS_PYDANTIC_V2:
diff --git a/src/elevenlabs/types/update_order_response.py b/src/elevenlabs/types/update_order_response.py
new file mode 100644
index 00000000..0db03948
--- /dev/null
+++ b/src/elevenlabs/types/update_order_response.py
@@ -0,0 +1,23 @@
+# This file was auto-generated by Fern from our API Definition.
+
+import typing
+
+import pydantic
+from ..core.pydantic_utilities import IS_PYDANTIC_V2
+from ..core.unchecked_base_model import UncheckedBaseModel
+
+
+class UpdateOrderResponse(UncheckedBaseModel):
+ name: str = pydantic.Field()
+ """
+ The updated order name.
+ """
+
+ if IS_PYDANTIC_V2:
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
+ else:
+
+ class Config:
+ frozen = True
+ smart_union = True
+ extra = pydantic.Extra.allow
diff --git a/src/elevenlabs/types/upsert_order_item_request.py b/src/elevenlabs/types/upsert_order_item_request.py
new file mode 100644
index 00000000..e980656c
--- /dev/null
+++ b/src/elevenlabs/types/upsert_order_item_request.py
@@ -0,0 +1,32 @@
+# This file was auto-generated by Fern from our API Definition.
+
+import typing
+
+import pydantic
+from ..core.pydantic_utilities import IS_PYDANTIC_V2
+from ..core.unchecked_base_model import UncheckedBaseModel
+from .item_id import ItemId
+from .root_model_annotated_union_dub_order_item_request_subtitle_order_item_request_field_info_annotation_none_type_required_true_discriminator_kind_input import (
+ RootModelAnnotatedUnionDubOrderItemRequestSubtitleOrderItemRequestFieldInfoAnnotationNoneTypeRequiredTrueDiscriminatorKindInput,
+)
+
+
+class UpsertOrderItemRequest(UncheckedBaseModel):
+ item: RootModelAnnotatedUnionDubOrderItemRequestSubtitleOrderItemRequestFieldInfoAnnotationNoneTypeRequiredTrueDiscriminatorKindInput = pydantic.Field()
+ """
+ The order item to add or update.
+ """
+
+ item_id: typing.Optional[ItemId] = pydantic.Field(default=None)
+ """
+ The ID of an existing item to update. Omit to create a new item.
+ """
+
+ if IS_PYDANTIC_V2:
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
+ else:
+
+ class Config:
+ frozen = True
+ smart_union = True
+ extra = pydantic.Extra.allow
diff --git a/src/elevenlabs/types/upsert_order_item_response.py b/src/elevenlabs/types/upsert_order_item_response.py
new file mode 100644
index 00000000..2fb75589
--- /dev/null
+++ b/src/elevenlabs/types/upsert_order_item_response.py
@@ -0,0 +1,30 @@
+# This file was auto-generated by Fern from our API Definition.
+
+import typing
+
+import pydantic
+from ..core.pydantic_utilities import IS_PYDANTIC_V2
+from ..core.unchecked_base_model import UncheckedBaseModel
+from .item_id import ItemId
+from .quote_info import QuoteInfo
+
+
+class UpsertOrderItemResponse(UncheckedBaseModel):
+ item_id: ItemId = pydantic.Field()
+ """
+ The ID of the upserted order item.
+ """
+
+ quote: typing.Optional[QuoteInfo] = pydantic.Field(default=None)
+ """
+ The quoted price for this item.
+ """
+
+ if IS_PYDANTIC_V2:
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
+ else:
+
+ class Config:
+ frozen = True
+ smart_union = True
+ extra = pydantic.Extra.allow
diff --git a/src/elevenlabs/types/voice_statistics_response_model.py b/src/elevenlabs/types/voice_statistics_response_model.py
index a47b1ec9..003c2e8a 100644
--- a/src/elevenlabs/types/voice_statistics_response_model.py
+++ b/src/elevenlabs/types/voice_statistics_response_model.py
@@ -23,6 +23,11 @@ class VoiceStatisticsResponseModel(UncheckedBaseModel):
The number of converted characters for this voice.
"""
+ credits_needed_to_convert: typing.Optional[int] = pydantic.Field(default=None)
+ """
+ The number of credits needed to convert the remaining audio for this voice.
+ """
+
if IS_PYDANTIC_V2:
model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
else:
diff --git a/src/elevenlabs/types/workspace_resource_type.py b/src/elevenlabs/types/workspace_resource_type.py
index d6c999cf..7ad4c9aa 100644
--- a/src/elevenlabs/types/workspace_resource_type.py
+++ b/src/elevenlabs/types/workspace_resource_type.py
@@ -43,6 +43,7 @@
"avatars",
"avatar_video_generations",
"resource_collection",
+ "studio_projects",
],
typing.Any,
]
diff --git a/src/elevenlabs/usage/client.py b/src/elevenlabs/usage/client.py
index cec797c9..14228519 100644
--- a/src/elevenlabs/usage/client.py
+++ b/src/elevenlabs/usage/client.py
@@ -39,7 +39,7 @@ def get(
request_options: typing.Optional[RequestOptions] = None,
) -> UsageCharactersResponseModel:
"""
- (Deprecated) This endpoint is deprecated. Use /v1/workspace/analytics/query/usage-by-product-over-time instead. Returns the usage metrics for the current user or the entire workspace they are part of. The response provides a time axis based on the specified aggregation interval (default: day), with usage values for each interval along that axis. Usage is broken down by the selected breakdown type. For example, breakdown type "voice" will return the usage of each voice for each interval along the time axis.
+ (Deprecated) This endpoint is deprecated. Use /v1/workspace/analytics/query/usage-by-product-over-time instead, which exposes the bucket size as `interval_seconds` (an integer in seconds) rather than `aggregation_interval`. Returns the usage metrics for the current user or the entire workspace they are part of. The response provides a time axis based on the specified aggregation interval (default: day), with usage values for each interval along that axis. Usage is broken down by the selected breakdown type. For example, breakdown type "voice" will return the usage of each voice for each interval along the time axis.
Parameters
----------
@@ -130,7 +130,7 @@ async def get(
request_options: typing.Optional[RequestOptions] = None,
) -> UsageCharactersResponseModel:
"""
- (Deprecated) This endpoint is deprecated. Use /v1/workspace/analytics/query/usage-by-product-over-time instead. Returns the usage metrics for the current user or the entire workspace they are part of. The response provides a time axis based on the specified aggregation interval (default: day), with usage values for each interval along that axis. Usage is broken down by the selected breakdown type. For example, breakdown type "voice" will return the usage of each voice for each interval along the time axis.
+ (Deprecated) This endpoint is deprecated. Use /v1/workspace/analytics/query/usage-by-product-over-time instead, which exposes the bucket size as `interval_seconds` (an integer in seconds) rather than `aggregation_interval`. Returns the usage metrics for the current user or the entire workspace they are part of. The response provides a time axis based on the specified aggregation interval (default: day), with usage values for each interval along that axis. Usage is broken down by the selected breakdown type. For example, breakdown type "voice" will return the usage of each voice for each interval along the time axis.
Parameters
----------
diff --git a/src/elevenlabs/usage/raw_client.py b/src/elevenlabs/usage/raw_client.py
index 42443d5f..393249bb 100644
--- a/src/elevenlabs/usage/raw_client.py
+++ b/src/elevenlabs/usage/raw_client.py
@@ -32,7 +32,7 @@ def get(
request_options: typing.Optional[RequestOptions] = None,
) -> HttpResponse[UsageCharactersResponseModel]:
"""
- (Deprecated) This endpoint is deprecated. Use /v1/workspace/analytics/query/usage-by-product-over-time instead. Returns the usage metrics for the current user or the entire workspace they are part of. The response provides a time axis based on the specified aggregation interval (default: day), with usage values for each interval along that axis. Usage is broken down by the selected breakdown type. For example, breakdown type "voice" will return the usage of each voice for each interval along the time axis.
+ (Deprecated) This endpoint is deprecated. Use /v1/workspace/analytics/query/usage-by-product-over-time instead, which exposes the bucket size as `interval_seconds` (an integer in seconds) rather than `aggregation_interval`. Returns the usage metrics for the current user or the entire workspace they are part of. The response provides a time axis based on the specified aggregation interval (default: day), with usage values for each interval along that axis. Usage is broken down by the selected breakdown type. For example, breakdown type "voice" will return the usage of each voice for each interval along the time axis.
Parameters
----------
@@ -123,7 +123,7 @@ async def get(
request_options: typing.Optional[RequestOptions] = None,
) -> AsyncHttpResponse[UsageCharactersResponseModel]:
"""
- (Deprecated) This endpoint is deprecated. Use /v1/workspace/analytics/query/usage-by-product-over-time instead. Returns the usage metrics for the current user or the entire workspace they are part of. The response provides a time axis based on the specified aggregation interval (default: day), with usage values for each interval along that axis. Usage is broken down by the selected breakdown type. For example, breakdown type "voice" will return the usage of each voice for each interval along the time axis.
+ (Deprecated) This endpoint is deprecated. Use /v1/workspace/analytics/query/usage-by-product-over-time instead, which exposes the bucket size as `interval_seconds` (an integer in seconds) rather than `aggregation_interval`. Returns the usage metrics for the current user or the entire workspace they are part of. The response provides a time axis based on the specified aggregation interval (default: day), with usage values for each interval along that axis. Usage is broken down by the selected breakdown type. For example, breakdown type "voice" will return the usage of each voice for each interval along the time axis.
Parameters
----------
diff --git a/src/elevenlabs/v_1_realtime_translation/__init__.py b/src/elevenlabs/v_1_realtime_translation/__init__.py
new file mode 100644
index 00000000..a2508ba7
--- /dev/null
+++ b/src/elevenlabs/v_1_realtime_translation/__init__.py
@@ -0,0 +1,34 @@
+# This file was auto-generated by Fern from our API Definition.
+
+# isort: skip_file
+
+import typing
+from importlib import import_module
+
+if typing.TYPE_CHECKING:
+ from .types import ReceiveRttMessage, SendRttMessage
+_dynamic_imports: typing.Dict[str, str] = {"ReceiveRttMessage": ".types", "SendRttMessage": ".types"}
+
+
+def __getattr__(attr_name: str) -> typing.Any:
+ module_name = _dynamic_imports.get(attr_name)
+ if module_name is None:
+ raise AttributeError(f"No {attr_name} found in _dynamic_imports for module name -> {__name__}")
+ try:
+ module = import_module(module_name, __package__)
+ if module_name == f".{attr_name}":
+ return module
+ else:
+ return getattr(module, attr_name)
+ except ImportError as e:
+ raise ImportError(f"Failed to import {attr_name} from {module_name}: {e}") from e
+ except AttributeError as e:
+ raise AttributeError(f"Failed to get {attr_name} from {module_name}: {e}") from e
+
+
+def __dir__():
+ lazy_attrs = list(_dynamic_imports.keys())
+ return sorted(lazy_attrs)
+
+
+__all__ = ["ReceiveRttMessage", "SendRttMessage"]
diff --git a/src/elevenlabs/v_1_realtime_translation/types/__init__.py b/src/elevenlabs/v_1_realtime_translation/types/__init__.py
new file mode 100644
index 00000000..7a065f02
--- /dev/null
+++ b/src/elevenlabs/v_1_realtime_translation/types/__init__.py
@@ -0,0 +1,38 @@
+# This file was auto-generated by Fern from our API Definition.
+
+# isort: skip_file
+
+import typing
+from importlib import import_module
+
+if typing.TYPE_CHECKING:
+ from .receive_rtt_message import ReceiveRttMessage
+ from .send_rtt_message import SendRttMessage
+_dynamic_imports: typing.Dict[str, str] = {
+ "ReceiveRttMessage": ".receive_rtt_message",
+ "SendRttMessage": ".send_rtt_message",
+}
+
+
+def __getattr__(attr_name: str) -> typing.Any:
+ module_name = _dynamic_imports.get(attr_name)
+ if module_name is None:
+ raise AttributeError(f"No {attr_name} found in _dynamic_imports for module name -> {__name__}")
+ try:
+ module = import_module(module_name, __package__)
+ if module_name == f".{attr_name}":
+ return module
+ else:
+ return getattr(module, attr_name)
+ except ImportError as e:
+ raise ImportError(f"Failed to import {attr_name} from {module_name}: {e}") from e
+ except AttributeError as e:
+ raise AttributeError(f"Failed to get {attr_name} from {module_name}: {e}") from e
+
+
+def __dir__():
+ lazy_attrs = list(_dynamic_imports.keys())
+ return sorted(lazy_attrs)
+
+
+__all__ = ["ReceiveRttMessage", "SendRttMessage"]
diff --git a/src/elevenlabs/v_1_realtime_translation/types/receive_rtt_message.py b/src/elevenlabs/v_1_realtime_translation/types/receive_rtt_message.py
new file mode 100644
index 00000000..8dd72cee
--- /dev/null
+++ b/src/elevenlabs/v_1_realtime_translation/types/receive_rtt_message.py
@@ -0,0 +1,21 @@
+# This file was auto-generated by Fern from our API Definition.
+
+import typing
+
+from ...types.rtt_audio_payload import RttAudioPayload
+from ...types.rtt_error_payload import RttErrorPayload
+from ...types.rtt_final_transcript_payload import RttFinalTranscriptPayload
+from ...types.rtt_partial_transcript_payload import RttPartialTranscriptPayload
+from ...types.rtt_session_started_payload import RttSessionStartedPayload
+from ...types.rtt_status_payload import RttStatusPayload
+from ...types.rtt_translation_payload import RttTranslationPayload
+
+ReceiveRttMessage = typing.Union[
+ RttSessionStartedPayload,
+ RttStatusPayload,
+ RttPartialTranscriptPayload,
+ RttFinalTranscriptPayload,
+ RttTranslationPayload,
+ RttAudioPayload,
+ RttErrorPayload,
+]
diff --git a/src/elevenlabs/v_1_realtime_translation/types/send_rtt_message.py b/src/elevenlabs/v_1_realtime_translation/types/send_rtt_message.py
new file mode 100644
index 00000000..7b709971
--- /dev/null
+++ b/src/elevenlabs/v_1_realtime_translation/types/send_rtt_message.py
@@ -0,0 +1,8 @@
+# This file was auto-generated by Fern from our API Definition.
+
+import typing
+
+from ...types.rtt_end_of_stream_payload import RttEndOfStreamPayload
+from ...types.rtt_input_audio_chunk_payload import RttInputAudioChunkPayload
+
+SendRttMessage = typing.Union[RttInputAudioChunkPayload, RttEndOfStreamPayload]
diff --git a/src/elevenlabs/workspace/usage/client.py b/src/elevenlabs/workspace/usage/client.py
index c5bbc00c..1e7ebf11 100644
--- a/src/elevenlabs/workspace/usage/client.py
+++ b/src/elevenlabs/workspace/usage/client.py
@@ -54,6 +54,7 @@ def get_usage_by_product_over_time(
End of the time range as a Unix timestamp in milliseconds. Must be at least 2020-01-01.
interval_seconds : typing.Optional[int]
+ Bucket size in seconds. Each row in the response covers this many seconds of usage. For example, pass 3600 for hourly buckets or 86400 for daily buckets.
group_by : typing.Optional[typing.Sequence[BodyGetWorkspaceUsageV1WorkspaceAnalyticsQueryUsageByProductOverTimePostGroupByItem]]
@@ -129,6 +130,7 @@ async def get_usage_by_product_over_time(
End of the time range as a Unix timestamp in milliseconds. Must be at least 2020-01-01.
interval_seconds : typing.Optional[int]
+ Bucket size in seconds. Each row in the response covers this many seconds of usage. For example, pass 3600 for hourly buckets or 86400 for daily buckets.
group_by : typing.Optional[typing.Sequence[BodyGetWorkspaceUsageV1WorkspaceAnalyticsQueryUsageByProductOverTimePostGroupByItem]]
diff --git a/src/elevenlabs/workspace/usage/raw_client.py b/src/elevenlabs/workspace/usage/raw_client.py
index 37c68866..f07e6bc5 100644
--- a/src/elevenlabs/workspace/usage/raw_client.py
+++ b/src/elevenlabs/workspace/usage/raw_client.py
@@ -48,6 +48,7 @@ def get_usage_by_product_over_time(
End of the time range as a Unix timestamp in milliseconds. Must be at least 2020-01-01.
interval_seconds : typing.Optional[int]
+ Bucket size in seconds. Each row in the response covers this many seconds of usage. For example, pass 3600 for hourly buckets or 86400 for daily buckets.
group_by : typing.Optional[typing.Sequence[BodyGetWorkspaceUsageV1WorkspaceAnalyticsQueryUsageByProductOverTimePostGroupByItem]]
@@ -134,6 +135,7 @@ async def get_usage_by_product_over_time(
End of the time range as a Unix timestamp in milliseconds. Must be at least 2020-01-01.
interval_seconds : typing.Optional[int]
+ Bucket size in seconds. Each row in the response covers this many seconds of usage. For example, pass 3600 for hourly buckets or 86400 for daily buckets.
group_by : typing.Optional[typing.Sequence[BodyGetWorkspaceUsageV1WorkspaceAnalyticsQueryUsageByProductOverTimePostGroupByItem]]
diff --git a/tests/test_speech_engine_custom.py b/tests/test_speech_engine_custom.py
index 71247ac9..48d86e72 100644
--- a/tests/test_speech_engine_custom.py
+++ b/tests/test_speech_engine_custom.py
@@ -8,8 +8,8 @@
from elevenlabs.speech_engine.client import SpeechEngineClient as AutogeneratedSpeechEngineClient
from elevenlabs.speech_engine.resource import SpeechEngineResource
from elevenlabs.speech_engine_custom import AsyncSpeechEngineClient, SpeechEngineClient
-from elevenlabs.types.create_speech_engine_response import CreateSpeechEngineResponse
from elevenlabs.types.speech_engine_config import SpeechEngineConfig
+from elevenlabs.types.speech_engine_response import SpeechEngineResponse
def _make_sync_client() -> SpeechEngineClient:
@@ -27,7 +27,7 @@ def _make_async_client() -> AsyncSpeechEngineClient:
def test_create_returns_resource() -> None:
client = _make_sync_client()
- mock_response = CreateSpeechEngineResponse(speech_engine_id="seng_abc")
+ mock_response = MagicMock(spec=SpeechEngineResponse, speech_engine_id="seng_abc")
with patch.object(AutogeneratedSpeechEngineClient, "create", return_value=mock_response):
result = client.create(speech_engine=SpeechEngineConfig(ws_url="wss://test"))
@@ -64,7 +64,7 @@ def test_update_returns_resource() -> None:
@pytest.mark.asyncio
async def test_async_create_returns_resource() -> None:
client = _make_async_client()
- mock_response = CreateSpeechEngineResponse(speech_engine_id="seng_abc")
+ mock_response = MagicMock(spec=SpeechEngineResponse, speech_engine_id="seng_abc")
with patch.object(AutogeneratedAsyncSpeechEngineClient, "create", new_callable=AsyncMock, return_value=mock_response):
result = await client.create(speech_engine=SpeechEngineConfig(ws_url="wss://test"))