diff --git a/.fern/metadata.json b/.fern/metadata.json
index 84259510..ea81d94f 100644
--- a/.fern/metadata.json
+++ b/.fern/metadata.json
@@ -55,5 +55,5 @@
}
]
},
- "originGitCommit": "0b766a5b67854651b3ba064c9e861a38f4e652fb"
+ "originGitCommit": "a9e3ba7ae8eb744be334f5a7e971494b0e80fa21"
}
\ No newline at end of file
diff --git a/poetry.lock b/poetry.lock
index 77f28b4d..49b9dd35 100644
--- a/poetry.lock
+++ b/poetry.lock
@@ -374,13 +374,13 @@ files = [
[[package]]
name = "packaging"
-version = "26.0"
+version = "26.1"
description = "Core utilities for Python packages"
optional = false
python-versions = ">=3.8"
files = [
- {file = "packaging-26.0-py3-none-any.whl", hash = "sha256:b36f1fef9334a5588b4166f8bcd26a14e521f2b55e6b9de3aaa80d3ff7a37529"},
- {file = "packaging-26.0.tar.gz", hash = "sha256:00243ae351a257117b6a241061796684b084ed1c516a08c48a3f7e147a9d80b4"},
+ {file = "packaging-26.1-py3-none-any.whl", hash = "sha256:5d9c0669c6285e491e0ced2eee587eaf67b670d94a19e94e3984a481aba6802f"},
+ {file = "packaging-26.1.tar.gz", hash = "sha256:f042152b681c4bfac5cae2742a55e103d27ab2ec0f3d88037136b6bfe7c9c5de"},
]
[[package]]
diff --git a/pyproject.toml b/pyproject.toml
index 9621d853..634404e3 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -4,7 +4,7 @@ dynamic = ["version"]
[tool.poetry]
name = "elevenlabs"
-version = "2.43.0"
+version = "2.44.0"
description = ""
readme = "README.md"
authors = []
diff --git a/reference.md b/reference.md
index a24b9149..785e09f7 100644
--- a/reference.md
+++ b/reference.md
@@ -881,14 +881,6 @@ Defaults to None.
-
-**avatar_context:** `typing.Optional[AvatarContextRequestModel]` — Avatar context when this generation is made from the Avatars video editor.
-
-
-
-
-
--
-
**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration. You can pass in configuration such as `chunk_size`, and more to customize the request and response.
@@ -1310,14 +1302,6 @@ Defaults to None.
-
-**avatar_context:** `typing.Optional[AvatarContextRequestModel]` — Avatar context when this generation is made from the Avatars video editor.
-
-
-
-
-
--
-
**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration. You can pass in configuration such as `chunk_size`, and more to customize the request and response.
@@ -1602,7 +1586,7 @@ client.text_to_dialogue.convert(
-
-**inputs:** `typing.Sequence[DialogueInput]` — A list of dialogue inputs, each containing text and a voice ID which will be converted into speech. The maximum number of unique voice IDs is 10.
+**inputs:** `typing.Sequence[DialogueInput]` — A list of dialogue inputs, each containing text and a voice ID which will be converted into speech. The maximum number of unique voice IDs is 10. For reliable generation, keep the total character count across all `inputs[].text` values at or below 2,000 characters per request. Longer requests can terminate early in streaming responses or return a validation error.
@@ -1668,14 +1652,6 @@ client.text_to_dialogue.convert(
-
-**avatar_context:** `typing.Optional[AvatarContextRequestModel]` — Avatar context when this generation is made from the Avatars video editor.
-
-
-
-
-
--
-
**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration. You can pass in configuration such as `chunk_size`, and more to customize the request and response.
@@ -1747,7 +1723,7 @@ client.text_to_dialogue.stream(
-
-**inputs:** `typing.Sequence[DialogueInput]` — A list of dialogue inputs, each containing text and a voice ID which will be converted into speech. The maximum number of unique voice IDs is 10.
+**inputs:** `typing.Sequence[DialogueInput]` — A list of dialogue inputs, each containing text and a voice ID which will be converted into speech. The maximum number of unique voice IDs is 10. For reliable generation, keep the total character count across all `inputs[].text` values at or below 2,000 characters per request. Longer requests can terminate early in streaming responses or return a validation error.
@@ -1813,14 +1789,6 @@ client.text_to_dialogue.stream(
-
-**avatar_context:** `typing.Optional[AvatarContextRequestModel]` — Avatar context when this generation is made from the Avatars video editor.
-
-
-
-
-
--
-
**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration. You can pass in configuration such as `chunk_size`, and more to customize the request and response.
@@ -1895,7 +1863,7 @@ for chunk in response.data:
-
-**inputs:** `typing.Sequence[DialogueInput]` — A list of dialogue inputs, each containing text and a voice ID which will be converted into speech. The maximum number of unique voice IDs is 10.
+**inputs:** `typing.Sequence[DialogueInput]` — A list of dialogue inputs, each containing text and a voice ID which will be converted into speech. The maximum number of unique voice IDs is 10. For reliable generation, keep the total character count across all `inputs[].text` values at or below 2,000 characters per request. Longer requests can terminate early in streaming responses or return a validation error.
@@ -2031,7 +1999,7 @@ client.text_to_dialogue.convert_with_timestamps(
-
-**inputs:** `typing.Sequence[DialogueInput]` — A list of dialogue inputs, each containing text and a voice ID which will be converted into speech. The maximum number of unique voice IDs is 10.
+**inputs:** `typing.Sequence[DialogueInput]` — A list of dialogue inputs, each containing text and a voice ID which will be converted into speech. The maximum number of unique voice IDs is 10. For reliable generation, keep the total character count across all `inputs[].text` values at or below 2,000 characters per request. Longer requests can terminate early in streaming responses or return a validation error.
@@ -4056,7 +4024,7 @@ client.studio.create_podcast(
-
-**quality_preset:** `typing.Optional[BodyCreatePodcastV1StudioPodcastsPostQualityPreset]`
+**quality_preset:** `typing.Optional[QualityPresetType]`
Output quality of the generated audio. Must be one of:
'standard' - standard output format, 128kbps with 44.1kHz sample rate.
@@ -5698,7 +5666,7 @@ client.audio_native.update_content_from_url(
-
-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. 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.
@@ -6945,6 +6913,14 @@ typing.Optional[core.File]` — See core.File for more documentation
-
+**detect_speaker_roles:** `typing.Optional[bool]` — Whether to detect speaker roles (agent vs customer). Requires diarize=true. Cannot be used with use_multi_channel=true. When enabled, speaker_id values will be 'agent' and 'customer' instead of 'speaker_0', 'speaker_1', etc. Usage incurs an additional 10% surcharge on base transcription cost.
+
+
+
+
+
+-
+
**entity_redaction:** `typing.Optional[SpeechToTextConvertRequestEntityRedaction]` — Redact entities from the transcript text. Accepts the same format as entity_detection: 'all', a category ('pii', 'phi'), or specific entity types. Must be a subset of entity_detection. When redaction is enabled, the entities field will not be returned. Usage of this parameter will incur an additional 30% surcharge on the base transcription cost.
@@ -10173,6 +10149,7 @@ client.conversational_ai.tests.list(
parent_folder_id="parent_folder_id",
include_folders=True,
sort_mode="default",
+ sharing_mode="all",
)
```
@@ -10245,6 +10222,14 @@ client.conversational_ai.tests.list(
-
+**sharing_mode:** `typing.Optional[TestSharingMode]` — Filter test visibility. Use `shared_with_me` to return only tests/folders shared with the current user that they did not create.
+
+
+
+
+
+-
+
**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.
@@ -12014,6 +11999,7 @@ client = ElevenLabs(
client.conversational_ai.secrets.list(
page_size=1,
dependency_limit=1,
+ search="search",
cursor="cursor",
)
@@ -12047,6 +12033,14 @@ client.conversational_ai.secrets.list(
-
+**search:** `typing.Optional[str]` — If specified, returns only secrets whose names start with this string.
+
+
+
+
+
+-
+
**cursor:** `typing.Optional[str]` — Used for fetching next page. Cursor is returned in the response.
@@ -12142,6 +12136,76 @@ client.conversational_ai.secrets.create(
+
+
+
+
+client.conversational_ai.secrets.get(...)
+
+-
+
+#### 📝 Description
+
+
+-
+
+
+-
+
+Get a workspace secret by ID
+
+
+
+
+
+#### 🔌 Usage
+
+
+-
+
+
+-
+
+```python
+from elevenlabs import ElevenLabs
+
+client = ElevenLabs(
+ api_key="YOUR_API_KEY",
+)
+client.conversational_ai.secrets.get(
+ secret_id="secret_id",
+)
+
+```
+
+
+
+
+
+#### ⚙️ Parameters
+
+
+-
+
+
+-
+
+**secret_id:** `str`
+
+
+
+
+
+-
+
+**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.
+
+
+
+
+
+
+
@@ -17881,6 +17945,14 @@ client.conversational_ai.mcp_servers.tool_configs.create(
-
+**response_mocks:** `typing.Optional[typing.Sequence[ToolResponseMockConfigInput]]` — Mock responses with optional parameter conditions. Evaluated top-to-bottom; first match wins.
+
+
+
+
+
+-
+
**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.
@@ -18181,6 +18253,14 @@ client.conversational_ai.mcp_servers.tool_configs.update(
-
+**response_mocks:** `typing.Optional[typing.Sequence[ToolResponseMockConfigInput]]` — Mock responses with optional parameter conditions. Evaluated top-to-bottom; first match wins.
+
+
+
+
+
+-
+
**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.
@@ -18759,6 +18839,140 @@ client.conversational_ai.tests.invocations.resubmit(
+
+
+
+
+## ConversationalAi Tools Executions
+client.conversational_ai.tools.executions.get(...)
+
+-
+
+#### 📝 Description
+
+
+-
+
+
+-
+
+Get paginated list of tool executions for a specific tool.
+
+
+
+
+
+#### 🔌 Usage
+
+
+-
+
+
+-
+
+```python
+from elevenlabs import ElevenLabs
+
+client = ElevenLabs(
+ api_key="YOUR_API_KEY",
+)
+client.conversational_ai.tools.executions.get(
+ tool_id="tool_id",
+ cursor="cursor",
+ page_size=1,
+ is_error=True,
+ agent_id="agent_id",
+ branch_id="branch_id",
+ start_time=1.1,
+ end_time=1.1,
+)
+
+```
+
+
+
+
+
+#### ⚙️ Parameters
+
+
+-
+
+
+-
+
+**tool_id:** `str` — ID of the requested tool.
+
+
+
+
+
+-
+
+**cursor:** `typing.Optional[str]` — Used for fetching next page. Cursor is returned in the response.
+
+
+
+
+
+-
+
+**page_size:** `typing.Optional[int]` — How many documents to return at maximum. Can not exceed 100, defaults to 30.
+
+
+
+
+
+-
+
+**is_error:** `typing.Optional[bool]` — Filter by error status. If not provided, returns all executions.
+
+
+
+
+
+-
+
+**agent_id:** `typing.Optional[str]` — Filter by agent ID.
+
+
+
+
+
+-
+
+**branch_id:** `typing.Optional[str]` — Filter by agent branch ID.
+
+
+
+
+
+-
+
+**start_time:** `typing.Optional[float]` — Filter executions from this Unix timestamp (inclusive).
+
+
+
+
+
+-
+
+**end_time:** `typing.Optional[float]` — Filter executions until this Unix timestamp (inclusive).
+
+
+
+
+
+-
+
+**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.
+
+
+
+
+
+
+
@@ -21255,7 +21469,7 @@ typing.Optional[core.File]` — See core.File for more documentation
-
-**quality_preset:** `typing.Optional[ProjectsCreateRequestQualityPreset]`
+**quality_preset:** `typing.Optional[QualityPresetType]`
Output quality of the generated audio. Must be one of:
'standard' - standard output format, 128kbps with 44.1kHz sample rate.
@@ -26012,6 +26226,114 @@ client.workspace.resources.unshare(
+
+
+
+
+## Workspace Usage
+client.workspace.usage.get_usage_by_product_over_time(...)
+
+-
+
+#### 📝 Description
+
+
+-
+
+
+-
+
+Returns credit usage broken down by product type over time. Timestamps are Unix milliseconds. The response is a tabular structure with columns, column_types, column_units, and rows.
+
+
+
+
+
+#### 🔌 Usage
+
+
+-
+
+
+-
+
+```python
+from elevenlabs import ElevenLabs
+
+client = ElevenLabs(
+ api_key="YOUR_API_KEY",
+)
+client.workspace.usage.get_usage_by_product_over_time(
+ start_time=1,
+ end_time=1,
+)
+
+```
+
+
+
+
+
+#### ⚙️ Parameters
+
+
+-
+
+
+-
+
+**start_time:** `int`
+
+
+
+
+
+-
+
+**end_time:** `int`
+
+
+
+
+
+-
+
+**interval_seconds:** `typing.Optional[int]`
+
+
+
+
+
+-
+
+**group_by:** `typing.Optional[
+ typing.Sequence[
+ BodyGetWorkspaceUsageV1WorkspaceAnalyticsQueryUsageByProductOverTimePostGroupByItem
+ ]
+]`
+
+
+
+
+
+-
+
+**filters:** `typing.Optional[typing.Sequence[ColumnFilter]]`
+
+
+
+
+
+-
+
+**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.
+
+
+
+
+
+
+
diff --git a/src/elevenlabs/__init__.py b/src/elevenlabs/__init__.py
index 2a619577..d6a67e01 100644
--- a/src/elevenlabs/__init__.py
+++ b/src/elevenlabs/__init__.py
@@ -78,6 +78,9 @@
Alignment,
AllowedOutputFormats,
AllowlistItem,
+ AnalysisProperty,
+ AnalysisPropertyConstantValue,
+ AnalysisPropertyType,
AnalysisScope,
ApiIntegrationOAuth2AuthCodeResponse,
ApiIntegrationOAuth2AuthCodeResponseScopeSeparator,
@@ -90,16 +93,16 @@
ApiIntegrationWebhookToolConfigInput,
ApiIntegrationWebhookToolConfigOutput,
ArrayJsonSchemaPropertyInput,
+ ArrayJsonSchemaPropertyInputConstantValueItem,
ArrayJsonSchemaPropertyInputItems,
ArrayJsonSchemaPropertyOutput,
+ ArrayJsonSchemaPropertyOutputConstantValueItem,
ArrayJsonSchemaPropertyOutputItems,
AsrConversationalConfig,
AsrConversationalConfigWorkflowOverride,
AsrInputFormat,
AsrProvider,
AsrQuality,
- AssetTranscription,
- AssetTranscriptionWord,
AstAdditionOperatorNodeInput,
AstAdditionOperatorNodeOutput,
AstAndOperatorNodeInput,
@@ -139,6 +142,7 @@
AstNodeInput_LteOperator,
AstNodeInput_MulOperator,
AstNodeInput_NeqOperator,
+ AstNodeInput_NullLiteral,
AstNodeInput_NumberLiteral,
AstNodeInput_OrOperator,
AstNodeInput_StringLiteral,
@@ -158,12 +162,15 @@
AstNodeOutput_LteOperator,
AstNodeOutput_MulOperator,
AstNodeOutput_NeqOperator,
+ AstNodeOutput_NullLiteral,
AstNodeOutput_NumberLiteral,
AstNodeOutput_OrOperator,
AstNodeOutput_StringLiteral,
AstNodeOutput_SubOperator,
AstNotEqualsOperatorNodeInput,
AstNotEqualsOperatorNodeOutput,
+ AstNullNodeInput,
+ AstNullNodeOutput,
AstNumberNodeInput,
AstNumberNodeOutput,
AstOrOperatorNodeInput,
@@ -204,8 +211,6 @@
AuthSettings,
AuthorizationMethod,
AutoSyncInfo,
- AvatarContextRequestModel,
- AvatarContextResponseModel,
BackupLlmDefault,
BackupLlmDisabled,
BackupLlmOverride,
@@ -283,6 +288,10 @@
CloseSocket,
CoachedAgentSettings,
CoachingAgentSettings,
+ ColumnFilter,
+ ColumnFilterOperation,
+ ColumnFilterValuesItem,
+ ColumnUnit,
CommittedTranscriptPayload,
CommittedTranscriptWithTimestampsPayload,
ConfigEntityType,
@@ -445,6 +454,7 @@
CreateClientParams,
CreateCustomHeaderAuthRequest,
CreateHolidayParams,
+ CreateLocationParams,
CreateMtlsAuthRequest,
CreateOAuth2ClientCredsRequest,
CreateOAuth2JwtRequest,
@@ -501,6 +511,7 @@
DeleteDubbingResponseModel,
DeleteHistoryItemResponse,
DeleteHolidayParams,
+ DeleteLocationParams,
DeleteProductParams,
DeleteProjectRequest,
DeleteProjectResponseModel,
@@ -555,12 +566,20 @@
DubbingTranscriptsResponseModel,
DubbingTranscriptsResponseModelTranscriptFormat,
DynamicVariableAssignment,
+ DynamicVariableContainerValueTypeInput,
+ DynamicVariableContainerValueTypeOutput,
+ DynamicVariableNestedValueTypeInput,
+ DynamicVariableNestedValueTypeOutput,
DynamicVariableSchemaOverride,
DynamicVariableUpdateCommonModel,
- DynamicVariablesConfig,
- DynamicVariablesConfigDynamicVariablePlaceholdersValue,
- DynamicVariablesConfigWorkflowOverride,
- DynamicVariablesConfigWorkflowOverrideDynamicVariablePlaceholdersValue,
+ DynamicVariablesConfigInput,
+ DynamicVariablesConfigInputDynamicVariablePlaceholdersValue,
+ DynamicVariablesConfigOutput,
+ DynamicVariablesConfigOutputDynamicVariablePlaceholdersValue,
+ DynamicVariablesConfigWorkflowOverrideInput,
+ DynamicVariablesConfigWorkflowOverrideInputDynamicVariablePlaceholdersValue,
+ DynamicVariablesConfigWorkflowOverrideOutput,
+ DynamicVariablesConfigWorkflowOverrideOutputDynamicVariablePlaceholdersValue,
EditChapterResponseModel,
EditProjectResponseModel,
EditVoiceResponseModel,
@@ -592,6 +611,7 @@
ExportOptions_Srt,
ExportOptions_Txt,
ExtendedSubscriptionResponseModelCurrency,
+ ExtendedSubscriptionResponseModelMaxCreditLimitExtension,
ExtendedSubscriptionResponseModelPendingChange,
FeatureStatusCommonModel,
FeaturesUsageCommonModel,
@@ -717,6 +737,7 @@
GetToolDependentAgentsResponseModelAgentsItem,
GetToolDependentAgentsResponseModelAgentsItem_Available,
GetToolDependentAgentsResponseModelAgentsItem_Unknown,
+ GetToolExecutionsPageResponseModel,
GetVoicesResponse,
GetVoicesV2Response,
GetWhatsAppAccountResponse,
@@ -788,6 +809,7 @@
ListClientInteractionsParams,
ListClientsParams,
ListHolidaysParams,
+ ListLocationsParams,
ListMcpToolsResponseModel,
ListProductsParams,
ListRentalServicesParams,
@@ -842,11 +864,16 @@
McpServersResponseModel,
McpToolApprovalHash,
McpToolApprovalPolicy,
- McpToolConfigOverride,
- McpToolConfigOverrideInputOverridesValue,
- McpToolConfigOverrideInputOverridesValue_Constant,
- McpToolConfigOverrideInputOverridesValue_DynamicVariable,
- McpToolConfigOverrideInputOverridesValue_Llm,
+ McpToolConfigOverrideInput,
+ McpToolConfigOverrideInputInputOverridesValue,
+ McpToolConfigOverrideInputInputOverridesValue_Constant,
+ McpToolConfigOverrideInputInputOverridesValue_DynamicVariable,
+ McpToolConfigOverrideInputInputOverridesValue_Llm,
+ McpToolConfigOverrideOutput,
+ McpToolConfigOverrideOutputInputOverridesValue,
+ McpToolConfigOverrideOutputInputOverridesValue_Constant,
+ McpToolConfigOverrideOutputInputOverridesValue_DynamicVariable,
+ McpToolConfigOverrideOutputInputOverridesValue_Llm,
MergingStrategy,
MessageSearchSortBy,
MessagesSearchResponse,
@@ -945,7 +972,6 @@
ProjectExtendedResponseModelAssetsItem_Image,
ProjectExtendedResponseModelAssetsItem_Video,
ProjectExtendedResponseModelFiction,
- ProjectExtendedResponseModelQualityPreset,
ProjectExtendedResponseModelSourceType,
ProjectExtendedResponseModelTargetAudience,
ProjectExternalAudioResponseModel,
@@ -1028,6 +1054,7 @@
PronunciationDictionaryVersionResponseModel,
PronunciationDictionaryVersionResponseModelPermissionOnResource,
PydanticPronunciationDictionaryVersionLocator,
+ QualityPresetType,
QueryParamsJsonSchema,
RagChunkMetadata,
RagConfig,
@@ -1177,6 +1204,7 @@
Subscription,
SubscriptionResponse,
SubscriptionResponseModelCurrency,
+ SubscriptionResponseModelMaxCreditLimitExtension,
SubscriptionStatusType,
SuggestedAudioTag,
SupportedVoice,
@@ -1209,6 +1237,7 @@
TestRunMetadata,
TestRunMetadataTestType,
TestRunStatus,
+ TestSharingMode,
TestToolResultModel,
TestType,
TestsFeatureUsageCommonModel,
@@ -1231,6 +1260,12 @@
ToolCallUnitTestModelDynamicVariablesValue,
ToolErrorHandlingMode,
ToolExecutionMode,
+ ToolExecutionResponseModel,
+ ToolExecutionResponseModelToolCallDetails,
+ ToolExecutionResponseModelToolCallDetails_ApiIntegrationWebhook,
+ ToolExecutionResponseModelToolCallDetails_Client,
+ ToolExecutionResponseModelToolCallDetails_Mcp,
+ ToolExecutionResponseModelToolCallDetails_Webhook,
ToolMockConfig,
ToolRequestModel,
ToolRequestModelToolConfig,
@@ -1313,6 +1348,7 @@
UpdateClientParams,
UpdateCustomerFacingConfigParams,
UpdateHolidayParams,
+ UpdateLocationParams,
UpdateProductParams,
UpdateProjectRequest,
UpdatePronunciationDictionariesRequest,
@@ -1519,6 +1555,9 @@
WorkflowToolResponseModelOutputStepsItem_NestedTools,
WorkflowUnconditionalModelInput,
WorkflowUnconditionalModelOutput,
+ WorkspaceAnalyticsQueryResponseModel,
+ WorkspaceAnalyticsQueryResponseModelColumnTypesItem,
+ WorkspaceAnalyticsQueryResponseModelRowsItemItem,
WorkspaceApiKeyListResponseModel,
WorkspaceApiKeyResponseModel,
WorkspaceBatchCallsResponse,
@@ -1633,7 +1672,6 @@
BodyCreatePodcastV1StudioPodcastsPostMode,
BodyCreatePodcastV1StudioPodcastsPostMode_Bulletin,
BodyCreatePodcastV1StudioPodcastsPostMode_Conversation,
- BodyCreatePodcastV1StudioPodcastsPostQualityPreset,
BodyCreatePodcastV1StudioPodcastsPostSource,
BodyCreatePodcastV1StudioPodcastsPostSourceTwoItem,
BodyCreatePodcastV1StudioPodcastsPostSourceTwoItem_Text,
@@ -1732,6 +1770,9 @@
"Alignment": ".types",
"AllowedOutputFormats": ".types",
"AllowlistItem": ".types",
+ "AnalysisProperty": ".types",
+ "AnalysisPropertyConstantValue": ".types",
+ "AnalysisPropertyType": ".types",
"AnalysisScope": ".types",
"ApiIntegrationOAuth2AuthCodeResponse": ".types",
"ApiIntegrationOAuth2AuthCodeResponseScopeSeparator": ".types",
@@ -1744,16 +1785,16 @@
"ApiIntegrationWebhookToolConfigInput": ".types",
"ApiIntegrationWebhookToolConfigOutput": ".types",
"ArrayJsonSchemaPropertyInput": ".types",
+ "ArrayJsonSchemaPropertyInputConstantValueItem": ".types",
"ArrayJsonSchemaPropertyInputItems": ".types",
"ArrayJsonSchemaPropertyOutput": ".types",
+ "ArrayJsonSchemaPropertyOutputConstantValueItem": ".types",
"ArrayJsonSchemaPropertyOutputItems": ".types",
"AsrConversationalConfig": ".types",
"AsrConversationalConfigWorkflowOverride": ".types",
"AsrInputFormat": ".types",
"AsrProvider": ".types",
"AsrQuality": ".types",
- "AssetTranscription": ".types",
- "AssetTranscriptionWord": ".types",
"AstAdditionOperatorNodeInput": ".types",
"AstAdditionOperatorNodeOutput": ".types",
"AstAndOperatorNodeInput": ".types",
@@ -1793,6 +1834,7 @@
"AstNodeInput_LteOperator": ".types",
"AstNodeInput_MulOperator": ".types",
"AstNodeInput_NeqOperator": ".types",
+ "AstNodeInput_NullLiteral": ".types",
"AstNodeInput_NumberLiteral": ".types",
"AstNodeInput_OrOperator": ".types",
"AstNodeInput_StringLiteral": ".types",
@@ -1812,12 +1854,15 @@
"AstNodeOutput_LteOperator": ".types",
"AstNodeOutput_MulOperator": ".types",
"AstNodeOutput_NeqOperator": ".types",
+ "AstNodeOutput_NullLiteral": ".types",
"AstNodeOutput_NumberLiteral": ".types",
"AstNodeOutput_OrOperator": ".types",
"AstNodeOutput_StringLiteral": ".types",
"AstNodeOutput_SubOperator": ".types",
"AstNotEqualsOperatorNodeInput": ".types",
"AstNotEqualsOperatorNodeOutput": ".types",
+ "AstNullNodeInput": ".types",
+ "AstNullNodeOutput": ".types",
"AstNumberNodeInput": ".types",
"AstNumberNodeOutput": ".types",
"AstOrOperatorNodeInput": ".types",
@@ -1863,8 +1908,6 @@
"AuthSettings": ".types",
"AuthorizationMethod": ".types",
"AutoSyncInfo": ".types",
- "AvatarContextRequestModel": ".types",
- "AvatarContextResponseModel": ".types",
"BackupLlmDefault": ".types",
"BackupLlmDisabled": ".types",
"BackupLlmOverride": ".types",
@@ -1888,7 +1931,6 @@
"BodyCreatePodcastV1StudioPodcastsPostMode": ".studio",
"BodyCreatePodcastV1StudioPodcastsPostMode_Bulletin": ".studio",
"BodyCreatePodcastV1StudioPodcastsPostMode_Conversation": ".studio",
- "BodyCreatePodcastV1StudioPodcastsPostQualityPreset": ".studio",
"BodyCreatePodcastV1StudioPodcastsPostSource": ".studio",
"BodyCreatePodcastV1StudioPodcastsPostSourceTwoItem": ".studio",
"BodyCreatePodcastV1StudioPodcastsPostSourceTwoItem_Text": ".studio",
@@ -1965,6 +2007,10 @@
"CloseSocket": ".types",
"CoachedAgentSettings": ".types",
"CoachingAgentSettings": ".types",
+ "ColumnFilter": ".types",
+ "ColumnFilterOperation": ".types",
+ "ColumnFilterValuesItem": ".types",
+ "ColumnUnit": ".types",
"CommitStrategy": ".realtime",
"CommittedTranscriptPayload": ".types",
"CommittedTranscriptWithTimestampsPayload": ".types",
@@ -2129,6 +2175,7 @@
"CreateClientParams": ".types",
"CreateCustomHeaderAuthRequest": ".types",
"CreateHolidayParams": ".types",
+ "CreateLocationParams": ".types",
"CreateMtlsAuthRequest": ".types",
"CreateOAuth2ClientCredsRequest": ".types",
"CreateOAuth2JwtRequest": ".types",
@@ -2185,6 +2232,7 @@
"DeleteDubbingResponseModel": ".types",
"DeleteHistoryItemResponse": ".types",
"DeleteHolidayParams": ".types",
+ "DeleteLocationParams": ".types",
"DeleteProductParams": ".types",
"DeleteProjectRequest": ".types",
"DeleteProjectResponseModel": ".types",
@@ -2243,12 +2291,20 @@
"DubbingTranscriptsResponseModel": ".types",
"DubbingTranscriptsResponseModelTranscriptFormat": ".types",
"DynamicVariableAssignment": ".types",
+ "DynamicVariableContainerValueTypeInput": ".types",
+ "DynamicVariableContainerValueTypeOutput": ".types",
+ "DynamicVariableNestedValueTypeInput": ".types",
+ "DynamicVariableNestedValueTypeOutput": ".types",
"DynamicVariableSchemaOverride": ".types",
"DynamicVariableUpdateCommonModel": ".types",
- "DynamicVariablesConfig": ".types",
- "DynamicVariablesConfigDynamicVariablePlaceholdersValue": ".types",
- "DynamicVariablesConfigWorkflowOverride": ".types",
- "DynamicVariablesConfigWorkflowOverrideDynamicVariablePlaceholdersValue": ".types",
+ "DynamicVariablesConfigInput": ".types",
+ "DynamicVariablesConfigInputDynamicVariablePlaceholdersValue": ".types",
+ "DynamicVariablesConfigOutput": ".types",
+ "DynamicVariablesConfigOutputDynamicVariablePlaceholdersValue": ".types",
+ "DynamicVariablesConfigWorkflowOverrideInput": ".types",
+ "DynamicVariablesConfigWorkflowOverrideInputDynamicVariablePlaceholdersValue": ".types",
+ "DynamicVariablesConfigWorkflowOverrideOutput": ".types",
+ "DynamicVariablesConfigWorkflowOverrideOutputDynamicVariablePlaceholdersValue": ".types",
"EditChapterResponseModel": ".types",
"EditProjectResponseModel": ".types",
"EditVoiceResponseModel": ".types",
@@ -2287,6 +2343,7 @@
"ExportOptions_Srt": ".types",
"ExportOptions_Txt": ".types",
"ExtendedSubscriptionResponseModelCurrency": ".types",
+ "ExtendedSubscriptionResponseModelMaxCreditLimitExtension": ".types",
"ExtendedSubscriptionResponseModelPendingChange": ".types",
"FeatureStatusCommonModel": ".types",
"FeaturesUsageCommonModel": ".types",
@@ -2413,6 +2470,7 @@
"GetToolDependentAgentsResponseModelAgentsItem": ".types",
"GetToolDependentAgentsResponseModelAgentsItem_Available": ".types",
"GetToolDependentAgentsResponseModelAgentsItem_Unknown": ".types",
+ "GetToolExecutionsPageResponseModel": ".types",
"GetVoicesResponse": ".types",
"GetVoicesV2Response": ".types",
"GetWhatsAppAccountResponse": ".types",
@@ -2486,6 +2544,7 @@
"ListClientInteractionsParams": ".types",
"ListClientsParams": ".types",
"ListHolidaysParams": ".types",
+ "ListLocationsParams": ".types",
"ListMcpToolsResponseModel": ".types",
"ListProductsParams": ".types",
"ListRentalServicesParams": ".types",
@@ -2540,11 +2599,16 @@
"McpServersResponseModel": ".types",
"McpToolApprovalHash": ".types",
"McpToolApprovalPolicy": ".types",
- "McpToolConfigOverride": ".types",
- "McpToolConfigOverrideInputOverridesValue": ".types",
- "McpToolConfigOverrideInputOverridesValue_Constant": ".types",
- "McpToolConfigOverrideInputOverridesValue_DynamicVariable": ".types",
- "McpToolConfigOverrideInputOverridesValue_Llm": ".types",
+ "McpToolConfigOverrideInput": ".types",
+ "McpToolConfigOverrideInputInputOverridesValue": ".types",
+ "McpToolConfigOverrideInputInputOverridesValue_Constant": ".types",
+ "McpToolConfigOverrideInputInputOverridesValue_DynamicVariable": ".types",
+ "McpToolConfigOverrideInputInputOverridesValue_Llm": ".types",
+ "McpToolConfigOverrideOutput": ".types",
+ "McpToolConfigOverrideOutputInputOverridesValue": ".types",
+ "McpToolConfigOverrideOutputInputOverridesValue_Constant": ".types",
+ "McpToolConfigOverrideOutputInputOverridesValue_DynamicVariable": ".types",
+ "McpToolConfigOverrideOutputInputOverridesValue_Llm": ".types",
"MergingStrategy": ".types",
"MessageSearchSortBy": ".types",
"MessagesSearchResponse": ".types",
@@ -2645,7 +2709,6 @@
"ProjectExtendedResponseModelAssetsItem_Image": ".types",
"ProjectExtendedResponseModelAssetsItem_Video": ".types",
"ProjectExtendedResponseModelFiction": ".types",
- "ProjectExtendedResponseModelQualityPreset": ".types",
"ProjectExtendedResponseModelSourceType": ".types",
"ProjectExtendedResponseModelTargetAudience": ".types",
"ProjectExternalAudioResponseModel": ".types",
@@ -2730,6 +2793,7 @@
"PronunciationDictionaryVersionResponseModel": ".types",
"PronunciationDictionaryVersionResponseModelPermissionOnResource": ".types",
"PydanticPronunciationDictionaryVersionLocator": ".types",
+ "QualityPresetType": ".types",
"QueryParamsJsonSchema": ".types",
"RagChunkMetadata": ".types",
"RagConfig": ".types",
@@ -2899,6 +2963,7 @@
"Subscription": ".types",
"SubscriptionResponse": ".types",
"SubscriptionResponseModelCurrency": ".types",
+ "SubscriptionResponseModelMaxCreditLimitExtension": ".types",
"SubscriptionStatusType": ".types",
"SuggestedAudioTag": ".types",
"SupportedVoice": ".types",
@@ -2931,6 +2996,7 @@
"TestRunMetadata": ".types",
"TestRunMetadataTestType": ".types",
"TestRunStatus": ".types",
+ "TestSharingMode": ".types",
"TestToolResultModel": ".types",
"TestType": ".types",
"TestsFeatureUsageCommonModel": ".types",
@@ -2961,6 +3027,12 @@
"ToolCallUnitTestModelDynamicVariablesValue": ".types",
"ToolErrorHandlingMode": ".types",
"ToolExecutionMode": ".types",
+ "ToolExecutionResponseModel": ".types",
+ "ToolExecutionResponseModelToolCallDetails": ".types",
+ "ToolExecutionResponseModelToolCallDetails_ApiIntegrationWebhook": ".types",
+ "ToolExecutionResponseModelToolCallDetails_Client": ".types",
+ "ToolExecutionResponseModelToolCallDetails_Mcp": ".types",
+ "ToolExecutionResponseModelToolCallDetails_Webhook": ".types",
"ToolMockConfig": ".types",
"ToolRequestModel": ".types",
"ToolRequestModelToolConfig": ".types",
@@ -3046,6 +3118,7 @@
"UpdateCustomerFacingConfigParams": ".types",
"UpdateEnvironmentVariableRequestValuesValue": ".environment_variables",
"UpdateHolidayParams": ".types",
+ "UpdateLocationParams": ".types",
"UpdateProductParams": ".types",
"UpdateProjectRequest": ".types",
"UpdatePronunciationDictionariesRequest": ".types",
@@ -3255,6 +3328,9 @@
"WorkflowToolResponseModelOutputStepsItem_NestedTools": ".types",
"WorkflowUnconditionalModelInput": ".types",
"WorkflowUnconditionalModelOutput": ".types",
+ "WorkspaceAnalyticsQueryResponseModel": ".types",
+ "WorkspaceAnalyticsQueryResponseModelColumnTypesItem": ".types",
+ "WorkspaceAnalyticsQueryResponseModelRowsItemItem": ".types",
"WorkspaceApiKeyListResponseModel": ".types",
"WorkspaceApiKeyResponseModel": ".types",
"WorkspaceBatchCallsResponse": ".types",
@@ -3396,6 +3472,9 @@ def __dir__():
"Alignment",
"AllowedOutputFormats",
"AllowlistItem",
+ "AnalysisProperty",
+ "AnalysisPropertyConstantValue",
+ "AnalysisPropertyType",
"AnalysisScope",
"ApiIntegrationOAuth2AuthCodeResponse",
"ApiIntegrationOAuth2AuthCodeResponseScopeSeparator",
@@ -3408,16 +3487,16 @@ def __dir__():
"ApiIntegrationWebhookToolConfigInput",
"ApiIntegrationWebhookToolConfigOutput",
"ArrayJsonSchemaPropertyInput",
+ "ArrayJsonSchemaPropertyInputConstantValueItem",
"ArrayJsonSchemaPropertyInputItems",
"ArrayJsonSchemaPropertyOutput",
+ "ArrayJsonSchemaPropertyOutputConstantValueItem",
"ArrayJsonSchemaPropertyOutputItems",
"AsrConversationalConfig",
"AsrConversationalConfigWorkflowOverride",
"AsrInputFormat",
"AsrProvider",
"AsrQuality",
- "AssetTranscription",
- "AssetTranscriptionWord",
"AstAdditionOperatorNodeInput",
"AstAdditionOperatorNodeOutput",
"AstAndOperatorNodeInput",
@@ -3457,6 +3536,7 @@ def __dir__():
"AstNodeInput_LteOperator",
"AstNodeInput_MulOperator",
"AstNodeInput_NeqOperator",
+ "AstNodeInput_NullLiteral",
"AstNodeInput_NumberLiteral",
"AstNodeInput_OrOperator",
"AstNodeInput_StringLiteral",
@@ -3476,12 +3556,15 @@ def __dir__():
"AstNodeOutput_LteOperator",
"AstNodeOutput_MulOperator",
"AstNodeOutput_NeqOperator",
+ "AstNodeOutput_NullLiteral",
"AstNodeOutput_NumberLiteral",
"AstNodeOutput_OrOperator",
"AstNodeOutput_StringLiteral",
"AstNodeOutput_SubOperator",
"AstNotEqualsOperatorNodeInput",
"AstNotEqualsOperatorNodeOutput",
+ "AstNullNodeInput",
+ "AstNullNodeOutput",
"AstNumberNodeInput",
"AstNumberNodeOutput",
"AstOrOperatorNodeInput",
@@ -3527,8 +3610,6 @@ def __dir__():
"AuthSettings",
"AuthorizationMethod",
"AutoSyncInfo",
- "AvatarContextRequestModel",
- "AvatarContextResponseModel",
"BackupLlmDefault",
"BackupLlmDisabled",
"BackupLlmOverride",
@@ -3552,7 +3633,6 @@ def __dir__():
"BodyCreatePodcastV1StudioPodcastsPostMode",
"BodyCreatePodcastV1StudioPodcastsPostMode_Bulletin",
"BodyCreatePodcastV1StudioPodcastsPostMode_Conversation",
- "BodyCreatePodcastV1StudioPodcastsPostQualityPreset",
"BodyCreatePodcastV1StudioPodcastsPostSource",
"BodyCreatePodcastV1StudioPodcastsPostSourceTwoItem",
"BodyCreatePodcastV1StudioPodcastsPostSourceTwoItem_Text",
@@ -3629,6 +3709,10 @@ def __dir__():
"CloseSocket",
"CoachedAgentSettings",
"CoachingAgentSettings",
+ "ColumnFilter",
+ "ColumnFilterOperation",
+ "ColumnFilterValuesItem",
+ "ColumnUnit",
"CommitStrategy",
"CommittedTranscriptPayload",
"CommittedTranscriptWithTimestampsPayload",
@@ -3793,6 +3877,7 @@ def __dir__():
"CreateClientParams",
"CreateCustomHeaderAuthRequest",
"CreateHolidayParams",
+ "CreateLocationParams",
"CreateMtlsAuthRequest",
"CreateOAuth2ClientCredsRequest",
"CreateOAuth2JwtRequest",
@@ -3849,6 +3934,7 @@ def __dir__():
"DeleteDubbingResponseModel",
"DeleteHistoryItemResponse",
"DeleteHolidayParams",
+ "DeleteLocationParams",
"DeleteProductParams",
"DeleteProjectRequest",
"DeleteProjectResponseModel",
@@ -3907,12 +3993,20 @@ def __dir__():
"DubbingTranscriptsResponseModel",
"DubbingTranscriptsResponseModelTranscriptFormat",
"DynamicVariableAssignment",
+ "DynamicVariableContainerValueTypeInput",
+ "DynamicVariableContainerValueTypeOutput",
+ "DynamicVariableNestedValueTypeInput",
+ "DynamicVariableNestedValueTypeOutput",
"DynamicVariableSchemaOverride",
"DynamicVariableUpdateCommonModel",
- "DynamicVariablesConfig",
- "DynamicVariablesConfigDynamicVariablePlaceholdersValue",
- "DynamicVariablesConfigWorkflowOverride",
- "DynamicVariablesConfigWorkflowOverrideDynamicVariablePlaceholdersValue",
+ "DynamicVariablesConfigInput",
+ "DynamicVariablesConfigInputDynamicVariablePlaceholdersValue",
+ "DynamicVariablesConfigOutput",
+ "DynamicVariablesConfigOutputDynamicVariablePlaceholdersValue",
+ "DynamicVariablesConfigWorkflowOverrideInput",
+ "DynamicVariablesConfigWorkflowOverrideInputDynamicVariablePlaceholdersValue",
+ "DynamicVariablesConfigWorkflowOverrideOutput",
+ "DynamicVariablesConfigWorkflowOverrideOutputDynamicVariablePlaceholdersValue",
"EditChapterResponseModel",
"EditProjectResponseModel",
"EditVoiceResponseModel",
@@ -3951,6 +4045,7 @@ def __dir__():
"ExportOptions_Srt",
"ExportOptions_Txt",
"ExtendedSubscriptionResponseModelCurrency",
+ "ExtendedSubscriptionResponseModelMaxCreditLimitExtension",
"ExtendedSubscriptionResponseModelPendingChange",
"FeatureStatusCommonModel",
"FeaturesUsageCommonModel",
@@ -4077,6 +4172,7 @@ def __dir__():
"GetToolDependentAgentsResponseModelAgentsItem",
"GetToolDependentAgentsResponseModelAgentsItem_Available",
"GetToolDependentAgentsResponseModelAgentsItem_Unknown",
+ "GetToolExecutionsPageResponseModel",
"GetVoicesResponse",
"GetVoicesV2Response",
"GetWhatsAppAccountResponse",
@@ -4150,6 +4246,7 @@ def __dir__():
"ListClientInteractionsParams",
"ListClientsParams",
"ListHolidaysParams",
+ "ListLocationsParams",
"ListMcpToolsResponseModel",
"ListProductsParams",
"ListRentalServicesParams",
@@ -4204,11 +4301,16 @@ def __dir__():
"McpServersResponseModel",
"McpToolApprovalHash",
"McpToolApprovalPolicy",
- "McpToolConfigOverride",
- "McpToolConfigOverrideInputOverridesValue",
- "McpToolConfigOverrideInputOverridesValue_Constant",
- "McpToolConfigOverrideInputOverridesValue_DynamicVariable",
- "McpToolConfigOverrideInputOverridesValue_Llm",
+ "McpToolConfigOverrideInput",
+ "McpToolConfigOverrideInputInputOverridesValue",
+ "McpToolConfigOverrideInputInputOverridesValue_Constant",
+ "McpToolConfigOverrideInputInputOverridesValue_DynamicVariable",
+ "McpToolConfigOverrideInputInputOverridesValue_Llm",
+ "McpToolConfigOverrideOutput",
+ "McpToolConfigOverrideOutputInputOverridesValue",
+ "McpToolConfigOverrideOutputInputOverridesValue_Constant",
+ "McpToolConfigOverrideOutputInputOverridesValue_DynamicVariable",
+ "McpToolConfigOverrideOutputInputOverridesValue_Llm",
"MergingStrategy",
"MessageSearchSortBy",
"MessagesSearchResponse",
@@ -4309,7 +4411,6 @@ def __dir__():
"ProjectExtendedResponseModelAssetsItem_Image",
"ProjectExtendedResponseModelAssetsItem_Video",
"ProjectExtendedResponseModelFiction",
- "ProjectExtendedResponseModelQualityPreset",
"ProjectExtendedResponseModelSourceType",
"ProjectExtendedResponseModelTargetAudience",
"ProjectExternalAudioResponseModel",
@@ -4394,6 +4495,7 @@ def __dir__():
"PronunciationDictionaryVersionResponseModel",
"PronunciationDictionaryVersionResponseModelPermissionOnResource",
"PydanticPronunciationDictionaryVersionLocator",
+ "QualityPresetType",
"QueryParamsJsonSchema",
"RagChunkMetadata",
"RagConfig",
@@ -4563,6 +4665,7 @@ def __dir__():
"Subscription",
"SubscriptionResponse",
"SubscriptionResponseModelCurrency",
+ "SubscriptionResponseModelMaxCreditLimitExtension",
"SubscriptionStatusType",
"SuggestedAudioTag",
"SupportedVoice",
@@ -4595,6 +4698,7 @@ def __dir__():
"TestRunMetadata",
"TestRunMetadataTestType",
"TestRunStatus",
+ "TestSharingMode",
"TestToolResultModel",
"TestType",
"TestsFeatureUsageCommonModel",
@@ -4625,6 +4729,12 @@ def __dir__():
"ToolCallUnitTestModelDynamicVariablesValue",
"ToolErrorHandlingMode",
"ToolExecutionMode",
+ "ToolExecutionResponseModel",
+ "ToolExecutionResponseModelToolCallDetails",
+ "ToolExecutionResponseModelToolCallDetails_ApiIntegrationWebhook",
+ "ToolExecutionResponseModelToolCallDetails_Client",
+ "ToolExecutionResponseModelToolCallDetails_Mcp",
+ "ToolExecutionResponseModelToolCallDetails_Webhook",
"ToolMockConfig",
"ToolRequestModel",
"ToolRequestModelToolConfig",
@@ -4710,6 +4820,7 @@ def __dir__():
"UpdateCustomerFacingConfigParams",
"UpdateEnvironmentVariableRequestValuesValue",
"UpdateHolidayParams",
+ "UpdateLocationParams",
"UpdateProductParams",
"UpdateProjectRequest",
"UpdatePronunciationDictionariesRequest",
@@ -4919,6 +5030,9 @@ def __dir__():
"WorkflowToolResponseModelOutputStepsItem_NestedTools",
"WorkflowUnconditionalModelInput",
"WorkflowUnconditionalModelOutput",
+ "WorkspaceAnalyticsQueryResponseModel",
+ "WorkspaceAnalyticsQueryResponseModelColumnTypesItem",
+ "WorkspaceAnalyticsQueryResponseModelRowsItemItem",
"WorkspaceApiKeyListResponseModel",
"WorkspaceApiKeyResponseModel",
"WorkspaceBatchCallsResponse",
diff --git a/src/elevenlabs/conversational_ai/mcp_servers/tool_configs/client.py b/src/elevenlabs/conversational_ai/mcp_servers/tool_configs/client.py
index 856fc587..3080489e 100644
--- a/src/elevenlabs/conversational_ai/mcp_servers/tool_configs/client.py
+++ b/src/elevenlabs/conversational_ai/mcp_servers/tool_configs/client.py
@@ -6,10 +6,11 @@
from ....core.request_options import RequestOptions
from ....types.dynamic_variable_assignment import DynamicVariableAssignment
from ....types.mcp_server_response_model import McpServerResponseModel
-from ....types.mcp_tool_config_override import McpToolConfigOverride
+from ....types.mcp_tool_config_override_output import McpToolConfigOverrideOutput
from ....types.tool_call_sound_behavior import ToolCallSoundBehavior
from ....types.tool_call_sound_type import ToolCallSoundType
from ....types.tool_execution_mode import ToolExecutionMode
+from ....types.tool_response_mock_config_input import ToolResponseMockConfigInput
from .raw_client import AsyncRawToolConfigsClient, RawToolConfigsClient
from .types.mcp_tool_config_override_create_request_model_input_overrides_value import (
McpToolConfigOverrideCreateRequestModelInputOverridesValue,
@@ -51,6 +52,7 @@ def create(
input_overrides: typing.Optional[
typing.Dict[str, typing.Optional[McpToolConfigOverrideCreateRequestModelInputOverridesValue]]
] = OMIT,
+ response_mocks: typing.Optional[typing.Sequence[ToolResponseMockConfigInput]] = OMIT,
request_options: typing.Optional[RequestOptions] = None,
) -> McpServerResponseModel:
"""
@@ -85,6 +87,9 @@ def create(
input_overrides : typing.Optional[typing.Dict[str, typing.Optional[McpToolConfigOverrideCreateRequestModelInputOverridesValue]]]
Mapping of json path to input override configuration
+ response_mocks : typing.Optional[typing.Sequence[ToolResponseMockConfigInput]]
+ Mock responses with optional parameter conditions. Evaluated top-to-bottom; first match wins.
+
request_options : typing.Optional[RequestOptions]
Request-specific configuration.
@@ -115,13 +120,14 @@ def create(
execution_mode=execution_mode,
assignments=assignments,
input_overrides=input_overrides,
+ response_mocks=response_mocks,
request_options=request_options,
)
return _response.data
def get(
self, mcp_server_id: str, tool_name: str, *, request_options: typing.Optional[RequestOptions] = None
- ) -> McpToolConfigOverride:
+ ) -> McpToolConfigOverrideOutput:
"""
Retrieve configuration overrides for a specific MCP tool.
@@ -138,7 +144,7 @@ def get(
Returns
-------
- McpToolConfigOverride
+ McpToolConfigOverrideOutput
Successful Response
Examples
@@ -207,6 +213,7 @@ def update(
input_overrides: typing.Optional[
typing.Dict[str, typing.Optional[McpToolConfigOverrideUpdateRequestModelInputOverridesValue]]
] = OMIT,
+ response_mocks: typing.Optional[typing.Sequence[ToolResponseMockConfigInput]] = OMIT,
request_options: typing.Optional[RequestOptions] = None,
) -> McpServerResponseModel:
"""
@@ -241,6 +248,9 @@ def update(
input_overrides : typing.Optional[typing.Dict[str, typing.Optional[McpToolConfigOverrideUpdateRequestModelInputOverridesValue]]]
Mapping of json path to input override configuration
+ response_mocks : typing.Optional[typing.Sequence[ToolResponseMockConfigInput]]
+ Mock responses with optional parameter conditions. Evaluated top-to-bottom; first match wins.
+
request_options : typing.Optional[RequestOptions]
Request-specific configuration.
@@ -271,6 +281,7 @@ def update(
execution_mode=execution_mode,
assignments=assignments,
input_overrides=input_overrides,
+ response_mocks=response_mocks,
request_options=request_options,
)
return _response.data
@@ -305,6 +316,7 @@ async def create(
input_overrides: typing.Optional[
typing.Dict[str, typing.Optional[McpToolConfigOverrideCreateRequestModelInputOverridesValue]]
] = OMIT,
+ response_mocks: typing.Optional[typing.Sequence[ToolResponseMockConfigInput]] = OMIT,
request_options: typing.Optional[RequestOptions] = None,
) -> McpServerResponseModel:
"""
@@ -339,6 +351,9 @@ async def create(
input_overrides : typing.Optional[typing.Dict[str, typing.Optional[McpToolConfigOverrideCreateRequestModelInputOverridesValue]]]
Mapping of json path to input override configuration
+ response_mocks : typing.Optional[typing.Sequence[ToolResponseMockConfigInput]]
+ Mock responses with optional parameter conditions. Evaluated top-to-bottom; first match wins.
+
request_options : typing.Optional[RequestOptions]
Request-specific configuration.
@@ -377,13 +392,14 @@ async def main() -> None:
execution_mode=execution_mode,
assignments=assignments,
input_overrides=input_overrides,
+ response_mocks=response_mocks,
request_options=request_options,
)
return _response.data
async def get(
self, mcp_server_id: str, tool_name: str, *, request_options: typing.Optional[RequestOptions] = None
- ) -> McpToolConfigOverride:
+ ) -> McpToolConfigOverrideOutput:
"""
Retrieve configuration overrides for a specific MCP tool.
@@ -400,7 +416,7 @@ async def get(
Returns
-------
- McpToolConfigOverride
+ McpToolConfigOverrideOutput
Successful Response
Examples
@@ -485,6 +501,7 @@ async def update(
input_overrides: typing.Optional[
typing.Dict[str, typing.Optional[McpToolConfigOverrideUpdateRequestModelInputOverridesValue]]
] = OMIT,
+ response_mocks: typing.Optional[typing.Sequence[ToolResponseMockConfigInput]] = OMIT,
request_options: typing.Optional[RequestOptions] = None,
) -> McpServerResponseModel:
"""
@@ -519,6 +536,9 @@ async def update(
input_overrides : typing.Optional[typing.Dict[str, typing.Optional[McpToolConfigOverrideUpdateRequestModelInputOverridesValue]]]
Mapping of json path to input override configuration
+ response_mocks : typing.Optional[typing.Sequence[ToolResponseMockConfigInput]]
+ Mock responses with optional parameter conditions. Evaluated top-to-bottom; first match wins.
+
request_options : typing.Optional[RequestOptions]
Request-specific configuration.
@@ -557,6 +577,7 @@ async def main() -> None:
execution_mode=execution_mode,
assignments=assignments,
input_overrides=input_overrides,
+ response_mocks=response_mocks,
request_options=request_options,
)
return _response.data
diff --git a/src/elevenlabs/conversational_ai/mcp_servers/tool_configs/raw_client.py b/src/elevenlabs/conversational_ai/mcp_servers/tool_configs/raw_client.py
index 85ec14a8..94f5db47 100644
--- a/src/elevenlabs/conversational_ai/mcp_servers/tool_configs/raw_client.py
+++ b/src/elevenlabs/conversational_ai/mcp_servers/tool_configs/raw_client.py
@@ -15,10 +15,11 @@
from ....errors.unprocessable_entity_error import UnprocessableEntityError
from ....types.dynamic_variable_assignment import DynamicVariableAssignment
from ....types.mcp_server_response_model import McpServerResponseModel
-from ....types.mcp_tool_config_override import McpToolConfigOverride
+from ....types.mcp_tool_config_override_output import McpToolConfigOverrideOutput
from ....types.tool_call_sound_behavior import ToolCallSoundBehavior
from ....types.tool_call_sound_type import ToolCallSoundType
from ....types.tool_execution_mode import ToolExecutionMode
+from ....types.tool_response_mock_config_input import ToolResponseMockConfigInput
from .types.mcp_tool_config_override_create_request_model_input_overrides_value import (
McpToolConfigOverrideCreateRequestModelInputOverridesValue,
)
@@ -48,6 +49,7 @@ def create(
input_overrides: typing.Optional[
typing.Dict[str, typing.Optional[McpToolConfigOverrideCreateRequestModelInputOverridesValue]]
] = OMIT,
+ response_mocks: typing.Optional[typing.Sequence[ToolResponseMockConfigInput]] = OMIT,
request_options: typing.Optional[RequestOptions] = None,
) -> HttpResponse[McpServerResponseModel]:
"""
@@ -82,6 +84,9 @@ def create(
input_overrides : typing.Optional[typing.Dict[str, typing.Optional[McpToolConfigOverrideCreateRequestModelInputOverridesValue]]]
Mapping of json path to input override configuration
+ response_mocks : typing.Optional[typing.Sequence[ToolResponseMockConfigInput]]
+ Mock responses with optional parameter conditions. Evaluated top-to-bottom; first match wins.
+
request_options : typing.Optional[RequestOptions]
Request-specific configuration.
@@ -109,6 +114,9 @@ def create(
],
direction="write",
),
+ "response_mocks": convert_and_respect_annotation_metadata(
+ object_=response_mocks, annotation=typing.Sequence[ToolResponseMockConfigInput], direction="write"
+ ),
"tool_name": tool_name,
},
headers={
@@ -156,7 +164,7 @@ def create(
def get(
self, mcp_server_id: str, tool_name: str, *, request_options: typing.Optional[RequestOptions] = None
- ) -> HttpResponse[McpToolConfigOverride]:
+ ) -> HttpResponse[McpToolConfigOverrideOutput]:
"""
Retrieve configuration overrides for a specific MCP tool.
@@ -173,7 +181,7 @@ def get(
Returns
-------
- HttpResponse[McpToolConfigOverride]
+ HttpResponse[McpToolConfigOverrideOutput]
Successful Response
"""
_response = self._client_wrapper.httpx_client.request(
@@ -184,9 +192,9 @@ def get(
try:
if 200 <= _response.status_code < 300:
_data = typing.cast(
- McpToolConfigOverride,
+ McpToolConfigOverrideOutput,
construct_type(
- type_=McpToolConfigOverride, # type: ignore
+ type_=McpToolConfigOverrideOutput, # type: ignore
object_=_response.json(),
),
)
@@ -285,6 +293,7 @@ def update(
input_overrides: typing.Optional[
typing.Dict[str, typing.Optional[McpToolConfigOverrideUpdateRequestModelInputOverridesValue]]
] = OMIT,
+ response_mocks: typing.Optional[typing.Sequence[ToolResponseMockConfigInput]] = OMIT,
request_options: typing.Optional[RequestOptions] = None,
) -> HttpResponse[McpServerResponseModel]:
"""
@@ -319,6 +328,9 @@ def update(
input_overrides : typing.Optional[typing.Dict[str, typing.Optional[McpToolConfigOverrideUpdateRequestModelInputOverridesValue]]]
Mapping of json path to input override configuration
+ response_mocks : typing.Optional[typing.Sequence[ToolResponseMockConfigInput]]
+ Mock responses with optional parameter conditions. Evaluated top-to-bottom; first match wins.
+
request_options : typing.Optional[RequestOptions]
Request-specific configuration.
@@ -346,6 +358,9 @@ def update(
],
direction="write",
),
+ "response_mocks": convert_and_respect_annotation_metadata(
+ object_=response_mocks, annotation=typing.Sequence[ToolResponseMockConfigInput], direction="write"
+ ),
},
headers={
"content-type": "application/json",
@@ -409,6 +424,7 @@ async def create(
input_overrides: typing.Optional[
typing.Dict[str, typing.Optional[McpToolConfigOverrideCreateRequestModelInputOverridesValue]]
] = OMIT,
+ response_mocks: typing.Optional[typing.Sequence[ToolResponseMockConfigInput]] = OMIT,
request_options: typing.Optional[RequestOptions] = None,
) -> AsyncHttpResponse[McpServerResponseModel]:
"""
@@ -443,6 +459,9 @@ async def create(
input_overrides : typing.Optional[typing.Dict[str, typing.Optional[McpToolConfigOverrideCreateRequestModelInputOverridesValue]]]
Mapping of json path to input override configuration
+ response_mocks : typing.Optional[typing.Sequence[ToolResponseMockConfigInput]]
+ Mock responses with optional parameter conditions. Evaluated top-to-bottom; first match wins.
+
request_options : typing.Optional[RequestOptions]
Request-specific configuration.
@@ -470,6 +489,9 @@ async def create(
],
direction="write",
),
+ "response_mocks": convert_and_respect_annotation_metadata(
+ object_=response_mocks, annotation=typing.Sequence[ToolResponseMockConfigInput], direction="write"
+ ),
"tool_name": tool_name,
},
headers={
@@ -517,7 +539,7 @@ async def create(
async def get(
self, mcp_server_id: str, tool_name: str, *, request_options: typing.Optional[RequestOptions] = None
- ) -> AsyncHttpResponse[McpToolConfigOverride]:
+ ) -> AsyncHttpResponse[McpToolConfigOverrideOutput]:
"""
Retrieve configuration overrides for a specific MCP tool.
@@ -534,7 +556,7 @@ async def get(
Returns
-------
- AsyncHttpResponse[McpToolConfigOverride]
+ AsyncHttpResponse[McpToolConfigOverrideOutput]
Successful Response
"""
_response = await self._client_wrapper.httpx_client.request(
@@ -545,9 +567,9 @@ async def get(
try:
if 200 <= _response.status_code < 300:
_data = typing.cast(
- McpToolConfigOverride,
+ McpToolConfigOverrideOutput,
construct_type(
- type_=McpToolConfigOverride, # type: ignore
+ type_=McpToolConfigOverrideOutput, # type: ignore
object_=_response.json(),
),
)
@@ -646,6 +668,7 @@ async def update(
input_overrides: typing.Optional[
typing.Dict[str, typing.Optional[McpToolConfigOverrideUpdateRequestModelInputOverridesValue]]
] = OMIT,
+ response_mocks: typing.Optional[typing.Sequence[ToolResponseMockConfigInput]] = OMIT,
request_options: typing.Optional[RequestOptions] = None,
) -> AsyncHttpResponse[McpServerResponseModel]:
"""
@@ -680,6 +703,9 @@ async def update(
input_overrides : typing.Optional[typing.Dict[str, typing.Optional[McpToolConfigOverrideUpdateRequestModelInputOverridesValue]]]
Mapping of json path to input override configuration
+ response_mocks : typing.Optional[typing.Sequence[ToolResponseMockConfigInput]]
+ Mock responses with optional parameter conditions. Evaluated top-to-bottom; first match wins.
+
request_options : typing.Optional[RequestOptions]
Request-specific configuration.
@@ -707,6 +733,9 @@ async def update(
],
direction="write",
),
+ "response_mocks": convert_and_respect_annotation_metadata(
+ object_=response_mocks, annotation=typing.Sequence[ToolResponseMockConfigInput], direction="write"
+ ),
},
headers={
"content-type": "application/json",
diff --git a/src/elevenlabs/conversational_ai/secrets/client.py b/src/elevenlabs/conversational_ai/secrets/client.py
index 4e79ae32..f6db0ccf 100644
--- a/src/elevenlabs/conversational_ai/secrets/client.py
+++ b/src/elevenlabs/conversational_ai/secrets/client.py
@@ -4,6 +4,7 @@
from ...core.client_wrapper import AsyncClientWrapper, SyncClientWrapper
from ...core.request_options import RequestOptions
+from ...types.conv_ai_workspace_stored_secret_config import ConvAiWorkspaceStoredSecretConfig
from ...types.get_secret_dependencies_response_model import GetSecretDependenciesResponseModel
from ...types.get_workspace_secrets_response_model import GetWorkspaceSecretsResponseModel
from ...types.post_workspace_secret_response_model import PostWorkspaceSecretResponseModel
@@ -34,6 +35,7 @@ def list(
*,
page_size: typing.Optional[int] = None,
dependency_limit: typing.Optional[int] = None,
+ search: typing.Optional[str] = None,
cursor: typing.Optional[str] = None,
request_options: typing.Optional[RequestOptions] = None,
) -> GetWorkspaceSecretsResponseModel:
@@ -48,6 +50,9 @@ def list(
dependency_limit : typing.Optional[int]
Maximum number of dependent resources (tools, agents, phone numbers) to return per secret. Can not exceed 100.
+ search : typing.Optional[str]
+ If specified, returns only secrets whose names start with this string.
+
cursor : typing.Optional[str]
Used for fetching next page. Cursor is returned in the response.
@@ -69,11 +74,16 @@ def list(
client.conversational_ai.secrets.list(
page_size=1,
dependency_limit=1,
+ search="search",
cursor="cursor",
)
"""
_response = self._raw_client.list(
- page_size=page_size, dependency_limit=dependency_limit, cursor=cursor, request_options=request_options
+ page_size=page_size,
+ dependency_limit=dependency_limit,
+ search=search,
+ cursor=cursor,
+ request_options=request_options,
)
return _response.data
@@ -112,6 +122,38 @@ def create(
_response = self._raw_client.create(name=name, value=value, request_options=request_options)
return _response.data
+ def get(
+ self, secret_id: str, *, request_options: typing.Optional[RequestOptions] = None
+ ) -> ConvAiWorkspaceStoredSecretConfig:
+ """
+ Get a workspace secret by ID
+
+ Parameters
+ ----------
+ secret_id : str
+
+ request_options : typing.Optional[RequestOptions]
+ Request-specific configuration.
+
+ Returns
+ -------
+ ConvAiWorkspaceStoredSecretConfig
+ Successful Response
+
+ Examples
+ --------
+ from elevenlabs import ElevenLabs
+
+ client = ElevenLabs(
+ api_key="YOUR_API_KEY",
+ )
+ client.conversational_ai.secrets.get(
+ secret_id="secret_id",
+ )
+ """
+ _response = self._raw_client.get(secret_id, request_options=request_options)
+ return _response.data
+
def delete(self, secret_id: str, *, request_options: typing.Optional[RequestOptions] = None) -> None:
"""
Delete a workspace secret if it's not in use
@@ -251,6 +293,7 @@ async def list(
*,
page_size: typing.Optional[int] = None,
dependency_limit: typing.Optional[int] = None,
+ search: typing.Optional[str] = None,
cursor: typing.Optional[str] = None,
request_options: typing.Optional[RequestOptions] = None,
) -> GetWorkspaceSecretsResponseModel:
@@ -265,6 +308,9 @@ async def list(
dependency_limit : typing.Optional[int]
Maximum number of dependent resources (tools, agents, phone numbers) to return per secret. Can not exceed 100.
+ search : typing.Optional[str]
+ If specified, returns only secrets whose names start with this string.
+
cursor : typing.Optional[str]
Used for fetching next page. Cursor is returned in the response.
@@ -291,6 +337,7 @@ async def main() -> None:
await client.conversational_ai.secrets.list(
page_size=1,
dependency_limit=1,
+ search="search",
cursor="cursor",
)
@@ -298,7 +345,11 @@ async def main() -> None:
asyncio.run(main())
"""
_response = await self._raw_client.list(
- page_size=page_size, dependency_limit=dependency_limit, cursor=cursor, request_options=request_options
+ page_size=page_size,
+ dependency_limit=dependency_limit,
+ search=search,
+ cursor=cursor,
+ request_options=request_options,
)
return _response.data
@@ -345,6 +396,46 @@ async def main() -> None:
_response = await self._raw_client.create(name=name, value=value, request_options=request_options)
return _response.data
+ async def get(
+ self, secret_id: str, *, request_options: typing.Optional[RequestOptions] = None
+ ) -> ConvAiWorkspaceStoredSecretConfig:
+ """
+ Get a workspace secret by ID
+
+ Parameters
+ ----------
+ secret_id : str
+
+ request_options : typing.Optional[RequestOptions]
+ Request-specific configuration.
+
+ Returns
+ -------
+ ConvAiWorkspaceStoredSecretConfig
+ Successful Response
+
+ Examples
+ --------
+ import asyncio
+
+ from elevenlabs import AsyncElevenLabs
+
+ client = AsyncElevenLabs(
+ api_key="YOUR_API_KEY",
+ )
+
+
+ async def main() -> None:
+ await client.conversational_ai.secrets.get(
+ secret_id="secret_id",
+ )
+
+
+ asyncio.run(main())
+ """
+ _response = await self._raw_client.get(secret_id, request_options=request_options)
+ return _response.data
+
async def delete(self, secret_id: str, *, request_options: typing.Optional[RequestOptions] = None) -> None:
"""
Delete a workspace secret if it's not in use
diff --git a/src/elevenlabs/conversational_ai/secrets/raw_client.py b/src/elevenlabs/conversational_ai/secrets/raw_client.py
index 8837e4bb..3d5c078c 100644
--- a/src/elevenlabs/conversational_ai/secrets/raw_client.py
+++ b/src/elevenlabs/conversational_ai/secrets/raw_client.py
@@ -10,6 +10,7 @@
from ...core.request_options import RequestOptions
from ...core.unchecked_base_model import construct_type
from ...errors.unprocessable_entity_error import UnprocessableEntityError
+from ...types.conv_ai_workspace_stored_secret_config import ConvAiWorkspaceStoredSecretConfig
from ...types.get_secret_dependencies_response_model import GetSecretDependenciesResponseModel
from ...types.get_workspace_secrets_response_model import GetWorkspaceSecretsResponseModel
from ...types.post_workspace_secret_response_model import PostWorkspaceSecretResponseModel
@@ -28,6 +29,7 @@ def list(
*,
page_size: typing.Optional[int] = None,
dependency_limit: typing.Optional[int] = None,
+ search: typing.Optional[str] = None,
cursor: typing.Optional[str] = None,
request_options: typing.Optional[RequestOptions] = None,
) -> HttpResponse[GetWorkspaceSecretsResponseModel]:
@@ -42,6 +44,9 @@ def list(
dependency_limit : typing.Optional[int]
Maximum number of dependent resources (tools, agents, phone numbers) to return per secret. Can not exceed 100.
+ search : typing.Optional[str]
+ If specified, returns only secrets whose names start with this string.
+
cursor : typing.Optional[str]
Used for fetching next page. Cursor is returned in the response.
@@ -59,6 +64,7 @@ def list(
params={
"page_size": page_size,
"dependency_limit": dependency_limit,
+ "search": search,
"cursor": cursor,
},
request_options=request_options,
@@ -149,6 +155,55 @@ def create(
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, secret_id: str, *, request_options: typing.Optional[RequestOptions] = None
+ ) -> HttpResponse[ConvAiWorkspaceStoredSecretConfig]:
+ """
+ Get a workspace secret by ID
+
+ Parameters
+ ----------
+ secret_id : str
+
+ request_options : typing.Optional[RequestOptions]
+ Request-specific configuration.
+
+ Returns
+ -------
+ HttpResponse[ConvAiWorkspaceStoredSecretConfig]
+ Successful Response
+ """
+ _response = self._client_wrapper.httpx_client.request(
+ f"v1/convai/secrets/{jsonable_encoder(secret_id)}",
+ method="GET",
+ request_options=request_options,
+ )
+ try:
+ if 200 <= _response.status_code < 300:
+ _data = typing.cast(
+ ConvAiWorkspaceStoredSecretConfig,
+ construct_type(
+ type_=ConvAiWorkspaceStoredSecretConfig, # 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 delete(self, secret_id: str, *, request_options: typing.Optional[RequestOptions] = None) -> HttpResponse[None]:
"""
Delete a workspace secret if it's not in use
@@ -327,6 +382,7 @@ async def list(
*,
page_size: typing.Optional[int] = None,
dependency_limit: typing.Optional[int] = None,
+ search: typing.Optional[str] = None,
cursor: typing.Optional[str] = None,
request_options: typing.Optional[RequestOptions] = None,
) -> AsyncHttpResponse[GetWorkspaceSecretsResponseModel]:
@@ -341,6 +397,9 @@ async def list(
dependency_limit : typing.Optional[int]
Maximum number of dependent resources (tools, agents, phone numbers) to return per secret. Can not exceed 100.
+ search : typing.Optional[str]
+ If specified, returns only secrets whose names start with this string.
+
cursor : typing.Optional[str]
Used for fetching next page. Cursor is returned in the response.
@@ -358,6 +417,7 @@ async def list(
params={
"page_size": page_size,
"dependency_limit": dependency_limit,
+ "search": search,
"cursor": cursor,
},
request_options=request_options,
@@ -448,6 +508,55 @@ async def create(
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, secret_id: str, *, request_options: typing.Optional[RequestOptions] = None
+ ) -> AsyncHttpResponse[ConvAiWorkspaceStoredSecretConfig]:
+ """
+ Get a workspace secret by ID
+
+ Parameters
+ ----------
+ secret_id : str
+
+ request_options : typing.Optional[RequestOptions]
+ Request-specific configuration.
+
+ Returns
+ -------
+ AsyncHttpResponse[ConvAiWorkspaceStoredSecretConfig]
+ Successful Response
+ """
+ _response = await self._client_wrapper.httpx_client.request(
+ f"v1/convai/secrets/{jsonable_encoder(secret_id)}",
+ method="GET",
+ request_options=request_options,
+ )
+ try:
+ if 200 <= _response.status_code < 300:
+ _data = typing.cast(
+ ConvAiWorkspaceStoredSecretConfig,
+ construct_type(
+ type_=ConvAiWorkspaceStoredSecretConfig, # 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 delete(
self, secret_id: str, *, request_options: typing.Optional[RequestOptions] = None
) -> AsyncHttpResponse[None]:
diff --git a/src/elevenlabs/conversational_ai/tests/client.py b/src/elevenlabs/conversational_ai/tests/client.py
index 0ee2cf99..a87345b3 100644
--- a/src/elevenlabs/conversational_ai/tests/client.py
+++ b/src/elevenlabs/conversational_ai/tests/client.py
@@ -9,6 +9,7 @@
from ...types.create_agent_test_response_model import CreateAgentTestResponseModel
from ...types.get_tests_page_response_model import GetTestsPageResponseModel
from ...types.get_tests_summaries_by_ids_response_model import GetTestsSummariesByIdsResponseModel
+from ...types.test_sharing_mode import TestSharingMode
from ...types.test_type import TestType
from .raw_client import AsyncRawTestsClient, RawTestsClient
from .types.tests_create_request_body import TestsCreateRequestBody
@@ -261,6 +262,7 @@ def list(
types: typing.Optional[typing.Union[TestType, typing.Sequence[TestType]]] = None,
include_folders: typing.Optional[bool] = None,
sort_mode: typing.Optional[TestsListRequestSortMode] = None,
+ sharing_mode: typing.Optional[TestSharingMode] = None,
request_options: typing.Optional[RequestOptions] = None,
) -> GetTestsPageResponseModel:
"""
@@ -289,6 +291,9 @@ def list(
sort_mode : typing.Optional[TestsListRequestSortMode]
Sort mode for listing tests. Use 'folders_first' to place folders before tests.
+ sharing_mode : typing.Optional[TestSharingMode]
+ Filter test visibility. Use `shared_with_me` to return only tests/folders shared with the current user that they did not create.
+
request_options : typing.Optional[RequestOptions]
Request-specific configuration.
@@ -311,6 +316,7 @@ def list(
parent_folder_id="parent_folder_id",
include_folders=True,
sort_mode="default",
+ sharing_mode="all",
)
"""
_response = self._raw_client.list(
@@ -321,6 +327,7 @@ def list(
types=types,
include_folders=include_folders,
sort_mode=sort_mode,
+ sharing_mode=sharing_mode,
request_options=request_options,
)
return _response.data
@@ -627,6 +634,7 @@ async def list(
types: typing.Optional[typing.Union[TestType, typing.Sequence[TestType]]] = None,
include_folders: typing.Optional[bool] = None,
sort_mode: typing.Optional[TestsListRequestSortMode] = None,
+ sharing_mode: typing.Optional[TestSharingMode] = None,
request_options: typing.Optional[RequestOptions] = None,
) -> GetTestsPageResponseModel:
"""
@@ -655,6 +663,9 @@ async def list(
sort_mode : typing.Optional[TestsListRequestSortMode]
Sort mode for listing tests. Use 'folders_first' to place folders before tests.
+ sharing_mode : typing.Optional[TestSharingMode]
+ Filter test visibility. Use `shared_with_me` to return only tests/folders shared with the current user that they did not create.
+
request_options : typing.Optional[RequestOptions]
Request-specific configuration.
@@ -682,6 +693,7 @@ async def main() -> None:
parent_folder_id="parent_folder_id",
include_folders=True,
sort_mode="default",
+ sharing_mode="all",
)
@@ -695,6 +707,7 @@ async def main() -> None:
types=types,
include_folders=include_folders,
sort_mode=sort_mode,
+ sharing_mode=sharing_mode,
request_options=request_options,
)
return _response.data
diff --git a/src/elevenlabs/conversational_ai/tests/raw_client.py b/src/elevenlabs/conversational_ai/tests/raw_client.py
index fd0d033d..ad2ff08b 100644
--- a/src/elevenlabs/conversational_ai/tests/raw_client.py
+++ b/src/elevenlabs/conversational_ai/tests/raw_client.py
@@ -14,6 +14,7 @@
from ...types.create_agent_test_response_model import CreateAgentTestResponseModel
from ...types.get_tests_page_response_model import GetTestsPageResponseModel
from ...types.get_tests_summaries_by_ids_response_model import GetTestsSummariesByIdsResponseModel
+from ...types.test_sharing_mode import TestSharingMode
from ...types.test_type import TestType
from .types.tests_create_request_body import TestsCreateRequestBody
from .types.tests_get_response import TestsGetResponse
@@ -380,6 +381,7 @@ def list(
types: typing.Optional[typing.Union[TestType, typing.Sequence[TestType]]] = None,
include_folders: typing.Optional[bool] = None,
sort_mode: typing.Optional[TestsListRequestSortMode] = None,
+ sharing_mode: typing.Optional[TestSharingMode] = None,
request_options: typing.Optional[RequestOptions] = None,
) -> HttpResponse[GetTestsPageResponseModel]:
"""
@@ -408,6 +410,9 @@ def list(
sort_mode : typing.Optional[TestsListRequestSortMode]
Sort mode for listing tests. Use 'folders_first' to place folders before tests.
+ sharing_mode : typing.Optional[TestSharingMode]
+ Filter test visibility. Use `shared_with_me` to return only tests/folders shared with the current user that they did not create.
+
request_options : typing.Optional[RequestOptions]
Request-specific configuration.
@@ -427,6 +432,7 @@ def list(
"types": types,
"include_folders": include_folders,
"sort_mode": sort_mode,
+ "sharing_mode": sharing_mode,
},
request_options=request_options,
)
@@ -812,6 +818,7 @@ async def list(
types: typing.Optional[typing.Union[TestType, typing.Sequence[TestType]]] = None,
include_folders: typing.Optional[bool] = None,
sort_mode: typing.Optional[TestsListRequestSortMode] = None,
+ sharing_mode: typing.Optional[TestSharingMode] = None,
request_options: typing.Optional[RequestOptions] = None,
) -> AsyncHttpResponse[GetTestsPageResponseModel]:
"""
@@ -840,6 +847,9 @@ async def list(
sort_mode : typing.Optional[TestsListRequestSortMode]
Sort mode for listing tests. Use 'folders_first' to place folders before tests.
+ sharing_mode : typing.Optional[TestSharingMode]
+ Filter test visibility. Use `shared_with_me` to return only tests/folders shared with the current user that they did not create.
+
request_options : typing.Optional[RequestOptions]
Request-specific configuration.
@@ -859,6 +869,7 @@ async def list(
"types": types,
"include_folders": include_folders,
"sort_mode": sort_mode,
+ "sharing_mode": sharing_mode,
},
request_options=request_options,
)
diff --git a/src/elevenlabs/conversational_ai/tools/__init__.py b/src/elevenlabs/conversational_ai/tools/__init__.py
index 5cde0202..a7fd1f87 100644
--- a/src/elevenlabs/conversational_ai/tools/__init__.py
+++ b/src/elevenlabs/conversational_ai/tools/__init__.py
@@ -2,3 +2,33 @@
# isort: skip_file
+import typing
+from importlib import import_module
+
+if typing.TYPE_CHECKING:
+ from . import executions
+_dynamic_imports: typing.Dict[str, str] = {"executions": ".executions"}
+
+
+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__ = ["executions"]
diff --git a/src/elevenlabs/conversational_ai/tools/client.py b/src/elevenlabs/conversational_ai/tools/client.py
index 8ffc9ed0..91e14645 100644
--- a/src/elevenlabs/conversational_ai/tools/client.py
+++ b/src/elevenlabs/conversational_ai/tools/client.py
@@ -1,5 +1,7 @@
# This file was auto-generated by Fern from our API Definition.
+from __future__ import annotations
+
import typing
from ...core.client_wrapper import AsyncClientWrapper, SyncClientWrapper
@@ -13,6 +15,8 @@
from ...types.tools_response_model import ToolsResponseModel
from .raw_client import AsyncRawToolsClient, RawToolsClient
+if typing.TYPE_CHECKING:
+ from .executions.client import AsyncExecutionsClient, ExecutionsClient
# this is used as the default value for optional parameters
OMIT = typing.cast(typing.Any, ...)
@@ -20,6 +24,8 @@
class ToolsClient:
def __init__(self, *, client_wrapper: SyncClientWrapper):
self._raw_client = RawToolsClient(client_wrapper=client_wrapper)
+ self._client_wrapper = client_wrapper
+ self._executions: typing.Optional[ExecutionsClient] = None
@property
def with_raw_response(self) -> RawToolsClient:
@@ -320,10 +326,20 @@ def get_dependent_agents(
)
return _response.data
+ @property
+ def executions(self):
+ if self._executions is None:
+ from .executions.client import ExecutionsClient # noqa: E402
+
+ self._executions = ExecutionsClient(client_wrapper=self._client_wrapper)
+ return self._executions
+
class AsyncToolsClient:
def __init__(self, *, client_wrapper: AsyncClientWrapper):
self._raw_client = AsyncRawToolsClient(client_wrapper=client_wrapper)
+ self._client_wrapper = client_wrapper
+ self._executions: typing.Optional[AsyncExecutionsClient] = None
@property
def with_raw_response(self) -> AsyncRawToolsClient:
@@ -671,3 +687,11 @@ async def main() -> None:
tool_id, cursor=cursor, page_size=page_size, request_options=request_options
)
return _response.data
+
+ @property
+ def executions(self):
+ if self._executions is None:
+ from .executions.client import AsyncExecutionsClient # noqa: E402
+
+ self._executions = AsyncExecutionsClient(client_wrapper=self._client_wrapper)
+ return self._executions
diff --git a/src/elevenlabs/conversational_ai/tools/executions/__init__.py b/src/elevenlabs/conversational_ai/tools/executions/__init__.py
new file mode 100644
index 00000000..5cde0202
--- /dev/null
+++ b/src/elevenlabs/conversational_ai/tools/executions/__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/conversational_ai/tools/executions/client.py b/src/elevenlabs/conversational_ai/tools/executions/client.py
new file mode 100644
index 00000000..24044aa4
--- /dev/null
+++ b/src/elevenlabs/conversational_ai/tools/executions/client.py
@@ -0,0 +1,210 @@
+# 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.get_tool_executions_page_response_model import GetToolExecutionsPageResponseModel
+from .raw_client import AsyncRawExecutionsClient, RawExecutionsClient
+
+
+class ExecutionsClient:
+ def __init__(self, *, client_wrapper: SyncClientWrapper):
+ self._raw_client = RawExecutionsClient(client_wrapper=client_wrapper)
+
+ @property
+ def with_raw_response(self) -> RawExecutionsClient:
+ """
+ Retrieves a raw implementation of this client that returns raw responses.
+
+ Returns
+ -------
+ RawExecutionsClient
+ """
+ return self._raw_client
+
+ def get(
+ self,
+ tool_id: str,
+ *,
+ cursor: typing.Optional[str] = None,
+ page_size: typing.Optional[int] = None,
+ is_error: typing.Optional[bool] = None,
+ agent_id: typing.Optional[str] = None,
+ branch_id: typing.Optional[str] = None,
+ start_time: typing.Optional[float] = None,
+ end_time: typing.Optional[float] = None,
+ request_options: typing.Optional[RequestOptions] = None,
+ ) -> GetToolExecutionsPageResponseModel:
+ """
+ Get paginated list of tool executions for a specific tool.
+
+ Parameters
+ ----------
+ tool_id : str
+ ID of the requested tool.
+
+ cursor : typing.Optional[str]
+ Used for fetching next page. Cursor is returned in the response.
+
+ page_size : typing.Optional[int]
+ How many documents to return at maximum. Can not exceed 100, defaults to 30.
+
+ is_error : typing.Optional[bool]
+ Filter by error status. If not provided, returns all executions.
+
+ agent_id : typing.Optional[str]
+ Filter by agent ID.
+
+ branch_id : typing.Optional[str]
+ Filter by agent branch ID.
+
+ start_time : typing.Optional[float]
+ Filter executions from this Unix timestamp (inclusive).
+
+ end_time : typing.Optional[float]
+ Filter executions until this Unix timestamp (inclusive).
+
+ request_options : typing.Optional[RequestOptions]
+ Request-specific configuration.
+
+ Returns
+ -------
+ GetToolExecutionsPageResponseModel
+ Successful Response
+
+ Examples
+ --------
+ from elevenlabs import ElevenLabs
+
+ client = ElevenLabs(
+ api_key="YOUR_API_KEY",
+ )
+ client.conversational_ai.tools.executions.get(
+ tool_id="tool_id",
+ cursor="cursor",
+ page_size=1,
+ is_error=True,
+ agent_id="agent_id",
+ branch_id="branch_id",
+ start_time=1.1,
+ end_time=1.1,
+ )
+ """
+ _response = self._raw_client.get(
+ tool_id,
+ cursor=cursor,
+ page_size=page_size,
+ is_error=is_error,
+ agent_id=agent_id,
+ branch_id=branch_id,
+ start_time=start_time,
+ end_time=end_time,
+ request_options=request_options,
+ )
+ return _response.data
+
+
+class AsyncExecutionsClient:
+ def __init__(self, *, client_wrapper: AsyncClientWrapper):
+ self._raw_client = AsyncRawExecutionsClient(client_wrapper=client_wrapper)
+
+ @property
+ def with_raw_response(self) -> AsyncRawExecutionsClient:
+ """
+ Retrieves a raw implementation of this client that returns raw responses.
+
+ Returns
+ -------
+ AsyncRawExecutionsClient
+ """
+ return self._raw_client
+
+ async def get(
+ self,
+ tool_id: str,
+ *,
+ cursor: typing.Optional[str] = None,
+ page_size: typing.Optional[int] = None,
+ is_error: typing.Optional[bool] = None,
+ agent_id: typing.Optional[str] = None,
+ branch_id: typing.Optional[str] = None,
+ start_time: typing.Optional[float] = None,
+ end_time: typing.Optional[float] = None,
+ request_options: typing.Optional[RequestOptions] = None,
+ ) -> GetToolExecutionsPageResponseModel:
+ """
+ Get paginated list of tool executions for a specific tool.
+
+ Parameters
+ ----------
+ tool_id : str
+ ID of the requested tool.
+
+ cursor : typing.Optional[str]
+ Used for fetching next page. Cursor is returned in the response.
+
+ page_size : typing.Optional[int]
+ How many documents to return at maximum. Can not exceed 100, defaults to 30.
+
+ is_error : typing.Optional[bool]
+ Filter by error status. If not provided, returns all executions.
+
+ agent_id : typing.Optional[str]
+ Filter by agent ID.
+
+ branch_id : typing.Optional[str]
+ Filter by agent branch ID.
+
+ start_time : typing.Optional[float]
+ Filter executions from this Unix timestamp (inclusive).
+
+ end_time : typing.Optional[float]
+ Filter executions until this Unix timestamp (inclusive).
+
+ request_options : typing.Optional[RequestOptions]
+ Request-specific configuration.
+
+ Returns
+ -------
+ GetToolExecutionsPageResponseModel
+ Successful Response
+
+ Examples
+ --------
+ import asyncio
+
+ from elevenlabs import AsyncElevenLabs
+
+ client = AsyncElevenLabs(
+ api_key="YOUR_API_KEY",
+ )
+
+
+ async def main() -> None:
+ await client.conversational_ai.tools.executions.get(
+ tool_id="tool_id",
+ cursor="cursor",
+ page_size=1,
+ is_error=True,
+ agent_id="agent_id",
+ branch_id="branch_id",
+ start_time=1.1,
+ end_time=1.1,
+ )
+
+
+ asyncio.run(main())
+ """
+ _response = await self._raw_client.get(
+ tool_id,
+ cursor=cursor,
+ page_size=page_size,
+ is_error=is_error,
+ agent_id=agent_id,
+ branch_id=branch_id,
+ start_time=start_time,
+ end_time=end_time,
+ request_options=request_options,
+ )
+ return _response.data
diff --git a/src/elevenlabs/conversational_ai/tools/executions/raw_client.py b/src/elevenlabs/conversational_ai/tools/executions/raw_client.py
new file mode 100644
index 00000000..4aeec2d0
--- /dev/null
+++ b/src/elevenlabs/conversational_ai/tools/executions/raw_client.py
@@ -0,0 +1,203 @@
+# 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.get_tool_executions_page_response_model import GetToolExecutionsPageResponseModel
+
+
+class RawExecutionsClient:
+ def __init__(self, *, client_wrapper: SyncClientWrapper):
+ self._client_wrapper = client_wrapper
+
+ def get(
+ self,
+ tool_id: str,
+ *,
+ cursor: typing.Optional[str] = None,
+ page_size: typing.Optional[int] = None,
+ is_error: typing.Optional[bool] = None,
+ agent_id: typing.Optional[str] = None,
+ branch_id: typing.Optional[str] = None,
+ start_time: typing.Optional[float] = None,
+ end_time: typing.Optional[float] = None,
+ request_options: typing.Optional[RequestOptions] = None,
+ ) -> HttpResponse[GetToolExecutionsPageResponseModel]:
+ """
+ Get paginated list of tool executions for a specific tool.
+
+ Parameters
+ ----------
+ tool_id : str
+ ID of the requested tool.
+
+ cursor : typing.Optional[str]
+ Used for fetching next page. Cursor is returned in the response.
+
+ page_size : typing.Optional[int]
+ How many documents to return at maximum. Can not exceed 100, defaults to 30.
+
+ is_error : typing.Optional[bool]
+ Filter by error status. If not provided, returns all executions.
+
+ agent_id : typing.Optional[str]
+ Filter by agent ID.
+
+ branch_id : typing.Optional[str]
+ Filter by agent branch ID.
+
+ start_time : typing.Optional[float]
+ Filter executions from this Unix timestamp (inclusive).
+
+ end_time : typing.Optional[float]
+ Filter executions until this Unix timestamp (inclusive).
+
+ request_options : typing.Optional[RequestOptions]
+ Request-specific configuration.
+
+ Returns
+ -------
+ HttpResponse[GetToolExecutionsPageResponseModel]
+ Successful Response
+ """
+ _response = self._client_wrapper.httpx_client.request(
+ f"v1/convai/tools/{jsonable_encoder(tool_id)}/executions",
+ method="GET",
+ params={
+ "cursor": cursor,
+ "page_size": page_size,
+ "is_error": is_error,
+ "agent_id": agent_id,
+ "branch_id": branch_id,
+ "start_time": start_time,
+ "end_time": end_time,
+ },
+ request_options=request_options,
+ )
+ try:
+ if 200 <= _response.status_code < 300:
+ _data = typing.cast(
+ GetToolExecutionsPageResponseModel,
+ construct_type(
+ type_=GetToolExecutionsPageResponseModel, # 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 AsyncRawExecutionsClient:
+ def __init__(self, *, client_wrapper: AsyncClientWrapper):
+ self._client_wrapper = client_wrapper
+
+ async def get(
+ self,
+ tool_id: str,
+ *,
+ cursor: typing.Optional[str] = None,
+ page_size: typing.Optional[int] = None,
+ is_error: typing.Optional[bool] = None,
+ agent_id: typing.Optional[str] = None,
+ branch_id: typing.Optional[str] = None,
+ start_time: typing.Optional[float] = None,
+ end_time: typing.Optional[float] = None,
+ request_options: typing.Optional[RequestOptions] = None,
+ ) -> AsyncHttpResponse[GetToolExecutionsPageResponseModel]:
+ """
+ Get paginated list of tool executions for a specific tool.
+
+ Parameters
+ ----------
+ tool_id : str
+ ID of the requested tool.
+
+ cursor : typing.Optional[str]
+ Used for fetching next page. Cursor is returned in the response.
+
+ page_size : typing.Optional[int]
+ How many documents to return at maximum. Can not exceed 100, defaults to 30.
+
+ is_error : typing.Optional[bool]
+ Filter by error status. If not provided, returns all executions.
+
+ agent_id : typing.Optional[str]
+ Filter by agent ID.
+
+ branch_id : typing.Optional[str]
+ Filter by agent branch ID.
+
+ start_time : typing.Optional[float]
+ Filter executions from this Unix timestamp (inclusive).
+
+ end_time : typing.Optional[float]
+ Filter executions until this Unix timestamp (inclusive).
+
+ request_options : typing.Optional[RequestOptions]
+ Request-specific configuration.
+
+ Returns
+ -------
+ AsyncHttpResponse[GetToolExecutionsPageResponseModel]
+ Successful Response
+ """
+ _response = await self._client_wrapper.httpx_client.request(
+ f"v1/convai/tools/{jsonable_encoder(tool_id)}/executions",
+ method="GET",
+ params={
+ "cursor": cursor,
+ "page_size": page_size,
+ "is_error": is_error,
+ "agent_id": agent_id,
+ "branch_id": branch_id,
+ "start_time": start_time,
+ "end_time": end_time,
+ },
+ request_options=request_options,
+ )
+ try:
+ if 200 <= _response.status_code < 300:
+ _data = typing.cast(
+ GetToolExecutionsPageResponseModel,
+ construct_type(
+ type_=GetToolExecutionsPageResponseModel, # 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/core/client_wrapper.py b/src/elevenlabs/core/client_wrapper.py
index 25d6eeee..f8c1575d 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.43.0",
+ "User-Agent": "elevenlabs/2.44.0",
"X-Fern-Language": "Python",
"X-Fern-SDK-Name": "elevenlabs",
- "X-Fern-SDK-Version": "2.43.0",
+ "X-Fern-SDK-Version": "2.44.0",
**(self.get_custom_headers() or {}),
}
if self._api_key is not None:
diff --git a/src/elevenlabs/speech_to_text/client.py b/src/elevenlabs/speech_to_text/client.py
index af212cdc..a91159af 100644
--- a/src/elevenlabs/speech_to_text/client.py
+++ b/src/elevenlabs/speech_to_text/client.py
@@ -64,6 +64,7 @@ def convert(
webhook_metadata: typing.Optional[SpeechToTextConvertRequestWebhookMetadata] = OMIT,
entity_detection: typing.Optional[SpeechToTextConvertRequestEntityDetection] = OMIT,
no_verbatim: typing.Optional[bool] = OMIT,
+ detect_speaker_roles: typing.Optional[bool] = OMIT,
entity_redaction: typing.Optional[SpeechToTextConvertRequestEntityRedaction] = OMIT,
entity_redaction_mode: typing.Optional[str] = OMIT,
keyterms: typing.Optional[typing.List[str]] = OMIT,
@@ -137,6 +138,9 @@ def convert(
no_verbatim : typing.Optional[bool]
If true, the transcription will not have any filler words, false starts and non-speech sounds. Only supported with scribe_v2 model.
+ detect_speaker_roles : typing.Optional[bool]
+ Whether to detect speaker roles (agent vs customer). Requires diarize=true. Cannot be used with use_multi_channel=true. When enabled, speaker_id values will be 'agent' and 'customer' instead of 'speaker_0', 'speaker_1', etc. Usage incurs an additional 10% surcharge on base transcription cost.
+
entity_redaction : typing.Optional[SpeechToTextConvertRequestEntityRedaction]
Redact entities from the transcript text. Accepts the same format as entity_detection: 'all', a category ('pii', 'phi'), or specific entity types. Must be a subset of entity_detection. When redaction is enabled, the entities field will not be returned. Usage of this parameter will incur an additional 30% surcharge on the base transcription cost.
@@ -188,6 +192,7 @@ def convert(
webhook_metadata=webhook_metadata,
entity_detection=entity_detection,
no_verbatim=no_verbatim,
+ detect_speaker_roles=detect_speaker_roles,
entity_redaction=entity_redaction,
entity_redaction_mode=entity_redaction_mode,
keyterms=keyterms,
@@ -245,6 +250,7 @@ async def convert(
webhook_metadata: typing.Optional[SpeechToTextConvertRequestWebhookMetadata] = OMIT,
entity_detection: typing.Optional[SpeechToTextConvertRequestEntityDetection] = OMIT,
no_verbatim: typing.Optional[bool] = OMIT,
+ detect_speaker_roles: typing.Optional[bool] = OMIT,
entity_redaction: typing.Optional[SpeechToTextConvertRequestEntityRedaction] = OMIT,
entity_redaction_mode: typing.Optional[str] = OMIT,
keyterms: typing.Optional[typing.List[str]] = OMIT,
@@ -318,6 +324,9 @@ async def convert(
no_verbatim : typing.Optional[bool]
If true, the transcription will not have any filler words, false starts and non-speech sounds. Only supported with scribe_v2 model.
+ detect_speaker_roles : typing.Optional[bool]
+ Whether to detect speaker roles (agent vs customer). Requires diarize=true. Cannot be used with use_multi_channel=true. When enabled, speaker_id values will be 'agent' and 'customer' instead of 'speaker_0', 'speaker_1', etc. Usage incurs an additional 10% surcharge on base transcription cost.
+
entity_redaction : typing.Optional[SpeechToTextConvertRequestEntityRedaction]
Redact entities from the transcript text. Accepts the same format as entity_detection: 'all', a category ('pii', 'phi'), or specific entity types. Must be a subset of entity_detection. When redaction is enabled, the entities field will not be returned. Usage of this parameter will incur an additional 30% surcharge on the base transcription cost.
@@ -377,6 +386,7 @@ async def main() -> None:
webhook_metadata=webhook_metadata,
entity_detection=entity_detection,
no_verbatim=no_verbatim,
+ detect_speaker_roles=detect_speaker_roles,
entity_redaction=entity_redaction,
entity_redaction_mode=entity_redaction_mode,
keyterms=keyterms,
diff --git a/src/elevenlabs/speech_to_text/raw_client.py b/src/elevenlabs/speech_to_text/raw_client.py
index cda2e982..bed22c51 100644
--- a/src/elevenlabs/speech_to_text/raw_client.py
+++ b/src/elevenlabs/speech_to_text/raw_client.py
@@ -53,6 +53,7 @@ def convert(
webhook_metadata: typing.Optional[SpeechToTextConvertRequestWebhookMetadata] = OMIT,
entity_detection: typing.Optional[SpeechToTextConvertRequestEntityDetection] = OMIT,
no_verbatim: typing.Optional[bool] = OMIT,
+ detect_speaker_roles: typing.Optional[bool] = OMIT,
entity_redaction: typing.Optional[SpeechToTextConvertRequestEntityRedaction] = OMIT,
entity_redaction_mode: typing.Optional[str] = OMIT,
keyterms: typing.Optional[typing.List[str]] = OMIT,
@@ -126,6 +127,9 @@ def convert(
no_verbatim : typing.Optional[bool]
If true, the transcription will not have any filler words, false starts and non-speech sounds. Only supported with scribe_v2 model.
+ detect_speaker_roles : typing.Optional[bool]
+ Whether to detect speaker roles (agent vs customer). Requires diarize=true. Cannot be used with use_multi_channel=true. When enabled, speaker_id values will be 'agent' and 'customer' instead of 'speaker_0', 'speaker_1', etc. Usage incurs an additional 10% surcharge on base transcription cost.
+
entity_redaction : typing.Optional[SpeechToTextConvertRequestEntityRedaction]
Redact entities from the transcript text. Accepts the same format as entity_detection: 'all', a category ('pii', 'phi'), or specific entity types. Must be a subset of entity_detection. When redaction is enabled, the entities field will not be returned. Usage of this parameter will incur an additional 30% surcharge on the base transcription cost.
@@ -168,6 +172,7 @@ def convert(
"webhook_metadata": webhook_metadata,
"entity_detection": entity_detection,
"no_verbatim": no_verbatim,
+ "detect_speaker_roles": detect_speaker_roles,
"entity_redaction": entity_redaction,
"entity_redaction_mode": entity_redaction_mode,
"keyterms": keyterms,
@@ -239,6 +244,7 @@ async def convert(
webhook_metadata: typing.Optional[SpeechToTextConvertRequestWebhookMetadata] = OMIT,
entity_detection: typing.Optional[SpeechToTextConvertRequestEntityDetection] = OMIT,
no_verbatim: typing.Optional[bool] = OMIT,
+ detect_speaker_roles: typing.Optional[bool] = OMIT,
entity_redaction: typing.Optional[SpeechToTextConvertRequestEntityRedaction] = OMIT,
entity_redaction_mode: typing.Optional[str] = OMIT,
keyterms: typing.Optional[typing.List[str]] = OMIT,
@@ -312,6 +318,9 @@ async def convert(
no_verbatim : typing.Optional[bool]
If true, the transcription will not have any filler words, false starts and non-speech sounds. Only supported with scribe_v2 model.
+ detect_speaker_roles : typing.Optional[bool]
+ Whether to detect speaker roles (agent vs customer). Requires diarize=true. Cannot be used with use_multi_channel=true. When enabled, speaker_id values will be 'agent' and 'customer' instead of 'speaker_0', 'speaker_1', etc. Usage incurs an additional 10% surcharge on base transcription cost.
+
entity_redaction : typing.Optional[SpeechToTextConvertRequestEntityRedaction]
Redact entities from the transcript text. Accepts the same format as entity_detection: 'all', a category ('pii', 'phi'), or specific entity types. Must be a subset of entity_detection. When redaction is enabled, the entities field will not be returned. Usage of this parameter will incur an additional 30% surcharge on the base transcription cost.
@@ -354,6 +363,7 @@ async def convert(
"webhook_metadata": webhook_metadata,
"entity_detection": entity_detection,
"no_verbatim": no_verbatim,
+ "detect_speaker_roles": detect_speaker_roles,
"entity_redaction": entity_redaction,
"entity_redaction_mode": entity_redaction_mode,
"keyterms": keyterms,
diff --git a/src/elevenlabs/studio/__init__.py b/src/elevenlabs/studio/__init__.py
index 35d80dba..44318af8 100644
--- a/src/elevenlabs/studio/__init__.py
+++ b/src/elevenlabs/studio/__init__.py
@@ -12,7 +12,6 @@
BodyCreatePodcastV1StudioPodcastsPostMode,
BodyCreatePodcastV1StudioPodcastsPostMode_Bulletin,
BodyCreatePodcastV1StudioPodcastsPostMode_Conversation,
- BodyCreatePodcastV1StudioPodcastsPostQualityPreset,
BodyCreatePodcastV1StudioPodcastsPostSource,
BodyCreatePodcastV1StudioPodcastsPostSourceTwoItem,
BodyCreatePodcastV1StudioPodcastsPostSourceTwoItem_Text,
@@ -22,7 +21,6 @@
from .projects import (
ProjectsCreateRequestApplyTextNormalization,
ProjectsCreateRequestFiction,
- ProjectsCreateRequestQualityPreset,
ProjectsCreateRequestSourceType,
ProjectsCreateRequestTargetAudience,
)
@@ -32,14 +30,12 @@
"BodyCreatePodcastV1StudioPodcastsPostMode": ".types",
"BodyCreatePodcastV1StudioPodcastsPostMode_Bulletin": ".types",
"BodyCreatePodcastV1StudioPodcastsPostMode_Conversation": ".types",
- "BodyCreatePodcastV1StudioPodcastsPostQualityPreset": ".types",
"BodyCreatePodcastV1StudioPodcastsPostSource": ".types",
"BodyCreatePodcastV1StudioPodcastsPostSourceTwoItem": ".types",
"BodyCreatePodcastV1StudioPodcastsPostSourceTwoItem_Text": ".types",
"BodyCreatePodcastV1StudioPodcastsPostSourceTwoItem_Url": ".types",
"ProjectsCreateRequestApplyTextNormalization": ".projects",
"ProjectsCreateRequestFiction": ".projects",
- "ProjectsCreateRequestQualityPreset": ".projects",
"ProjectsCreateRequestSourceType": ".projects",
"ProjectsCreateRequestTargetAudience": ".projects",
"projects": ".projects",
@@ -73,14 +69,12 @@ def __dir__():
"BodyCreatePodcastV1StudioPodcastsPostMode",
"BodyCreatePodcastV1StudioPodcastsPostMode_Bulletin",
"BodyCreatePodcastV1StudioPodcastsPostMode_Conversation",
- "BodyCreatePodcastV1StudioPodcastsPostQualityPreset",
"BodyCreatePodcastV1StudioPodcastsPostSource",
"BodyCreatePodcastV1StudioPodcastsPostSourceTwoItem",
"BodyCreatePodcastV1StudioPodcastsPostSourceTwoItem_Text",
"BodyCreatePodcastV1StudioPodcastsPostSourceTwoItem_Url",
"ProjectsCreateRequestApplyTextNormalization",
"ProjectsCreateRequestFiction",
- "ProjectsCreateRequestQualityPreset",
"ProjectsCreateRequestSourceType",
"ProjectsCreateRequestTargetAudience",
"projects",
diff --git a/src/elevenlabs/studio/client.py b/src/elevenlabs/studio/client.py
index 907b908c..5070f3b0 100644
--- a/src/elevenlabs/studio/client.py
+++ b/src/elevenlabs/studio/client.py
@@ -7,6 +7,7 @@
from ..core.client_wrapper import AsyncClientWrapper, SyncClientWrapper
from ..core.request_options import RequestOptions
from ..types.podcast_project_response_model import PodcastProjectResponseModel
+from ..types.quality_preset_type import QualityPresetType
from .raw_client import AsyncRawStudioClient, RawStudioClient
from .types.body_create_podcast_v_1_studio_podcasts_post_apply_text_normalization import (
BodyCreatePodcastV1StudioPodcastsPostApplyTextNormalization,
@@ -15,9 +16,6 @@
BodyCreatePodcastV1StudioPodcastsPostDurationScale,
)
from .types.body_create_podcast_v_1_studio_podcasts_post_mode import BodyCreatePodcastV1StudioPodcastsPostMode
-from .types.body_create_podcast_v_1_studio_podcasts_post_quality_preset import (
- BodyCreatePodcastV1StudioPodcastsPostQualityPreset,
-)
from .types.body_create_podcast_v_1_studio_podcasts_post_source import BodyCreatePodcastV1StudioPodcastsPostSource
if typing.TYPE_CHECKING:
@@ -50,7 +48,7 @@ def create_podcast(
mode: BodyCreatePodcastV1StudioPodcastsPostMode,
source: BodyCreatePodcastV1StudioPodcastsPostSource,
safety_identifier: typing.Optional[str] = None,
- quality_preset: typing.Optional[BodyCreatePodcastV1StudioPodcastsPostQualityPreset] = OMIT,
+ quality_preset: typing.Optional[QualityPresetType] = OMIT,
duration_scale: typing.Optional[BodyCreatePodcastV1StudioPodcastsPostDurationScale] = OMIT,
language: typing.Optional[str] = OMIT,
intro: typing.Optional[str] = OMIT,
@@ -78,7 +76,7 @@ def create_podcast(
safety_identifier : typing.Optional[str]
Used for moderation. Your workspace must be allowlisted to use this feature.
- quality_preset : typing.Optional[BodyCreatePodcastV1StudioPodcastsPostQualityPreset]
+ quality_preset : typing.Optional[QualityPresetType]
Output quality of the generated audio. Must be one of:
'standard' - standard output format, 128kbps with 44.1kHz sample rate.
'high' - high quality output format, 192kbps with 44.1kHz sample rate and major improvements on our side.
@@ -257,7 +255,7 @@ async def create_podcast(
mode: BodyCreatePodcastV1StudioPodcastsPostMode,
source: BodyCreatePodcastV1StudioPodcastsPostSource,
safety_identifier: typing.Optional[str] = None,
- quality_preset: typing.Optional[BodyCreatePodcastV1StudioPodcastsPostQualityPreset] = OMIT,
+ quality_preset: typing.Optional[QualityPresetType] = OMIT,
duration_scale: typing.Optional[BodyCreatePodcastV1StudioPodcastsPostDurationScale] = OMIT,
language: typing.Optional[str] = OMIT,
intro: typing.Optional[str] = OMIT,
@@ -285,7 +283,7 @@ async def create_podcast(
safety_identifier : typing.Optional[str]
Used for moderation. Your workspace must be allowlisted to use this feature.
- quality_preset : typing.Optional[BodyCreatePodcastV1StudioPodcastsPostQualityPreset]
+ quality_preset : typing.Optional[QualityPresetType]
Output quality of the generated audio. Must be one of:
'standard' - standard output format, 128kbps with 44.1kHz sample rate.
'high' - high quality output format, 192kbps with 44.1kHz sample rate and major improvements on our side.
diff --git a/src/elevenlabs/studio/projects/__init__.py b/src/elevenlabs/studio/projects/__init__.py
index f3008326..eda81aff 100644
--- a/src/elevenlabs/studio/projects/__init__.py
+++ b/src/elevenlabs/studio/projects/__init__.py
@@ -9,7 +9,6 @@
from .types import (
ProjectsCreateRequestApplyTextNormalization,
ProjectsCreateRequestFiction,
- ProjectsCreateRequestQualityPreset,
ProjectsCreateRequestSourceType,
ProjectsCreateRequestTargetAudience,
)
@@ -17,7 +16,6 @@
_dynamic_imports: typing.Dict[str, str] = {
"ProjectsCreateRequestApplyTextNormalization": ".types",
"ProjectsCreateRequestFiction": ".types",
- "ProjectsCreateRequestQualityPreset": ".types",
"ProjectsCreateRequestSourceType": ".types",
"ProjectsCreateRequestTargetAudience": ".types",
"chapters": ".chapters",
@@ -51,7 +49,6 @@ def __dir__():
__all__ = [
"ProjectsCreateRequestApplyTextNormalization",
"ProjectsCreateRequestFiction",
- "ProjectsCreateRequestQualityPreset",
"ProjectsCreateRequestSourceType",
"ProjectsCreateRequestTargetAudience",
"chapters",
diff --git a/src/elevenlabs/studio/projects/client.py b/src/elevenlabs/studio/projects/client.py
index fcc7b33d..0ea0c275 100644
--- a/src/elevenlabs/studio/projects/client.py
+++ b/src/elevenlabs/studio/projects/client.py
@@ -14,10 +14,10 @@
from ...types.get_projects_response import GetProjectsResponse
from ...types.project_extended_response import ProjectExtendedResponse
from ...types.project_muted_tracks_response_model import ProjectMutedTracksResponseModel
+from ...types.quality_preset_type import QualityPresetType
from .raw_client import AsyncRawProjectsClient, RawProjectsClient
from .types.projects_create_request_apply_text_normalization import ProjectsCreateRequestApplyTextNormalization
from .types.projects_create_request_fiction import ProjectsCreateRequestFiction
-from .types.projects_create_request_quality_preset import ProjectsCreateRequestQualityPreset
from .types.projects_create_request_source_type import ProjectsCreateRequestSourceType
from .types.projects_create_request_target_audience import ProjectsCreateRequestTargetAudience
@@ -86,7 +86,7 @@ def create(
from_url: typing.Optional[str] = OMIT,
from_document: typing.Optional[core.File] = OMIT,
from_content_json: typing.Optional[str] = OMIT,
- quality_preset: typing.Optional[ProjectsCreateRequestQualityPreset] = OMIT,
+ quality_preset: typing.Optional[QualityPresetType] = OMIT,
title: typing.Optional[str] = OMIT,
author: typing.Optional[str] = OMIT,
description: typing.Optional[str] = OMIT,
@@ -141,7 +141,7 @@ def create(
[{"name": "Chapter A", "blocks": [{"sub_type": "p", "nodes": [{"voice_id": "6lCwbsX1yVjD49QmpkT0", "text": "A", "type": "tts_node"}, {"voice_id": "6lCwbsX1yVjD49QmpkT1", "text": "B", "type": "tts_node"}]}, {"sub_type": "h1", "nodes": [{"voice_id": "6lCwbsX1yVjD49QmpkT0", "text": "C", "type": "tts_node"}, {"voice_id": "6lCwbsX1yVjD49QmpkT1", "text": "D", "type": "tts_node"}]}]}, {"name": "Chapter B", "blocks": [{"sub_type": "p", "nodes": [{"voice_id": "6lCwbsX1yVjD49QmpkT0", "text": "E", "type": "tts_node"}, {"voice_id": "6lCwbsX1yVjD49QmpkT1", "text": "F", "type": "tts_node"}]}, {"sub_type": "h2", "nodes": [{"voice_id": "6lCwbsX1yVjD49QmpkT0", "text": "G", "type": "tts_node"}, {"voice_id": "6lCwbsX1yVjD49QmpkT1", "text": "H", "type": "tts_node"}]}]}]
- quality_preset : typing.Optional[ProjectsCreateRequestQualityPreset]
+ quality_preset : typing.Optional[QualityPresetType]
Output quality of the generated audio. Must be one of:
'standard' - standard output format, 128kbps with 44.1kHz sample rate.
'high' - high quality output format, 192kbps with 44.1kHz sample rate and major improvements on our side.
@@ -641,7 +641,7 @@ async def create(
from_url: typing.Optional[str] = OMIT,
from_document: typing.Optional[core.File] = OMIT,
from_content_json: typing.Optional[str] = OMIT,
- quality_preset: typing.Optional[ProjectsCreateRequestQualityPreset] = OMIT,
+ quality_preset: typing.Optional[QualityPresetType] = OMIT,
title: typing.Optional[str] = OMIT,
author: typing.Optional[str] = OMIT,
description: typing.Optional[str] = OMIT,
@@ -696,7 +696,7 @@ async def create(
[{"name": "Chapter A", "blocks": [{"sub_type": "p", "nodes": [{"voice_id": "6lCwbsX1yVjD49QmpkT0", "text": "A", "type": "tts_node"}, {"voice_id": "6lCwbsX1yVjD49QmpkT1", "text": "B", "type": "tts_node"}]}, {"sub_type": "h1", "nodes": [{"voice_id": "6lCwbsX1yVjD49QmpkT0", "text": "C", "type": "tts_node"}, {"voice_id": "6lCwbsX1yVjD49QmpkT1", "text": "D", "type": "tts_node"}]}]}, {"name": "Chapter B", "blocks": [{"sub_type": "p", "nodes": [{"voice_id": "6lCwbsX1yVjD49QmpkT0", "text": "E", "type": "tts_node"}, {"voice_id": "6lCwbsX1yVjD49QmpkT1", "text": "F", "type": "tts_node"}]}, {"sub_type": "h2", "nodes": [{"voice_id": "6lCwbsX1yVjD49QmpkT0", "text": "G", "type": "tts_node"}, {"voice_id": "6lCwbsX1yVjD49QmpkT1", "text": "H", "type": "tts_node"}]}]}]
- quality_preset : typing.Optional[ProjectsCreateRequestQualityPreset]
+ quality_preset : typing.Optional[QualityPresetType]
Output quality of the generated audio. Must be one of:
'standard' - standard output format, 128kbps with 44.1kHz sample rate.
'high' - high quality output format, 192kbps with 44.1kHz sample rate and major improvements on our side.
diff --git a/src/elevenlabs/studio/projects/raw_client.py b/src/elevenlabs/studio/projects/raw_client.py
index 81746988..f9beeeca 100644
--- a/src/elevenlabs/studio/projects/raw_client.py
+++ b/src/elevenlabs/studio/projects/raw_client.py
@@ -18,9 +18,9 @@
from ...types.get_projects_response import GetProjectsResponse
from ...types.project_extended_response import ProjectExtendedResponse
from ...types.project_muted_tracks_response_model import ProjectMutedTracksResponseModel
+from ...types.quality_preset_type import QualityPresetType
from .types.projects_create_request_apply_text_normalization import ProjectsCreateRequestApplyTextNormalization
from .types.projects_create_request_fiction import ProjectsCreateRequestFiction
-from .types.projects_create_request_quality_preset import ProjectsCreateRequestQualityPreset
from .types.projects_create_request_source_type import ProjectsCreateRequestSourceType
from .types.projects_create_request_target_audience import ProjectsCreateRequestTargetAudience
@@ -87,7 +87,7 @@ def create(
from_url: typing.Optional[str] = OMIT,
from_document: typing.Optional[core.File] = OMIT,
from_content_json: typing.Optional[str] = OMIT,
- quality_preset: typing.Optional[ProjectsCreateRequestQualityPreset] = OMIT,
+ quality_preset: typing.Optional[QualityPresetType] = OMIT,
title: typing.Optional[str] = OMIT,
author: typing.Optional[str] = OMIT,
description: typing.Optional[str] = OMIT,
@@ -142,7 +142,7 @@ def create(
[{"name": "Chapter A", "blocks": [{"sub_type": "p", "nodes": [{"voice_id": "6lCwbsX1yVjD49QmpkT0", "text": "A", "type": "tts_node"}, {"voice_id": "6lCwbsX1yVjD49QmpkT1", "text": "B", "type": "tts_node"}]}, {"sub_type": "h1", "nodes": [{"voice_id": "6lCwbsX1yVjD49QmpkT0", "text": "C", "type": "tts_node"}, {"voice_id": "6lCwbsX1yVjD49QmpkT1", "text": "D", "type": "tts_node"}]}]}, {"name": "Chapter B", "blocks": [{"sub_type": "p", "nodes": [{"voice_id": "6lCwbsX1yVjD49QmpkT0", "text": "E", "type": "tts_node"}, {"voice_id": "6lCwbsX1yVjD49QmpkT1", "text": "F", "type": "tts_node"}]}, {"sub_type": "h2", "nodes": [{"voice_id": "6lCwbsX1yVjD49QmpkT0", "text": "G", "type": "tts_node"}, {"voice_id": "6lCwbsX1yVjD49QmpkT1", "text": "H", "type": "tts_node"}]}]}]
- quality_preset : typing.Optional[ProjectsCreateRequestQualityPreset]
+ quality_preset : typing.Optional[QualityPresetType]
Output quality of the generated audio. Must be one of:
'standard' - standard output format, 128kbps with 44.1kHz sample rate.
'high' - high quality output format, 192kbps with 44.1kHz sample rate and major improvements on our side.
@@ -715,7 +715,7 @@ async def create(
from_url: typing.Optional[str] = OMIT,
from_document: typing.Optional[core.File] = OMIT,
from_content_json: typing.Optional[str] = OMIT,
- quality_preset: typing.Optional[ProjectsCreateRequestQualityPreset] = OMIT,
+ quality_preset: typing.Optional[QualityPresetType] = OMIT,
title: typing.Optional[str] = OMIT,
author: typing.Optional[str] = OMIT,
description: typing.Optional[str] = OMIT,
@@ -770,7 +770,7 @@ async def create(
[{"name": "Chapter A", "blocks": [{"sub_type": "p", "nodes": [{"voice_id": "6lCwbsX1yVjD49QmpkT0", "text": "A", "type": "tts_node"}, {"voice_id": "6lCwbsX1yVjD49QmpkT1", "text": "B", "type": "tts_node"}]}, {"sub_type": "h1", "nodes": [{"voice_id": "6lCwbsX1yVjD49QmpkT0", "text": "C", "type": "tts_node"}, {"voice_id": "6lCwbsX1yVjD49QmpkT1", "text": "D", "type": "tts_node"}]}]}, {"name": "Chapter B", "blocks": [{"sub_type": "p", "nodes": [{"voice_id": "6lCwbsX1yVjD49QmpkT0", "text": "E", "type": "tts_node"}, {"voice_id": "6lCwbsX1yVjD49QmpkT1", "text": "F", "type": "tts_node"}]}, {"sub_type": "h2", "nodes": [{"voice_id": "6lCwbsX1yVjD49QmpkT0", "text": "G", "type": "tts_node"}, {"voice_id": "6lCwbsX1yVjD49QmpkT1", "text": "H", "type": "tts_node"}]}]}]
- quality_preset : typing.Optional[ProjectsCreateRequestQualityPreset]
+ quality_preset : typing.Optional[QualityPresetType]
Output quality of the generated audio. Must be one of:
'standard' - standard output format, 128kbps with 44.1kHz sample rate.
'high' - high quality output format, 192kbps with 44.1kHz sample rate and major improvements on our side.
diff --git a/src/elevenlabs/studio/projects/types/__init__.py b/src/elevenlabs/studio/projects/types/__init__.py
index 34e97bb4..9428f3ac 100644
--- a/src/elevenlabs/studio/projects/types/__init__.py
+++ b/src/elevenlabs/studio/projects/types/__init__.py
@@ -8,13 +8,11 @@
if typing.TYPE_CHECKING:
from .projects_create_request_apply_text_normalization import ProjectsCreateRequestApplyTextNormalization
from .projects_create_request_fiction import ProjectsCreateRequestFiction
- from .projects_create_request_quality_preset import ProjectsCreateRequestQualityPreset
from .projects_create_request_source_type import ProjectsCreateRequestSourceType
from .projects_create_request_target_audience import ProjectsCreateRequestTargetAudience
_dynamic_imports: typing.Dict[str, str] = {
"ProjectsCreateRequestApplyTextNormalization": ".projects_create_request_apply_text_normalization",
"ProjectsCreateRequestFiction": ".projects_create_request_fiction",
- "ProjectsCreateRequestQualityPreset": ".projects_create_request_quality_preset",
"ProjectsCreateRequestSourceType": ".projects_create_request_source_type",
"ProjectsCreateRequestTargetAudience": ".projects_create_request_target_audience",
}
@@ -44,7 +42,6 @@ def __dir__():
__all__ = [
"ProjectsCreateRequestApplyTextNormalization",
"ProjectsCreateRequestFiction",
- "ProjectsCreateRequestQualityPreset",
"ProjectsCreateRequestSourceType",
"ProjectsCreateRequestTargetAudience",
]
diff --git a/src/elevenlabs/studio/projects/types/projects_create_request_quality_preset.py b/src/elevenlabs/studio/projects/types/projects_create_request_quality_preset.py
deleted file mode 100644
index 22255b23..00000000
--- a/src/elevenlabs/studio/projects/types/projects_create_request_quality_preset.py
+++ /dev/null
@@ -1,7 +0,0 @@
-# This file was auto-generated by Fern from our API Definition.
-
-import typing
-
-ProjectsCreateRequestQualityPreset = typing.Union[
- typing.Literal["standard", "high", "ultra", "ultra_lossless"], typing.Any
-]
diff --git a/src/elevenlabs/studio/raw_client.py b/src/elevenlabs/studio/raw_client.py
index 73462639..e4ca62ff 100644
--- a/src/elevenlabs/studio/raw_client.py
+++ b/src/elevenlabs/studio/raw_client.py
@@ -11,6 +11,7 @@
from ..core.unchecked_base_model import construct_type
from ..errors.unprocessable_entity_error import UnprocessableEntityError
from ..types.podcast_project_response_model import PodcastProjectResponseModel
+from ..types.quality_preset_type import QualityPresetType
from .types.body_create_podcast_v_1_studio_podcasts_post_apply_text_normalization import (
BodyCreatePodcastV1StudioPodcastsPostApplyTextNormalization,
)
@@ -18,9 +19,6 @@
BodyCreatePodcastV1StudioPodcastsPostDurationScale,
)
from .types.body_create_podcast_v_1_studio_podcasts_post_mode import BodyCreatePodcastV1StudioPodcastsPostMode
-from .types.body_create_podcast_v_1_studio_podcasts_post_quality_preset import (
- BodyCreatePodcastV1StudioPodcastsPostQualityPreset,
-)
from .types.body_create_podcast_v_1_studio_podcasts_post_source import BodyCreatePodcastV1StudioPodcastsPostSource
# this is used as the default value for optional parameters
@@ -38,7 +36,7 @@ def create_podcast(
mode: BodyCreatePodcastV1StudioPodcastsPostMode,
source: BodyCreatePodcastV1StudioPodcastsPostSource,
safety_identifier: typing.Optional[str] = None,
- quality_preset: typing.Optional[BodyCreatePodcastV1StudioPodcastsPostQualityPreset] = OMIT,
+ quality_preset: typing.Optional[QualityPresetType] = OMIT,
duration_scale: typing.Optional[BodyCreatePodcastV1StudioPodcastsPostDurationScale] = OMIT,
language: typing.Optional[str] = OMIT,
intro: typing.Optional[str] = OMIT,
@@ -66,7 +64,7 @@ def create_podcast(
safety_identifier : typing.Optional[str]
Used for moderation. Your workspace must be allowlisted to use this feature.
- quality_preset : typing.Optional[BodyCreatePodcastV1StudioPodcastsPostQualityPreset]
+ quality_preset : typing.Optional[QualityPresetType]
Output quality of the generated audio. Must be one of:
'standard' - standard output format, 128kbps with 44.1kHz sample rate.
'high' - high quality output format, 192kbps with 44.1kHz sample rate and major improvements on our side.
@@ -233,7 +231,7 @@ async def create_podcast(
mode: BodyCreatePodcastV1StudioPodcastsPostMode,
source: BodyCreatePodcastV1StudioPodcastsPostSource,
safety_identifier: typing.Optional[str] = None,
- quality_preset: typing.Optional[BodyCreatePodcastV1StudioPodcastsPostQualityPreset] = OMIT,
+ quality_preset: typing.Optional[QualityPresetType] = OMIT,
duration_scale: typing.Optional[BodyCreatePodcastV1StudioPodcastsPostDurationScale] = OMIT,
language: typing.Optional[str] = OMIT,
intro: typing.Optional[str] = OMIT,
@@ -261,7 +259,7 @@ async def create_podcast(
safety_identifier : typing.Optional[str]
Used for moderation. Your workspace must be allowlisted to use this feature.
- quality_preset : typing.Optional[BodyCreatePodcastV1StudioPodcastsPostQualityPreset]
+ quality_preset : typing.Optional[QualityPresetType]
Output quality of the generated audio. Must be one of:
'standard' - standard output format, 128kbps with 44.1kHz sample rate.
'high' - high quality output format, 192kbps with 44.1kHz sample rate and major improvements on our side.
diff --git a/src/elevenlabs/studio/types/__init__.py b/src/elevenlabs/studio/types/__init__.py
index 14f053bd..5f00969c 100644
--- a/src/elevenlabs/studio/types/__init__.py
+++ b/src/elevenlabs/studio/types/__init__.py
@@ -17,9 +17,6 @@
BodyCreatePodcastV1StudioPodcastsPostMode_Bulletin,
BodyCreatePodcastV1StudioPodcastsPostMode_Conversation,
)
- from .body_create_podcast_v_1_studio_podcasts_post_quality_preset import (
- BodyCreatePodcastV1StudioPodcastsPostQualityPreset,
- )
from .body_create_podcast_v_1_studio_podcasts_post_source import BodyCreatePodcastV1StudioPodcastsPostSource
from .body_create_podcast_v_1_studio_podcasts_post_source_two_item import (
BodyCreatePodcastV1StudioPodcastsPostSourceTwoItem,
@@ -32,7 +29,6 @@
"BodyCreatePodcastV1StudioPodcastsPostMode": ".body_create_podcast_v_1_studio_podcasts_post_mode",
"BodyCreatePodcastV1StudioPodcastsPostMode_Bulletin": ".body_create_podcast_v_1_studio_podcasts_post_mode",
"BodyCreatePodcastV1StudioPodcastsPostMode_Conversation": ".body_create_podcast_v_1_studio_podcasts_post_mode",
- "BodyCreatePodcastV1StudioPodcastsPostQualityPreset": ".body_create_podcast_v_1_studio_podcasts_post_quality_preset",
"BodyCreatePodcastV1StudioPodcastsPostSource": ".body_create_podcast_v_1_studio_podcasts_post_source",
"BodyCreatePodcastV1StudioPodcastsPostSourceTwoItem": ".body_create_podcast_v_1_studio_podcasts_post_source_two_item",
"BodyCreatePodcastV1StudioPodcastsPostSourceTwoItem_Text": ".body_create_podcast_v_1_studio_podcasts_post_source_two_item",
@@ -67,7 +63,6 @@ def __dir__():
"BodyCreatePodcastV1StudioPodcastsPostMode",
"BodyCreatePodcastV1StudioPodcastsPostMode_Bulletin",
"BodyCreatePodcastV1StudioPodcastsPostMode_Conversation",
- "BodyCreatePodcastV1StudioPodcastsPostQualityPreset",
"BodyCreatePodcastV1StudioPodcastsPostSource",
"BodyCreatePodcastV1StudioPodcastsPostSourceTwoItem",
"BodyCreatePodcastV1StudioPodcastsPostSourceTwoItem_Text",
diff --git a/src/elevenlabs/studio/types/body_create_podcast_v_1_studio_podcasts_post_quality_preset.py b/src/elevenlabs/studio/types/body_create_podcast_v_1_studio_podcasts_post_quality_preset.py
deleted file mode 100644
index 4e4ad6b9..00000000
--- a/src/elevenlabs/studio/types/body_create_podcast_v_1_studio_podcasts_post_quality_preset.py
+++ /dev/null
@@ -1,7 +0,0 @@
-# This file was auto-generated by Fern from our API Definition.
-
-import typing
-
-BodyCreatePodcastV1StudioPodcastsPostQualityPreset = typing.Union[
- typing.Literal["standard", "high", "highest", "ultra", "ultra_lossless"], typing.Any
-]
diff --git a/src/elevenlabs/text_to_dialogue/client.py b/src/elevenlabs/text_to_dialogue/client.py
index a305008a..954f0a98 100644
--- a/src/elevenlabs/text_to_dialogue/client.py
+++ b/src/elevenlabs/text_to_dialogue/client.py
@@ -8,7 +8,6 @@
from ..types.audio_with_timestamps_and_voice_segments_response_model import (
AudioWithTimestampsAndVoiceSegmentsResponseModel,
)
-from ..types.avatar_context_request_model import AvatarContextRequestModel
from ..types.dialogue_input import DialogueInput
from ..types.model_settings_response_model import ModelSettingsResponseModel
from ..types.pronunciation_dictionary_version_locator import PronunciationDictionaryVersionLocator
@@ -67,7 +66,6 @@ def convert(
apply_text_normalization: typing.Optional[
BodyTextToDialogueMultiVoiceV1TextToDialoguePostApplyTextNormalization
] = OMIT,
- avatar_context: typing.Optional[AvatarContextRequestModel] = OMIT,
request_options: typing.Optional[RequestOptions] = None,
) -> typing.Iterator[bytes]:
"""
@@ -76,7 +74,7 @@ def convert(
Parameters
----------
inputs : typing.Sequence[DialogueInput]
- A list of dialogue inputs, each containing text and a voice ID which will be converted into speech. The maximum number of unique voice IDs is 10.
+ A list of dialogue inputs, each containing text and a voice ID which will be converted into speech. The maximum number of unique voice IDs is 10. For reliable generation, keep the total character count across all `inputs[].text` values at or below 2,000 characters per request. Longer requests can terminate early in streaming responses or return a validation error.
output_format : typing.Optional[TextToDialogueConvertRequestOutputFormat]
Output format of the generated audio. Formatted as codec_sample_rate_bitrate. So an mp3 with 22.05kHz sample rate at 32kbs is represented as mp3_22050_32. MP3 with 192kbps bitrate requires you to be subscribed to Creator tier or above. PCM and WAV formats with 44.1kHz sample rate requires you to be subscribed to Pro tier or above. Note that the μ-law format (sometimes written mu-law, often approximated as u-law) is commonly used for Twilio audio inputs.
@@ -99,9 +97,6 @@ def convert(
apply_text_normalization : typing.Optional[BodyTextToDialogueMultiVoiceV1TextToDialoguePostApplyTextNormalization]
This parameter controls text normalization with three modes: 'auto', 'on', and 'off'. When set to 'auto', the system will automatically decide whether to apply text normalization (e.g., spelling out numbers). With 'on', text normalization will always be applied, while with 'off', it will be skipped.
- avatar_context : typing.Optional[AvatarContextRequestModel]
- Avatar context when this generation is made from the Avatars video editor.
-
request_options : typing.Optional[RequestOptions]
Request-specific configuration. You can pass in configuration such as `chunk_size`, and more to customize the request and response.
@@ -139,7 +134,6 @@ def convert(
pronunciation_dictionary_locators=pronunciation_dictionary_locators,
seed=seed,
apply_text_normalization=apply_text_normalization,
- avatar_context=avatar_context,
request_options=request_options,
) as r:
yield from r.data
@@ -159,7 +153,6 @@ def stream(
apply_text_normalization: typing.Optional[
BodyTextToDialogueMultiVoiceStreamingV1TextToDialogueStreamPostApplyTextNormalization
] = OMIT,
- avatar_context: typing.Optional[AvatarContextRequestModel] = OMIT,
request_options: typing.Optional[RequestOptions] = None,
) -> typing.Iterator[bytes]:
"""
@@ -168,7 +161,7 @@ def stream(
Parameters
----------
inputs : typing.Sequence[DialogueInput]
- A list of dialogue inputs, each containing text and a voice ID which will be converted into speech. The maximum number of unique voice IDs is 10.
+ A list of dialogue inputs, each containing text and a voice ID which will be converted into speech. The maximum number of unique voice IDs is 10. For reliable generation, keep the total character count across all `inputs[].text` values at or below 2,000 characters per request. Longer requests can terminate early in streaming responses or return a validation error.
output_format : typing.Optional[AllowedOutputFormats]
Output format of the generated audio. Formatted as codec_sample_rate_bitrate. So an mp3 with 22.05kHz sample rate at 32kbs is represented as mp3_22050_32. MP3 with 192kbps bitrate requires you to be subscribed to Creator tier or above. PCM with 44.1kHz sample rate requires you to be subscribed to Pro tier or above. Note that the μ-law format (sometimes written mu-law, often approximated as u-law) is commonly used for Twilio audio inputs.
@@ -191,9 +184,6 @@ def stream(
apply_text_normalization : typing.Optional[BodyTextToDialogueMultiVoiceStreamingV1TextToDialogueStreamPostApplyTextNormalization]
This parameter controls text normalization with three modes: 'auto', 'on', and 'off'. When set to 'auto', the system will automatically decide whether to apply text normalization (e.g., spelling out numbers). With 'on', text normalization will always be applied, while with 'off', it will be skipped.
- avatar_context : typing.Optional[AvatarContextRequestModel]
- Avatar context when this generation is made from the Avatars video editor.
-
request_options : typing.Optional[RequestOptions]
Request-specific configuration. You can pass in configuration such as `chunk_size`, and more to customize the request and response.
@@ -231,7 +221,6 @@ def stream(
pronunciation_dictionary_locators=pronunciation_dictionary_locators,
seed=seed,
apply_text_normalization=apply_text_normalization,
- avatar_context=avatar_context,
request_options=request_options,
) as r:
yield from r.data
@@ -257,7 +246,7 @@ def stream_with_timestamps(
Parameters
----------
inputs : typing.Sequence[DialogueInput]
- A list of dialogue inputs, each containing text and a voice ID which will be converted into speech. The maximum number of unique voice IDs is 10.
+ A list of dialogue inputs, each containing text and a voice ID which will be converted into speech. The maximum number of unique voice IDs is 10. For reliable generation, keep the total character count across all `inputs[].text` values at or below 2,000 characters per request. Longer requests can terminate early in streaming responses or return a validation error.
output_format : typing.Optional[AllowedOutputFormats]
Output format of the generated audio. Formatted as codec_sample_rate_bitrate. So an mp3 with 22.05kHz sample rate at 32kbs is represented as mp3_22050_32. MP3 with 192kbps bitrate requires you to be subscribed to Creator tier or above. PCM with 44.1kHz sample rate requires you to be subscribed to Pro tier or above. Note that the μ-law format (sometimes written mu-law, often approximated as u-law) is commonly used for Twilio audio inputs.
@@ -345,7 +334,7 @@ def convert_with_timestamps(
Parameters
----------
inputs : typing.Sequence[DialogueInput]
- A list of dialogue inputs, each containing text and a voice ID which will be converted into speech. The maximum number of unique voice IDs is 10.
+ A list of dialogue inputs, each containing text and a voice ID which will be converted into speech. The maximum number of unique voice IDs is 10. For reliable generation, keep the total character count across all `inputs[].text` values at or below 2,000 characters per request. Longer requests can terminate early in streaming responses or return a validation error.
output_format : typing.Optional[TextToDialogueConvertWithTimestampsRequestOutputFormat]
Output format of the generated audio. Formatted as codec_sample_rate_bitrate. So an mp3 with 22.05kHz sample rate at 32kbs is represented as mp3_22050_32. MP3 with 192kbps bitrate requires you to be subscribed to Creator tier or above. PCM and WAV formats with 44.1kHz sample rate requires you to be subscribed to Pro tier or above. Note that the μ-law format (sometimes written mu-law, often approximated as u-law) is commonly used for Twilio audio inputs.
@@ -441,7 +430,6 @@ async def convert(
apply_text_normalization: typing.Optional[
BodyTextToDialogueMultiVoiceV1TextToDialoguePostApplyTextNormalization
] = OMIT,
- avatar_context: typing.Optional[AvatarContextRequestModel] = OMIT,
request_options: typing.Optional[RequestOptions] = None,
) -> typing.AsyncIterator[bytes]:
"""
@@ -450,7 +438,7 @@ async def convert(
Parameters
----------
inputs : typing.Sequence[DialogueInput]
- A list of dialogue inputs, each containing text and a voice ID which will be converted into speech. The maximum number of unique voice IDs is 10.
+ A list of dialogue inputs, each containing text and a voice ID which will be converted into speech. The maximum number of unique voice IDs is 10. For reliable generation, keep the total character count across all `inputs[].text` values at or below 2,000 characters per request. Longer requests can terminate early in streaming responses or return a validation error.
output_format : typing.Optional[TextToDialogueConvertRequestOutputFormat]
Output format of the generated audio. Formatted as codec_sample_rate_bitrate. So an mp3 with 22.05kHz sample rate at 32kbs is represented as mp3_22050_32. MP3 with 192kbps bitrate requires you to be subscribed to Creator tier or above. PCM and WAV formats with 44.1kHz sample rate requires you to be subscribed to Pro tier or above. Note that the μ-law format (sometimes written mu-law, often approximated as u-law) is commonly used for Twilio audio inputs.
@@ -473,9 +461,6 @@ async def convert(
apply_text_normalization : typing.Optional[BodyTextToDialogueMultiVoiceV1TextToDialoguePostApplyTextNormalization]
This parameter controls text normalization with three modes: 'auto', 'on', and 'off'. When set to 'auto', the system will automatically decide whether to apply text normalization (e.g., spelling out numbers). With 'on', text normalization will always be applied, while with 'off', it will be skipped.
- avatar_context : typing.Optional[AvatarContextRequestModel]
- Avatar context when this generation is made from the Avatars video editor.
-
request_options : typing.Optional[RequestOptions]
Request-specific configuration. You can pass in configuration such as `chunk_size`, and more to customize the request and response.
@@ -521,7 +506,6 @@ async def main() -> None:
pronunciation_dictionary_locators=pronunciation_dictionary_locators,
seed=seed,
apply_text_normalization=apply_text_normalization,
- avatar_context=avatar_context,
request_options=request_options,
) as r:
async for _chunk in r.data:
@@ -542,7 +526,6 @@ async def stream(
apply_text_normalization: typing.Optional[
BodyTextToDialogueMultiVoiceStreamingV1TextToDialogueStreamPostApplyTextNormalization
] = OMIT,
- avatar_context: typing.Optional[AvatarContextRequestModel] = OMIT,
request_options: typing.Optional[RequestOptions] = None,
) -> typing.AsyncIterator[bytes]:
"""
@@ -551,7 +534,7 @@ async def stream(
Parameters
----------
inputs : typing.Sequence[DialogueInput]
- A list of dialogue inputs, each containing text and a voice ID which will be converted into speech. The maximum number of unique voice IDs is 10.
+ A list of dialogue inputs, each containing text and a voice ID which will be converted into speech. The maximum number of unique voice IDs is 10. For reliable generation, keep the total character count across all `inputs[].text` values at or below 2,000 characters per request. Longer requests can terminate early in streaming responses or return a validation error.
output_format : typing.Optional[AllowedOutputFormats]
Output format of the generated audio. Formatted as codec_sample_rate_bitrate. So an mp3 with 22.05kHz sample rate at 32kbs is represented as mp3_22050_32. MP3 with 192kbps bitrate requires you to be subscribed to Creator tier or above. PCM with 44.1kHz sample rate requires you to be subscribed to Pro tier or above. Note that the μ-law format (sometimes written mu-law, often approximated as u-law) is commonly used for Twilio audio inputs.
@@ -574,9 +557,6 @@ async def stream(
apply_text_normalization : typing.Optional[BodyTextToDialogueMultiVoiceStreamingV1TextToDialogueStreamPostApplyTextNormalization]
This parameter controls text normalization with three modes: 'auto', 'on', and 'off'. When set to 'auto', the system will automatically decide whether to apply text normalization (e.g., spelling out numbers). With 'on', text normalization will always be applied, while with 'off', it will be skipped.
- avatar_context : typing.Optional[AvatarContextRequestModel]
- Avatar context when this generation is made from the Avatars video editor.
-
request_options : typing.Optional[RequestOptions]
Request-specific configuration. You can pass in configuration such as `chunk_size`, and more to customize the request and response.
@@ -622,7 +602,6 @@ async def main() -> None:
pronunciation_dictionary_locators=pronunciation_dictionary_locators,
seed=seed,
apply_text_normalization=apply_text_normalization,
- avatar_context=avatar_context,
request_options=request_options,
) as r:
async for _chunk in r.data:
@@ -649,7 +628,7 @@ async def stream_with_timestamps(
Parameters
----------
inputs : typing.Sequence[DialogueInput]
- A list of dialogue inputs, each containing text and a voice ID which will be converted into speech. The maximum number of unique voice IDs is 10.
+ A list of dialogue inputs, each containing text and a voice ID which will be converted into speech. The maximum number of unique voice IDs is 10. For reliable generation, keep the total character count across all `inputs[].text` values at or below 2,000 characters per request. Longer requests can terminate early in streaming responses or return a validation error.
output_format : typing.Optional[AllowedOutputFormats]
Output format of the generated audio. Formatted as codec_sample_rate_bitrate. So an mp3 with 22.05kHz sample rate at 32kbs is represented as mp3_22050_32. MP3 with 192kbps bitrate requires you to be subscribed to Creator tier or above. PCM with 44.1kHz sample rate requires you to be subscribed to Pro tier or above. Note that the μ-law format (sometimes written mu-law, often approximated as u-law) is commonly used for Twilio audio inputs.
@@ -746,7 +725,7 @@ async def convert_with_timestamps(
Parameters
----------
inputs : typing.Sequence[DialogueInput]
- A list of dialogue inputs, each containing text and a voice ID which will be converted into speech. The maximum number of unique voice IDs is 10.
+ A list of dialogue inputs, each containing text and a voice ID which will be converted into speech. The maximum number of unique voice IDs is 10. For reliable generation, keep the total character count across all `inputs[].text` values at or below 2,000 characters per request. Longer requests can terminate early in streaming responses or return a validation error.
output_format : typing.Optional[TextToDialogueConvertWithTimestampsRequestOutputFormat]
Output format of the generated audio. Formatted as codec_sample_rate_bitrate. So an mp3 with 22.05kHz sample rate at 32kbs is represented as mp3_22050_32. MP3 with 192kbps bitrate requires you to be subscribed to Creator tier or above. PCM and WAV formats with 44.1kHz sample rate requires you to be subscribed to Pro tier or above. Note that the μ-law format (sometimes written mu-law, often approximated as u-law) is commonly used for Twilio audio inputs.
diff --git a/src/elevenlabs/text_to_dialogue/raw_client.py b/src/elevenlabs/text_to_dialogue/raw_client.py
index a4a81349..153ecc0d 100644
--- a/src/elevenlabs/text_to_dialogue/raw_client.py
+++ b/src/elevenlabs/text_to_dialogue/raw_client.py
@@ -16,7 +16,6 @@
from ..types.audio_with_timestamps_and_voice_segments_response_model import (
AudioWithTimestampsAndVoiceSegmentsResponseModel,
)
-from ..types.avatar_context_request_model import AvatarContextRequestModel
from ..types.dialogue_input import DialogueInput
from ..types.model_settings_response_model import ModelSettingsResponseModel
from ..types.pronunciation_dictionary_version_locator import PronunciationDictionaryVersionLocator
@@ -64,7 +63,6 @@ def convert(
apply_text_normalization: typing.Optional[
BodyTextToDialogueMultiVoiceV1TextToDialoguePostApplyTextNormalization
] = OMIT,
- avatar_context: typing.Optional[AvatarContextRequestModel] = OMIT,
request_options: typing.Optional[RequestOptions] = None,
) -> typing.Iterator[HttpResponse[typing.Iterator[bytes]]]:
"""
@@ -73,7 +71,7 @@ def convert(
Parameters
----------
inputs : typing.Sequence[DialogueInput]
- A list of dialogue inputs, each containing text and a voice ID which will be converted into speech. The maximum number of unique voice IDs is 10.
+ A list of dialogue inputs, each containing text and a voice ID which will be converted into speech. The maximum number of unique voice IDs is 10. For reliable generation, keep the total character count across all `inputs[].text` values at or below 2,000 characters per request. Longer requests can terminate early in streaming responses or return a validation error.
output_format : typing.Optional[TextToDialogueConvertRequestOutputFormat]
Output format of the generated audio. Formatted as codec_sample_rate_bitrate. So an mp3 with 22.05kHz sample rate at 32kbs is represented as mp3_22050_32. MP3 with 192kbps bitrate requires you to be subscribed to Creator tier or above. PCM and WAV formats with 44.1kHz sample rate requires you to be subscribed to Pro tier or above. Note that the μ-law format (sometimes written mu-law, often approximated as u-law) is commonly used for Twilio audio inputs.
@@ -96,9 +94,6 @@ def convert(
apply_text_normalization : typing.Optional[BodyTextToDialogueMultiVoiceV1TextToDialoguePostApplyTextNormalization]
This parameter controls text normalization with three modes: 'auto', 'on', and 'off'. When set to 'auto', the system will automatically decide whether to apply text normalization (e.g., spelling out numbers). With 'on', text normalization will always be applied, while with 'off', it will be skipped.
- avatar_context : typing.Optional[AvatarContextRequestModel]
- Avatar context when this generation is made from the Avatars video editor.
-
request_options : typing.Optional[RequestOptions]
Request-specific configuration. You can pass in configuration such as `chunk_size`, and more to customize the request and response.
@@ -129,9 +124,6 @@ def convert(
),
"seed": seed,
"apply_text_normalization": apply_text_normalization,
- "avatar_context": convert_and_respect_annotation_metadata(
- object_=avatar_context, annotation=AvatarContextRequestModel, direction="write"
- ),
},
headers={
"content-type": "application/json",
@@ -184,7 +176,6 @@ def stream(
apply_text_normalization: typing.Optional[
BodyTextToDialogueMultiVoiceStreamingV1TextToDialogueStreamPostApplyTextNormalization
] = OMIT,
- avatar_context: typing.Optional[AvatarContextRequestModel] = OMIT,
request_options: typing.Optional[RequestOptions] = None,
) -> typing.Iterator[HttpResponse[typing.Iterator[bytes]]]:
"""
@@ -193,7 +184,7 @@ def stream(
Parameters
----------
inputs : typing.Sequence[DialogueInput]
- A list of dialogue inputs, each containing text and a voice ID which will be converted into speech. The maximum number of unique voice IDs is 10.
+ A list of dialogue inputs, each containing text and a voice ID which will be converted into speech. The maximum number of unique voice IDs is 10. For reliable generation, keep the total character count across all `inputs[].text` values at or below 2,000 characters per request. Longer requests can terminate early in streaming responses or return a validation error.
output_format : typing.Optional[AllowedOutputFormats]
Output format of the generated audio. Formatted as codec_sample_rate_bitrate. So an mp3 with 22.05kHz sample rate at 32kbs is represented as mp3_22050_32. MP3 with 192kbps bitrate requires you to be subscribed to Creator tier or above. PCM with 44.1kHz sample rate requires you to be subscribed to Pro tier or above. Note that the μ-law format (sometimes written mu-law, often approximated as u-law) is commonly used for Twilio audio inputs.
@@ -216,9 +207,6 @@ def stream(
apply_text_normalization : typing.Optional[BodyTextToDialogueMultiVoiceStreamingV1TextToDialogueStreamPostApplyTextNormalization]
This parameter controls text normalization with three modes: 'auto', 'on', and 'off'. When set to 'auto', the system will automatically decide whether to apply text normalization (e.g., spelling out numbers). With 'on', text normalization will always be applied, while with 'off', it will be skipped.
- avatar_context : typing.Optional[AvatarContextRequestModel]
- Avatar context when this generation is made from the Avatars video editor.
-
request_options : typing.Optional[RequestOptions]
Request-specific configuration. You can pass in configuration such as `chunk_size`, and more to customize the request and response.
@@ -249,9 +237,6 @@ def stream(
),
"seed": seed,
"apply_text_normalization": apply_text_normalization,
- "avatar_context": convert_and_respect_annotation_metadata(
- object_=avatar_context, annotation=AvatarContextRequestModel, direction="write"
- ),
},
headers={
"content-type": "application/json",
@@ -310,7 +295,7 @@ def stream_with_timestamps(
Parameters
----------
inputs : typing.Sequence[DialogueInput]
- A list of dialogue inputs, each containing text and a voice ID which will be converted into speech. The maximum number of unique voice IDs is 10.
+ A list of dialogue inputs, each containing text and a voice ID which will be converted into speech. The maximum number of unique voice IDs is 10. For reliable generation, keep the total character count across all `inputs[].text` values at or below 2,000 characters per request. Longer requests can terminate early in streaming responses or return a validation error.
output_format : typing.Optional[AllowedOutputFormats]
Output format of the generated audio. Formatted as codec_sample_rate_bitrate. So an mp3 with 22.05kHz sample rate at 32kbs is represented as mp3_22050_32. MP3 with 192kbps bitrate requires you to be subscribed to Creator tier or above. PCM with 44.1kHz sample rate requires you to be subscribed to Pro tier or above. Note that the μ-law format (sometimes written mu-law, often approximated as u-law) is commonly used for Twilio audio inputs.
@@ -436,7 +421,7 @@ def convert_with_timestamps(
Parameters
----------
inputs : typing.Sequence[DialogueInput]
- A list of dialogue inputs, each containing text and a voice ID which will be converted into speech. The maximum number of unique voice IDs is 10.
+ A list of dialogue inputs, each containing text and a voice ID which will be converted into speech. The maximum number of unique voice IDs is 10. For reliable generation, keep the total character count across all `inputs[].text` values at or below 2,000 characters per request. Longer requests can terminate early in streaming responses or return a validation error.
output_format : typing.Optional[TextToDialogueConvertWithTimestampsRequestOutputFormat]
Output format of the generated audio. Formatted as codec_sample_rate_bitrate. So an mp3 with 22.05kHz sample rate at 32kbs is represented as mp3_22050_32. MP3 with 192kbps bitrate requires you to be subscribed to Creator tier or above. PCM and WAV formats with 44.1kHz sample rate requires you to be subscribed to Pro tier or above. Note that the μ-law format (sometimes written mu-law, often approximated as u-law) is commonly used for Twilio audio inputs.
@@ -543,7 +528,6 @@ async def convert(
apply_text_normalization: typing.Optional[
BodyTextToDialogueMultiVoiceV1TextToDialoguePostApplyTextNormalization
] = OMIT,
- avatar_context: typing.Optional[AvatarContextRequestModel] = OMIT,
request_options: typing.Optional[RequestOptions] = None,
) -> typing.AsyncIterator[AsyncHttpResponse[typing.AsyncIterator[bytes]]]:
"""
@@ -552,7 +536,7 @@ async def convert(
Parameters
----------
inputs : typing.Sequence[DialogueInput]
- A list of dialogue inputs, each containing text and a voice ID which will be converted into speech. The maximum number of unique voice IDs is 10.
+ A list of dialogue inputs, each containing text and a voice ID which will be converted into speech. The maximum number of unique voice IDs is 10. For reliable generation, keep the total character count across all `inputs[].text` values at or below 2,000 characters per request. Longer requests can terminate early in streaming responses or return a validation error.
output_format : typing.Optional[TextToDialogueConvertRequestOutputFormat]
Output format of the generated audio. Formatted as codec_sample_rate_bitrate. So an mp3 with 22.05kHz sample rate at 32kbs is represented as mp3_22050_32. MP3 with 192kbps bitrate requires you to be subscribed to Creator tier or above. PCM and WAV formats with 44.1kHz sample rate requires you to be subscribed to Pro tier or above. Note that the μ-law format (sometimes written mu-law, often approximated as u-law) is commonly used for Twilio audio inputs.
@@ -575,9 +559,6 @@ async def convert(
apply_text_normalization : typing.Optional[BodyTextToDialogueMultiVoiceV1TextToDialoguePostApplyTextNormalization]
This parameter controls text normalization with three modes: 'auto', 'on', and 'off'. When set to 'auto', the system will automatically decide whether to apply text normalization (e.g., spelling out numbers). With 'on', text normalization will always be applied, while with 'off', it will be skipped.
- avatar_context : typing.Optional[AvatarContextRequestModel]
- Avatar context when this generation is made from the Avatars video editor.
-
request_options : typing.Optional[RequestOptions]
Request-specific configuration. You can pass in configuration such as `chunk_size`, and more to customize the request and response.
@@ -608,9 +589,6 @@ async def convert(
),
"seed": seed,
"apply_text_normalization": apply_text_normalization,
- "avatar_context": convert_and_respect_annotation_metadata(
- object_=avatar_context, annotation=AvatarContextRequestModel, direction="write"
- ),
},
headers={
"content-type": "application/json",
@@ -664,7 +642,6 @@ async def stream(
apply_text_normalization: typing.Optional[
BodyTextToDialogueMultiVoiceStreamingV1TextToDialogueStreamPostApplyTextNormalization
] = OMIT,
- avatar_context: typing.Optional[AvatarContextRequestModel] = OMIT,
request_options: typing.Optional[RequestOptions] = None,
) -> typing.AsyncIterator[AsyncHttpResponse[typing.AsyncIterator[bytes]]]:
"""
@@ -673,7 +650,7 @@ async def stream(
Parameters
----------
inputs : typing.Sequence[DialogueInput]
- A list of dialogue inputs, each containing text and a voice ID which will be converted into speech. The maximum number of unique voice IDs is 10.
+ A list of dialogue inputs, each containing text and a voice ID which will be converted into speech. The maximum number of unique voice IDs is 10. For reliable generation, keep the total character count across all `inputs[].text` values at or below 2,000 characters per request. Longer requests can terminate early in streaming responses or return a validation error.
output_format : typing.Optional[AllowedOutputFormats]
Output format of the generated audio. Formatted as codec_sample_rate_bitrate. So an mp3 with 22.05kHz sample rate at 32kbs is represented as mp3_22050_32. MP3 with 192kbps bitrate requires you to be subscribed to Creator tier or above. PCM with 44.1kHz sample rate requires you to be subscribed to Pro tier or above. Note that the μ-law format (sometimes written mu-law, often approximated as u-law) is commonly used for Twilio audio inputs.
@@ -696,9 +673,6 @@ async def stream(
apply_text_normalization : typing.Optional[BodyTextToDialogueMultiVoiceStreamingV1TextToDialogueStreamPostApplyTextNormalization]
This parameter controls text normalization with three modes: 'auto', 'on', and 'off'. When set to 'auto', the system will automatically decide whether to apply text normalization (e.g., spelling out numbers). With 'on', text normalization will always be applied, while with 'off', it will be skipped.
- avatar_context : typing.Optional[AvatarContextRequestModel]
- Avatar context when this generation is made from the Avatars video editor.
-
request_options : typing.Optional[RequestOptions]
Request-specific configuration. You can pass in configuration such as `chunk_size`, and more to customize the request and response.
@@ -729,9 +703,6 @@ async def stream(
),
"seed": seed,
"apply_text_normalization": apply_text_normalization,
- "avatar_context": convert_and_respect_annotation_metadata(
- object_=avatar_context, annotation=AvatarContextRequestModel, direction="write"
- ),
},
headers={
"content-type": "application/json",
@@ -793,7 +764,7 @@ async def stream_with_timestamps(
Parameters
----------
inputs : typing.Sequence[DialogueInput]
- A list of dialogue inputs, each containing text and a voice ID which will be converted into speech. The maximum number of unique voice IDs is 10.
+ A list of dialogue inputs, each containing text and a voice ID which will be converted into speech. The maximum number of unique voice IDs is 10. For reliable generation, keep the total character count across all `inputs[].text` values at or below 2,000 characters per request. Longer requests can terminate early in streaming responses or return a validation error.
output_format : typing.Optional[AllowedOutputFormats]
Output format of the generated audio. Formatted as codec_sample_rate_bitrate. So an mp3 with 22.05kHz sample rate at 32kbs is represented as mp3_22050_32. MP3 with 192kbps bitrate requires you to be subscribed to Creator tier or above. PCM with 44.1kHz sample rate requires you to be subscribed to Pro tier or above. Note that the μ-law format (sometimes written mu-law, often approximated as u-law) is commonly used for Twilio audio inputs.
@@ -919,7 +890,7 @@ async def convert_with_timestamps(
Parameters
----------
inputs : typing.Sequence[DialogueInput]
- A list of dialogue inputs, each containing text and a voice ID which will be converted into speech. The maximum number of unique voice IDs is 10.
+ A list of dialogue inputs, each containing text and a voice ID which will be converted into speech. The maximum number of unique voice IDs is 10. For reliable generation, keep the total character count across all `inputs[].text` values at or below 2,000 characters per request. Longer requests can terminate early in streaming responses or return a validation error.
output_format : typing.Optional[TextToDialogueConvertWithTimestampsRequestOutputFormat]
Output format of the generated audio. Formatted as codec_sample_rate_bitrate. So an mp3 with 22.05kHz sample rate at 32kbs is represented as mp3_22050_32. MP3 with 192kbps bitrate requires you to be subscribed to Creator tier or above. PCM and WAV formats with 44.1kHz sample rate requires you to be subscribed to Pro tier or above. Note that the μ-law format (sometimes written mu-law, often approximated as u-law) is commonly used for Twilio audio inputs.
diff --git a/src/elevenlabs/text_to_speech/client.py b/src/elevenlabs/text_to_speech/client.py
index 96a1e36f..696d4141 100644
--- a/src/elevenlabs/text_to_speech/client.py
+++ b/src/elevenlabs/text_to_speech/client.py
@@ -5,7 +5,6 @@
from ..core.client_wrapper import AsyncClientWrapper, SyncClientWrapper
from ..core.request_options import RequestOptions
from ..types.audio_with_timestamps_response import AudioWithTimestampsResponse
-from ..types.avatar_context_request_model import AvatarContextRequestModel
from ..types.pronunciation_dictionary_version_locator import PronunciationDictionaryVersionLocator
from ..types.streaming_audio_chunk_with_timestamps_response import StreamingAudioChunkWithTimestampsResponse
from ..types.voice_settings import VoiceSettings
@@ -68,7 +67,6 @@ def convert(
use_pvc_as_ivc: typing.Optional[bool] = OMIT,
apply_text_normalization: typing.Optional[BodyTextToSpeechFullApplyTextNormalization] = OMIT,
apply_language_text_normalization: typing.Optional[bool] = OMIT,
- avatar_context: typing.Optional[AvatarContextRequestModel] = OMIT,
request_options: typing.Optional[RequestOptions] = None,
) -> typing.Iterator[bytes]:
"""
@@ -134,9 +132,6 @@ def convert(
apply_language_text_normalization : typing.Optional[bool]
This parameter controls language text normalization. This helps with proper pronunciation of text in some supported languages. WARNING: This parameter can heavily increase the latency of the request. Currently only supported for Japanese.
- avatar_context : typing.Optional[AvatarContextRequestModel]
- Avatar context when this generation is made from the Avatars video editor.
-
request_options : typing.Optional[RequestOptions]
Request-specific configuration. You can pass in configuration such as `chunk_size`, and more to customize the request and response.
@@ -177,7 +172,6 @@ def convert(
use_pvc_as_ivc=use_pvc_as_ivc,
apply_text_normalization=apply_text_normalization,
apply_language_text_normalization=apply_language_text_normalization,
- avatar_context=avatar_context,
request_options=request_options,
) as r:
yield from r.data
@@ -336,7 +330,6 @@ def stream(
use_pvc_as_ivc: typing.Optional[bool] = OMIT,
apply_text_normalization: typing.Optional[BodyTextToSpeechStreamApplyTextNormalization] = OMIT,
apply_language_text_normalization: typing.Optional[bool] = OMIT,
- avatar_context: typing.Optional[AvatarContextRequestModel] = OMIT,
request_options: typing.Optional[RequestOptions] = None,
) -> typing.Iterator[bytes]:
"""
@@ -402,9 +395,6 @@ def stream(
apply_language_text_normalization : typing.Optional[bool]
This parameter controls language text normalization. This helps with proper pronunciation of text in some supported languages. WARNING: This parameter can heavily increase the latency of the request. Currently only supported for Japanese.
- avatar_context : typing.Optional[AvatarContextRequestModel]
- Avatar context when this generation is made from the Avatars video editor.
-
request_options : typing.Optional[RequestOptions]
Request-specific configuration. You can pass in configuration such as `chunk_size`, and more to customize the request and response.
@@ -445,7 +435,6 @@ def stream(
use_pvc_as_ivc=use_pvc_as_ivc,
apply_text_normalization=apply_text_normalization,
apply_language_text_normalization=apply_language_text_normalization,
- avatar_context=avatar_context,
request_options=request_options,
) as r:
yield from r.data
@@ -621,7 +610,6 @@ async def convert(
use_pvc_as_ivc: typing.Optional[bool] = OMIT,
apply_text_normalization: typing.Optional[BodyTextToSpeechFullApplyTextNormalization] = OMIT,
apply_language_text_normalization: typing.Optional[bool] = OMIT,
- avatar_context: typing.Optional[AvatarContextRequestModel] = OMIT,
request_options: typing.Optional[RequestOptions] = None,
) -> typing.AsyncIterator[bytes]:
"""
@@ -687,9 +675,6 @@ async def convert(
apply_language_text_normalization : typing.Optional[bool]
This parameter controls language text normalization. This helps with proper pronunciation of text in some supported languages. WARNING: This parameter can heavily increase the latency of the request. Currently only supported for Japanese.
- avatar_context : typing.Optional[AvatarContextRequestModel]
- Avatar context when this generation is made from the Avatars video editor.
-
request_options : typing.Optional[RequestOptions]
Request-specific configuration. You can pass in configuration such as `chunk_size`, and more to customize the request and response.
@@ -738,7 +723,6 @@ async def main() -> None:
use_pvc_as_ivc=use_pvc_as_ivc,
apply_text_normalization=apply_text_normalization,
apply_language_text_normalization=apply_language_text_normalization,
- avatar_context=avatar_context,
request_options=request_options,
) as r:
async for _chunk in r.data:
@@ -906,7 +890,6 @@ async def stream(
use_pvc_as_ivc: typing.Optional[bool] = OMIT,
apply_text_normalization: typing.Optional[BodyTextToSpeechStreamApplyTextNormalization] = OMIT,
apply_language_text_normalization: typing.Optional[bool] = OMIT,
- avatar_context: typing.Optional[AvatarContextRequestModel] = OMIT,
request_options: typing.Optional[RequestOptions] = None,
) -> typing.AsyncIterator[bytes]:
"""
@@ -972,9 +955,6 @@ async def stream(
apply_language_text_normalization : typing.Optional[bool]
This parameter controls language text normalization. This helps with proper pronunciation of text in some supported languages. WARNING: This parameter can heavily increase the latency of the request. Currently only supported for Japanese.
- avatar_context : typing.Optional[AvatarContextRequestModel]
- Avatar context when this generation is made from the Avatars video editor.
-
request_options : typing.Optional[RequestOptions]
Request-specific configuration. You can pass in configuration such as `chunk_size`, and more to customize the request and response.
@@ -1023,7 +1003,6 @@ async def main() -> None:
use_pvc_as_ivc=use_pvc_as_ivc,
apply_text_normalization=apply_text_normalization,
apply_language_text_normalization=apply_language_text_normalization,
- avatar_context=avatar_context,
request_options=request_options,
) as r:
async for _chunk in r.data:
diff --git a/src/elevenlabs/text_to_speech/raw_client.py b/src/elevenlabs/text_to_speech/raw_client.py
index 535f91f1..52afd777 100644
--- a/src/elevenlabs/text_to_speech/raw_client.py
+++ b/src/elevenlabs/text_to_speech/raw_client.py
@@ -14,7 +14,6 @@
from ..core.unchecked_base_model import construct_type
from ..errors.unprocessable_entity_error import UnprocessableEntityError
from ..types.audio_with_timestamps_response import AudioWithTimestampsResponse
-from ..types.avatar_context_request_model import AvatarContextRequestModel
from ..types.pronunciation_dictionary_version_locator import PronunciationDictionaryVersionLocator
from ..types.streaming_audio_chunk_with_timestamps_response import StreamingAudioChunkWithTimestampsResponse
from ..types.voice_settings import VoiceSettings
@@ -66,7 +65,6 @@ def convert(
use_pvc_as_ivc: typing.Optional[bool] = OMIT,
apply_text_normalization: typing.Optional[BodyTextToSpeechFullApplyTextNormalization] = OMIT,
apply_language_text_normalization: typing.Optional[bool] = OMIT,
- avatar_context: typing.Optional[AvatarContextRequestModel] = OMIT,
request_options: typing.Optional[RequestOptions] = None,
) -> typing.Iterator[HttpResponse[typing.Iterator[bytes]]]:
"""
@@ -132,9 +130,6 @@ def convert(
apply_language_text_normalization : typing.Optional[bool]
This parameter controls language text normalization. This helps with proper pronunciation of text in some supported languages. WARNING: This parameter can heavily increase the latency of the request. Currently only supported for Japanese.
- avatar_context : typing.Optional[AvatarContextRequestModel]
- Avatar context when this generation is made from the Avatars video editor.
-
request_options : typing.Optional[RequestOptions]
Request-specific configuration. You can pass in configuration such as `chunk_size`, and more to customize the request and response.
@@ -171,9 +166,6 @@ def convert(
"use_pvc_as_ivc": use_pvc_as_ivc,
"apply_text_normalization": apply_text_normalization,
"apply_language_text_normalization": apply_language_text_normalization,
- "avatar_context": convert_and_respect_annotation_metadata(
- object_=avatar_context, annotation=AvatarContextRequestModel, direction="write"
- ),
},
headers={
"content-type": "application/json",
@@ -389,7 +381,6 @@ def stream(
use_pvc_as_ivc: typing.Optional[bool] = OMIT,
apply_text_normalization: typing.Optional[BodyTextToSpeechStreamApplyTextNormalization] = OMIT,
apply_language_text_normalization: typing.Optional[bool] = OMIT,
- avatar_context: typing.Optional[AvatarContextRequestModel] = OMIT,
request_options: typing.Optional[RequestOptions] = None,
) -> typing.Iterator[HttpResponse[typing.Iterator[bytes]]]:
"""
@@ -455,9 +446,6 @@ def stream(
apply_language_text_normalization : typing.Optional[bool]
This parameter controls language text normalization. This helps with proper pronunciation of text in some supported languages. WARNING: This parameter can heavily increase the latency of the request. Currently only supported for Japanese.
- avatar_context : typing.Optional[AvatarContextRequestModel]
- Avatar context when this generation is made from the Avatars video editor.
-
request_options : typing.Optional[RequestOptions]
Request-specific configuration. You can pass in configuration such as `chunk_size`, and more to customize the request and response.
@@ -494,9 +482,6 @@ def stream(
"use_pvc_as_ivc": use_pvc_as_ivc,
"apply_text_normalization": apply_text_normalization,
"apply_language_text_normalization": apply_language_text_normalization,
- "avatar_context": convert_and_respect_annotation_metadata(
- object_=avatar_context, annotation=AvatarContextRequestModel, direction="write"
- ),
},
headers={
"content-type": "application/json",
@@ -735,7 +720,6 @@ async def convert(
use_pvc_as_ivc: typing.Optional[bool] = OMIT,
apply_text_normalization: typing.Optional[BodyTextToSpeechFullApplyTextNormalization] = OMIT,
apply_language_text_normalization: typing.Optional[bool] = OMIT,
- avatar_context: typing.Optional[AvatarContextRequestModel] = OMIT,
request_options: typing.Optional[RequestOptions] = None,
) -> typing.AsyncIterator[AsyncHttpResponse[typing.AsyncIterator[bytes]]]:
"""
@@ -801,9 +785,6 @@ async def convert(
apply_language_text_normalization : typing.Optional[bool]
This parameter controls language text normalization. This helps with proper pronunciation of text in some supported languages. WARNING: This parameter can heavily increase the latency of the request. Currently only supported for Japanese.
- avatar_context : typing.Optional[AvatarContextRequestModel]
- Avatar context when this generation is made from the Avatars video editor.
-
request_options : typing.Optional[RequestOptions]
Request-specific configuration. You can pass in configuration such as `chunk_size`, and more to customize the request and response.
@@ -840,9 +821,6 @@ async def convert(
"use_pvc_as_ivc": use_pvc_as_ivc,
"apply_text_normalization": apply_text_normalization,
"apply_language_text_normalization": apply_language_text_normalization,
- "avatar_context": convert_and_respect_annotation_metadata(
- object_=avatar_context, annotation=AvatarContextRequestModel, direction="write"
- ),
},
headers={
"content-type": "application/json",
@@ -1059,7 +1037,6 @@ async def stream(
use_pvc_as_ivc: typing.Optional[bool] = OMIT,
apply_text_normalization: typing.Optional[BodyTextToSpeechStreamApplyTextNormalization] = OMIT,
apply_language_text_normalization: typing.Optional[bool] = OMIT,
- avatar_context: typing.Optional[AvatarContextRequestModel] = OMIT,
request_options: typing.Optional[RequestOptions] = None,
) -> typing.AsyncIterator[AsyncHttpResponse[typing.AsyncIterator[bytes]]]:
"""
@@ -1125,9 +1102,6 @@ async def stream(
apply_language_text_normalization : typing.Optional[bool]
This parameter controls language text normalization. This helps with proper pronunciation of text in some supported languages. WARNING: This parameter can heavily increase the latency of the request. Currently only supported for Japanese.
- avatar_context : typing.Optional[AvatarContextRequestModel]
- Avatar context when this generation is made from the Avatars video editor.
-
request_options : typing.Optional[RequestOptions]
Request-specific configuration. You can pass in configuration such as `chunk_size`, and more to customize the request and response.
@@ -1164,9 +1138,6 @@ async def stream(
"use_pvc_as_ivc": use_pvc_as_ivc,
"apply_text_normalization": apply_text_normalization,
"apply_language_text_normalization": apply_language_text_normalization,
- "avatar_context": convert_and_respect_annotation_metadata(
- object_=avatar_context, annotation=AvatarContextRequestModel, direction="write"
- ),
},
headers={
"content-type": "application/json",
diff --git a/src/elevenlabs/types/__init__.py b/src/elevenlabs/types/__init__.py
index e495feb4..ba005228 100644
--- a/src/elevenlabs/types/__init__.py
+++ b/src/elevenlabs/types/__init__.py
@@ -80,6 +80,9 @@
from .alignment import Alignment
from .allowed_output_formats import AllowedOutputFormats
from .allowlist_item import AllowlistItem
+ from .analysis_property import AnalysisProperty
+ from .analysis_property_constant_value import AnalysisPropertyConstantValue
+ from .analysis_property_type import AnalysisPropertyType
from .analysis_scope import AnalysisScope
from .api_integration_o_auth_2_auth_code_response import ApiIntegrationOAuth2AuthCodeResponse
from .api_integration_o_auth_2_auth_code_response_scope_separator import (
@@ -98,16 +101,16 @@
from .api_integration_webhook_tool_config_input import ApiIntegrationWebhookToolConfigInput
from .api_integration_webhook_tool_config_output import ApiIntegrationWebhookToolConfigOutput
from .array_json_schema_property_input import ArrayJsonSchemaPropertyInput
+ from .array_json_schema_property_input_constant_value_item import ArrayJsonSchemaPropertyInputConstantValueItem
from .array_json_schema_property_input_items import ArrayJsonSchemaPropertyInputItems
from .array_json_schema_property_output import ArrayJsonSchemaPropertyOutput
+ 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_workflow_override import AsrConversationalConfigWorkflowOverride
from .asr_input_format import AsrInputFormat
from .asr_provider import AsrProvider
from .asr_quality import AsrQuality
- from .asset_transcription import AssetTranscription
- from .asset_transcription_word import AssetTranscriptionWord
from .ast_addition_operator_node_input import AstAdditionOperatorNodeInput
from .ast_addition_operator_node_output import AstAdditionOperatorNodeOutput
from .ast_and_operator_node_input import AstAndOperatorNodeInput
@@ -148,6 +151,7 @@
AstNodeInput_LteOperator,
AstNodeInput_MulOperator,
AstNodeInput_NeqOperator,
+ AstNodeInput_NullLiteral,
AstNodeInput_NumberLiteral,
AstNodeInput_OrOperator,
AstNodeInput_StringLiteral,
@@ -169,6 +173,7 @@
AstNodeOutput_LteOperator,
AstNodeOutput_MulOperator,
AstNodeOutput_NeqOperator,
+ AstNodeOutput_NullLiteral,
AstNodeOutput_NumberLiteral,
AstNodeOutput_OrOperator,
AstNodeOutput_StringLiteral,
@@ -176,6 +181,8 @@
)
from .ast_not_equals_operator_node_input import AstNotEqualsOperatorNodeInput
from .ast_not_equals_operator_node_output import AstNotEqualsOperatorNodeOutput
+ from .ast_null_node_input import AstNullNodeInput
+ from .ast_null_node_output import AstNullNodeOutput
from .ast_number_node_input import AstNumberNodeInput
from .ast_number_node_output import AstNumberNodeOutput
from .ast_or_operator_node_input import AstOrOperatorNodeInput
@@ -222,8 +229,6 @@
from .auth_settings import AuthSettings
from .authorization_method import AuthorizationMethod
from .auto_sync_info import AutoSyncInfo
- from .avatar_context_request_model import AvatarContextRequestModel
- from .avatar_context_response_model import AvatarContextResponseModel
from .backup_llm_default import BackupLlmDefault
from .backup_llm_disabled import BackupLlmDisabled
from .backup_llm_override import BackupLlmOverride
@@ -303,6 +308,10 @@
from .close_socket import CloseSocket
from .coached_agent_settings import CoachedAgentSettings
from .coaching_agent_settings import CoachingAgentSettings
+ from .column_filter import ColumnFilter
+ from .column_filter_operation import ColumnFilterOperation
+ from .column_filter_values_item import ColumnFilterValuesItem
+ from .column_unit import ColumnUnit
from .committed_transcript_payload import CommittedTranscriptPayload
from .committed_transcript_with_timestamps_payload import CommittedTranscriptWithTimestampsPayload
from .config_entity_type import ConfigEntityType
@@ -541,6 +550,7 @@
from .create_client_params import CreateClientParams
from .create_custom_header_auth_request import CreateCustomHeaderAuthRequest
from .create_holiday_params import CreateHolidayParams
+ from .create_location_params import CreateLocationParams
from .create_mtls_auth_request import CreateMtlsAuthRequest
from .create_o_auth_2_client_creds_request import CreateOAuth2ClientCredsRequest
from .create_o_auth_2_jwt_request import CreateOAuth2JwtRequest
@@ -603,6 +613,7 @@
from .delete_dubbing_response_model import DeleteDubbingResponseModel
from .delete_history_item_response import DeleteHistoryItemResponse
from .delete_holiday_params import DeleteHolidayParams
+ from .delete_location_params import DeleteLocationParams
from .delete_product_params import DeleteProductParams
from .delete_project_request import DeleteProjectRequest
from .delete_project_response_model import DeleteProjectResponseModel
@@ -657,15 +668,27 @@
from .dubbing_transcripts_response_model import DubbingTranscriptsResponseModel
from .dubbing_transcripts_response_model_transcript_format import DubbingTranscriptsResponseModelTranscriptFormat
from .dynamic_variable_assignment import DynamicVariableAssignment
+ from .dynamic_variable_container_value_type_input import DynamicVariableContainerValueTypeInput
+ from .dynamic_variable_container_value_type_output import DynamicVariableContainerValueTypeOutput
+ from .dynamic_variable_nested_value_type_input import DynamicVariableNestedValueTypeInput
+ from .dynamic_variable_nested_value_type_output import DynamicVariableNestedValueTypeOutput
from .dynamic_variable_schema_override import DynamicVariableSchemaOverride
from .dynamic_variable_update_common_model import DynamicVariableUpdateCommonModel
- from .dynamic_variables_config import DynamicVariablesConfig
- from .dynamic_variables_config_dynamic_variable_placeholders_value import (
- DynamicVariablesConfigDynamicVariablePlaceholdersValue,
+ from .dynamic_variables_config_input import DynamicVariablesConfigInput
+ from .dynamic_variables_config_input_dynamic_variable_placeholders_value import (
+ DynamicVariablesConfigInputDynamicVariablePlaceholdersValue,
)
- from .dynamic_variables_config_workflow_override import DynamicVariablesConfigWorkflowOverride
- from .dynamic_variables_config_workflow_override_dynamic_variable_placeholders_value import (
- DynamicVariablesConfigWorkflowOverrideDynamicVariablePlaceholdersValue,
+ from .dynamic_variables_config_output import DynamicVariablesConfigOutput
+ from .dynamic_variables_config_output_dynamic_variable_placeholders_value import (
+ DynamicVariablesConfigOutputDynamicVariablePlaceholdersValue,
+ )
+ from .dynamic_variables_config_workflow_override_input import DynamicVariablesConfigWorkflowOverrideInput
+ from .dynamic_variables_config_workflow_override_input_dynamic_variable_placeholders_value import (
+ DynamicVariablesConfigWorkflowOverrideInputDynamicVariablePlaceholdersValue,
+ )
+ from .dynamic_variables_config_workflow_override_output import DynamicVariablesConfigWorkflowOverrideOutput
+ from .dynamic_variables_config_workflow_override_output_dynamic_variable_placeholders_value import (
+ DynamicVariablesConfigWorkflowOverrideOutputDynamicVariablePlaceholdersValue,
)
from .edit_chapter_response_model import EditChapterResponseModel
from .edit_project_response_model import EditProjectResponseModel
@@ -700,6 +723,9 @@
ExportOptions_Txt,
)
from .extended_subscription_response_model_currency import ExtendedSubscriptionResponseModelCurrency
+ from .extended_subscription_response_model_max_credit_limit_extension import (
+ ExtendedSubscriptionResponseModelMaxCreditLimitExtension,
+ )
from .extended_subscription_response_model_pending_change import ExtendedSubscriptionResponseModelPendingChange
from .feature_status_common_model import FeatureStatusCommonModel
from .features_usage_common_model import FeaturesUsageCommonModel
@@ -865,6 +891,7 @@
GetToolDependentAgentsResponseModelAgentsItem_Available,
GetToolDependentAgentsResponseModelAgentsItem_Unknown,
)
+ from .get_tool_executions_page_response_model import GetToolExecutionsPageResponseModel
from .get_voices_response import GetVoicesResponse
from .get_voices_v_2_response import GetVoicesV2Response
from .get_whats_app_account_response import GetWhatsAppAccountResponse
@@ -944,6 +971,7 @@
from .list_client_interactions_params import ListClientInteractionsParams
from .list_clients_params import ListClientsParams
from .list_holidays_params import ListHolidaysParams
+ from .list_locations_params import ListLocationsParams
from .list_mcp_tools_response_model import ListMcpToolsResponseModel
from .list_products_params import ListProductsParams
from .list_rental_services_params import ListRentalServicesParams
@@ -1000,12 +1028,19 @@
from .mcp_servers_response_model import McpServersResponseModel
from .mcp_tool_approval_hash import McpToolApprovalHash
from .mcp_tool_approval_policy import McpToolApprovalPolicy
- from .mcp_tool_config_override import McpToolConfigOverride
- from .mcp_tool_config_override_input_overrides_value import (
- McpToolConfigOverrideInputOverridesValue,
- McpToolConfigOverrideInputOverridesValue_Constant,
- McpToolConfigOverrideInputOverridesValue_DynamicVariable,
- McpToolConfigOverrideInputOverridesValue_Llm,
+ from .mcp_tool_config_override_input import McpToolConfigOverrideInput
+ from .mcp_tool_config_override_input_input_overrides_value import (
+ McpToolConfigOverrideInputInputOverridesValue,
+ McpToolConfigOverrideInputInputOverridesValue_Constant,
+ McpToolConfigOverrideInputInputOverridesValue_DynamicVariable,
+ McpToolConfigOverrideInputInputOverridesValue_Llm,
+ )
+ from .mcp_tool_config_override_output import McpToolConfigOverrideOutput
+ from .mcp_tool_config_override_output_input_overrides_value import (
+ McpToolConfigOverrideOutputInputOverridesValue,
+ McpToolConfigOverrideOutputInputOverridesValue_Constant,
+ McpToolConfigOverrideOutputInputOverridesValue_DynamicVariable,
+ McpToolConfigOverrideOutputInputOverridesValue_Llm,
)
from .merging_strategy import MergingStrategy
from .message_search_sort_by import MessageSearchSortBy
@@ -1115,7 +1150,6 @@
ProjectExtendedResponseModelAssetsItem_Video,
)
from .project_extended_response_model_fiction import ProjectExtendedResponseModelFiction
- from .project_extended_response_model_quality_preset import ProjectExtendedResponseModelQualityPreset
from .project_extended_response_model_source_type import ProjectExtendedResponseModelSourceType
from .project_extended_response_model_target_audience import ProjectExtendedResponseModelTargetAudience
from .project_external_audio_response_model import ProjectExternalAudioResponseModel
@@ -1218,6 +1252,7 @@
PronunciationDictionaryVersionResponseModelPermissionOnResource,
)
from .pydantic_pronunciation_dictionary_version_locator import PydanticPronunciationDictionaryVersionLocator
+ from .quality_preset_type import QualityPresetType
from .query_params_json_schema import QueryParamsJsonSchema
from .rag_chunk_metadata import RagChunkMetadata
from .rag_config import RagConfig
@@ -1371,6 +1406,7 @@
from .subscription import Subscription
from .subscription_response import SubscriptionResponse
from .subscription_response_model_currency import SubscriptionResponseModelCurrency
+ from .subscription_response_model_max_credit_limit_extension import SubscriptionResponseModelMaxCreditLimitExtension
from .subscription_status_type import SubscriptionStatusType
from .suggested_audio_tag import SuggestedAudioTag
from .supported_voice import SupportedVoice
@@ -1407,6 +1443,7 @@
from .test_run_metadata import TestRunMetadata
from .test_run_metadata_test_type import TestRunMetadataTestType
from .test_run_status import TestRunStatus
+ from .test_sharing_mode import TestSharingMode
from .test_tool_result_model import TestToolResultModel
from .test_type import TestType
from .tests_feature_usage_common_model import TestsFeatureUsageCommonModel
@@ -1429,6 +1466,14 @@
from .tool_call_unit_test_model_dynamic_variables_value import ToolCallUnitTestModelDynamicVariablesValue
from .tool_error_handling_mode import ToolErrorHandlingMode
from .tool_execution_mode import ToolExecutionMode
+ from .tool_execution_response_model import ToolExecutionResponseModel
+ from .tool_execution_response_model_tool_call_details import (
+ ToolExecutionResponseModelToolCallDetails,
+ ToolExecutionResponseModelToolCallDetails_ApiIntegrationWebhook,
+ ToolExecutionResponseModelToolCallDetails_Client,
+ ToolExecutionResponseModelToolCallDetails_Mcp,
+ ToolExecutionResponseModelToolCallDetails_Webhook,
+ )
from .tool_mock_config import ToolMockConfig
from .tool_request_model import ToolRequestModel
from .tool_request_model_tool_config import (
@@ -1521,6 +1566,7 @@
from .update_client_params import UpdateClientParams
from .update_customer_facing_config_params import UpdateCustomerFacingConfigParams
from .update_holiday_params import UpdateHolidayParams
+ from .update_location_params import UpdateLocationParams
from .update_product_params import UpdateProductParams
from .update_project_request import UpdateProjectRequest
from .update_pronunciation_dictionaries_request import UpdatePronunciationDictionariesRequest
@@ -1771,6 +1817,13 @@
)
from .workflow_unconditional_model_input import WorkflowUnconditionalModelInput
from .workflow_unconditional_model_output import WorkflowUnconditionalModelOutput
+ from .workspace_analytics_query_response_model import WorkspaceAnalyticsQueryResponseModel
+ from .workspace_analytics_query_response_model_column_types_item import (
+ WorkspaceAnalyticsQueryResponseModelColumnTypesItem,
+ )
+ from .workspace_analytics_query_response_model_rows_item_item import (
+ WorkspaceAnalyticsQueryResponseModelRowsItemItem,
+ )
from .workspace_api_key_list_response_model import WorkspaceApiKeyListResponseModel
from .workspace_api_key_response_model import WorkspaceApiKeyResponseModel
from .workspace_batch_calls_response import WorkspaceBatchCallsResponse
@@ -1856,6 +1909,9 @@
"Alignment": ".alignment",
"AllowedOutputFormats": ".allowed_output_formats",
"AllowlistItem": ".allowlist_item",
+ "AnalysisProperty": ".analysis_property",
+ "AnalysisPropertyConstantValue": ".analysis_property_constant_value",
+ "AnalysisPropertyType": ".analysis_property_type",
"AnalysisScope": ".analysis_scope",
"ApiIntegrationOAuth2AuthCodeResponse": ".api_integration_o_auth_2_auth_code_response",
"ApiIntegrationOAuth2AuthCodeResponseScopeSeparator": ".api_integration_o_auth_2_auth_code_response_scope_separator",
@@ -1868,16 +1924,16 @@
"ApiIntegrationWebhookToolConfigInput": ".api_integration_webhook_tool_config_input",
"ApiIntegrationWebhookToolConfigOutput": ".api_integration_webhook_tool_config_output",
"ArrayJsonSchemaPropertyInput": ".array_json_schema_property_input",
+ "ArrayJsonSchemaPropertyInputConstantValueItem": ".array_json_schema_property_input_constant_value_item",
"ArrayJsonSchemaPropertyInputItems": ".array_json_schema_property_input_items",
"ArrayJsonSchemaPropertyOutput": ".array_json_schema_property_output",
+ "ArrayJsonSchemaPropertyOutputConstantValueItem": ".array_json_schema_property_output_constant_value_item",
"ArrayJsonSchemaPropertyOutputItems": ".array_json_schema_property_output_items",
"AsrConversationalConfig": ".asr_conversational_config",
"AsrConversationalConfigWorkflowOverride": ".asr_conversational_config_workflow_override",
"AsrInputFormat": ".asr_input_format",
"AsrProvider": ".asr_provider",
"AsrQuality": ".asr_quality",
- "AssetTranscription": ".asset_transcription",
- "AssetTranscriptionWord": ".asset_transcription_word",
"AstAdditionOperatorNodeInput": ".ast_addition_operator_node_input",
"AstAdditionOperatorNodeOutput": ".ast_addition_operator_node_output",
"AstAndOperatorNodeInput": ".ast_and_operator_node_input",
@@ -1917,6 +1973,7 @@
"AstNodeInput_LteOperator": ".ast_node_input",
"AstNodeInput_MulOperator": ".ast_node_input",
"AstNodeInput_NeqOperator": ".ast_node_input",
+ "AstNodeInput_NullLiteral": ".ast_node_input",
"AstNodeInput_NumberLiteral": ".ast_node_input",
"AstNodeInput_OrOperator": ".ast_node_input",
"AstNodeInput_StringLiteral": ".ast_node_input",
@@ -1936,12 +1993,15 @@
"AstNodeOutput_LteOperator": ".ast_node_output",
"AstNodeOutput_MulOperator": ".ast_node_output",
"AstNodeOutput_NeqOperator": ".ast_node_output",
+ "AstNodeOutput_NullLiteral": ".ast_node_output",
"AstNodeOutput_NumberLiteral": ".ast_node_output",
"AstNodeOutput_OrOperator": ".ast_node_output",
"AstNodeOutput_StringLiteral": ".ast_node_output",
"AstNodeOutput_SubOperator": ".ast_node_output",
"AstNotEqualsOperatorNodeInput": ".ast_not_equals_operator_node_input",
"AstNotEqualsOperatorNodeOutput": ".ast_not_equals_operator_node_output",
+ "AstNullNodeInput": ".ast_null_node_input",
+ "AstNullNodeOutput": ".ast_null_node_output",
"AstNumberNodeInput": ".ast_number_node_input",
"AstNumberNodeOutput": ".ast_number_node_output",
"AstOrOperatorNodeInput": ".ast_or_operator_node_input",
@@ -1982,8 +2042,6 @@
"AuthSettings": ".auth_settings",
"AuthorizationMethod": ".authorization_method",
"AutoSyncInfo": ".auto_sync_info",
- "AvatarContextRequestModel": ".avatar_context_request_model",
- "AvatarContextResponseModel": ".avatar_context_response_model",
"BackupLlmDefault": ".backup_llm_default",
"BackupLlmDisabled": ".backup_llm_disabled",
"BackupLlmOverride": ".backup_llm_override",
@@ -2061,6 +2119,10 @@
"CloseSocket": ".close_socket",
"CoachedAgentSettings": ".coached_agent_settings",
"CoachingAgentSettings": ".coaching_agent_settings",
+ "ColumnFilter": ".column_filter",
+ "ColumnFilterOperation": ".column_filter_operation",
+ "ColumnFilterValuesItem": ".column_filter_values_item",
+ "ColumnUnit": ".column_unit",
"CommittedTranscriptPayload": ".committed_transcript_payload",
"CommittedTranscriptWithTimestampsPayload": ".committed_transcript_with_timestamps_payload",
"ConfigEntityType": ".config_entity_type",
@@ -2223,6 +2285,7 @@
"CreateClientParams": ".create_client_params",
"CreateCustomHeaderAuthRequest": ".create_custom_header_auth_request",
"CreateHolidayParams": ".create_holiday_params",
+ "CreateLocationParams": ".create_location_params",
"CreateMtlsAuthRequest": ".create_mtls_auth_request",
"CreateOAuth2ClientCredsRequest": ".create_o_auth_2_client_creds_request",
"CreateOAuth2JwtRequest": ".create_o_auth_2_jwt_request",
@@ -2279,6 +2342,7 @@
"DeleteDubbingResponseModel": ".delete_dubbing_response_model",
"DeleteHistoryItemResponse": ".delete_history_item_response",
"DeleteHolidayParams": ".delete_holiday_params",
+ "DeleteLocationParams": ".delete_location_params",
"DeleteProductParams": ".delete_product_params",
"DeleteProjectRequest": ".delete_project_request",
"DeleteProjectResponseModel": ".delete_project_response_model",
@@ -2333,12 +2397,20 @@
"DubbingTranscriptsResponseModel": ".dubbing_transcripts_response_model",
"DubbingTranscriptsResponseModelTranscriptFormat": ".dubbing_transcripts_response_model_transcript_format",
"DynamicVariableAssignment": ".dynamic_variable_assignment",
+ "DynamicVariableContainerValueTypeInput": ".dynamic_variable_container_value_type_input",
+ "DynamicVariableContainerValueTypeOutput": ".dynamic_variable_container_value_type_output",
+ "DynamicVariableNestedValueTypeInput": ".dynamic_variable_nested_value_type_input",
+ "DynamicVariableNestedValueTypeOutput": ".dynamic_variable_nested_value_type_output",
"DynamicVariableSchemaOverride": ".dynamic_variable_schema_override",
"DynamicVariableUpdateCommonModel": ".dynamic_variable_update_common_model",
- "DynamicVariablesConfig": ".dynamic_variables_config",
- "DynamicVariablesConfigDynamicVariablePlaceholdersValue": ".dynamic_variables_config_dynamic_variable_placeholders_value",
- "DynamicVariablesConfigWorkflowOverride": ".dynamic_variables_config_workflow_override",
- "DynamicVariablesConfigWorkflowOverrideDynamicVariablePlaceholdersValue": ".dynamic_variables_config_workflow_override_dynamic_variable_placeholders_value",
+ "DynamicVariablesConfigInput": ".dynamic_variables_config_input",
+ "DynamicVariablesConfigInputDynamicVariablePlaceholdersValue": ".dynamic_variables_config_input_dynamic_variable_placeholders_value",
+ "DynamicVariablesConfigOutput": ".dynamic_variables_config_output",
+ "DynamicVariablesConfigOutputDynamicVariablePlaceholdersValue": ".dynamic_variables_config_output_dynamic_variable_placeholders_value",
+ "DynamicVariablesConfigWorkflowOverrideInput": ".dynamic_variables_config_workflow_override_input",
+ "DynamicVariablesConfigWorkflowOverrideInputDynamicVariablePlaceholdersValue": ".dynamic_variables_config_workflow_override_input_dynamic_variable_placeholders_value",
+ "DynamicVariablesConfigWorkflowOverrideOutput": ".dynamic_variables_config_workflow_override_output",
+ "DynamicVariablesConfigWorkflowOverrideOutputDynamicVariablePlaceholdersValue": ".dynamic_variables_config_workflow_override_output_dynamic_variable_placeholders_value",
"EditChapterResponseModel": ".edit_chapter_response_model",
"EditProjectResponseModel": ".edit_project_response_model",
"EditVoiceResponseModel": ".edit_voice_response_model",
@@ -2370,6 +2442,7 @@
"ExportOptions_Srt": ".export_options",
"ExportOptions_Txt": ".export_options",
"ExtendedSubscriptionResponseModelCurrency": ".extended_subscription_response_model_currency",
+ "ExtendedSubscriptionResponseModelMaxCreditLimitExtension": ".extended_subscription_response_model_max_credit_limit_extension",
"ExtendedSubscriptionResponseModelPendingChange": ".extended_subscription_response_model_pending_change",
"FeatureStatusCommonModel": ".feature_status_common_model",
"FeaturesUsageCommonModel": ".features_usage_common_model",
@@ -2495,6 +2568,7 @@
"GetToolDependentAgentsResponseModelAgentsItem": ".get_tool_dependent_agents_response_model_agents_item",
"GetToolDependentAgentsResponseModelAgentsItem_Available": ".get_tool_dependent_agents_response_model_agents_item",
"GetToolDependentAgentsResponseModelAgentsItem_Unknown": ".get_tool_dependent_agents_response_model_agents_item",
+ "GetToolExecutionsPageResponseModel": ".get_tool_executions_page_response_model",
"GetVoicesResponse": ".get_voices_response",
"GetVoicesV2Response": ".get_voices_v_2_response",
"GetWhatsAppAccountResponse": ".get_whats_app_account_response",
@@ -2566,6 +2640,7 @@
"ListClientInteractionsParams": ".list_client_interactions_params",
"ListClientsParams": ".list_clients_params",
"ListHolidaysParams": ".list_holidays_params",
+ "ListLocationsParams": ".list_locations_params",
"ListMcpToolsResponseModel": ".list_mcp_tools_response_model",
"ListProductsParams": ".list_products_params",
"ListRentalServicesParams": ".list_rental_services_params",
@@ -2620,11 +2695,16 @@
"McpServersResponseModel": ".mcp_servers_response_model",
"McpToolApprovalHash": ".mcp_tool_approval_hash",
"McpToolApprovalPolicy": ".mcp_tool_approval_policy",
- "McpToolConfigOverride": ".mcp_tool_config_override",
- "McpToolConfigOverrideInputOverridesValue": ".mcp_tool_config_override_input_overrides_value",
- "McpToolConfigOverrideInputOverridesValue_Constant": ".mcp_tool_config_override_input_overrides_value",
- "McpToolConfigOverrideInputOverridesValue_DynamicVariable": ".mcp_tool_config_override_input_overrides_value",
- "McpToolConfigOverrideInputOverridesValue_Llm": ".mcp_tool_config_override_input_overrides_value",
+ "McpToolConfigOverrideInput": ".mcp_tool_config_override_input",
+ "McpToolConfigOverrideInputInputOverridesValue": ".mcp_tool_config_override_input_input_overrides_value",
+ "McpToolConfigOverrideInputInputOverridesValue_Constant": ".mcp_tool_config_override_input_input_overrides_value",
+ "McpToolConfigOverrideInputInputOverridesValue_DynamicVariable": ".mcp_tool_config_override_input_input_overrides_value",
+ "McpToolConfigOverrideInputInputOverridesValue_Llm": ".mcp_tool_config_override_input_input_overrides_value",
+ "McpToolConfigOverrideOutput": ".mcp_tool_config_override_output",
+ "McpToolConfigOverrideOutputInputOverridesValue": ".mcp_tool_config_override_output_input_overrides_value",
+ "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",
"MergingStrategy": ".merging_strategy",
"MessageSearchSortBy": ".message_search_sort_by",
"MessagesSearchResponse": ".messages_search_response",
@@ -2723,7 +2803,6 @@
"ProjectExtendedResponseModelAssetsItem_Image": ".project_extended_response_model_assets_item",
"ProjectExtendedResponseModelAssetsItem_Video": ".project_extended_response_model_assets_item",
"ProjectExtendedResponseModelFiction": ".project_extended_response_model_fiction",
- "ProjectExtendedResponseModelQualityPreset": ".project_extended_response_model_quality_preset",
"ProjectExtendedResponseModelSourceType": ".project_extended_response_model_source_type",
"ProjectExtendedResponseModelTargetAudience": ".project_extended_response_model_target_audience",
"ProjectExternalAudioResponseModel": ".project_external_audio_response_model",
@@ -2806,6 +2885,7 @@
"PronunciationDictionaryVersionResponseModel": ".pronunciation_dictionary_version_response_model",
"PronunciationDictionaryVersionResponseModelPermissionOnResource": ".pronunciation_dictionary_version_response_model_permission_on_resource",
"PydanticPronunciationDictionaryVersionLocator": ".pydantic_pronunciation_dictionary_version_locator",
+ "QualityPresetType": ".quality_preset_type",
"QueryParamsJsonSchema": ".query_params_json_schema",
"RagChunkMetadata": ".rag_chunk_metadata",
"RagConfig": ".rag_config",
@@ -2955,6 +3035,7 @@
"Subscription": ".subscription",
"SubscriptionResponse": ".subscription_response",
"SubscriptionResponseModelCurrency": ".subscription_response_model_currency",
+ "SubscriptionResponseModelMaxCreditLimitExtension": ".subscription_response_model_max_credit_limit_extension",
"SubscriptionStatusType": ".subscription_status_type",
"SuggestedAudioTag": ".suggested_audio_tag",
"SupportedVoice": ".supported_voice",
@@ -2987,6 +3068,7 @@
"TestRunMetadata": ".test_run_metadata",
"TestRunMetadataTestType": ".test_run_metadata_test_type",
"TestRunStatus": ".test_run_status",
+ "TestSharingMode": ".test_sharing_mode",
"TestToolResultModel": ".test_tool_result_model",
"TestType": ".test_type",
"TestsFeatureUsageCommonModel": ".tests_feature_usage_common_model",
@@ -3009,6 +3091,12 @@
"ToolCallUnitTestModelDynamicVariablesValue": ".tool_call_unit_test_model_dynamic_variables_value",
"ToolErrorHandlingMode": ".tool_error_handling_mode",
"ToolExecutionMode": ".tool_execution_mode",
+ "ToolExecutionResponseModel": ".tool_execution_response_model",
+ "ToolExecutionResponseModelToolCallDetails": ".tool_execution_response_model_tool_call_details",
+ "ToolExecutionResponseModelToolCallDetails_ApiIntegrationWebhook": ".tool_execution_response_model_tool_call_details",
+ "ToolExecutionResponseModelToolCallDetails_Client": ".tool_execution_response_model_tool_call_details",
+ "ToolExecutionResponseModelToolCallDetails_Mcp": ".tool_execution_response_model_tool_call_details",
+ "ToolExecutionResponseModelToolCallDetails_Webhook": ".tool_execution_response_model_tool_call_details",
"ToolMockConfig": ".tool_mock_config",
"ToolRequestModel": ".tool_request_model",
"ToolRequestModelToolConfig": ".tool_request_model_tool_config",
@@ -3091,6 +3179,7 @@
"UpdateClientParams": ".update_client_params",
"UpdateCustomerFacingConfigParams": ".update_customer_facing_config_params",
"UpdateHolidayParams": ".update_holiday_params",
+ "UpdateLocationParams": ".update_location_params",
"UpdateProductParams": ".update_product_params",
"UpdateProjectRequest": ".update_project_request",
"UpdatePronunciationDictionariesRequest": ".update_pronunciation_dictionaries_request",
@@ -3297,6 +3386,9 @@
"WorkflowToolResponseModelOutputStepsItem_NestedTools": ".workflow_tool_response_model_output_steps_item",
"WorkflowUnconditionalModelInput": ".workflow_unconditional_model_input",
"WorkflowUnconditionalModelOutput": ".workflow_unconditional_model_output",
+ "WorkspaceAnalyticsQueryResponseModel": ".workspace_analytics_query_response_model",
+ "WorkspaceAnalyticsQueryResponseModelColumnTypesItem": ".workspace_analytics_query_response_model_column_types_item",
+ "WorkspaceAnalyticsQueryResponseModelRowsItemItem": ".workspace_analytics_query_response_model_rows_item_item",
"WorkspaceApiKeyListResponseModel": ".workspace_api_key_list_response_model",
"WorkspaceApiKeyResponseModel": ".workspace_api_key_response_model",
"WorkspaceBatchCallsResponse": ".workspace_batch_calls_response",
@@ -3406,6 +3498,9 @@ def __dir__():
"Alignment",
"AllowedOutputFormats",
"AllowlistItem",
+ "AnalysisProperty",
+ "AnalysisPropertyConstantValue",
+ "AnalysisPropertyType",
"AnalysisScope",
"ApiIntegrationOAuth2AuthCodeResponse",
"ApiIntegrationOAuth2AuthCodeResponseScopeSeparator",
@@ -3418,16 +3513,16 @@ def __dir__():
"ApiIntegrationWebhookToolConfigInput",
"ApiIntegrationWebhookToolConfigOutput",
"ArrayJsonSchemaPropertyInput",
+ "ArrayJsonSchemaPropertyInputConstantValueItem",
"ArrayJsonSchemaPropertyInputItems",
"ArrayJsonSchemaPropertyOutput",
+ "ArrayJsonSchemaPropertyOutputConstantValueItem",
"ArrayJsonSchemaPropertyOutputItems",
"AsrConversationalConfig",
"AsrConversationalConfigWorkflowOverride",
"AsrInputFormat",
"AsrProvider",
"AsrQuality",
- "AssetTranscription",
- "AssetTranscriptionWord",
"AstAdditionOperatorNodeInput",
"AstAdditionOperatorNodeOutput",
"AstAndOperatorNodeInput",
@@ -3467,6 +3562,7 @@ def __dir__():
"AstNodeInput_LteOperator",
"AstNodeInput_MulOperator",
"AstNodeInput_NeqOperator",
+ "AstNodeInput_NullLiteral",
"AstNodeInput_NumberLiteral",
"AstNodeInput_OrOperator",
"AstNodeInput_StringLiteral",
@@ -3486,12 +3582,15 @@ def __dir__():
"AstNodeOutput_LteOperator",
"AstNodeOutput_MulOperator",
"AstNodeOutput_NeqOperator",
+ "AstNodeOutput_NullLiteral",
"AstNodeOutput_NumberLiteral",
"AstNodeOutput_OrOperator",
"AstNodeOutput_StringLiteral",
"AstNodeOutput_SubOperator",
"AstNotEqualsOperatorNodeInput",
"AstNotEqualsOperatorNodeOutput",
+ "AstNullNodeInput",
+ "AstNullNodeOutput",
"AstNumberNodeInput",
"AstNumberNodeOutput",
"AstOrOperatorNodeInput",
@@ -3532,8 +3631,6 @@ def __dir__():
"AuthSettings",
"AuthorizationMethod",
"AutoSyncInfo",
- "AvatarContextRequestModel",
- "AvatarContextResponseModel",
"BackupLlmDefault",
"BackupLlmDisabled",
"BackupLlmOverride",
@@ -3611,6 +3708,10 @@ def __dir__():
"CloseSocket",
"CoachedAgentSettings",
"CoachingAgentSettings",
+ "ColumnFilter",
+ "ColumnFilterOperation",
+ "ColumnFilterValuesItem",
+ "ColumnUnit",
"CommittedTranscriptPayload",
"CommittedTranscriptWithTimestampsPayload",
"ConfigEntityType",
@@ -3773,6 +3874,7 @@ def __dir__():
"CreateClientParams",
"CreateCustomHeaderAuthRequest",
"CreateHolidayParams",
+ "CreateLocationParams",
"CreateMtlsAuthRequest",
"CreateOAuth2ClientCredsRequest",
"CreateOAuth2JwtRequest",
@@ -3829,6 +3931,7 @@ def __dir__():
"DeleteDubbingResponseModel",
"DeleteHistoryItemResponse",
"DeleteHolidayParams",
+ "DeleteLocationParams",
"DeleteProductParams",
"DeleteProjectRequest",
"DeleteProjectResponseModel",
@@ -3883,12 +3986,20 @@ def __dir__():
"DubbingTranscriptsResponseModel",
"DubbingTranscriptsResponseModelTranscriptFormat",
"DynamicVariableAssignment",
+ "DynamicVariableContainerValueTypeInput",
+ "DynamicVariableContainerValueTypeOutput",
+ "DynamicVariableNestedValueTypeInput",
+ "DynamicVariableNestedValueTypeOutput",
"DynamicVariableSchemaOverride",
"DynamicVariableUpdateCommonModel",
- "DynamicVariablesConfig",
- "DynamicVariablesConfigDynamicVariablePlaceholdersValue",
- "DynamicVariablesConfigWorkflowOverride",
- "DynamicVariablesConfigWorkflowOverrideDynamicVariablePlaceholdersValue",
+ "DynamicVariablesConfigInput",
+ "DynamicVariablesConfigInputDynamicVariablePlaceholdersValue",
+ "DynamicVariablesConfigOutput",
+ "DynamicVariablesConfigOutputDynamicVariablePlaceholdersValue",
+ "DynamicVariablesConfigWorkflowOverrideInput",
+ "DynamicVariablesConfigWorkflowOverrideInputDynamicVariablePlaceholdersValue",
+ "DynamicVariablesConfigWorkflowOverrideOutput",
+ "DynamicVariablesConfigWorkflowOverrideOutputDynamicVariablePlaceholdersValue",
"EditChapterResponseModel",
"EditProjectResponseModel",
"EditVoiceResponseModel",
@@ -3920,6 +4031,7 @@ def __dir__():
"ExportOptions_Srt",
"ExportOptions_Txt",
"ExtendedSubscriptionResponseModelCurrency",
+ "ExtendedSubscriptionResponseModelMaxCreditLimitExtension",
"ExtendedSubscriptionResponseModelPendingChange",
"FeatureStatusCommonModel",
"FeaturesUsageCommonModel",
@@ -4045,6 +4157,7 @@ def __dir__():
"GetToolDependentAgentsResponseModelAgentsItem",
"GetToolDependentAgentsResponseModelAgentsItem_Available",
"GetToolDependentAgentsResponseModelAgentsItem_Unknown",
+ "GetToolExecutionsPageResponseModel",
"GetVoicesResponse",
"GetVoicesV2Response",
"GetWhatsAppAccountResponse",
@@ -4116,6 +4229,7 @@ def __dir__():
"ListClientInteractionsParams",
"ListClientsParams",
"ListHolidaysParams",
+ "ListLocationsParams",
"ListMcpToolsResponseModel",
"ListProductsParams",
"ListRentalServicesParams",
@@ -4170,11 +4284,16 @@ def __dir__():
"McpServersResponseModel",
"McpToolApprovalHash",
"McpToolApprovalPolicy",
- "McpToolConfigOverride",
- "McpToolConfigOverrideInputOverridesValue",
- "McpToolConfigOverrideInputOverridesValue_Constant",
- "McpToolConfigOverrideInputOverridesValue_DynamicVariable",
- "McpToolConfigOverrideInputOverridesValue_Llm",
+ "McpToolConfigOverrideInput",
+ "McpToolConfigOverrideInputInputOverridesValue",
+ "McpToolConfigOverrideInputInputOverridesValue_Constant",
+ "McpToolConfigOverrideInputInputOverridesValue_DynamicVariable",
+ "McpToolConfigOverrideInputInputOverridesValue_Llm",
+ "McpToolConfigOverrideOutput",
+ "McpToolConfigOverrideOutputInputOverridesValue",
+ "McpToolConfigOverrideOutputInputOverridesValue_Constant",
+ "McpToolConfigOverrideOutputInputOverridesValue_DynamicVariable",
+ "McpToolConfigOverrideOutputInputOverridesValue_Llm",
"MergingStrategy",
"MessageSearchSortBy",
"MessagesSearchResponse",
@@ -4273,7 +4392,6 @@ def __dir__():
"ProjectExtendedResponseModelAssetsItem_Image",
"ProjectExtendedResponseModelAssetsItem_Video",
"ProjectExtendedResponseModelFiction",
- "ProjectExtendedResponseModelQualityPreset",
"ProjectExtendedResponseModelSourceType",
"ProjectExtendedResponseModelTargetAudience",
"ProjectExternalAudioResponseModel",
@@ -4356,6 +4474,7 @@ def __dir__():
"PronunciationDictionaryVersionResponseModel",
"PronunciationDictionaryVersionResponseModelPermissionOnResource",
"PydanticPronunciationDictionaryVersionLocator",
+ "QualityPresetType",
"QueryParamsJsonSchema",
"RagChunkMetadata",
"RagConfig",
@@ -4505,6 +4624,7 @@ def __dir__():
"Subscription",
"SubscriptionResponse",
"SubscriptionResponseModelCurrency",
+ "SubscriptionResponseModelMaxCreditLimitExtension",
"SubscriptionStatusType",
"SuggestedAudioTag",
"SupportedVoice",
@@ -4537,6 +4657,7 @@ def __dir__():
"TestRunMetadata",
"TestRunMetadataTestType",
"TestRunStatus",
+ "TestSharingMode",
"TestToolResultModel",
"TestType",
"TestsFeatureUsageCommonModel",
@@ -4559,6 +4680,12 @@ def __dir__():
"ToolCallUnitTestModelDynamicVariablesValue",
"ToolErrorHandlingMode",
"ToolExecutionMode",
+ "ToolExecutionResponseModel",
+ "ToolExecutionResponseModelToolCallDetails",
+ "ToolExecutionResponseModelToolCallDetails_ApiIntegrationWebhook",
+ "ToolExecutionResponseModelToolCallDetails_Client",
+ "ToolExecutionResponseModelToolCallDetails_Mcp",
+ "ToolExecutionResponseModelToolCallDetails_Webhook",
"ToolMockConfig",
"ToolRequestModel",
"ToolRequestModelToolConfig",
@@ -4641,6 +4768,7 @@ def __dir__():
"UpdateClientParams",
"UpdateCustomerFacingConfigParams",
"UpdateHolidayParams",
+ "UpdateLocationParams",
"UpdateProductParams",
"UpdateProjectRequest",
"UpdatePronunciationDictionariesRequest",
@@ -4847,6 +4975,9 @@ def __dir__():
"WorkflowToolResponseModelOutputStepsItem_NestedTools",
"WorkflowUnconditionalModelInput",
"WorkflowUnconditionalModelOutput",
+ "WorkspaceAnalyticsQueryResponseModel",
+ "WorkspaceAnalyticsQueryResponseModelColumnTypesItem",
+ "WorkspaceAnalyticsQueryResponseModelRowsItemItem",
"WorkspaceApiKeyListResponseModel",
"WorkspaceApiKeyResponseModel",
"WorkspaceBatchCallsResponse",
diff --git a/src/elevenlabs/types/agent_config.py b/src/elevenlabs/types/agent_config.py
index e953d6e3..b64a50b5 100644
--- a/src/elevenlabs/types/agent_config.py
+++ b/src/elevenlabs/types/agent_config.py
@@ -7,7 +7,7 @@
import pydantic
from ..core.pydantic_utilities import IS_PYDANTIC_V2, update_forward_refs
from ..core.unchecked_base_model import UncheckedBaseModel
-from .dynamic_variables_config import DynamicVariablesConfig
+from .dynamic_variables_config_output import DynamicVariablesConfigOutput
from .prompt_agent_api_model_output import PromptAgentApiModelOutput
@@ -27,7 +27,7 @@ class AgentConfig(UncheckedBaseModel):
When enabled and language is Hindi, the agent will respond in Hinglish
"""
- dynamic_variables: typing.Optional[DynamicVariablesConfig] = pydantic.Field(default=None)
+ dynamic_variables: typing.Optional[DynamicVariablesConfigOutput] = pydantic.Field(default=None)
"""
Configuration for dynamic variables
"""
diff --git a/src/elevenlabs/types/agent_config_api_model_workflow_override_input.py b/src/elevenlabs/types/agent_config_api_model_workflow_override_input.py
index 2709a785..c7b320ad 100644
--- a/src/elevenlabs/types/agent_config_api_model_workflow_override_input.py
+++ b/src/elevenlabs/types/agent_config_api_model_workflow_override_input.py
@@ -7,7 +7,7 @@
import pydantic
from ..core.pydantic_utilities import IS_PYDANTIC_V2, update_forward_refs
from ..core.unchecked_base_model import UncheckedBaseModel
-from .dynamic_variables_config_workflow_override import DynamicVariablesConfigWorkflowOverride
+from .dynamic_variables_config_workflow_override_input import DynamicVariablesConfigWorkflowOverrideInput
from .prompt_agent_api_model_workflow_override_input import PromptAgentApiModelWorkflowOverrideInput
@@ -27,7 +27,7 @@ class AgentConfigApiModelWorkflowOverrideInput(UncheckedBaseModel):
When enabled and language is Hindi, the agent will respond in Hinglish
"""
- dynamic_variables: typing.Optional[DynamicVariablesConfigWorkflowOverride] = pydantic.Field(default=None)
+ dynamic_variables: typing.Optional[DynamicVariablesConfigWorkflowOverrideInput] = pydantic.Field(default=None)
"""
Configuration for dynamic variables
"""
diff --git a/src/elevenlabs/types/agent_config_api_model_workflow_override_output.py b/src/elevenlabs/types/agent_config_api_model_workflow_override_output.py
index 98b4ee47..d21d1cdb 100644
--- a/src/elevenlabs/types/agent_config_api_model_workflow_override_output.py
+++ b/src/elevenlabs/types/agent_config_api_model_workflow_override_output.py
@@ -7,7 +7,7 @@
import pydantic
from ..core.pydantic_utilities import IS_PYDANTIC_V2, update_forward_refs
from ..core.unchecked_base_model import UncheckedBaseModel
-from .dynamic_variables_config_workflow_override import DynamicVariablesConfigWorkflowOverride
+from .dynamic_variables_config_workflow_override_output import DynamicVariablesConfigWorkflowOverrideOutput
from .prompt_agent_api_model_workflow_override_output import PromptAgentApiModelWorkflowOverrideOutput
@@ -27,7 +27,7 @@ class AgentConfigApiModelWorkflowOverrideOutput(UncheckedBaseModel):
When enabled and language is Hindi, the agent will respond in Hinglish
"""
- dynamic_variables: typing.Optional[DynamicVariablesConfigWorkflowOverride] = pydantic.Field(default=None)
+ dynamic_variables: typing.Optional[DynamicVariablesConfigWorkflowOverrideOutput] = pydantic.Field(default=None)
"""
Configuration for dynamic variables
"""
diff --git a/src/elevenlabs/types/agent_platform_settings_request_model.py b/src/elevenlabs/types/agent_platform_settings_request_model.py
index ba5cb34a..2150b174 100644
--- a/src/elevenlabs/types/agent_platform_settings_request_model.py
+++ b/src/elevenlabs/types/agent_platform_settings_request_model.py
@@ -8,12 +8,13 @@
from .agent_call_limits import AgentCallLimits
from .agent_testing_settings import AgentTestingSettings
from .agent_workspace_overrides_input import AgentWorkspaceOverridesInput
+from .analysis_property import AnalysisProperty
from .analysis_scope import AnalysisScope
from .auth_settings import AuthSettings
from .conversation_initiation_client_data_config_input import ConversationInitiationClientDataConfigInput
from .evaluation_settings_input import EvaluationSettingsInput
from .guardrails_v_1_input import GuardrailsV1Input
-from .literal_json_schema_property import LiteralJsonSchemaProperty
+from .llm import Llm
from .privacy_config_input import PrivacyConfigInput
from .widget_config import WidgetConfig
@@ -29,7 +30,7 @@ class AgentPlatformSettingsRequestModel(UncheckedBaseModel):
Configuration for the widget
"""
- data_collection: typing.Optional[typing.Dict[str, LiteralJsonSchemaProperty]] = pydantic.Field(default=None)
+ data_collection: typing.Optional[typing.Dict[str, AnalysisProperty]] = pydantic.Field(default=None)
"""
Data collection settings
"""
@@ -84,6 +85,11 @@ class AgentPlatformSettingsRequestModel(UncheckedBaseModel):
Privacy settings for the agent
"""
+ analysis_llm: typing.Optional[Llm] = pydantic.Field(default=None)
+ """
+ Default LLM model for post-call analysis (evaluation and data collection)
+ """
+
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_platform_settings_response_model.py b/src/elevenlabs/types/agent_platform_settings_response_model.py
index a62414a6..ee4fdf63 100644
--- a/src/elevenlabs/types/agent_platform_settings_response_model.py
+++ b/src/elevenlabs/types/agent_platform_settings_response_model.py
@@ -8,12 +8,13 @@
from .agent_call_limits import AgentCallLimits
from .agent_testing_settings import AgentTestingSettings
from .agent_workspace_overrides_output import AgentWorkspaceOverridesOutput
+from .analysis_property import AnalysisProperty
from .analysis_scope import AnalysisScope
from .auth_settings import AuthSettings
from .conversation_initiation_client_data_config_output import ConversationInitiationClientDataConfigOutput
from .evaluation_settings_output import EvaluationSettingsOutput
from .guardrails_v_1_output import GuardrailsV1Output
-from .literal_json_schema_property import LiteralJsonSchemaProperty
+from .llm import Llm
from .privacy_config_output import PrivacyConfigOutput
from .safety_response_model import SafetyResponseModel
from .widget_config import WidgetConfig
@@ -30,7 +31,7 @@ class AgentPlatformSettingsResponseModel(UncheckedBaseModel):
Configuration for the widget
"""
- data_collection: typing.Optional[typing.Dict[str, LiteralJsonSchemaProperty]] = pydantic.Field(default=None)
+ data_collection: typing.Optional[typing.Dict[str, AnalysisProperty]] = pydantic.Field(default=None)
"""
Data collection settings
"""
@@ -85,6 +86,11 @@ class AgentPlatformSettingsResponseModel(UncheckedBaseModel):
Privacy settings for the agent
"""
+ analysis_llm: typing.Optional[Llm] = pydantic.Field(default=None)
+ """
+ Default LLM model for post-call analysis (evaluation and data collection)
+ """
+
safety: typing.Optional[SafetyResponseModel] = None
if IS_PYDANTIC_V2:
diff --git a/src/elevenlabs/types/agent_workflow_request_model_nodes_value.py b/src/elevenlabs/types/agent_workflow_request_model_nodes_value.py
index 87ddeb83..f82d7a41 100644
--- a/src/elevenlabs/types/agent_workflow_request_model_nodes_value.py
+++ b/src/elevenlabs/types/agent_workflow_request_model_nodes_value.py
@@ -60,11 +60,11 @@ class Config:
class AgentWorkflowRequestModelNodesValue_PhoneNumber(UncheckedBaseModel):
type: typing.Literal["phone_number"] = "phone_number"
custom_sip_headers: typing.Optional[typing.List[WorkflowPhoneNumberNodeModelInputCustomSipHeadersItem]] = None
- position: typing.Optional[PositionInput] = None
- edge_order: typing.Optional[typing.List[str]] = None
transfer_destination: WorkflowPhoneNumberNodeModelInputTransferDestination
transfer_type: typing.Optional[TransferTypeEnum] = None
post_dial_digits: typing.Optional[WorkflowPhoneNumberNodeModelInputPostDialDigits] = None
+ position: typing.Optional[PositionInput] = None
+ edge_order: typing.Optional[typing.List[str]] = None
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/agent_workflow_response_model_nodes_value.py b/src/elevenlabs/types/agent_workflow_response_model_nodes_value.py
index f1275996..ee6c1ed1 100644
--- a/src/elevenlabs/types/agent_workflow_response_model_nodes_value.py
+++ b/src/elevenlabs/types/agent_workflow_response_model_nodes_value.py
@@ -60,11 +60,11 @@ class Config:
class AgentWorkflowResponseModelNodesValue_PhoneNumber(UncheckedBaseModel):
type: typing.Literal["phone_number"] = "phone_number"
custom_sip_headers: typing.List[WorkflowPhoneNumberNodeModelOutputCustomSipHeadersItem]
- position: PositionOutput
- edge_order: typing.List[str]
transfer_destination: WorkflowPhoneNumberNodeModelOutputTransferDestination
transfer_type: TransferTypeEnum
post_dial_digits: typing.Optional[WorkflowPhoneNumberNodeModelOutputPostDialDigits] = None
+ position: PositionOutput
+ edge_order: typing.List[str]
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/analysis_property.py b/src/elevenlabs/types/analysis_property.py
new file mode 100644
index 00000000..89666186
--- /dev/null
+++ b/src/elevenlabs/types/analysis_property.py
@@ -0,0 +1,59 @@
+# 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 .analysis_property_constant_value import AnalysisPropertyConstantValue
+from .analysis_property_type import AnalysisPropertyType
+from .llm import Llm
+
+
+class AnalysisProperty(UncheckedBaseModel):
+ """
+ Data collection property with optional per-item LLM override for post-call analysis.
+
+ TODO: migrate to composition (value_schema: LiteralJsonSchemaProperty + llm) instead of
+ inheritance, so this generalizes cleanly to object/array schemas in the future.
+ """
+
+ type: AnalysisPropertyType
+ description: typing.Optional[str] = pydantic.Field(default=None)
+ """
+ The description of the property. When set, the LLM will provide the value based on this description. Mutually exclusive with dynamic_variable, is_system_provided, and constant_value.
+ """
+
+ enum: typing.Optional[typing.List[str]] = pydantic.Field(default=None)
+ """
+ List of allowed string values for string type parameters
+ """
+
+ is_system_provided: typing.Optional[bool] = pydantic.Field(default=None)
+ """
+ If true, the value will be populated by the system at runtime. Used by API Integration Webhook tools for templating. Mutually exclusive with description, dynamic_variable, and constant_value.
+ """
+
+ dynamic_variable: typing.Optional[str] = pydantic.Field(default=None)
+ """
+ The name of the dynamic variable to use for this property's value. Mutually exclusive with description, is_system_provided, and constant_value.
+ """
+
+ constant_value: typing.Optional[AnalysisPropertyConstantValue] = pydantic.Field(default=None)
+ """
+ A constant value to use for this property. Mutually exclusive with description, dynamic_variable, and is_system_provided.
+ """
+
+ llm: typing.Optional[Llm] = pydantic.Field(default=None)
+ """
+ LLM model to use for this analysis item. If not set, uses agent's analysis_llm default.
+ """
+
+ 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/analysis_property_constant_value.py b/src/elevenlabs/types/analysis_property_constant_value.py
new file mode 100644
index 00000000..09091ab4
--- /dev/null
+++ b/src/elevenlabs/types/analysis_property_constant_value.py
@@ -0,0 +1,5 @@
+# This file was auto-generated by Fern from our API Definition.
+
+import typing
+
+AnalysisPropertyConstantValue = typing.Union[str, int, float, bool]
diff --git a/src/elevenlabs/types/analysis_property_type.py b/src/elevenlabs/types/analysis_property_type.py
new file mode 100644
index 00000000..9568ff65
--- /dev/null
+++ b/src/elevenlabs/types/analysis_property_type.py
@@ -0,0 +1,5 @@
+# This file was auto-generated by Fern from our API Definition.
+
+import typing
+
+AnalysisPropertyType = typing.Union[typing.Literal["boolean", "string", "integer", "number"], typing.Any]
diff --git a/src/elevenlabs/types/api_integration_webhook_tool_config_input.py b/src/elevenlabs/types/api_integration_webhook_tool_config_input.py
index 2df4cf50..26555bd2 100644
--- a/src/elevenlabs/types/api_integration_webhook_tool_config_input.py
+++ b/src/elevenlabs/types/api_integration_webhook_tool_config_input.py
@@ -7,7 +7,7 @@
from ..core.unchecked_base_model import UncheckedBaseModel
from .api_integration_webhook_overrides import ApiIntegrationWebhookOverrides
from .dynamic_variable_assignment import DynamicVariableAssignment
-from .dynamic_variables_config import DynamicVariablesConfig
+from .dynamic_variables_config_input import DynamicVariablesConfigInput
from .tool_call_sound_behavior import ToolCallSoundBehavior
from .tool_call_sound_type import ToolCallSoundType
from .tool_error_handling_mode import ToolErrorHandlingMode
@@ -56,7 +56,7 @@ class ApiIntegrationWebhookToolConfigInput(UncheckedBaseModel):
Controls how tool errors are processed before being shared with the agent. 'auto' determines handling based on tool type (summarized for native integrations, hide for others), 'summarized' sends an LLM-generated summary, 'passthrough' sends the raw error, 'hide' does not share the error with the agent.
"""
- dynamic_variables: typing.Optional[DynamicVariablesConfig] = pydantic.Field(default=None)
+ dynamic_variables: typing.Optional[DynamicVariablesConfigInput] = pydantic.Field(default=None)
"""
Configuration for dynamic variables
"""
diff --git a/src/elevenlabs/types/api_integration_webhook_tool_config_output.py b/src/elevenlabs/types/api_integration_webhook_tool_config_output.py
index 094ae911..defea534 100644
--- a/src/elevenlabs/types/api_integration_webhook_tool_config_output.py
+++ b/src/elevenlabs/types/api_integration_webhook_tool_config_output.py
@@ -7,7 +7,7 @@
from ..core.unchecked_base_model import UncheckedBaseModel
from .api_integration_webhook_overrides import ApiIntegrationWebhookOverrides
from .dynamic_variable_assignment import DynamicVariableAssignment
-from .dynamic_variables_config import DynamicVariablesConfig
+from .dynamic_variables_config_output import DynamicVariablesConfigOutput
from .tool_call_sound_behavior import ToolCallSoundBehavior
from .tool_call_sound_type import ToolCallSoundType
from .tool_error_handling_mode import ToolErrorHandlingMode
@@ -56,7 +56,7 @@ class ApiIntegrationWebhookToolConfigOutput(UncheckedBaseModel):
Controls how tool errors are processed before being shared with the agent. 'auto' determines handling based on tool type (summarized for native integrations, hide for others), 'summarized' sends an LLM-generated summary, 'passthrough' sends the raw error, 'hide' does not share the error with the agent.
"""
- dynamic_variables: DynamicVariablesConfig = pydantic.Field()
+ dynamic_variables: DynamicVariablesConfigOutput = pydantic.Field()
"""
Configuration for dynamic variables
"""
diff --git a/src/elevenlabs/types/array_json_schema_property_input.py b/src/elevenlabs/types/array_json_schema_property_input.py
index 507a6b9c..1a6662a3 100644
--- a/src/elevenlabs/types/array_json_schema_property_input.py
+++ b/src/elevenlabs/types/array_json_schema_property_input.py
@@ -7,12 +7,28 @@
import pydantic
from ..core.pydantic_utilities import IS_PYDANTIC_V2, update_forward_refs
from ..core.unchecked_base_model import UncheckedBaseModel
+from .array_json_schema_property_input_constant_value_item import ArrayJsonSchemaPropertyInputConstantValueItem
class ArrayJsonSchemaPropertyInput(UncheckedBaseModel):
type: typing.Optional[typing.Literal["array"]] = None
description: typing.Optional[str] = None
- items: "ArrayJsonSchemaPropertyInputItems"
+ items: typing.Optional["ArrayJsonSchemaPropertyInputItems"] = pydantic.Field(default=None)
+ """
+ Schema for array elements.
+ """
+
+ dynamic_variable: typing.Optional[str] = pydantic.Field(default=None)
+ """
+ When set, the entire array is populated from this dynamic variable at runtime. Mutually exclusive with description (LLM-provided array) and constant_value.
+ """
+
+ constant_value: typing.Optional[typing.List[ArrayJsonSchemaPropertyInputConstantValueItem]] = pydantic.Field(
+ default=None
+ )
+ """
+ When set, the entire array uses this constant value at runtime. Mutually exclusive with description (LLM-provided array) and dynamic_variable.
+ """
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/array_json_schema_property_input_constant_value_item.py b/src/elevenlabs/types/array_json_schema_property_input_constant_value_item.py
new file mode 100644
index 00000000..bee03775
--- /dev/null
+++ b/src/elevenlabs/types/array_json_schema_property_input_constant_value_item.py
@@ -0,0 +1,5 @@
+# This file was auto-generated by Fern from our API Definition.
+
+import typing
+
+ArrayJsonSchemaPropertyInputConstantValueItem = typing.Union[str, int, float, bool]
diff --git a/src/elevenlabs/types/array_json_schema_property_output.py b/src/elevenlabs/types/array_json_schema_property_output.py
index b5a72592..4ab2cf57 100644
--- a/src/elevenlabs/types/array_json_schema_property_output.py
+++ b/src/elevenlabs/types/array_json_schema_property_output.py
@@ -7,12 +7,28 @@
import pydantic
from ..core.pydantic_utilities import IS_PYDANTIC_V2, update_forward_refs
from ..core.unchecked_base_model import UncheckedBaseModel
+from .array_json_schema_property_output_constant_value_item import ArrayJsonSchemaPropertyOutputConstantValueItem
class ArrayJsonSchemaPropertyOutput(UncheckedBaseModel):
type: typing.Optional[typing.Literal["array"]] = None
description: typing.Optional[str] = None
- items: "ArrayJsonSchemaPropertyOutputItems"
+ items: typing.Optional["ArrayJsonSchemaPropertyOutputItems"] = pydantic.Field(default=None)
+ """
+ Schema for array elements.
+ """
+
+ dynamic_variable: typing.Optional[str] = pydantic.Field(default=None)
+ """
+ When set, the entire array is populated from this dynamic variable at runtime. Mutually exclusive with description (LLM-provided array) and constant_value.
+ """
+
+ constant_value: typing.Optional[typing.List[ArrayJsonSchemaPropertyOutputConstantValueItem]] = pydantic.Field(
+ default=None
+ )
+ """
+ When set, the entire array uses this constant value at runtime. Mutually exclusive with description (LLM-provided array) and dynamic_variable.
+ """
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/array_json_schema_property_output_constant_value_item.py b/src/elevenlabs/types/array_json_schema_property_output_constant_value_item.py
new file mode 100644
index 00000000..a63c9431
--- /dev/null
+++ b/src/elevenlabs/types/array_json_schema_property_output_constant_value_item.py
@@ -0,0 +1,5 @@
+# This file was auto-generated by Fern from our API Definition.
+
+import typing
+
+ArrayJsonSchemaPropertyOutputConstantValueItem = typing.Union[str, int, float, bool]
diff --git a/src/elevenlabs/types/ast_node_input.py b/src/elevenlabs/types/ast_node_input.py
index c56ae9a1..f5cd920e 100644
--- a/src/elevenlabs/types/ast_node_input.py
+++ b/src/elevenlabs/types/ast_node_input.py
@@ -218,6 +218,19 @@ class Config:
extra = pydantic.Extra.allow
+class AstNodeInput_NullLiteral(UncheckedBaseModel):
+ type: typing.Literal["null_literal"] = "null_literal"
+
+ 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 AstNodeInput_NumberLiteral(UncheckedBaseModel):
type: typing.Literal["number_literal"] = "number_literal"
value: float
@@ -291,6 +304,7 @@ class Config:
AstNodeInput_LteOperator,
AstNodeInput_MulOperator,
AstNodeInput_NeqOperator,
+ AstNodeInput_NullLiteral,
AstNodeInput_NumberLiteral,
AstNodeInput_OrOperator,
AstNodeInput_StringLiteral,
diff --git a/src/elevenlabs/types/ast_node_output.py b/src/elevenlabs/types/ast_node_output.py
index 37c19b02..5802fe90 100644
--- a/src/elevenlabs/types/ast_node_output.py
+++ b/src/elevenlabs/types/ast_node_output.py
@@ -220,6 +220,19 @@ class Config:
extra = pydantic.Extra.allow
+class AstNodeOutput_NullLiteral(UncheckedBaseModel):
+ type: typing.Literal["null_literal"] = "null_literal"
+
+ 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 AstNodeOutput_NumberLiteral(UncheckedBaseModel):
type: typing.Literal["number_literal"] = "number_literal"
value: float
@@ -293,6 +306,7 @@ class Config:
AstNodeOutput_LteOperator,
AstNodeOutput_MulOperator,
AstNodeOutput_NeqOperator,
+ AstNodeOutput_NullLiteral,
AstNodeOutput_NumberLiteral,
AstNodeOutput_OrOperator,
AstNodeOutput_StringLiteral,
diff --git a/src/elevenlabs/types/ast_null_node_input.py b/src/elevenlabs/types/ast_null_node_input.py
new file mode 100644
index 00000000..85bbf435
--- /dev/null
+++ b/src/elevenlabs/types/ast_null_node_input.py
@@ -0,0 +1,18 @@
+# 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 AstNullNodeInput(UncheckedBaseModel):
+ 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/ast_null_node_output.py b/src/elevenlabs/types/ast_null_node_output.py
new file mode 100644
index 00000000..2cb6a8bc
--- /dev/null
+++ b/src/elevenlabs/types/ast_null_node_output.py
@@ -0,0 +1,18 @@
+# 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 AstNullNodeOutput(UncheckedBaseModel):
+ 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/async_conversation_metadata.py b/src/elevenlabs/types/async_conversation_metadata.py
index 9b2d3347..0b2125fd 100644
--- a/src/elevenlabs/types/async_conversation_metadata.py
+++ b/src/elevenlabs/types/async_conversation_metadata.py
@@ -18,6 +18,7 @@ class AsyncConversationMetadata(UncheckedBaseModel):
delivery_error: typing.Optional[str] = None
external_system: str
external_id: str
+ external_link: typing.Optional[str] = None
retry_count: typing.Optional[int] = None
last_retry_timestamp: typing.Optional[int] = None
last_processed_external_message_id: typing.Optional[str] = None
diff --git a/src/elevenlabs/types/audio_analysis_result.py b/src/elevenlabs/types/audio_analysis_result.py
index 62ab91f1..06f19332 100644
--- a/src/elevenlabs/types/audio_analysis_result.py
+++ b/src/elevenlabs/types/audio_analysis_result.py
@@ -5,7 +5,6 @@
import pydantic
from ..core.pydantic_utilities import IS_PYDANTIC_V2
from ..core.unchecked_base_model import UncheckedBaseModel
-from .asset_transcription import AssetTranscription
from .audio_key_moment import AudioKeyMoment
from .audio_segment import AudioSegment
@@ -17,7 +16,6 @@ class AudioAnalysisResult(UncheckedBaseModel):
overall_pacing: typing.Optional[str] = None
segments: typing.Optional[typing.List[AudioSegment]] = None
key_moments: typing.Optional[typing.List[AudioKeyMoment]] = None
- transcription: typing.Optional[AssetTranscription] = None
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/avatar_context_response_model.py b/src/elevenlabs/types/avatar_context_response_model.py
deleted file mode 100644
index 479ead33..00000000
--- a/src/elevenlabs/types/avatar_context_response_model.py
+++ /dev/null
@@ -1,38 +0,0 @@
-# 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 AvatarContextResponseModel(UncheckedBaseModel):
- avatar_id: typing.Optional[str] = pydantic.Field(default=None)
- """
- The ID of the avatar.
- """
-
- avatar_style_id: typing.Optional[str] = pydantic.Field(default=None)
- """
- The ID of the avatar style.
- """
-
- avatar_name: typing.Optional[str] = pydantic.Field(default=None)
- """
- The name of the avatar.
- """
-
- avatar_style_name: typing.Optional[str] = pydantic.Field(default=None)
- """
- The name of the avatar style.
- """
-
- 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/client_tool_config_input.py b/src/elevenlabs/types/client_tool_config_input.py
index ec14caeb..e37700d6 100644
--- a/src/elevenlabs/types/client_tool_config_input.py
+++ b/src/elevenlabs/types/client_tool_config_input.py
@@ -8,7 +8,7 @@
from ..core.pydantic_utilities import IS_PYDANTIC_V2, update_forward_refs
from ..core.unchecked_base_model import UncheckedBaseModel
from .dynamic_variable_assignment import DynamicVariableAssignment
-from .dynamic_variables_config import DynamicVariablesConfig
+from .dynamic_variables_config_input import DynamicVariablesConfigInput
from .tool_call_sound_behavior import ToolCallSoundBehavior
from .tool_call_sound_type import ToolCallSoundType
from .tool_error_handling_mode import ToolErrorHandlingMode
@@ -71,7 +71,7 @@ class ClientToolConfigInput(UncheckedBaseModel):
If true, calling this tool should block the conversation until the client responds with some response which is passed to the llm. If false then we will continue the conversation without waiting for the client to respond, this is useful to show content to a user but not block the conversation
"""
- dynamic_variables: typing.Optional[DynamicVariablesConfig] = pydantic.Field(default=None)
+ dynamic_variables: typing.Optional[DynamicVariablesConfigInput] = pydantic.Field(default=None)
"""
Configuration for dynamic variables
"""
diff --git a/src/elevenlabs/types/client_tool_config_output.py b/src/elevenlabs/types/client_tool_config_output.py
index 45e01e01..1ece7497 100644
--- a/src/elevenlabs/types/client_tool_config_output.py
+++ b/src/elevenlabs/types/client_tool_config_output.py
@@ -8,7 +8,7 @@
from ..core.pydantic_utilities import IS_PYDANTIC_V2, update_forward_refs
from ..core.unchecked_base_model import UncheckedBaseModel
from .dynamic_variable_assignment import DynamicVariableAssignment
-from .dynamic_variables_config import DynamicVariablesConfig
+from .dynamic_variables_config_output import DynamicVariablesConfigOutput
from .tool_call_sound_behavior import ToolCallSoundBehavior
from .tool_call_sound_type import ToolCallSoundType
from .tool_error_handling_mode import ToolErrorHandlingMode
@@ -71,7 +71,7 @@ class ClientToolConfigOutput(UncheckedBaseModel):
If true, calling this tool should block the conversation until the client responds with some response which is passed to the llm. If false then we will continue the conversation without waiting for the client to respond, this is useful to show content to a user but not block the conversation
"""
- dynamic_variables: typing.Optional[DynamicVariablesConfig] = pydantic.Field(default=None)
+ dynamic_variables: typing.Optional[DynamicVariablesConfigOutput] = pydantic.Field(default=None)
"""
Configuration for dynamic variables
"""
diff --git a/src/elevenlabs/types/column_filter.py b/src/elevenlabs/types/column_filter.py
new file mode 100644
index 00000000..20a6ef45
--- /dev/null
+++ b/src/elevenlabs/types/column_filter.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 .column_filter_operation import ColumnFilterOperation
+from .column_filter_values_item import ColumnFilterValuesItem
+
+
+class ColumnFilter(UncheckedBaseModel):
+ column: str
+ operation: ColumnFilterOperation
+ values: typing.List[typing.Optional[ColumnFilterValuesItem]]
+
+ 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/column_filter_operation.py b/src/elevenlabs/types/column_filter_operation.py
new file mode 100644
index 00000000..1326a973
--- /dev/null
+++ b/src/elevenlabs/types/column_filter_operation.py
@@ -0,0 +1,5 @@
+# This file was auto-generated by Fern from our API Definition.
+
+import typing
+
+ColumnFilterOperation = typing.Union[typing.Literal["in", "not_in", "le", "ge", "lt", "gt", "eq", "neq"], typing.Any]
diff --git a/src/elevenlabs/types/column_filter_values_item.py b/src/elevenlabs/types/column_filter_values_item.py
new file mode 100644
index 00000000..9290fcad
--- /dev/null
+++ b/src/elevenlabs/types/column_filter_values_item.py
@@ -0,0 +1,6 @@
+# This file was auto-generated by Fern from our API Definition.
+
+import datetime as dt
+import typing
+
+ColumnFilterValuesItem = typing.Union[str, int, float, dt.datetime, bool]
diff --git a/src/elevenlabs/types/column_unit.py b/src/elevenlabs/types/column_unit.py
new file mode 100644
index 00000000..12f5d636
--- /dev/null
+++ b/src/elevenlabs/types/column_unit.py
@@ -0,0 +1,7 @@
+# This file was auto-generated by Fern from our API Definition.
+
+import typing
+
+ColumnUnit = typing.Union[
+ typing.Literal["ms", "s", "min", "duration", "credits", "usd", "eur", "inr", "ratio", "rating"], typing.Any
+]
diff --git a/src/elevenlabs/types/conversation_initiation_client_data_config_input.py b/src/elevenlabs/types/conversation_initiation_client_data_config_input.py
index cc870472..726273b7 100644
--- a/src/elevenlabs/types/conversation_initiation_client_data_config_input.py
+++ b/src/elevenlabs/types/conversation_initiation_client_data_config_input.py
@@ -26,6 +26,11 @@ class ConversationInitiationClientDataConfigInput(UncheckedBaseModel):
Whether to enable conversation initiation client data from webhooks
"""
+ enable_starting_workflow_node_id_from_client: typing.Optional[bool] = pydantic.Field(default=None)
+ """
+ Whether clients may pass starting_workflow_node_id in initiation client data; if false, sending it fails conversation start.
+ """
+
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/conversation_initiation_client_data_config_output.py b/src/elevenlabs/types/conversation_initiation_client_data_config_output.py
index 3fd1cdbb..ff9968b4 100644
--- a/src/elevenlabs/types/conversation_initiation_client_data_config_output.py
+++ b/src/elevenlabs/types/conversation_initiation_client_data_config_output.py
@@ -26,6 +26,11 @@ class ConversationInitiationClientDataConfigOutput(UncheckedBaseModel):
Whether to enable conversation initiation client data from webhooks
"""
+ enable_starting_workflow_node_id_from_client: typing.Optional[bool] = pydantic.Field(default=None)
+ """
+ Whether clients may pass starting_workflow_node_id in initiation client data; if false, sending it fails conversation start.
+ """
+
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/conversation_initiation_client_data_internal.py b/src/elevenlabs/types/conversation_initiation_client_data_internal.py
index 948b6901..711320cb 100644
--- a/src/elevenlabs/types/conversation_initiation_client_data_internal.py
+++ b/src/elevenlabs/types/conversation_initiation_client_data_internal.py
@@ -32,6 +32,11 @@ class ConversationInitiationClientDataInternal(UncheckedBaseModel):
Environment to use for resolving environment variables
"""
+ starting_workflow_node_id: typing.Optional[str] = pydantic.Field(default=None)
+ """
+ If set, start the workflow at this node id instead of the default entry
+ """
+
dynamic_variables: typing.Optional[
typing.Dict[str, typing.Optional[ConversationInitiationClientDataInternalDynamicVariablesValue]]
] = None
diff --git a/src/elevenlabs/types/conversation_initiation_client_data_internal_dynamic_variables_value.py b/src/elevenlabs/types/conversation_initiation_client_data_internal_dynamic_variables_value.py
index 1b088e76..954aaf47 100644
--- a/src/elevenlabs/types/conversation_initiation_client_data_internal_dynamic_variables_value.py
+++ b/src/elevenlabs/types/conversation_initiation_client_data_internal_dynamic_variables_value.py
@@ -2,4 +2,8 @@
import typing
-ConversationInitiationClientDataInternalDynamicVariablesValue = typing.Union[str, float, int, bool]
+from .dynamic_variable_container_value_type_output import DynamicVariableContainerValueTypeOutput
+
+ConversationInitiationClientDataInternalDynamicVariablesValue = typing.Union[
+ str, float, int, bool, DynamicVariableContainerValueTypeOutput
+]
diff --git a/src/elevenlabs/types/conversation_initiation_client_data_request_input.py b/src/elevenlabs/types/conversation_initiation_client_data_request_input.py
index d87ec569..d13ecbfb 100644
--- a/src/elevenlabs/types/conversation_initiation_client_data_request_input.py
+++ b/src/elevenlabs/types/conversation_initiation_client_data_request_input.py
@@ -31,6 +31,11 @@ class ConversationInitiationClientDataRequestInput(UncheckedBaseModel):
Environment to use for resolving environment variables
"""
+ starting_workflow_node_id: typing.Optional[str] = pydantic.Field(default=None)
+ """
+ If set, start the workflow at this node id instead of the default entry
+ """
+
dynamic_variables: typing.Optional[
typing.Dict[str, typing.Optional[ConversationInitiationClientDataRequestInputDynamicVariablesValue]]
] = None
diff --git a/src/elevenlabs/types/conversation_initiation_client_data_request_input_dynamic_variables_value.py b/src/elevenlabs/types/conversation_initiation_client_data_request_input_dynamic_variables_value.py
index 38210587..5271e69b 100644
--- a/src/elevenlabs/types/conversation_initiation_client_data_request_input_dynamic_variables_value.py
+++ b/src/elevenlabs/types/conversation_initiation_client_data_request_input_dynamic_variables_value.py
@@ -2,4 +2,8 @@
import typing
-ConversationInitiationClientDataRequestInputDynamicVariablesValue = typing.Union[str, float, int, bool]
+from .dynamic_variable_container_value_type_input import DynamicVariableContainerValueTypeInput
+
+ConversationInitiationClientDataRequestInputDynamicVariablesValue = typing.Union[
+ str, float, int, bool, DynamicVariableContainerValueTypeInput
+]
diff --git a/src/elevenlabs/types/conversation_initiation_client_data_request_output.py b/src/elevenlabs/types/conversation_initiation_client_data_request_output.py
index f9fe7388..053404ed 100644
--- a/src/elevenlabs/types/conversation_initiation_client_data_request_output.py
+++ b/src/elevenlabs/types/conversation_initiation_client_data_request_output.py
@@ -31,6 +31,11 @@ class ConversationInitiationClientDataRequestOutput(UncheckedBaseModel):
Environment to use for resolving environment variables
"""
+ starting_workflow_node_id: typing.Optional[str] = pydantic.Field(default=None)
+ """
+ If set, start the workflow at this node id instead of the default entry
+ """
+
dynamic_variables: typing.Optional[
typing.Dict[str, typing.Optional[ConversationInitiationClientDataRequestOutputDynamicVariablesValue]]
] = None
diff --git a/src/elevenlabs/types/conversation_initiation_client_data_request_output_dynamic_variables_value.py b/src/elevenlabs/types/conversation_initiation_client_data_request_output_dynamic_variables_value.py
index 8a7a34f4..ded20ba7 100644
--- a/src/elevenlabs/types/conversation_initiation_client_data_request_output_dynamic_variables_value.py
+++ b/src/elevenlabs/types/conversation_initiation_client_data_request_output_dynamic_variables_value.py
@@ -2,4 +2,8 @@
import typing
-ConversationInitiationClientDataRequestOutputDynamicVariablesValue = typing.Union[str, float, int, bool]
+from .dynamic_variable_container_value_type_output import DynamicVariableContainerValueTypeOutput
+
+ConversationInitiationClientDataRequestOutputDynamicVariablesValue = typing.Union[
+ str, float, int, bool, DynamicVariableContainerValueTypeOutput
+]
diff --git a/src/elevenlabs/types/conversation_simulation_specification_dynamic_variables_value.py b/src/elevenlabs/types/conversation_simulation_specification_dynamic_variables_value.py
index 5db8c7aa..7268c0cc 100644
--- a/src/elevenlabs/types/conversation_simulation_specification_dynamic_variables_value.py
+++ b/src/elevenlabs/types/conversation_simulation_specification_dynamic_variables_value.py
@@ -2,4 +2,8 @@
import typing
-ConversationSimulationSpecificationDynamicVariablesValue = typing.Union[str, float, int, bool]
+from .dynamic_variable_container_value_type_input import DynamicVariableContainerValueTypeInput
+
+ConversationSimulationSpecificationDynamicVariablesValue = typing.Union[
+ str, float, int, bool, DynamicVariableContainerValueTypeInput
+]
diff --git a/src/elevenlabs/types/asset_transcription_word.py b/src/elevenlabs/types/create_location_params.py
similarity index 78%
rename from src/elevenlabs/types/asset_transcription_word.py
rename to src/elevenlabs/types/create_location_params.py
index 5ded4290..5bc404a8 100644
--- a/src/elevenlabs/types/asset_transcription_word.py
+++ b/src/elevenlabs/types/create_location_params.py
@@ -7,11 +7,8 @@
from ..core.unchecked_base_model import UncheckedBaseModel
-class AssetTranscriptionWord(UncheckedBaseModel):
- speaker_id: typing.Optional[str] = None
- text: str
- start_ms: int
- end_ms: int
+class CreateLocationParams(UncheckedBaseModel):
+ smb_tool_type: typing.Optional[typing.Literal["create_location"]] = None
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/create_response_unit_test_request_dynamic_variables_value.py b/src/elevenlabs/types/create_response_unit_test_request_dynamic_variables_value.py
index 5f7d1694..767de785 100644
--- a/src/elevenlabs/types/create_response_unit_test_request_dynamic_variables_value.py
+++ b/src/elevenlabs/types/create_response_unit_test_request_dynamic_variables_value.py
@@ -2,4 +2,8 @@
import typing
-CreateResponseUnitTestRequestDynamicVariablesValue = typing.Union[str, float, int, bool]
+from .dynamic_variable_container_value_type_input import DynamicVariableContainerValueTypeInput
+
+CreateResponseUnitTestRequestDynamicVariablesValue = typing.Union[
+ str, float, int, bool, DynamicVariableContainerValueTypeInput
+]
diff --git a/src/elevenlabs/types/create_simulation_test_request_dynamic_variables_value.py b/src/elevenlabs/types/create_simulation_test_request_dynamic_variables_value.py
index a7feb027..151a8e47 100644
--- a/src/elevenlabs/types/create_simulation_test_request_dynamic_variables_value.py
+++ b/src/elevenlabs/types/create_simulation_test_request_dynamic_variables_value.py
@@ -2,4 +2,8 @@
import typing
-CreateSimulationTestRequestDynamicVariablesValue = typing.Union[str, float, int, bool]
+from .dynamic_variable_container_value_type_input import DynamicVariableContainerValueTypeInput
+
+CreateSimulationTestRequestDynamicVariablesValue = typing.Union[
+ str, float, int, bool, DynamicVariableContainerValueTypeInput
+]
diff --git a/src/elevenlabs/types/create_tool_call_unit_test_request_dynamic_variables_value.py b/src/elevenlabs/types/create_tool_call_unit_test_request_dynamic_variables_value.py
index dd682324..63a08cd9 100644
--- a/src/elevenlabs/types/create_tool_call_unit_test_request_dynamic_variables_value.py
+++ b/src/elevenlabs/types/create_tool_call_unit_test_request_dynamic_variables_value.py
@@ -2,4 +2,8 @@
import typing
-CreateToolCallUnitTestRequestDynamicVariablesValue = typing.Union[str, float, int, bool]
+from .dynamic_variable_container_value_type_input import DynamicVariableContainerValueTypeInput
+
+CreateToolCallUnitTestRequestDynamicVariablesValue = typing.Union[
+ str, float, int, bool, DynamicVariableContainerValueTypeInput
+]
diff --git a/src/elevenlabs/types/asset_transcription.py b/src/elevenlabs/types/delete_location_params.py
similarity index 72%
rename from src/elevenlabs/types/asset_transcription.py
rename to src/elevenlabs/types/delete_location_params.py
index 43fe21a8..a936f32e 100644
--- a/src/elevenlabs/types/asset_transcription.py
+++ b/src/elevenlabs/types/delete_location_params.py
@@ -5,13 +5,10 @@
import pydantic
from ..core.pydantic_utilities import IS_PYDANTIC_V2
from ..core.unchecked_base_model import UncheckedBaseModel
-from .asset_transcription_word import AssetTranscriptionWord
-class AssetTranscription(UncheckedBaseModel):
- language_code: str
- text: str
- words: typing.List[AssetTranscriptionWord]
+class DeleteLocationParams(UncheckedBaseModel):
+ smb_tool_type: typing.Optional[typing.Literal["delete_location"]] = None
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/dubbing_model.py b/src/elevenlabs/types/dubbing_model.py
index ec892676..326648ac 100644
--- a/src/elevenlabs/types/dubbing_model.py
+++ b/src/elevenlabs/types/dubbing_model.py
@@ -2,4 +2,6 @@
import typing
-DubbingModel = typing.Union[typing.Literal["dubbing_v2", "dubbing_v3", "dubbing_e2e_v1"], typing.Any]
+DubbingModel = typing.Union[
+ typing.Literal["dubbing_v1_tts_v3", "dubbing_v2", "dubbing_v3", "dubbing_e2e_v1"], typing.Any
+]
diff --git a/src/elevenlabs/types/dynamic_variable_assignment.py b/src/elevenlabs/types/dynamic_variable_assignment.py
index 5a199cf6..6417a5f6 100644
--- a/src/elevenlabs/types/dynamic_variable_assignment.py
+++ b/src/elevenlabs/types/dynamic_variable_assignment.py
@@ -32,6 +32,11 @@ class DynamicVariableAssignment(UncheckedBaseModel):
If true, this assignment's value will be removed from the tool response before sending to the LLM and transcript, but still processed for variable assignment.
"""
+ preserve_native_type: typing.Optional[bool] = pydantic.Field(default=None)
+ """
+ If true, non-scalar values (lists, objects) extracted from the tool response are stored as their native type instead of being stringified to JSON. Enable this to use extracted arrays directly as list dynamic variables.
+ """
+
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/dynamic_variable_container_value_type_input.py b/src/elevenlabs/types/dynamic_variable_container_value_type_input.py
new file mode 100644
index 00000000..7ff5b813
--- /dev/null
+++ b/src/elevenlabs/types/dynamic_variable_container_value_type_input.py
@@ -0,0 +1,7 @@
+# This file was auto-generated by Fern from our API Definition.
+
+import typing
+
+from .dynamic_variable_nested_value_type_input import DynamicVariableNestedValueTypeInput
+
+DynamicVariableContainerValueTypeInput = typing.List[typing.Optional[DynamicVariableNestedValueTypeInput]]
diff --git a/src/elevenlabs/types/dynamic_variable_container_value_type_output.py b/src/elevenlabs/types/dynamic_variable_container_value_type_output.py
new file mode 100644
index 00000000..0a941c96
--- /dev/null
+++ b/src/elevenlabs/types/dynamic_variable_container_value_type_output.py
@@ -0,0 +1,7 @@
+# This file was auto-generated by Fern from our API Definition.
+
+import typing
+
+from .dynamic_variable_nested_value_type_output import DynamicVariableNestedValueTypeOutput
+
+DynamicVariableContainerValueTypeOutput = typing.List[typing.Optional[DynamicVariableNestedValueTypeOutput]]
diff --git a/src/elevenlabs/types/dynamic_variable_nested_value_type_input.py b/src/elevenlabs/types/dynamic_variable_nested_value_type_input.py
new file mode 100644
index 00000000..ca5e6429
--- /dev/null
+++ b/src/elevenlabs/types/dynamic_variable_nested_value_type_input.py
@@ -0,0 +1,9 @@
+# This file was auto-generated by Fern from our API Definition.
+
+from __future__ import annotations
+
+import typing
+
+DynamicVariableNestedValueTypeInput = typing.Union[
+ str, int, float, bool, typing.List[typing.Optional["DynamicVariableNestedValueTypeInput"]]
+]
diff --git a/src/elevenlabs/types/dynamic_variable_nested_value_type_output.py b/src/elevenlabs/types/dynamic_variable_nested_value_type_output.py
new file mode 100644
index 00000000..97dd8ba1
--- /dev/null
+++ b/src/elevenlabs/types/dynamic_variable_nested_value_type_output.py
@@ -0,0 +1,9 @@
+# This file was auto-generated by Fern from our API Definition.
+
+from __future__ import annotations
+
+import typing
+
+DynamicVariableNestedValueTypeOutput = typing.Union[
+ str, int, float, bool, typing.List[typing.Optional["DynamicVariableNestedValueTypeOutput"]]
+]
diff --git a/src/elevenlabs/types/dynamic_variables_config_dynamic_variable_placeholders_value.py b/src/elevenlabs/types/dynamic_variables_config_dynamic_variable_placeholders_value.py
deleted file mode 100644
index dc937ca5..00000000
--- a/src/elevenlabs/types/dynamic_variables_config_dynamic_variable_placeholders_value.py
+++ /dev/null
@@ -1,5 +0,0 @@
-# This file was auto-generated by Fern from our API Definition.
-
-import typing
-
-DynamicVariablesConfigDynamicVariablePlaceholdersValue = typing.Union[str, float, int, bool]
diff --git a/src/elevenlabs/types/dynamic_variables_config.py b/src/elevenlabs/types/dynamic_variables_config_input.py
similarity index 70%
rename from src/elevenlabs/types/dynamic_variables_config.py
rename to src/elevenlabs/types/dynamic_variables_config_input.py
index aa185a0d..91b71b94 100644
--- a/src/elevenlabs/types/dynamic_variables_config.py
+++ b/src/elevenlabs/types/dynamic_variables_config_input.py
@@ -5,14 +5,14 @@
import pydantic
from ..core.pydantic_utilities import IS_PYDANTIC_V2
from ..core.unchecked_base_model import UncheckedBaseModel
-from .dynamic_variables_config_dynamic_variable_placeholders_value import (
- DynamicVariablesConfigDynamicVariablePlaceholdersValue,
+from .dynamic_variables_config_input_dynamic_variable_placeholders_value import (
+ DynamicVariablesConfigInputDynamicVariablePlaceholdersValue,
)
-class DynamicVariablesConfig(UncheckedBaseModel):
+class DynamicVariablesConfigInput(UncheckedBaseModel):
dynamic_variable_placeholders: typing.Optional[
- typing.Dict[str, DynamicVariablesConfigDynamicVariablePlaceholdersValue]
+ typing.Dict[str, DynamicVariablesConfigInputDynamicVariablePlaceholdersValue]
] = pydantic.Field(default=None)
"""
A dictionary of dynamic variable placeholders and their values
diff --git a/src/elevenlabs/types/dynamic_variables_config_input_dynamic_variable_placeholders_value.py b/src/elevenlabs/types/dynamic_variables_config_input_dynamic_variable_placeholders_value.py
new file mode 100644
index 00000000..4b0a25f2
--- /dev/null
+++ b/src/elevenlabs/types/dynamic_variables_config_input_dynamic_variable_placeholders_value.py
@@ -0,0 +1,9 @@
+# This file was auto-generated by Fern from our API Definition.
+
+import typing
+
+from .dynamic_variable_container_value_type_input import DynamicVariableContainerValueTypeInput
+
+DynamicVariablesConfigInputDynamicVariablePlaceholdersValue = typing.Union[
+ str, float, int, bool, DynamicVariableContainerValueTypeInput
+]
diff --git a/src/elevenlabs/types/dynamic_variables_config_output.py b/src/elevenlabs/types/dynamic_variables_config_output.py
new file mode 100644
index 00000000..3fe2bff6
--- /dev/null
+++ b/src/elevenlabs/types/dynamic_variables_config_output.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
+from .dynamic_variables_config_output_dynamic_variable_placeholders_value import (
+ DynamicVariablesConfigOutputDynamicVariablePlaceholdersValue,
+)
+
+
+class DynamicVariablesConfigOutput(UncheckedBaseModel):
+ dynamic_variable_placeholders: typing.Optional[
+ typing.Dict[str, DynamicVariablesConfigOutputDynamicVariablePlaceholdersValue]
+ ] = pydantic.Field(default=None)
+ """
+ A dictionary of dynamic variable placeholders and their values
+ """
+
+ 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/dynamic_variables_config_output_dynamic_variable_placeholders_value.py b/src/elevenlabs/types/dynamic_variables_config_output_dynamic_variable_placeholders_value.py
new file mode 100644
index 00000000..4d41c431
--- /dev/null
+++ b/src/elevenlabs/types/dynamic_variables_config_output_dynamic_variable_placeholders_value.py
@@ -0,0 +1,9 @@
+# This file was auto-generated by Fern from our API Definition.
+
+import typing
+
+from .dynamic_variable_container_value_type_output import DynamicVariableContainerValueTypeOutput
+
+DynamicVariablesConfigOutputDynamicVariablePlaceholdersValue = typing.Union[
+ str, float, int, bool, DynamicVariableContainerValueTypeOutput
+]
diff --git a/src/elevenlabs/types/dynamic_variables_config_workflow_override_dynamic_variable_placeholders_value.py b/src/elevenlabs/types/dynamic_variables_config_workflow_override_dynamic_variable_placeholders_value.py
deleted file mode 100644
index 93cef35a..00000000
--- a/src/elevenlabs/types/dynamic_variables_config_workflow_override_dynamic_variable_placeholders_value.py
+++ /dev/null
@@ -1,5 +0,0 @@
-# This file was auto-generated by Fern from our API Definition.
-
-import typing
-
-DynamicVariablesConfigWorkflowOverrideDynamicVariablePlaceholdersValue = typing.Union[str, float, int, bool]
diff --git a/src/elevenlabs/types/dynamic_variables_config_workflow_override.py b/src/elevenlabs/types/dynamic_variables_config_workflow_override_input.py
similarity index 70%
rename from src/elevenlabs/types/dynamic_variables_config_workflow_override.py
rename to src/elevenlabs/types/dynamic_variables_config_workflow_override_input.py
index 47d1eb9c..f1657459 100644
--- a/src/elevenlabs/types/dynamic_variables_config_workflow_override.py
+++ b/src/elevenlabs/types/dynamic_variables_config_workflow_override_input.py
@@ -5,14 +5,14 @@
import pydantic
from ..core.pydantic_utilities import IS_PYDANTIC_V2
from ..core.unchecked_base_model import UncheckedBaseModel
-from .dynamic_variables_config_workflow_override_dynamic_variable_placeholders_value import (
- DynamicVariablesConfigWorkflowOverrideDynamicVariablePlaceholdersValue,
+from .dynamic_variables_config_workflow_override_input_dynamic_variable_placeholders_value import (
+ DynamicVariablesConfigWorkflowOverrideInputDynamicVariablePlaceholdersValue,
)
-class DynamicVariablesConfigWorkflowOverride(UncheckedBaseModel):
+class DynamicVariablesConfigWorkflowOverrideInput(UncheckedBaseModel):
dynamic_variable_placeholders: typing.Optional[
- typing.Dict[str, typing.Optional[DynamicVariablesConfigWorkflowOverrideDynamicVariablePlaceholdersValue]]
+ typing.Dict[str, typing.Optional[DynamicVariablesConfigWorkflowOverrideInputDynamicVariablePlaceholdersValue]]
] = pydantic.Field(default=None)
"""
A dictionary of dynamic variable placeholders and their values
diff --git a/src/elevenlabs/types/dynamic_variables_config_workflow_override_input_dynamic_variable_placeholders_value.py b/src/elevenlabs/types/dynamic_variables_config_workflow_override_input_dynamic_variable_placeholders_value.py
new file mode 100644
index 00000000..3a48f450
--- /dev/null
+++ b/src/elevenlabs/types/dynamic_variables_config_workflow_override_input_dynamic_variable_placeholders_value.py
@@ -0,0 +1,9 @@
+# This file was auto-generated by Fern from our API Definition.
+
+import typing
+
+from .dynamic_variable_container_value_type_input import DynamicVariableContainerValueTypeInput
+
+DynamicVariablesConfigWorkflowOverrideInputDynamicVariablePlaceholdersValue = typing.Union[
+ str, float, int, bool, DynamicVariableContainerValueTypeInput
+]
diff --git a/src/elevenlabs/types/dynamic_variables_config_workflow_override_output.py b/src/elevenlabs/types/dynamic_variables_config_workflow_override_output.py
new file mode 100644
index 00000000..2aa3f8d1
--- /dev/null
+++ b/src/elevenlabs/types/dynamic_variables_config_workflow_override_output.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
+from .dynamic_variables_config_workflow_override_output_dynamic_variable_placeholders_value import (
+ DynamicVariablesConfigWorkflowOverrideOutputDynamicVariablePlaceholdersValue,
+)
+
+
+class DynamicVariablesConfigWorkflowOverrideOutput(UncheckedBaseModel):
+ dynamic_variable_placeholders: typing.Optional[
+ typing.Dict[str, typing.Optional[DynamicVariablesConfigWorkflowOverrideOutputDynamicVariablePlaceholdersValue]]
+ ] = pydantic.Field(default=None)
+ """
+ A dictionary of dynamic variable placeholders and their values
+ """
+
+ 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/dynamic_variables_config_workflow_override_output_dynamic_variable_placeholders_value.py b/src/elevenlabs/types/dynamic_variables_config_workflow_override_output_dynamic_variable_placeholders_value.py
new file mode 100644
index 00000000..2fc54a78
--- /dev/null
+++ b/src/elevenlabs/types/dynamic_variables_config_workflow_override_output_dynamic_variable_placeholders_value.py
@@ -0,0 +1,9 @@
+# This file was auto-generated by Fern from our API Definition.
+
+import typing
+
+from .dynamic_variable_container_value_type_output import DynamicVariableContainerValueTypeOutput
+
+DynamicVariablesConfigWorkflowOverrideOutputDynamicVariablePlaceholdersValue = typing.Union[
+ str, float, int, bool, DynamicVariableContainerValueTypeOutput
+]
diff --git a/src/elevenlabs/types/extended_subscription_response_model_max_credit_limit_extension.py b/src/elevenlabs/types/extended_subscription_response_model_max_credit_limit_extension.py
new file mode 100644
index 00000000..b9b66944
--- /dev/null
+++ b/src/elevenlabs/types/extended_subscription_response_model_max_credit_limit_extension.py
@@ -0,0 +1,5 @@
+# This file was auto-generated by Fern from our API Definition.
+
+import typing
+
+ExtendedSubscriptionResponseModelMaxCreditLimitExtension = typing.Union[int, typing.Literal["unlimited"]]
diff --git a/src/elevenlabs/types/get_response_unit_test_response_model_dynamic_variables_value.py b/src/elevenlabs/types/get_response_unit_test_response_model_dynamic_variables_value.py
index 4535e09b..a75aea27 100644
--- a/src/elevenlabs/types/get_response_unit_test_response_model_dynamic_variables_value.py
+++ b/src/elevenlabs/types/get_response_unit_test_response_model_dynamic_variables_value.py
@@ -2,4 +2,8 @@
import typing
-GetResponseUnitTestResponseModelDynamicVariablesValue = typing.Union[str, float, int, bool]
+from .dynamic_variable_container_value_type_output import DynamicVariableContainerValueTypeOutput
+
+GetResponseUnitTestResponseModelDynamicVariablesValue = typing.Union[
+ str, float, int, bool, DynamicVariableContainerValueTypeOutput
+]
diff --git a/src/elevenlabs/types/get_schedule_params.py b/src/elevenlabs/types/get_schedule_params.py
index 264ae9db..6958b38f 100644
--- a/src/elevenlabs/types/get_schedule_params.py
+++ b/src/elevenlabs/types/get_schedule_params.py
@@ -9,6 +9,7 @@
class GetScheduleParams(UncheckedBaseModel):
smb_tool_type: typing.Optional[typing.Literal["get_schedule"]] = None
+ include_location_filter: typing.Optional[bool] = None
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/get_simulation_test_response_model_dynamic_variables_value.py b/src/elevenlabs/types/get_simulation_test_response_model_dynamic_variables_value.py
index 69729451..ea6640e2 100644
--- a/src/elevenlabs/types/get_simulation_test_response_model_dynamic_variables_value.py
+++ b/src/elevenlabs/types/get_simulation_test_response_model_dynamic_variables_value.py
@@ -2,4 +2,8 @@
import typing
-GetSimulationTestResponseModelDynamicVariablesValue = typing.Union[str, float, int, bool]
+from .dynamic_variable_container_value_type_output import DynamicVariableContainerValueTypeOutput
+
+GetSimulationTestResponseModelDynamicVariablesValue = typing.Union[
+ str, float, int, bool, DynamicVariableContainerValueTypeOutput
+]
diff --git a/src/elevenlabs/types/get_tool_call_unit_test_response_model_dynamic_variables_value.py b/src/elevenlabs/types/get_tool_call_unit_test_response_model_dynamic_variables_value.py
index f8302e31..6df32d0c 100644
--- a/src/elevenlabs/types/get_tool_call_unit_test_response_model_dynamic_variables_value.py
+++ b/src/elevenlabs/types/get_tool_call_unit_test_response_model_dynamic_variables_value.py
@@ -2,4 +2,8 @@
import typing
-GetToolCallUnitTestResponseModelDynamicVariablesValue = typing.Union[str, float, int, bool]
+from .dynamic_variable_container_value_type_output import DynamicVariableContainerValueTypeOutput
+
+GetToolCallUnitTestResponseModelDynamicVariablesValue = typing.Union[
+ str, float, int, bool, DynamicVariableContainerValueTypeOutput
+]
diff --git a/src/elevenlabs/types/get_tool_executions_page_response_model.py b/src/elevenlabs/types/get_tool_executions_page_response_model.py
new file mode 100644
index 00000000..f1f27531
--- /dev/null
+++ b/src/elevenlabs/types/get_tool_executions_page_response_model.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
+from .tool_execution_response_model import ToolExecutionResponseModel
+
+
+class GetToolExecutionsPageResponseModel(UncheckedBaseModel):
+ executions: typing.List[ToolExecutionResponseModel]
+ next_cursor: typing.Optional[str] = None
+ has_more: bool
+
+ 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/avatar_context_request_model.py b/src/elevenlabs/types/list_locations_params.py
similarity index 67%
rename from src/elevenlabs/types/avatar_context_request_model.py
rename to src/elevenlabs/types/list_locations_params.py
index 5540500b..63a51821 100644
--- a/src/elevenlabs/types/avatar_context_request_model.py
+++ b/src/elevenlabs/types/list_locations_params.py
@@ -7,11 +7,8 @@
from ..core.unchecked_base_model import UncheckedBaseModel
-class AvatarContextRequestModel(UncheckedBaseModel):
- avatar_id: typing.Optional[str] = None
- avatar_style_id: typing.Optional[str] = None
- avatar_name: typing.Optional[str] = None
- avatar_style_name: typing.Optional[str] = None
+class ListLocationsParams(UncheckedBaseModel):
+ smb_tool_type: typing.Optional[typing.Literal["list_locations"]] = None
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/llm.py b/src/elevenlabs/types/llm.py
index d40adf65..71e37db0 100644
--- a/src/elevenlabs/types/llm.py
+++ b/src/elevenlabs/types/llm.py
@@ -15,6 +15,7 @@
"gpt-5.1",
"gpt-5.2",
"gpt-5.2-chat-latest",
+ "gpt-5.4",
"gpt-5-mini",
"gpt-5-nano",
"gpt-3.5-turbo",
@@ -40,8 +41,6 @@
"custom-llm",
"qwen3-4b",
"qwen3-30b-a3b",
- "qwen35-35b-a3b",
- "qwen35-397b-a17b",
"gpt-oss-20b",
"gpt-oss-120b",
"glm-45-air-fp8",
@@ -66,6 +65,7 @@
"gpt-5-2025-08-07",
"gpt-5.1-2025-11-13",
"gpt-5.2-2025-12-11",
+ "gpt-5.4-2026-03-05",
"gpt-5-mini-2025-08-07",
"gpt-5-nano-2025-08-07",
"gpt-4.1-2025-04-14",
diff --git a/src/elevenlabs/types/llm_reasoning_effort.py b/src/elevenlabs/types/llm_reasoning_effort.py
index 8e7878ed..cbea8fe4 100644
--- a/src/elevenlabs/types/llm_reasoning_effort.py
+++ b/src/elevenlabs/types/llm_reasoning_effort.py
@@ -2,4 +2,4 @@
import typing
-LlmReasoningEffort = typing.Union[typing.Literal["none", "minimal", "low", "medium", "high"], typing.Any]
+LlmReasoningEffort = typing.Union[typing.Literal["none", "minimal", "low", "medium", "high", "xhigh"], typing.Any]
diff --git a/src/elevenlabs/types/mcp_server_config_input.py b/src/elevenlabs/types/mcp_server_config_input.py
index b4a5a4c0..186da0a9 100644
--- a/src/elevenlabs/types/mcp_server_config_input.py
+++ b/src/elevenlabs/types/mcp_server_config_input.py
@@ -12,7 +12,7 @@
from .mcp_server_config_input_url import McpServerConfigInputUrl
from .mcp_server_transport import McpServerTransport
from .mcp_tool_approval_hash import McpToolApprovalHash
-from .mcp_tool_config_override import McpToolConfigOverride
+from .mcp_tool_config_override_input import McpToolConfigOverrideInput
from .tool_call_sound_behavior import ToolCallSoundBehavior
from .tool_call_sound_type import ToolCallSoundType
from .tool_execution_mode import ToolExecutionMode
@@ -79,7 +79,7 @@ class McpServerConfigInput(UncheckedBaseModel):
Determines when and how all tools from this MCP server execute: 'immediate' executes the tool right away when requested by the LLM, 'post_tool_speech' waits for the agent to finish speaking before executing, 'async' runs the tool in the background without blocking - best for long-running operations.
"""
- tool_config_overrides: typing.Optional[typing.List[McpToolConfigOverride]] = pydantic.Field(default=None)
+ tool_config_overrides: typing.Optional[typing.List[McpToolConfigOverrideInput]] = pydantic.Field(default=None)
"""
List of per-tool configuration overrides that override the server-level defaults for specific tools
"""
diff --git a/src/elevenlabs/types/mcp_server_config_output.py b/src/elevenlabs/types/mcp_server_config_output.py
index 9bb0dcc5..95e60aac 100644
--- a/src/elevenlabs/types/mcp_server_config_output.py
+++ b/src/elevenlabs/types/mcp_server_config_output.py
@@ -12,7 +12,7 @@
from .mcp_server_config_output_url import McpServerConfigOutputUrl
from .mcp_server_transport import McpServerTransport
from .mcp_tool_approval_hash import McpToolApprovalHash
-from .mcp_tool_config_override import McpToolConfigOverride
+from .mcp_tool_config_override_output import McpToolConfigOverrideOutput
from .tool_call_sound_behavior import ToolCallSoundBehavior
from .tool_call_sound_type import ToolCallSoundType
from .tool_execution_mode import ToolExecutionMode
@@ -79,7 +79,7 @@ class McpServerConfigOutput(UncheckedBaseModel):
Determines when and how all tools from this MCP server execute: 'immediate' executes the tool right away when requested by the LLM, 'post_tool_speech' waits for the agent to finish speaking before executing, 'async' runs the tool in the background without blocking - best for long-running operations.
"""
- tool_config_overrides: typing.Optional[typing.List[McpToolConfigOverride]] = pydantic.Field(default=None)
+ tool_config_overrides: typing.Optional[typing.List[McpToolConfigOverrideOutput]] = pydantic.Field(default=None)
"""
List of per-tool configuration overrides that override the server-level defaults for specific tools
"""
diff --git a/src/elevenlabs/types/mcp_tool_config_override.py b/src/elevenlabs/types/mcp_tool_config_override_input.py
similarity index 75%
rename from src/elevenlabs/types/mcp_tool_config_override.py
rename to src/elevenlabs/types/mcp_tool_config_override_input.py
index 30243b0d..5acb7e06 100644
--- a/src/elevenlabs/types/mcp_tool_config_override.py
+++ b/src/elevenlabs/types/mcp_tool_config_override_input.py
@@ -6,13 +6,14 @@
from ..core.pydantic_utilities import IS_PYDANTIC_V2
from ..core.unchecked_base_model import UncheckedBaseModel
from .dynamic_variable_assignment import DynamicVariableAssignment
-from .mcp_tool_config_override_input_overrides_value import McpToolConfigOverrideInputOverridesValue
+from .mcp_tool_config_override_input_input_overrides_value import McpToolConfigOverrideInputInputOverridesValue
from .tool_call_sound_behavior import ToolCallSoundBehavior
from .tool_call_sound_type import ToolCallSoundType
from .tool_execution_mode import ToolExecutionMode
+from .tool_response_mock_config_input import ToolResponseMockConfigInput
-class McpToolConfigOverride(UncheckedBaseModel):
+class McpToolConfigOverrideInput(UncheckedBaseModel):
tool_name: str = pydantic.Field()
"""
The name of the MCP tool
@@ -48,13 +49,18 @@ class McpToolConfigOverride(UncheckedBaseModel):
Dynamic variable assignments for this MCP tool
"""
- input_overrides: typing.Optional[typing.Dict[str, typing.Optional[McpToolConfigOverrideInputOverridesValue]]] = (
- pydantic.Field(default=None)
- )
+ input_overrides: typing.Optional[
+ typing.Dict[str, typing.Optional[McpToolConfigOverrideInputInputOverridesValue]]
+ ] = pydantic.Field(default=None)
"""
Mapping of json path to input override configuration
"""
+ response_mocks: typing.Optional[typing.List[ToolResponseMockConfigInput]] = pydantic.Field(default=None)
+ """
+ Mock responses with optional parameter conditions. Evaluated top-to-bottom; first match wins.
+ """
+
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/mcp_tool_config_override_input_overrides_value.py b/src/elevenlabs/types/mcp_tool_config_override_input_input_overrides_value.py
similarity index 76%
rename from src/elevenlabs/types/mcp_tool_config_override_input_overrides_value.py
rename to src/elevenlabs/types/mcp_tool_config_override_input_input_overrides_value.py
index 3dc4cfb1..53549b6e 100644
--- a/src/elevenlabs/types/mcp_tool_config_override_input_overrides_value.py
+++ b/src/elevenlabs/types/mcp_tool_config_override_input_input_overrides_value.py
@@ -11,7 +11,7 @@
from .constant_schema_override_constant_value import ConstantSchemaOverrideConstantValue
-class McpToolConfigOverrideInputOverridesValue_Constant(UncheckedBaseModel):
+class McpToolConfigOverrideInputInputOverridesValue_Constant(UncheckedBaseModel):
source: typing.Literal["constant"] = "constant"
constant_value: ConstantSchemaOverrideConstantValue
@@ -25,7 +25,7 @@ class Config:
extra = pydantic.Extra.allow
-class McpToolConfigOverrideInputOverridesValue_DynamicVariable(UncheckedBaseModel):
+class McpToolConfigOverrideInputInputOverridesValue_DynamicVariable(UncheckedBaseModel):
source: typing.Literal["dynamic_variable"] = "dynamic_variable"
dynamic_variable: str
@@ -39,7 +39,7 @@ class Config:
extra = pydantic.Extra.allow
-class McpToolConfigOverrideInputOverridesValue_Llm(UncheckedBaseModel):
+class McpToolConfigOverrideInputInputOverridesValue_Llm(UncheckedBaseModel):
source: typing.Literal["llm"] = "llm"
prompt: typing.Optional[str] = None
@@ -53,11 +53,11 @@ class Config:
extra = pydantic.Extra.allow
-McpToolConfigOverrideInputOverridesValue = typing_extensions.Annotated[
+McpToolConfigOverrideInputInputOverridesValue = typing_extensions.Annotated[
typing.Union[
- McpToolConfigOverrideInputOverridesValue_Constant,
- McpToolConfigOverrideInputOverridesValue_DynamicVariable,
- McpToolConfigOverrideInputOverridesValue_Llm,
+ McpToolConfigOverrideInputInputOverridesValue_Constant,
+ McpToolConfigOverrideInputInputOverridesValue_DynamicVariable,
+ McpToolConfigOverrideInputInputOverridesValue_Llm,
],
UnionMetadata(discriminant="source"),
]
diff --git a/src/elevenlabs/types/mcp_tool_config_override_output.py b/src/elevenlabs/types/mcp_tool_config_override_output.py
new file mode 100644
index 00000000..5f384726
--- /dev/null
+++ b/src/elevenlabs/types/mcp_tool_config_override_output.py
@@ -0,0 +1,71 @@
+# 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 .dynamic_variable_assignment import DynamicVariableAssignment
+from .mcp_tool_config_override_output_input_overrides_value import McpToolConfigOverrideOutputInputOverridesValue
+from .tool_call_sound_behavior import ToolCallSoundBehavior
+from .tool_call_sound_type import ToolCallSoundType
+from .tool_execution_mode import ToolExecutionMode
+from .tool_response_mock_config_output import ToolResponseMockConfigOutput
+
+
+class McpToolConfigOverrideOutput(UncheckedBaseModel):
+ tool_name: str = pydantic.Field()
+ """
+ The name of the MCP tool
+ """
+
+ force_pre_tool_speech: typing.Optional[bool] = pydantic.Field(default=None)
+ """
+ If set, overrides the server's force_pre_tool_speech setting for this tool
+ """
+
+ disable_interruptions: typing.Optional[bool] = pydantic.Field(default=None)
+ """
+ If set, overrides the server's disable_interruptions setting for this tool
+ """
+
+ tool_call_sound: typing.Optional[ToolCallSoundType] = pydantic.Field(default=None)
+ """
+ If set, overrides the server's tool_call_sound setting for this tool
+ """
+
+ tool_call_sound_behavior: typing.Optional[ToolCallSoundBehavior] = pydantic.Field(default=None)
+ """
+ If set, overrides the server's tool_call_sound_behavior setting for this tool
+ """
+
+ execution_mode: typing.Optional[ToolExecutionMode] = pydantic.Field(default=None)
+ """
+ If set, overrides the server's execution_mode setting for this tool
+ """
+
+ assignments: typing.Optional[typing.List[DynamicVariableAssignment]] = pydantic.Field(default=None)
+ """
+ Dynamic variable assignments for this MCP tool
+ """
+
+ input_overrides: typing.Optional[
+ typing.Dict[str, typing.Optional[McpToolConfigOverrideOutputInputOverridesValue]]
+ ] = pydantic.Field(default=None)
+ """
+ Mapping of json path to input override configuration
+ """
+
+ response_mocks: typing.Optional[typing.List[ToolResponseMockConfigOutput]] = pydantic.Field(default=None)
+ """
+ Mock responses with optional parameter conditions. Evaluated top-to-bottom; first match wins.
+ """
+
+ 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/mcp_tool_config_override_output_input_overrides_value.py b/src/elevenlabs/types/mcp_tool_config_override_output_input_overrides_value.py
new file mode 100644
index 00000000..24e6bd39
--- /dev/null
+++ b/src/elevenlabs/types/mcp_tool_config_override_output_input_overrides_value.py
@@ -0,0 +1,63 @@
+# 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 .constant_schema_override_constant_value import ConstantSchemaOverrideConstantValue
+
+
+class McpToolConfigOverrideOutputInputOverridesValue_Constant(UncheckedBaseModel):
+ source: typing.Literal["constant"] = "constant"
+ constant_value: ConstantSchemaOverrideConstantValue
+
+ 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 McpToolConfigOverrideOutputInputOverridesValue_DynamicVariable(UncheckedBaseModel):
+ source: typing.Literal["dynamic_variable"] = "dynamic_variable"
+ dynamic_variable: str
+
+ 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 McpToolConfigOverrideOutputInputOverridesValue_Llm(UncheckedBaseModel):
+ source: typing.Literal["llm"] = "llm"
+ prompt: 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
+
+
+McpToolConfigOverrideOutputInputOverridesValue = typing_extensions.Annotated[
+ typing.Union[
+ McpToolConfigOverrideOutputInputOverridesValue_Constant,
+ McpToolConfigOverrideOutputInputOverridesValue_DynamicVariable,
+ McpToolConfigOverrideOutputInputOverridesValue_Llm,
+ ],
+ UnionMetadata(discriminant="source"),
+]
diff --git a/src/elevenlabs/types/phone_number_transfer.py b/src/elevenlabs/types/phone_number_transfer.py
index 0ba6e94e..97675531 100644
--- a/src/elevenlabs/types/phone_number_transfer.py
+++ b/src/elevenlabs/types/phone_number_transfer.py
@@ -19,15 +19,16 @@ class PhoneNumberTransfer(UncheckedBaseModel):
Custom SIP headers to include when transferring the call. Each header can be either a static value or a dynamic variable reference.
"""
- transfer_destination: typing.Optional[PhoneNumberTransferTransferDestination] = None
- phone_number: typing.Optional[str] = None
- condition: str
+ transfer_destination: PhoneNumberTransferTransferDestination
transfer_type: typing.Optional[TransferTypeEnum] = None
post_dial_digits: typing.Optional[PhoneNumberTransferPostDialDigits] = pydantic.Field(default=None)
"""
DTMF digits to send after call connects (e.g., 'ww1234' for extension). Can be either a static value or a dynamic variable reference. Use 'w' for 0.5s pause. Only supported for Twilio transfers.
"""
+ phone_number: typing.Optional[str] = None
+ condition: str
+
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/preview_audio_db_model.py b/src/elevenlabs/types/preview_audio_db_model.py
index 713d8c03..d01a7c03 100644
--- a/src/elevenlabs/types/preview_audio_db_model.py
+++ b/src/elevenlabs/types/preview_audio_db_model.py
@@ -8,8 +8,8 @@
class PreviewAudioDbModel(UncheckedBaseModel):
- voice_id: str
- text: str
+ voice_id: typing.Optional[str] = None
+ text: typing.Optional[str] = None
audio_url: str
hls_manifest_url: typing.Optional[str] = None
dash_manifest_url: typing.Optional[str] = None
diff --git a/src/elevenlabs/types/procedure_compiler_mode.py b/src/elevenlabs/types/procedure_compiler_mode.py
index 3985b14c..7de409af 100644
--- a/src/elevenlabs/types/procedure_compiler_mode.py
+++ b/src/elevenlabs/types/procedure_compiler_mode.py
@@ -2,4 +2,4 @@
import typing
-ProcedureCompilerMode = typing.Union[typing.Literal["llm", "deterministic"], typing.Any]
+ProcedureCompilerMode = typing.Union[typing.Literal["llm", "deterministic", "append"], typing.Any]
diff --git a/src/elevenlabs/types/project_extended_response.py b/src/elevenlabs/types/project_extended_response.py
index 59d88ee6..2d0c61b0 100644
--- a/src/elevenlabs/types/project_extended_response.py
+++ b/src/elevenlabs/types/project_extended_response.py
@@ -14,13 +14,13 @@
from .project_extended_response_model_aspect_ratio import ProjectExtendedResponseModelAspectRatio
from .project_extended_response_model_assets_item import ProjectExtendedResponseModelAssetsItem
from .project_extended_response_model_fiction import ProjectExtendedResponseModelFiction
-from .project_extended_response_model_quality_preset import ProjectExtendedResponseModelQualityPreset
from .project_extended_response_model_source_type import ProjectExtendedResponseModelSourceType
from .project_extended_response_model_target_audience import ProjectExtendedResponseModelTargetAudience
from .project_state import ProjectState
from .project_voice_response_model import ProjectVoiceResponseModel
from .pronunciation_dictionary_locator_response_model import PronunciationDictionaryLocatorResponseModel
from .pronunciation_dictionary_version_response_model import PronunciationDictionaryVersionResponseModel
+from .quality_preset_type import QualityPresetType
from .studio_agent_settings_model import StudioAgentSettingsModel
from .voice import Voice
@@ -203,7 +203,7 @@ class ProjectExtendedResponse(UncheckedBaseModel):
Agent-related settings for the project
"""
- quality_preset: ProjectExtendedResponseModelQualityPreset = pydantic.Field()
+ quality_preset: QualityPresetType = pydantic.Field()
"""
The quality preset level of the project.
"""
diff --git a/src/elevenlabs/types/project_extended_response_model_quality_preset.py b/src/elevenlabs/types/project_extended_response_model_quality_preset.py
deleted file mode 100644
index 8b10a5f9..00000000
--- a/src/elevenlabs/types/project_extended_response_model_quality_preset.py
+++ /dev/null
@@ -1,7 +0,0 @@
-# This file was auto-generated by Fern from our API Definition.
-
-import typing
-
-ProjectExtendedResponseModelQualityPreset = typing.Union[
- typing.Literal["standard", "high", "highest", "ultra", "ultra_lossless"], typing.Any
-]
diff --git a/src/elevenlabs/types/prompt_agent_api_model_input_tools_item.py b/src/elevenlabs/types/prompt_agent_api_model_input_tools_item.py
index 1f0f645d..aa9fc643 100644
--- a/src/elevenlabs/types/prompt_agent_api_model_input_tools_item.py
+++ b/src/elevenlabs/types/prompt_agent_api_model_input_tools_item.py
@@ -10,7 +10,7 @@
from ..core.unchecked_base_model import UncheckedBaseModel, UnionMetadata
from .api_integration_webhook_overrides import ApiIntegrationWebhookOverrides
from .dynamic_variable_assignment import DynamicVariableAssignment
-from .dynamic_variables_config import DynamicVariablesConfig
+from .dynamic_variables_config_input import DynamicVariablesConfigInput
from .system_tool_config_input_params import SystemToolConfigInputParams
from .tool_call_sound_behavior import ToolCallSoundBehavior
from .tool_call_sound_type import ToolCallSoundType
@@ -34,7 +34,7 @@ class PromptAgentApiModelInputToolsItem_ApiIntegrationWebhook(UncheckedBaseModel
tool_call_sound: typing.Optional[ToolCallSoundType] = None
tool_call_sound_behavior: typing.Optional[ToolCallSoundBehavior] = None
tool_error_handling_mode: typing.Optional[ToolErrorHandlingMode] = None
- dynamic_variables: typing.Optional[DynamicVariablesConfig] = None
+ dynamic_variables: typing.Optional[DynamicVariablesConfigInput] = None
execution_mode: typing.Optional[ToolExecutionMode] = None
tool_version: typing.Optional[str] = None
api_integration_id: str
@@ -68,7 +68,7 @@ class PromptAgentApiModelInputToolsItem_Client(UncheckedBaseModel):
tool_error_handling_mode: typing.Optional[ToolErrorHandlingMode] = None
parameters: typing.Optional["ObjectJsonSchemaPropertyInput"] = None
expects_response: typing.Optional[bool] = None
- dynamic_variables: typing.Optional[DynamicVariablesConfig] = None
+ dynamic_variables: typing.Optional[DynamicVariablesConfigInput] = None
execution_mode: typing.Optional[ToolExecutionMode] = None
if IS_PYDANTIC_V2:
@@ -149,7 +149,7 @@ class PromptAgentApiModelInputToolsItem_Webhook(UncheckedBaseModel):
tool_call_sound: typing.Optional[ToolCallSoundType] = None
tool_call_sound_behavior: typing.Optional[ToolCallSoundBehavior] = None
tool_error_handling_mode: typing.Optional[ToolErrorHandlingMode] = None
- dynamic_variables: typing.Optional[DynamicVariablesConfig] = None
+ dynamic_variables: typing.Optional[DynamicVariablesConfigInput] = None
execution_mode: typing.Optional[ToolExecutionMode] = None
api_schema: WebhookToolApiSchemaConfigInput
diff --git a/src/elevenlabs/types/prompt_agent_api_model_output_tools_item.py b/src/elevenlabs/types/prompt_agent_api_model_output_tools_item.py
index 442d4d32..b184c32a 100644
--- a/src/elevenlabs/types/prompt_agent_api_model_output_tools_item.py
+++ b/src/elevenlabs/types/prompt_agent_api_model_output_tools_item.py
@@ -10,7 +10,7 @@
from ..core.unchecked_base_model import UncheckedBaseModel, UnionMetadata
from .api_integration_webhook_overrides import ApiIntegrationWebhookOverrides
from .dynamic_variable_assignment import DynamicVariableAssignment
-from .dynamic_variables_config import DynamicVariablesConfig
+from .dynamic_variables_config_output import DynamicVariablesConfigOutput
from .system_tool_config_output_params import SystemToolConfigOutputParams
from .tool_call_sound_behavior import ToolCallSoundBehavior
from .tool_call_sound_type import ToolCallSoundType
@@ -34,7 +34,7 @@ class PromptAgentApiModelOutputToolsItem_ApiIntegrationWebhook(UncheckedBaseMode
tool_call_sound: typing.Optional[ToolCallSoundType] = None
tool_call_sound_behavior: ToolCallSoundBehavior
tool_error_handling_mode: ToolErrorHandlingMode
- dynamic_variables: DynamicVariablesConfig
+ dynamic_variables: DynamicVariablesConfigOutput
execution_mode: ToolExecutionMode
tool_version: str
api_integration_id: str
@@ -68,7 +68,7 @@ class PromptAgentApiModelOutputToolsItem_Client(UncheckedBaseModel):
tool_error_handling_mode: typing.Optional[ToolErrorHandlingMode] = None
parameters: typing.Optional["ObjectJsonSchemaPropertyOutput"] = None
expects_response: typing.Optional[bool] = None
- dynamic_variables: typing.Optional[DynamicVariablesConfig] = None
+ dynamic_variables: typing.Optional[DynamicVariablesConfigOutput] = None
execution_mode: typing.Optional[ToolExecutionMode] = None
if IS_PYDANTIC_V2:
@@ -149,7 +149,7 @@ class PromptAgentApiModelOutputToolsItem_Webhook(UncheckedBaseModel):
tool_call_sound: typing.Optional[ToolCallSoundType] = None
tool_call_sound_behavior: typing.Optional[ToolCallSoundBehavior] = None
tool_error_handling_mode: typing.Optional[ToolErrorHandlingMode] = None
- dynamic_variables: typing.Optional[DynamicVariablesConfig] = None
+ dynamic_variables: typing.Optional[DynamicVariablesConfigOutput] = None
execution_mode: typing.Optional[ToolExecutionMode] = None
api_schema: WebhookToolApiSchemaConfigOutput
diff --git a/src/elevenlabs/types/prompt_agent_api_model_workflow_override_input_tools_item.py b/src/elevenlabs/types/prompt_agent_api_model_workflow_override_input_tools_item.py
index b7d2779a..36b27edb 100644
--- a/src/elevenlabs/types/prompt_agent_api_model_workflow_override_input_tools_item.py
+++ b/src/elevenlabs/types/prompt_agent_api_model_workflow_override_input_tools_item.py
@@ -10,7 +10,7 @@
from ..core.unchecked_base_model import UncheckedBaseModel, UnionMetadata
from .api_integration_webhook_overrides import ApiIntegrationWebhookOverrides
from .dynamic_variable_assignment import DynamicVariableAssignment
-from .dynamic_variables_config import DynamicVariablesConfig
+from .dynamic_variables_config_input import DynamicVariablesConfigInput
from .system_tool_config_input_params import SystemToolConfigInputParams
from .tool_call_sound_behavior import ToolCallSoundBehavior
from .tool_call_sound_type import ToolCallSoundType
@@ -34,7 +34,7 @@ class PromptAgentApiModelWorkflowOverrideInputToolsItem_ApiIntegrationWebhook(Un
tool_call_sound: typing.Optional[ToolCallSoundType] = None
tool_call_sound_behavior: typing.Optional[ToolCallSoundBehavior] = None
tool_error_handling_mode: typing.Optional[ToolErrorHandlingMode] = None
- dynamic_variables: typing.Optional[DynamicVariablesConfig] = None
+ dynamic_variables: typing.Optional[DynamicVariablesConfigInput] = None
execution_mode: typing.Optional[ToolExecutionMode] = None
tool_version: typing.Optional[str] = None
api_integration_id: str
@@ -68,7 +68,7 @@ class PromptAgentApiModelWorkflowOverrideInputToolsItem_Client(UncheckedBaseMode
tool_error_handling_mode: typing.Optional[ToolErrorHandlingMode] = None
parameters: typing.Optional["ObjectJsonSchemaPropertyInput"] = None
expects_response: typing.Optional[bool] = None
- dynamic_variables: typing.Optional[DynamicVariablesConfig] = None
+ dynamic_variables: typing.Optional[DynamicVariablesConfigInput] = None
execution_mode: typing.Optional[ToolExecutionMode] = None
if IS_PYDANTIC_V2:
@@ -149,7 +149,7 @@ class PromptAgentApiModelWorkflowOverrideInputToolsItem_Webhook(UncheckedBaseMod
tool_call_sound: typing.Optional[ToolCallSoundType] = None
tool_call_sound_behavior: typing.Optional[ToolCallSoundBehavior] = None
tool_error_handling_mode: typing.Optional[ToolErrorHandlingMode] = None
- dynamic_variables: typing.Optional[DynamicVariablesConfig] = None
+ dynamic_variables: typing.Optional[DynamicVariablesConfigInput] = None
execution_mode: typing.Optional[ToolExecutionMode] = None
api_schema: WebhookToolApiSchemaConfigInput
diff --git a/src/elevenlabs/types/prompt_agent_api_model_workflow_override_output_tools_item.py b/src/elevenlabs/types/prompt_agent_api_model_workflow_override_output_tools_item.py
index 197ac74e..58992059 100644
--- a/src/elevenlabs/types/prompt_agent_api_model_workflow_override_output_tools_item.py
+++ b/src/elevenlabs/types/prompt_agent_api_model_workflow_override_output_tools_item.py
@@ -10,7 +10,7 @@
from ..core.unchecked_base_model import UncheckedBaseModel, UnionMetadata
from .api_integration_webhook_overrides import ApiIntegrationWebhookOverrides
from .dynamic_variable_assignment import DynamicVariableAssignment
-from .dynamic_variables_config import DynamicVariablesConfig
+from .dynamic_variables_config_output import DynamicVariablesConfigOutput
from .system_tool_config_output_params import SystemToolConfigOutputParams
from .tool_call_sound_behavior import ToolCallSoundBehavior
from .tool_call_sound_type import ToolCallSoundType
@@ -34,7 +34,7 @@ class PromptAgentApiModelWorkflowOverrideOutputToolsItem_ApiIntegrationWebhook(U
tool_call_sound: typing.Optional[ToolCallSoundType] = None
tool_call_sound_behavior: ToolCallSoundBehavior
tool_error_handling_mode: ToolErrorHandlingMode
- dynamic_variables: DynamicVariablesConfig
+ dynamic_variables: DynamicVariablesConfigOutput
execution_mode: ToolExecutionMode
tool_version: str
api_integration_id: str
@@ -68,7 +68,7 @@ class PromptAgentApiModelWorkflowOverrideOutputToolsItem_Client(UncheckedBaseMod
tool_error_handling_mode: typing.Optional[ToolErrorHandlingMode] = None
parameters: typing.Optional["ObjectJsonSchemaPropertyOutput"] = None
expects_response: typing.Optional[bool] = None
- dynamic_variables: typing.Optional[DynamicVariablesConfig] = None
+ dynamic_variables: typing.Optional[DynamicVariablesConfigOutput] = None
execution_mode: typing.Optional[ToolExecutionMode] = None
if IS_PYDANTIC_V2:
@@ -149,7 +149,7 @@ class PromptAgentApiModelWorkflowOverrideOutputToolsItem_Webhook(UncheckedBaseMo
tool_call_sound: typing.Optional[ToolCallSoundType] = None
tool_call_sound_behavior: typing.Optional[ToolCallSoundBehavior] = None
tool_error_handling_mode: typing.Optional[ToolErrorHandlingMode] = None
- dynamic_variables: typing.Optional[DynamicVariablesConfig] = None
+ dynamic_variables: typing.Optional[DynamicVariablesConfigOutput] = None
execution_mode: typing.Optional[ToolExecutionMode] = None
api_schema: WebhookToolApiSchemaConfigOutput
diff --git a/src/elevenlabs/types/prompt_evaluation_criteria.py b/src/elevenlabs/types/prompt_evaluation_criteria.py
index d9d4d053..a03318f3 100644
--- a/src/elevenlabs/types/prompt_evaluation_criteria.py
+++ b/src/elevenlabs/types/prompt_evaluation_criteria.py
@@ -6,6 +6,7 @@
from ..core.pydantic_utilities import IS_PYDANTIC_V2
from ..core.unchecked_base_model import UncheckedBaseModel
from .analysis_scope import AnalysisScope
+from .llm import Llm
class PromptEvaluationCriteria(UncheckedBaseModel):
@@ -39,6 +40,11 @@ class PromptEvaluationCriteria(UncheckedBaseModel):
The scope of transcript context used when evaluating this criterion. 'conversation' uses the full transcript; 'agent' uses only the portion where the defining agent was active.
"""
+ llm: typing.Optional[Llm] = pydantic.Field(default=None)
+ """
+ LLM model to use for this evaluation criteria. If not set, uses agent's analysis_llm default.
+ """
+
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/quality_preset_type.py b/src/elevenlabs/types/quality_preset_type.py
new file mode 100644
index 00000000..4aae31c3
--- /dev/null
+++ b/src/elevenlabs/types/quality_preset_type.py
@@ -0,0 +1,5 @@
+# This file was auto-generated by Fern from our API Definition.
+
+import typing
+
+QualityPresetType = typing.Union[typing.Literal["standard", "high", "ultra", "ultra_lossless"], typing.Any]
diff --git a/src/elevenlabs/types/response_unit_test_model_dynamic_variables_value.py b/src/elevenlabs/types/response_unit_test_model_dynamic_variables_value.py
index 67e82c7c..ee42d5ab 100644
--- a/src/elevenlabs/types/response_unit_test_model_dynamic_variables_value.py
+++ b/src/elevenlabs/types/response_unit_test_model_dynamic_variables_value.py
@@ -2,4 +2,8 @@
import typing
-ResponseUnitTestModelDynamicVariablesValue = typing.Union[str, float, int, bool]
+from .dynamic_variable_container_value_type_output import DynamicVariableContainerValueTypeOutput
+
+ResponseUnitTestModelDynamicVariablesValue = typing.Union[
+ str, float, int, bool, DynamicVariableContainerValueTypeOutput
+]
diff --git a/src/elevenlabs/types/simulation_test_model_dynamic_variables_value.py b/src/elevenlabs/types/simulation_test_model_dynamic_variables_value.py
index c56aaa4c..009738a4 100644
--- a/src/elevenlabs/types/simulation_test_model_dynamic_variables_value.py
+++ b/src/elevenlabs/types/simulation_test_model_dynamic_variables_value.py
@@ -2,4 +2,6 @@
import typing
-SimulationTestModelDynamicVariablesValue = typing.Union[str, float, int, bool]
+from .dynamic_variable_container_value_type_output import DynamicVariableContainerValueTypeOutput
+
+SimulationTestModelDynamicVariablesValue = typing.Union[str, float, int, bool, DynamicVariableContainerValueTypeOutput]
diff --git a/src/elevenlabs/types/speech_history_item_response.py b/src/elevenlabs/types/speech_history_item_response.py
index 7b31b103..93cdaa81 100644
--- a/src/elevenlabs/types/speech_history_item_response.py
+++ b/src/elevenlabs/types/speech_history_item_response.py
@@ -5,7 +5,6 @@
import pydantic
from ..core.pydantic_utilities import IS_PYDANTIC_V2
from ..core.unchecked_base_model import UncheckedBaseModel
-from .avatar_context_response_model import AvatarContextResponseModel
from .dialogue_input_response_model import DialogueInputResponseModel
from .feedback_item import FeedbackItem
from .history_alignments_response_model import HistoryAlignmentsResponseModel
@@ -105,11 +104,6 @@ class SpeechHistoryItemResponse(UncheckedBaseModel):
The output format the audio was originally generated in.
"""
- avatar_context: typing.Optional[AvatarContextResponseModel] = pydantic.Field(default=None)
- """
- Avatar context if this generation was created from the Avatars video editor.
- """
-
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/subscription.py b/src/elevenlabs/types/subscription.py
index 2351fbbf..9530dcc6 100644
--- a/src/elevenlabs/types/subscription.py
+++ b/src/elevenlabs/types/subscription.py
@@ -8,6 +8,9 @@
from .billing_period import BillingPeriod
from .character_refresh_period import CharacterRefreshPeriod
from .extended_subscription_response_model_currency import ExtendedSubscriptionResponseModelCurrency
+from .extended_subscription_response_model_max_credit_limit_extension import (
+ ExtendedSubscriptionResponseModelMaxCreditLimitExtension,
+)
from .extended_subscription_response_model_pending_change import ExtendedSubscriptionResponseModelPendingChange
from .invoice_response import InvoiceResponse
from .subscription_status_type import SubscriptionStatusType
@@ -31,7 +34,12 @@ class Subscription(UncheckedBaseModel):
max_character_limit_extension: typing.Optional[int] = pydantic.Field(default=None)
"""
- Maximum number of characters that the character limit can be exceeded by. Managed by the workspace admin.
+ Deprecated: use `max_credit_limit_extension`. Maximum number of characters that the character limit can be exceeded by. Managed by the workspace admin.
+ """
+
+ max_credit_limit_extension: ExtendedSubscriptionResponseModelMaxCreditLimitExtension = pydantic.Field()
+ """
+ Maximum number of credits that the credit limit can be exceeded by. Managed by the workspace admin. `"unlimited"` means no cap, `0` means usage-based billing is disabled.
"""
can_extend_character_limit: bool = pydantic.Field()
@@ -41,7 +49,7 @@ class Subscription(UncheckedBaseModel):
allowed_to_extend_character_limit: bool = pydantic.Field()
"""
- Whether the user is allowed to extend their character limit.
+ Deprecated: use `max_credit_limit_extension != 0`. Whether the user is allowed to extend their character limit.
"""
next_character_count_reset_unix: typing.Optional[int] = pydantic.Field(default=None)
diff --git a/src/elevenlabs/types/subscription_response.py b/src/elevenlabs/types/subscription_response.py
index aed5e75b..66dcfaad 100644
--- a/src/elevenlabs/types/subscription_response.py
+++ b/src/elevenlabs/types/subscription_response.py
@@ -8,6 +8,7 @@
from .billing_period import BillingPeriod
from .character_refresh_period import CharacterRefreshPeriod
from .subscription_response_model_currency import SubscriptionResponseModelCurrency
+from .subscription_response_model_max_credit_limit_extension import SubscriptionResponseModelMaxCreditLimitExtension
from .subscription_status_type import SubscriptionStatusType
@@ -29,7 +30,12 @@ class SubscriptionResponse(UncheckedBaseModel):
max_character_limit_extension: typing.Optional[int] = pydantic.Field(default=None)
"""
- Maximum number of characters that the character limit can be exceeded by. Managed by the workspace admin.
+ Deprecated: use `max_credit_limit_extension`. Maximum number of characters that the character limit can be exceeded by. Managed by the workspace admin.
+ """
+
+ max_credit_limit_extension: SubscriptionResponseModelMaxCreditLimitExtension = pydantic.Field()
+ """
+ Maximum number of credits that the credit limit can be exceeded by. Managed by the workspace admin. `"unlimited"` means no cap, `0` means usage-based billing is disabled.
"""
can_extend_character_limit: bool = pydantic.Field()
@@ -39,7 +45,7 @@ class SubscriptionResponse(UncheckedBaseModel):
allowed_to_extend_character_limit: bool = pydantic.Field()
"""
- Whether the user is allowed to extend their character limit.
+ Deprecated: use `max_credit_limit_extension != 0`. Whether the user is allowed to extend their character limit.
"""
next_character_count_reset_unix: typing.Optional[int] = pydantic.Field(default=None)
diff --git a/src/elevenlabs/types/subscription_response_model_max_credit_limit_extension.py b/src/elevenlabs/types/subscription_response_model_max_credit_limit_extension.py
new file mode 100644
index 00000000..cecf335a
--- /dev/null
+++ b/src/elevenlabs/types/subscription_response_model_max_credit_limit_extension.py
@@ -0,0 +1,5 @@
+# This file was auto-generated by Fern from our API Definition.
+
+import typing
+
+SubscriptionResponseModelMaxCreditLimitExtension = typing.Union[int, typing.Literal["unlimited"]]
diff --git a/src/elevenlabs/types/test_sharing_mode.py b/src/elevenlabs/types/test_sharing_mode.py
new file mode 100644
index 00000000..674c0914
--- /dev/null
+++ b/src/elevenlabs/types/test_sharing_mode.py
@@ -0,0 +1,5 @@
+# This file was auto-generated by Fern from our API Definition.
+
+import typing
+
+TestSharingMode = typing.Union[typing.Literal["all", "shared_with_me"], typing.Any]
diff --git a/src/elevenlabs/types/tool_call_unit_test_model_dynamic_variables_value.py b/src/elevenlabs/types/tool_call_unit_test_model_dynamic_variables_value.py
index 193e8cd5..0cc2ff93 100644
--- a/src/elevenlabs/types/tool_call_unit_test_model_dynamic_variables_value.py
+++ b/src/elevenlabs/types/tool_call_unit_test_model_dynamic_variables_value.py
@@ -2,4 +2,8 @@
import typing
-ToolCallUnitTestModelDynamicVariablesValue = typing.Union[str, float, int, bool]
+from .dynamic_variable_container_value_type_output import DynamicVariableContainerValueTypeOutput
+
+ToolCallUnitTestModelDynamicVariablesValue = typing.Union[
+ str, float, int, bool, DynamicVariableContainerValueTypeOutput
+]
diff --git a/src/elevenlabs/types/tool_execution_response_model.py b/src/elevenlabs/types/tool_execution_response_model.py
new file mode 100644
index 00000000..499703a3
--- /dev/null
+++ b/src/elevenlabs/types/tool_execution_response_model.py
@@ -0,0 +1,82 @@
+# 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 .tool_execution_response_model_tool_call_details import ToolExecutionResponseModelToolCallDetails
+
+
+class ToolExecutionResponseModel(UncheckedBaseModel):
+ tool_id: str = pydantic.Field()
+ """
+ The ID of the tool that was executed
+ """
+
+ tool_request_id: str = pydantic.Field()
+ """
+ The request/call ID associated with this tool execution
+ """
+
+ conversation_id: str = pydantic.Field()
+ """
+ The ID of the conversation where the tool was executed
+ """
+
+ agent_id: str = pydantic.Field()
+ """
+ The ID of the agent that ran the tool
+ """
+
+ branch_id: typing.Optional[str] = pydantic.Field(default=None)
+ """
+ The branch ID if the agent has branches
+ """
+
+ timestamp: float = pydantic.Field()
+ """
+ Unix timestamp when the tool was executed
+ """
+
+ latency_secs: float = pydantic.Field()
+ """
+ How long the tool execution took
+ """
+
+ is_error: typing.Optional[bool] = pydantic.Field(default=None)
+ """
+ Whether the tool execution failed
+ """
+
+ request_payload: typing.Optional[str] = pydantic.Field(default=None)
+ """
+ LLM-extracted parameters sent to the tool (JSON string)
+ """
+
+ response_payload: typing.Optional[str] = pydantic.Field(default=None)
+ """
+ Response returned by the tool
+ """
+
+ error_message: typing.Optional[str] = pydantic.Field(default=None)
+ """
+ Error message if the tool execution failed
+ """
+
+ error_type: typing.Optional[str] = pydantic.Field(default=None)
+ """
+ Error category (internal, customer_config, customer_auth, external_server, external_client, client_timeout, unknown)
+ """
+
+ id: str
+ tool_call_details: typing.Optional[ToolExecutionResponseModelToolCallDetails] = 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
diff --git a/src/elevenlabs/types/tool_execution_response_model_tool_call_details.py b/src/elevenlabs/types/tool_execution_response_model_tool_call_details.py
new file mode 100644
index 00000000..04f2d96f
--- /dev/null
+++ b/src/elevenlabs/types/tool_execution_response_model_tool_call_details.py
@@ -0,0 +1,95 @@
+# 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 .conversation_history_transcript_tool_call_webhook_details import (
+ ConversationHistoryTranscriptToolCallWebhookDetails,
+)
+
+
+class ToolExecutionResponseModelToolCallDetails_ApiIntegrationWebhook(UncheckedBaseModel):
+ type: typing.Literal["api_integration_webhook"] = "api_integration_webhook"
+ integration_id: str
+ credential_id: str
+ integration_connection_id: str
+ webhook_details: ConversationHistoryTranscriptToolCallWebhookDetails
+
+ 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 ToolExecutionResponseModelToolCallDetails_Client(UncheckedBaseModel):
+ type: typing.Literal["client"] = "client"
+ parameters: str
+
+ 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 ToolExecutionResponseModelToolCallDetails_Mcp(UncheckedBaseModel):
+ type: typing.Literal["mcp"] = "mcp"
+ mcp_server_id: str
+ mcp_server_name: str
+ integration_type: str
+ parameters: typing.Optional[typing.Dict[str, str]] = None
+ approval_policy: str
+ requires_approval: typing.Optional[bool] = None
+ mcp_tool_name: typing.Optional[str] = None
+ mcp_tool_description: 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
+
+
+class ToolExecutionResponseModelToolCallDetails_Webhook(UncheckedBaseModel):
+ type: typing.Literal["webhook"] = "webhook"
+ method: str
+ url: str
+ headers: typing.Optional[typing.Dict[str, str]] = None
+ path_params: typing.Optional[typing.Dict[str, str]] = None
+ query_params: typing.Optional[typing.Dict[str, str]] = None
+ body: 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
+
+
+ToolExecutionResponseModelToolCallDetails = typing_extensions.Annotated[
+ typing.Union[
+ ToolExecutionResponseModelToolCallDetails_ApiIntegrationWebhook,
+ ToolExecutionResponseModelToolCallDetails_Client,
+ ToolExecutionResponseModelToolCallDetails_Mcp,
+ ToolExecutionResponseModelToolCallDetails_Webhook,
+ ],
+ UnionMetadata(discriminant="type"),
+]
diff --git a/src/elevenlabs/types/tool_request_model_tool_config.py b/src/elevenlabs/types/tool_request_model_tool_config.py
index 844fc118..51bfd43a 100644
--- a/src/elevenlabs/types/tool_request_model_tool_config.py
+++ b/src/elevenlabs/types/tool_request_model_tool_config.py
@@ -9,7 +9,7 @@
from ..core.pydantic_utilities import IS_PYDANTIC_V2, update_forward_refs
from ..core.unchecked_base_model import UncheckedBaseModel, UnionMetadata
from .dynamic_variable_assignment import DynamicVariableAssignment
-from .dynamic_variables_config import DynamicVariablesConfig
+from .dynamic_variables_config_input import DynamicVariablesConfigInput
from .system_tool_config_input_params import SystemToolConfigInputParams
from .tool_call_sound_behavior import ToolCallSoundBehavior
from .tool_call_sound_type import ToolCallSoundType
@@ -35,7 +35,7 @@ class ToolRequestModelToolConfig_Client(UncheckedBaseModel):
tool_error_handling_mode: typing.Optional[ToolErrorHandlingMode] = None
parameters: typing.Optional["ObjectJsonSchemaPropertyInput"] = None
expects_response: typing.Optional[bool] = None
- dynamic_variables: typing.Optional[DynamicVariablesConfig] = None
+ dynamic_variables: typing.Optional[DynamicVariablesConfigInput] = None
execution_mode: typing.Optional[ToolExecutionMode] = None
if IS_PYDANTIC_V2:
@@ -103,7 +103,7 @@ class ToolRequestModelToolConfig_Webhook(UncheckedBaseModel):
tool_call_sound: typing.Optional[ToolCallSoundType] = None
tool_call_sound_behavior: typing.Optional[ToolCallSoundBehavior] = None
tool_error_handling_mode: typing.Optional[ToolErrorHandlingMode] = None
- dynamic_variables: typing.Optional[DynamicVariablesConfig] = None
+ dynamic_variables: typing.Optional[DynamicVariablesConfigInput] = None
execution_mode: typing.Optional[ToolExecutionMode] = None
api_schema: WebhookToolApiSchemaConfigInput
diff --git a/src/elevenlabs/types/tool_response_model_tool_config.py b/src/elevenlabs/types/tool_response_model_tool_config.py
index 06eee44d..6e9d03b1 100644
--- a/src/elevenlabs/types/tool_response_model_tool_config.py
+++ b/src/elevenlabs/types/tool_response_model_tool_config.py
@@ -9,7 +9,7 @@
from ..core.pydantic_utilities import IS_PYDANTIC_V2, update_forward_refs
from ..core.unchecked_base_model import UncheckedBaseModel, UnionMetadata
from .dynamic_variable_assignment import DynamicVariableAssignment
-from .dynamic_variables_config import DynamicVariablesConfig
+from .dynamic_variables_config_output import DynamicVariablesConfigOutput
from .system_tool_config_output_params import SystemToolConfigOutputParams
from .tool_call_sound_behavior import ToolCallSoundBehavior
from .tool_call_sound_type import ToolCallSoundType
@@ -35,7 +35,7 @@ class ToolResponseModelToolConfig_Client(UncheckedBaseModel):
tool_error_handling_mode: typing.Optional[ToolErrorHandlingMode] = None
parameters: typing.Optional["ObjectJsonSchemaPropertyOutput"] = None
expects_response: typing.Optional[bool] = None
- dynamic_variables: typing.Optional[DynamicVariablesConfig] = None
+ dynamic_variables: typing.Optional[DynamicVariablesConfigOutput] = None
execution_mode: typing.Optional[ToolExecutionMode] = None
if IS_PYDANTIC_V2:
@@ -103,7 +103,7 @@ class ToolResponseModelToolConfig_Webhook(UncheckedBaseModel):
tool_call_sound: typing.Optional[ToolCallSoundType] = None
tool_call_sound_behavior: typing.Optional[ToolCallSoundBehavior] = None
tool_error_handling_mode: typing.Optional[ToolErrorHandlingMode] = None
- dynamic_variables: typing.Optional[DynamicVariablesConfig] = None
+ dynamic_variables: typing.Optional[DynamicVariablesConfigOutput] = None
execution_mode: typing.Optional[ToolExecutionMode] = None
api_schema: WebhookToolApiSchemaConfigOutput
diff --git a/src/elevenlabs/types/update_location_params.py b/src/elevenlabs/types/update_location_params.py
new file mode 100644
index 00000000..0e7dde03
--- /dev/null
+++ b/src/elevenlabs/types/update_location_params.py
@@ -0,0 +1,20 @@
+# 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 UpdateLocationParams(UncheckedBaseModel):
+ smb_tool_type: typing.Optional[typing.Literal["update_location"]] = 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
diff --git a/src/elevenlabs/types/update_response_unit_test_request_dynamic_variables_value.py b/src/elevenlabs/types/update_response_unit_test_request_dynamic_variables_value.py
index f2ee8d4d..23143289 100644
--- a/src/elevenlabs/types/update_response_unit_test_request_dynamic_variables_value.py
+++ b/src/elevenlabs/types/update_response_unit_test_request_dynamic_variables_value.py
@@ -2,4 +2,8 @@
import typing
-UpdateResponseUnitTestRequestDynamicVariablesValue = typing.Union[str, float, int, bool]
+from .dynamic_variable_container_value_type_input import DynamicVariableContainerValueTypeInput
+
+UpdateResponseUnitTestRequestDynamicVariablesValue = typing.Union[
+ str, float, int, bool, DynamicVariableContainerValueTypeInput
+]
diff --git a/src/elevenlabs/types/update_simulation_test_request_dynamic_variables_value.py b/src/elevenlabs/types/update_simulation_test_request_dynamic_variables_value.py
index 6a912d99..65c03b12 100644
--- a/src/elevenlabs/types/update_simulation_test_request_dynamic_variables_value.py
+++ b/src/elevenlabs/types/update_simulation_test_request_dynamic_variables_value.py
@@ -2,4 +2,8 @@
import typing
-UpdateSimulationTestRequestDynamicVariablesValue = typing.Union[str, float, int, bool]
+from .dynamic_variable_container_value_type_input import DynamicVariableContainerValueTypeInput
+
+UpdateSimulationTestRequestDynamicVariablesValue = typing.Union[
+ str, float, int, bool, DynamicVariableContainerValueTypeInput
+]
diff --git a/src/elevenlabs/types/update_tool_call_unit_test_request_dynamic_variables_value.py b/src/elevenlabs/types/update_tool_call_unit_test_request_dynamic_variables_value.py
index ff79d954..c62d1f52 100644
--- a/src/elevenlabs/types/update_tool_call_unit_test_request_dynamic_variables_value.py
+++ b/src/elevenlabs/types/update_tool_call_unit_test_request_dynamic_variables_value.py
@@ -2,4 +2,8 @@
import typing
-UpdateToolCallUnitTestRequestDynamicVariablesValue = typing.Union[str, float, int, bool]
+from .dynamic_variable_container_value_type_input import DynamicVariableContainerValueTypeInput
+
+UpdateToolCallUnitTestRequestDynamicVariablesValue = typing.Union[
+ str, float, int, bool, DynamicVariableContainerValueTypeInput
+]
diff --git a/src/elevenlabs/types/video_analysis_result.py b/src/elevenlabs/types/video_analysis_result.py
index 516930f9..f8aafd5b 100644
--- a/src/elevenlabs/types/video_analysis_result.py
+++ b/src/elevenlabs/types/video_analysis_result.py
@@ -5,7 +5,6 @@
import pydantic
from ..core.pydantic_utilities import IS_PYDANTIC_V2
from ..core.unchecked_base_model import UncheckedBaseModel
-from .asset_transcription import AssetTranscription
from .video_key_moment import VideoKeyMoment
from .video_segment import VideoSegment
from .video_subject import VideoSubject
@@ -19,7 +18,6 @@ class VideoAnalysisResult(UncheckedBaseModel):
subjects: typing.Optional[typing.List[VideoSubject]] = None
segments: typing.Optional[typing.List[VideoSegment]] = None
key_moments: typing.Optional[typing.List[VideoKeyMoment]] = None
- transcription: typing.Optional[AssetTranscription] = None
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/webhook_tool_config_input.py b/src/elevenlabs/types/webhook_tool_config_input.py
index ea47a987..228b4639 100644
--- a/src/elevenlabs/types/webhook_tool_config_input.py
+++ b/src/elevenlabs/types/webhook_tool_config_input.py
@@ -8,7 +8,7 @@
from ..core.pydantic_utilities import IS_PYDANTIC_V2, update_forward_refs
from ..core.unchecked_base_model import UncheckedBaseModel
from .dynamic_variable_assignment import DynamicVariableAssignment
-from .dynamic_variables_config import DynamicVariablesConfig
+from .dynamic_variables_config_input import DynamicVariablesConfigInput
from .tool_call_sound_behavior import ToolCallSoundBehavior
from .tool_call_sound_type import ToolCallSoundType
from .tool_error_handling_mode import ToolErrorHandlingMode
@@ -62,7 +62,7 @@ class WebhookToolConfigInput(UncheckedBaseModel):
Controls how tool errors are processed before being shared with the agent. 'auto' determines handling based on tool type (summarized for native integrations, hide for others), 'summarized' sends an LLM-generated summary, 'passthrough' sends the raw error, 'hide' does not share the error with the agent.
"""
- dynamic_variables: typing.Optional[DynamicVariablesConfig] = pydantic.Field(default=None)
+ dynamic_variables: typing.Optional[DynamicVariablesConfigInput] = pydantic.Field(default=None)
"""
Configuration for dynamic variables
"""
diff --git a/src/elevenlabs/types/webhook_tool_config_output.py b/src/elevenlabs/types/webhook_tool_config_output.py
index 1fa6b72f..28c17c29 100644
--- a/src/elevenlabs/types/webhook_tool_config_output.py
+++ b/src/elevenlabs/types/webhook_tool_config_output.py
@@ -8,7 +8,7 @@
from ..core.pydantic_utilities import IS_PYDANTIC_V2, update_forward_refs
from ..core.unchecked_base_model import UncheckedBaseModel
from .dynamic_variable_assignment import DynamicVariableAssignment
-from .dynamic_variables_config import DynamicVariablesConfig
+from .dynamic_variables_config_output import DynamicVariablesConfigOutput
from .tool_call_sound_behavior import ToolCallSoundBehavior
from .tool_call_sound_type import ToolCallSoundType
from .tool_error_handling_mode import ToolErrorHandlingMode
@@ -62,7 +62,7 @@ class WebhookToolConfigOutput(UncheckedBaseModel):
Controls how tool errors are processed before being shared with the agent. 'auto' determines handling based on tool type (summarized for native integrations, hide for others), 'summarized' sends an LLM-generated summary, 'passthrough' sends the raw error, 'hide' does not share the error with the agent.
"""
- dynamic_variables: typing.Optional[DynamicVariablesConfig] = pydantic.Field(default=None)
+ dynamic_variables: typing.Optional[DynamicVariablesConfigOutput] = pydantic.Field(default=None)
"""
Configuration for dynamic variables
"""
diff --git a/src/elevenlabs/types/workflow_phone_number_node_model_input.py b/src/elevenlabs/types/workflow_phone_number_node_model_input.py
index 3dbec325..44da4fda 100644
--- a/src/elevenlabs/types/workflow_phone_number_node_model_input.py
+++ b/src/elevenlabs/types/workflow_phone_number_node_model_input.py
@@ -24,6 +24,13 @@ class WorkflowPhoneNumberNodeModelInput(UncheckedBaseModel):
Custom SIP headers to include when transferring the call. Each header can be either a static value or a dynamic variable reference.
"""
+ transfer_destination: WorkflowPhoneNumberNodeModelInputTransferDestination
+ transfer_type: typing.Optional[TransferTypeEnum] = None
+ post_dial_digits: typing.Optional[WorkflowPhoneNumberNodeModelInputPostDialDigits] = pydantic.Field(default=None)
+ """
+ DTMF digits to send after call connects (e.g., 'ww1234' for extension). Can be either a static value or a dynamic variable reference. Use 'w' for 0.5s pause. Only supported for Twilio transfers.
+ """
+
position: typing.Optional[PositionInput] = pydantic.Field(default=None)
"""
Position of the node in the workflow.
@@ -34,13 +41,6 @@ class WorkflowPhoneNumberNodeModelInput(UncheckedBaseModel):
The ids of outgoing edges in the order they should be evaluated.
"""
- transfer_destination: WorkflowPhoneNumberNodeModelInputTransferDestination
- transfer_type: typing.Optional[TransferTypeEnum] = None
- post_dial_digits: typing.Optional[WorkflowPhoneNumberNodeModelInputPostDialDigits] = pydantic.Field(default=None)
- """
- DTMF digits to send after call connects (e.g., 'ww1234' for extension). Can be either a static value or a dynamic variable reference. Use 'w' for 0.5s pause.
- """
-
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/workflow_phone_number_node_model_output.py b/src/elevenlabs/types/workflow_phone_number_node_model_output.py
index a6c9713e..a8228734 100644
--- a/src/elevenlabs/types/workflow_phone_number_node_model_output.py
+++ b/src/elevenlabs/types/workflow_phone_number_node_model_output.py
@@ -22,6 +22,13 @@ class WorkflowPhoneNumberNodeModelOutput(UncheckedBaseModel):
Custom SIP headers to include when transferring the call. Each header can be either a static value or a dynamic variable reference.
"""
+ transfer_destination: WorkflowPhoneNumberNodeModelOutputTransferDestination
+ transfer_type: TransferTypeEnum
+ post_dial_digits: typing.Optional[WorkflowPhoneNumberNodeModelOutputPostDialDigits] = pydantic.Field(default=None)
+ """
+ DTMF digits to send after call connects (e.g., 'ww1234' for extension). Can be either a static value or a dynamic variable reference. Use 'w' for 0.5s pause. Only supported for Twilio transfers.
+ """
+
position: PositionOutput = pydantic.Field()
"""
Position of the node in the workflow.
@@ -32,13 +39,6 @@ class WorkflowPhoneNumberNodeModelOutput(UncheckedBaseModel):
The ids of outgoing edges in the order they should be evaluated.
"""
- transfer_destination: WorkflowPhoneNumberNodeModelOutputTransferDestination
- transfer_type: TransferTypeEnum
- post_dial_digits: typing.Optional[WorkflowPhoneNumberNodeModelOutputPostDialDigits] = pydantic.Field(default=None)
- """
- DTMF digits to send after call connects (e.g., 'ww1234' for extension). Can be either a static value or a dynamic variable reference. Use 'w' for 0.5s pause.
- """
-
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_analytics_query_response_model.py b/src/elevenlabs/types/workspace_analytics_query_response_model.py
new file mode 100644
index 00000000..d9694947
--- /dev/null
+++ b/src/elevenlabs/types/workspace_analytics_query_response_model.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
+from .column_unit import ColumnUnit
+from .workspace_analytics_query_response_model_column_types_item import (
+ WorkspaceAnalyticsQueryResponseModelColumnTypesItem,
+)
+from .workspace_analytics_query_response_model_rows_item_item import WorkspaceAnalyticsQueryResponseModelRowsItemItem
+
+
+class WorkspaceAnalyticsQueryResponseModel(UncheckedBaseModel):
+ columns: typing.List[str]
+ column_types: typing.List[WorkspaceAnalyticsQueryResponseModelColumnTypesItem]
+ rows: typing.List[typing.List[typing.Optional[WorkspaceAnalyticsQueryResponseModelRowsItemItem]]]
+ column_units: typing.List[typing.Optional[ColumnUnit]]
+
+ 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/workspace_analytics_query_response_model_column_types_item.py b/src/elevenlabs/types/workspace_analytics_query_response_model_column_types_item.py
new file mode 100644
index 00000000..19b10269
--- /dev/null
+++ b/src/elevenlabs/types/workspace_analytics_query_response_model_column_types_item.py
@@ -0,0 +1,7 @@
+# This file was auto-generated by Fern from our API Definition.
+
+import typing
+
+WorkspaceAnalyticsQueryResponseModelColumnTypesItem = typing.Union[
+ typing.Literal["String", "Float", "DateTime", "Int", "Bool", "JSON", "Map"], typing.Any
+]
diff --git a/src/elevenlabs/types/workspace_analytics_query_response_model_rows_item_item.py b/src/elevenlabs/types/workspace_analytics_query_response_model_rows_item_item.py
new file mode 100644
index 00000000..255cf5a9
--- /dev/null
+++ b/src/elevenlabs/types/workspace_analytics_query_response_model_rows_item_item.py
@@ -0,0 +1,6 @@
+# This file was auto-generated by Fern from our API Definition.
+
+import datetime as dt
+import typing
+
+WorkspaceAnalyticsQueryResponseModelRowsItemItem = typing.Union[str, int, float, bool, dt.datetime]
diff --git a/src/elevenlabs/usage/client.py b/src/elevenlabs/usage/client.py
index 115cbcf7..cec797c9 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:
"""
- 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. 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:
"""
- 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. 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 4234b41c..42443d5f 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]:
"""
- 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. 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]:
"""
- 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. 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/workspace/__init__.py b/src/elevenlabs/workspace/__init__.py
index f1f1c971..12a4335e 100644
--- a/src/elevenlabs/workspace/__init__.py
+++ b/src/elevenlabs/workspace/__init__.py
@@ -7,7 +7,7 @@
if typing.TYPE_CHECKING:
from .resources import BodyShareWorkspaceResourceV1WorkspaceResourcesResourceIdSharePostRole
- from . import auth_connections, groups, invites, members, resources
+ from . import auth_connections, groups, invites, members, resources, usage
from .auth_connections import (
AuthConnectionsCreateRequestBody,
AuthConnectionsCreateRequestBody_BasicAuth,
@@ -27,6 +27,7 @@
AuthConnectionsCreateResponse_PrivateKeyJwt,
AuthConnectionsCreateResponse_WhatsappAuth,
)
+ from .usage import BodyGetWorkspaceUsageV1WorkspaceAnalyticsQueryUsageByProductOverTimePostGroupByItem
_dynamic_imports: typing.Dict[str, str] = {
"AuthConnectionsCreateRequestBody": ".auth_connections",
"AuthConnectionsCreateRequestBody_BasicAuth": ".auth_connections",
@@ -45,12 +46,14 @@
"AuthConnectionsCreateResponse_Oauth2Jwt": ".auth_connections",
"AuthConnectionsCreateResponse_PrivateKeyJwt": ".auth_connections",
"AuthConnectionsCreateResponse_WhatsappAuth": ".auth_connections",
+ "BodyGetWorkspaceUsageV1WorkspaceAnalyticsQueryUsageByProductOverTimePostGroupByItem": ".usage",
"BodyShareWorkspaceResourceV1WorkspaceResourcesResourceIdSharePostRole": ".resources",
"auth_connections": ".auth_connections",
"groups": ".groups",
"invites": ".invites",
"members": ".members",
"resources": ".resources",
+ "usage": ".usage",
}
@@ -93,10 +96,12 @@ def __dir__():
"AuthConnectionsCreateResponse_Oauth2Jwt",
"AuthConnectionsCreateResponse_PrivateKeyJwt",
"AuthConnectionsCreateResponse_WhatsappAuth",
+ "BodyGetWorkspaceUsageV1WorkspaceAnalyticsQueryUsageByProductOverTimePostGroupByItem",
"BodyShareWorkspaceResourceV1WorkspaceResourcesResourceIdSharePostRole",
"auth_connections",
"groups",
"invites",
"members",
"resources",
+ "usage",
]
diff --git a/src/elevenlabs/workspace/client.py b/src/elevenlabs/workspace/client.py
index d597d100..b0a873cf 100644
--- a/src/elevenlabs/workspace/client.py
+++ b/src/elevenlabs/workspace/client.py
@@ -13,6 +13,7 @@
from .invites.client import AsyncInvitesClient, InvitesClient
from .members.client import AsyncMembersClient, MembersClient
from .resources.client import AsyncResourcesClient, ResourcesClient
+ from .usage.client import AsyncUsageClient, UsageClient
class WorkspaceClient:
@@ -24,6 +25,7 @@ def __init__(self, *, client_wrapper: SyncClientWrapper):
self._invites: typing.Optional[InvitesClient] = None
self._members: typing.Optional[MembersClient] = None
self._resources: typing.Optional[ResourcesClient] = None
+ self._usage: typing.Optional[UsageClient] = None
@property
def with_raw_response(self) -> RawWorkspaceClient:
@@ -76,6 +78,14 @@ def resources(self):
self._resources = ResourcesClient(client_wrapper=self._client_wrapper)
return self._resources
+ @property
+ def usage(self):
+ if self._usage is None:
+ from .usage.client import UsageClient # noqa: E402
+
+ self._usage = UsageClient(client_wrapper=self._client_wrapper)
+ return self._usage
+
class AsyncWorkspaceClient:
def __init__(self, *, client_wrapper: AsyncClientWrapper):
@@ -86,6 +96,7 @@ def __init__(self, *, client_wrapper: AsyncClientWrapper):
self._invites: typing.Optional[AsyncInvitesClient] = None
self._members: typing.Optional[AsyncMembersClient] = None
self._resources: typing.Optional[AsyncResourcesClient] = None
+ self._usage: typing.Optional[AsyncUsageClient] = None
@property
def with_raw_response(self) -> AsyncRawWorkspaceClient:
@@ -137,3 +148,11 @@ def resources(self):
self._resources = AsyncResourcesClient(client_wrapper=self._client_wrapper)
return self._resources
+
+ @property
+ def usage(self):
+ if self._usage is None:
+ from .usage.client import AsyncUsageClient # noqa: E402
+
+ self._usage = AsyncUsageClient(client_wrapper=self._client_wrapper)
+ return self._usage
diff --git a/src/elevenlabs/workspace/usage/__init__.py b/src/elevenlabs/workspace/usage/__init__.py
new file mode 100644
index 00000000..ad40aa29
--- /dev/null
+++ b/src/elevenlabs/workspace/usage/__init__.py
@@ -0,0 +1,36 @@
+# 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 BodyGetWorkspaceUsageV1WorkspaceAnalyticsQueryUsageByProductOverTimePostGroupByItem
+_dynamic_imports: typing.Dict[str, str] = {
+ "BodyGetWorkspaceUsageV1WorkspaceAnalyticsQueryUsageByProductOverTimePostGroupByItem": ".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__ = ["BodyGetWorkspaceUsageV1WorkspaceAnalyticsQueryUsageByProductOverTimePostGroupByItem"]
diff --git a/src/elevenlabs/workspace/usage/client.py b/src/elevenlabs/workspace/usage/client.py
new file mode 100644
index 00000000..6d48a20e
--- /dev/null
+++ b/src/elevenlabs/workspace/usage/client.py
@@ -0,0 +1,169 @@
+# 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.column_filter import ColumnFilter
+from ...types.workspace_analytics_query_response_model import WorkspaceAnalyticsQueryResponseModel
+from .raw_client import AsyncRawUsageClient, RawUsageClient
+from .types.body_get_workspace_usage_v_1_workspace_analytics_query_usage_by_product_over_time_post_group_by_item import (
+ BodyGetWorkspaceUsageV1WorkspaceAnalyticsQueryUsageByProductOverTimePostGroupByItem,
+)
+
+# this is used as the default value for optional parameters
+OMIT = typing.cast(typing.Any, ...)
+
+
+class UsageClient:
+ def __init__(self, *, client_wrapper: SyncClientWrapper):
+ self._raw_client = RawUsageClient(client_wrapper=client_wrapper)
+
+ @property
+ def with_raw_response(self) -> RawUsageClient:
+ """
+ Retrieves a raw implementation of this client that returns raw responses.
+
+ Returns
+ -------
+ RawUsageClient
+ """
+ return self._raw_client
+
+ def get_usage_by_product_over_time(
+ self,
+ *,
+ start_time: int,
+ end_time: int,
+ interval_seconds: typing.Optional[int] = OMIT,
+ group_by: typing.Optional[
+ typing.Sequence[BodyGetWorkspaceUsageV1WorkspaceAnalyticsQueryUsageByProductOverTimePostGroupByItem]
+ ] = OMIT,
+ filters: typing.Optional[typing.Sequence[ColumnFilter]] = OMIT,
+ request_options: typing.Optional[RequestOptions] = None,
+ ) -> WorkspaceAnalyticsQueryResponseModel:
+ """
+ Returns credit usage broken down by product type over time. Timestamps are Unix milliseconds. The response is a tabular structure with columns, column_types, column_units, and rows.
+
+ Parameters
+ ----------
+ start_time : int
+
+ end_time : int
+
+ interval_seconds : typing.Optional[int]
+
+ group_by : typing.Optional[typing.Sequence[BodyGetWorkspaceUsageV1WorkspaceAnalyticsQueryUsageByProductOverTimePostGroupByItem]]
+
+ filters : typing.Optional[typing.Sequence[ColumnFilter]]
+
+ request_options : typing.Optional[RequestOptions]
+ Request-specific configuration.
+
+ Returns
+ -------
+ WorkspaceAnalyticsQueryResponseModel
+ Successful Response
+
+ Examples
+ --------
+ from elevenlabs import ElevenLabs
+
+ client = ElevenLabs(
+ api_key="YOUR_API_KEY",
+ )
+ client.workspace.usage.get_usage_by_product_over_time(
+ start_time=1,
+ end_time=1,
+ )
+ """
+ _response = self._raw_client.get_usage_by_product_over_time(
+ start_time=start_time,
+ end_time=end_time,
+ interval_seconds=interval_seconds,
+ group_by=group_by,
+ filters=filters,
+ request_options=request_options,
+ )
+ return _response.data
+
+
+class AsyncUsageClient:
+ def __init__(self, *, client_wrapper: AsyncClientWrapper):
+ self._raw_client = AsyncRawUsageClient(client_wrapper=client_wrapper)
+
+ @property
+ def with_raw_response(self) -> AsyncRawUsageClient:
+ """
+ Retrieves a raw implementation of this client that returns raw responses.
+
+ Returns
+ -------
+ AsyncRawUsageClient
+ """
+ return self._raw_client
+
+ async def get_usage_by_product_over_time(
+ self,
+ *,
+ start_time: int,
+ end_time: int,
+ interval_seconds: typing.Optional[int] = OMIT,
+ group_by: typing.Optional[
+ typing.Sequence[BodyGetWorkspaceUsageV1WorkspaceAnalyticsQueryUsageByProductOverTimePostGroupByItem]
+ ] = OMIT,
+ filters: typing.Optional[typing.Sequence[ColumnFilter]] = OMIT,
+ request_options: typing.Optional[RequestOptions] = None,
+ ) -> WorkspaceAnalyticsQueryResponseModel:
+ """
+ Returns credit usage broken down by product type over time. Timestamps are Unix milliseconds. The response is a tabular structure with columns, column_types, column_units, and rows.
+
+ Parameters
+ ----------
+ start_time : int
+
+ end_time : int
+
+ interval_seconds : typing.Optional[int]
+
+ group_by : typing.Optional[typing.Sequence[BodyGetWorkspaceUsageV1WorkspaceAnalyticsQueryUsageByProductOverTimePostGroupByItem]]
+
+ filters : typing.Optional[typing.Sequence[ColumnFilter]]
+
+ request_options : typing.Optional[RequestOptions]
+ Request-specific configuration.
+
+ Returns
+ -------
+ WorkspaceAnalyticsQueryResponseModel
+ Successful Response
+
+ Examples
+ --------
+ import asyncio
+
+ from elevenlabs import AsyncElevenLabs
+
+ client = AsyncElevenLabs(
+ api_key="YOUR_API_KEY",
+ )
+
+
+ async def main() -> None:
+ await client.workspace.usage.get_usage_by_product_over_time(
+ start_time=1,
+ end_time=1,
+ )
+
+
+ asyncio.run(main())
+ """
+ _response = await self._raw_client.get_usage_by_product_over_time(
+ start_time=start_time,
+ end_time=end_time,
+ interval_seconds=interval_seconds,
+ group_by=group_by,
+ filters=filters,
+ request_options=request_options,
+ )
+ return _response.data
diff --git a/src/elevenlabs/workspace/usage/raw_client.py b/src/elevenlabs/workspace/usage/raw_client.py
new file mode 100644
index 00000000..25fa936a
--- /dev/null
+++ b/src/elevenlabs/workspace/usage/raw_client.py
@@ -0,0 +1,188 @@
+# 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.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.column_filter import ColumnFilter
+from ...types.workspace_analytics_query_response_model import WorkspaceAnalyticsQueryResponseModel
+from .types.body_get_workspace_usage_v_1_workspace_analytics_query_usage_by_product_over_time_post_group_by_item import (
+ BodyGetWorkspaceUsageV1WorkspaceAnalyticsQueryUsageByProductOverTimePostGroupByItem,
+)
+
+# this is used as the default value for optional parameters
+OMIT = typing.cast(typing.Any, ...)
+
+
+class RawUsageClient:
+ def __init__(self, *, client_wrapper: SyncClientWrapper):
+ self._client_wrapper = client_wrapper
+
+ def get_usage_by_product_over_time(
+ self,
+ *,
+ start_time: int,
+ end_time: int,
+ interval_seconds: typing.Optional[int] = OMIT,
+ group_by: typing.Optional[
+ typing.Sequence[BodyGetWorkspaceUsageV1WorkspaceAnalyticsQueryUsageByProductOverTimePostGroupByItem]
+ ] = OMIT,
+ filters: typing.Optional[typing.Sequence[ColumnFilter]] = OMIT,
+ request_options: typing.Optional[RequestOptions] = None,
+ ) -> HttpResponse[WorkspaceAnalyticsQueryResponseModel]:
+ """
+ Returns credit usage broken down by product type over time. Timestamps are Unix milliseconds. The response is a tabular structure with columns, column_types, column_units, and rows.
+
+ Parameters
+ ----------
+ start_time : int
+
+ end_time : int
+
+ interval_seconds : typing.Optional[int]
+
+ group_by : typing.Optional[typing.Sequence[BodyGetWorkspaceUsageV1WorkspaceAnalyticsQueryUsageByProductOverTimePostGroupByItem]]
+
+ filters : typing.Optional[typing.Sequence[ColumnFilter]]
+
+ request_options : typing.Optional[RequestOptions]
+ Request-specific configuration.
+
+ Returns
+ -------
+ HttpResponse[WorkspaceAnalyticsQueryResponseModel]
+ Successful Response
+ """
+ _response = self._client_wrapper.httpx_client.request(
+ "v1/workspace/analytics/query/usage-by-product-over-time",
+ method="POST",
+ json={
+ "start_time": start_time,
+ "end_time": end_time,
+ "interval_seconds": interval_seconds,
+ "group_by": group_by,
+ "filters": convert_and_respect_annotation_metadata(
+ object_=filters, annotation=typing.Sequence[ColumnFilter], direction="write"
+ ),
+ },
+ headers={
+ "content-type": "application/json",
+ },
+ request_options=request_options,
+ omit=OMIT,
+ )
+ try:
+ if 200 <= _response.status_code < 300:
+ _data = typing.cast(
+ WorkspaceAnalyticsQueryResponseModel,
+ construct_type(
+ type_=WorkspaceAnalyticsQueryResponseModel, # 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 AsyncRawUsageClient:
+ def __init__(self, *, client_wrapper: AsyncClientWrapper):
+ self._client_wrapper = client_wrapper
+
+ async def get_usage_by_product_over_time(
+ self,
+ *,
+ start_time: int,
+ end_time: int,
+ interval_seconds: typing.Optional[int] = OMIT,
+ group_by: typing.Optional[
+ typing.Sequence[BodyGetWorkspaceUsageV1WorkspaceAnalyticsQueryUsageByProductOverTimePostGroupByItem]
+ ] = OMIT,
+ filters: typing.Optional[typing.Sequence[ColumnFilter]] = OMIT,
+ request_options: typing.Optional[RequestOptions] = None,
+ ) -> AsyncHttpResponse[WorkspaceAnalyticsQueryResponseModel]:
+ """
+ Returns credit usage broken down by product type over time. Timestamps are Unix milliseconds. The response is a tabular structure with columns, column_types, column_units, and rows.
+
+ Parameters
+ ----------
+ start_time : int
+
+ end_time : int
+
+ interval_seconds : typing.Optional[int]
+
+ group_by : typing.Optional[typing.Sequence[BodyGetWorkspaceUsageV1WorkspaceAnalyticsQueryUsageByProductOverTimePostGroupByItem]]
+
+ filters : typing.Optional[typing.Sequence[ColumnFilter]]
+
+ request_options : typing.Optional[RequestOptions]
+ Request-specific configuration.
+
+ Returns
+ -------
+ AsyncHttpResponse[WorkspaceAnalyticsQueryResponseModel]
+ Successful Response
+ """
+ _response = await self._client_wrapper.httpx_client.request(
+ "v1/workspace/analytics/query/usage-by-product-over-time",
+ method="POST",
+ json={
+ "start_time": start_time,
+ "end_time": end_time,
+ "interval_seconds": interval_seconds,
+ "group_by": group_by,
+ "filters": convert_and_respect_annotation_metadata(
+ object_=filters, annotation=typing.Sequence[ColumnFilter], direction="write"
+ ),
+ },
+ headers={
+ "content-type": "application/json",
+ },
+ request_options=request_options,
+ omit=OMIT,
+ )
+ try:
+ if 200 <= _response.status_code < 300:
+ _data = typing.cast(
+ WorkspaceAnalyticsQueryResponseModel,
+ construct_type(
+ type_=WorkspaceAnalyticsQueryResponseModel, # 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/workspace/usage/types/__init__.py b/src/elevenlabs/workspace/usage/types/__init__.py
new file mode 100644
index 00000000..87081c05
--- /dev/null
+++ b/src/elevenlabs/workspace/usage/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 .body_get_workspace_usage_v_1_workspace_analytics_query_usage_by_product_over_time_post_group_by_item import (
+ BodyGetWorkspaceUsageV1WorkspaceAnalyticsQueryUsageByProductOverTimePostGroupByItem,
+ )
+_dynamic_imports: typing.Dict[str, str] = {
+ "BodyGetWorkspaceUsageV1WorkspaceAnalyticsQueryUsageByProductOverTimePostGroupByItem": ".body_get_workspace_usage_v_1_workspace_analytics_query_usage_by_product_over_time_post_group_by_item"
+}
+
+
+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__ = ["BodyGetWorkspaceUsageV1WorkspaceAnalyticsQueryUsageByProductOverTimePostGroupByItem"]
diff --git a/src/elevenlabs/workspace/usage/types/body_get_workspace_usage_v_1_workspace_analytics_query_usage_by_product_over_time_post_group_by_item.py b/src/elevenlabs/workspace/usage/types/body_get_workspace_usage_v_1_workspace_analytics_query_usage_by_product_over_time_post_group_by_item.py
new file mode 100644
index 00000000..1c25fcfd
--- /dev/null
+++ b/src/elevenlabs/workspace/usage/types/body_get_workspace_usage_v_1_workspace_analytics_query_usage_by_product_over_time_post_group_by_item.py
@@ -0,0 +1,24 @@
+# This file was auto-generated by Fern from our API Definition.
+
+import typing
+
+BodyGetWorkspaceUsageV1WorkspaceAnalyticsQueryUsageByProductOverTimePostGroupByItem = typing.Union[
+ typing.Literal[
+ "product_type",
+ "model",
+ "voice_id",
+ "user_id",
+ "fiat_currency",
+ "fiat_charge_type",
+ "region",
+ "reporting_workspace_id",
+ "request_source",
+ "resource_id",
+ "subresource_id",
+ "request_queue_type",
+ "voice_multiplier",
+ "hashed_xi_api_key",
+ "billing_group_id",
+ ],
+ typing.Any,
+]