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

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion LICENSE
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
MIT License

Copyright (c) 2025 Elevenlabs.
Copyright (c) 2026 Elevenlabs.

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
Expand Down
2 changes: 1 addition & 1 deletion pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ dynamic = ["version"]

[tool.poetry]
name = "elevenlabs"
version = "v2.28.0"
version = "v2.29.0"
description = ""
readme = "README.md"
authors = []
Expand Down
119 changes: 107 additions & 12 deletions reference.md
Original file line number Diff line number Diff line change
Expand Up @@ -4490,7 +4490,7 @@ typing.Optional[core.File]` — See core.File for more documentation
<dl>
<dd>

**mode:** `typing.Optional[DubbingCreateRequestMode]` — The mode in which to run this Dubbing job. Defaults to automatic, use manual if specifically providing a CSV transcript to use.
**mode:** `typing.Optional[DubbingCreateRequestMode]` — The mode in which to run this Dubbing job. Defaults to automatic, use manual if specifically providing a CSV transcript to use. Note that manual mode is experimental and production use is strongly discouraged.

</dd>
</dl>
Expand Down Expand Up @@ -6295,6 +6295,22 @@ typing.Optional[core.File]` — See core.File for more documentation
<dl>
<dd>

**entity_detection:** `typing.Optional[SpeechToTextConvertRequestEntityDetection]` — Detect entities in the transcript. Can be 'all' to detect all entities, a single entity type or category string, or a list of entity types/categories. Categories include 'pii', 'phi', 'pci', 'other', 'offensive_language'. When enabled, detected entities will be returned in the 'entities' field with their text, type, and character positions.

</dd>
</dl>

<dl>
<dd>

**keyterms:** `typing.Optional[typing.List[str]]` — A list of keyterms to bias the transcription towards. The keyterms are words or phrases you want the model to recognise more accurately. The number of keyterms cannot exceed 100. The length of each keyterm must be less than 50 characters. Keyterms can contain at most 5 words (after normalisation). For example ["hello", "world", "technical term"]

</dd>
</dl>

<dl>
<dd>

**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.

</dd>
Expand Down Expand Up @@ -9939,7 +9955,6 @@ client.conversational_ai.knowledge_base.list(
folders_first=True,
sort_direction="asc",
sort_by="name",
use_typesense=True,
cursor="cursor",
)

Expand Down Expand Up @@ -10033,14 +10048,6 @@ client.conversational_ai.knowledge_base.list(
<dl>
<dd>

**use_typesense:** `typing.Optional[bool]` — If set to true, the endpoint will use typesense DB to search for the documents).

</dd>
</dl>

<dl>
<dd>

**cursor:** `typing.Optional[str]` — Used for fetching next page. Cursor is returned in the response.

</dd>
Expand Down Expand Up @@ -17280,7 +17287,7 @@ typing.Optional[core.File]` — See core.File for more documentation


An optional content to initialize the Studio project with. If this is set, 'from_url' and 'from_document' must be null. If neither 'from_url', 'from_document', 'from_content' are provided we will initialize the Studio project as blank.

Example:
[{"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"}]}]}]

Expand Down Expand Up @@ -18067,7 +18074,7 @@ typing.Optional[core.File]` — See core.File for more documentation


An optional content to initialize the Studio project with. If this is set, 'from_url' and 'from_document' must be null. If neither 'from_url', 'from_document', 'from_content' are provided we will initialize the Studio project as blank.

Example:
[{"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"}]}]}]

Expand Down Expand Up @@ -21676,6 +21683,94 @@ client.workspace.resources.unshare(
</dl>


</dd>
</dl>
</details>

<details><summary><code>client.workspace.resources.<a href="src/elevenlabs/workspace/resources/client.py">copy_to_workspace</a>(...)</code></summary>
<dl>
<dd>

#### 📝 Description

<dl>
<dd>

<dl>
<dd>

Copies a workspace resource to another workspace.
</dd>
</dl>
</dd>
</dl>

#### 🔌 Usage

<dl>
<dd>

<dl>
<dd>

```python
from elevenlabs import ElevenLabs

client = ElevenLabs(
api_key="YOUR_API_KEY",
)
client.workspace.resources.copy_to_workspace(
resource_id="resource_id",
resource_type="voice",
target_user_id="target_user_id",
)

```
</dd>
</dl>
</dd>
</dl>

#### ⚙️ Parameters

<dl>
<dd>

<dl>
<dd>

**resource_id:** `str` — The ID of the target resource.

</dd>
</dl>

<dl>
<dd>

**resource_type:** `WorkspaceResourceType` — Resource type of the target resource.

</dd>
</dl>

<dl>
<dd>

**target_user_id:** `str` — The ID of the target user.

</dd>
</dl>

<dl>
<dd>

**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.

</dd>
</dl>
</dd>
</dl>


</dd>
</dl>
</details>
Expand Down
9 changes: 9 additions & 0 deletions src/elevenlabs/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -721,6 +721,7 @@
DependentUnknownAgentIdentifier,
DependentUnknownToolIdentifier,
DetailedMusicResponse,
DetectedEntity,
DialogueInput,
DialogueInputResponseModel,
DiscountResponseModel,
Expand Down Expand Up @@ -878,6 +879,7 @@
KnowledgeBaseDocumentMetadataResponseModel,
KnowledgeBaseDocumentType,
KnowledgeBaseFolderPathSegmentResponseModel,
KnowledgeBaseFolderPathSegmentSummaryResponseModel,
KnowledgeBaseLocator,
KnowledgeBaseSortBy,
KnowledgeBaseSummaryBatchSuccessfulResponseModel,
Expand Down Expand Up @@ -1534,6 +1536,7 @@
SpeechToSpeechStreamRequestOutputFormat,
)
from .speech_to_text import (
SpeechToTextConvertRequestEntityDetection,
SpeechToTextConvertRequestFileFormat,
SpeechToTextConvertRequestTimestampsGranularity,
SpeechToTextConvertRequestWebhookMetadata,
Expand Down Expand Up @@ -2322,6 +2325,7 @@
"DependentUnknownAgentIdentifier": ".types",
"DependentUnknownToolIdentifier": ".types",
"DetailedMusicResponse": ".types",
"DetectedEntity": ".types",
"DialogueInput": ".types",
"DialogueInputResponseModel": ".types",
"DiscountResponseModel": ".types",
Expand Down Expand Up @@ -2488,6 +2492,7 @@
"KnowledgeBaseDocumentMetadataResponseModel": ".types",
"KnowledgeBaseDocumentType": ".types",
"KnowledgeBaseFolderPathSegmentResponseModel": ".types",
"KnowledgeBaseFolderPathSegmentSummaryResponseModel": ".types",
"KnowledgeBaseLocator": ".types",
"KnowledgeBaseSortBy": ".types",
"KnowledgeBaseSummaryBatchSuccessfulResponseModel": ".types",
Expand Down Expand Up @@ -2778,6 +2783,7 @@
"SpeechToSpeechStreamRequestOutputFormat": ".speech_to_speech",
"SpeechToTextCharacterResponseModel": ".types",
"SpeechToTextChunkResponseModel": ".types",
"SpeechToTextConvertRequestEntityDetection": ".speech_to_text",
"SpeechToTextConvertRequestFileFormat": ".speech_to_text",
"SpeechToTextConvertRequestTimestampsGranularity": ".speech_to_text",
"SpeechToTextConvertRequestWebhookMetadata": ".speech_to_text",
Expand Down Expand Up @@ -3897,6 +3903,7 @@ def __dir__():
"DependentUnknownAgentIdentifier",
"DependentUnknownToolIdentifier",
"DetailedMusicResponse",
"DetectedEntity",
"DialogueInput",
"DialogueInputResponseModel",
"DiscountResponseModel",
Expand Down Expand Up @@ -4063,6 +4070,7 @@ def __dir__():
"KnowledgeBaseDocumentMetadataResponseModel",
"KnowledgeBaseDocumentType",
"KnowledgeBaseFolderPathSegmentResponseModel",
"KnowledgeBaseFolderPathSegmentSummaryResponseModel",
"KnowledgeBaseLocator",
"KnowledgeBaseSortBy",
"KnowledgeBaseSummaryBatchSuccessfulResponseModel",
Expand Down Expand Up @@ -4353,6 +4361,7 @@ def __dir__():
"SpeechToSpeechStreamRequestOutputFormat",
"SpeechToTextCharacterResponseModel",
"SpeechToTextChunkResponseModel",
"SpeechToTextConvertRequestEntityDetection",
"SpeechToTextConvertRequestFileFormat",
"SpeechToTextConvertRequestTimestampsGranularity",
"SpeechToTextConvertRequestWebhookMetadata",
Expand Down
12 changes: 0 additions & 12 deletions src/elevenlabs/conversational_ai/knowledge_base/client.py
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,6 @@ def list(
folders_first: typing.Optional[bool] = None,
sort_direction: typing.Optional[SortDirection] = None,
sort_by: typing.Optional[KnowledgeBaseSortBy] = None,
use_typesense: typing.Optional[bool] = None,
cursor: typing.Optional[str] = None,
request_options: typing.Optional[RequestOptions] = None,
) -> GetKnowledgeBaseListResponseModel:
Expand Down Expand Up @@ -91,9 +90,6 @@ def list(
sort_by : typing.Optional[KnowledgeBaseSortBy]
The field to sort the results by

use_typesense : typing.Optional[bool]
If set to true, the endpoint will use typesense DB to search for the documents).

cursor : typing.Optional[str]
Used for fetching next page. Cursor is returned in the response.

Expand Down Expand Up @@ -121,7 +117,6 @@ def list(
folders_first=True,
sort_direction="asc",
sort_by="name",
use_typesense=True,
cursor="cursor",
)
"""
Expand All @@ -135,7 +130,6 @@ def list(
folders_first=folders_first,
sort_direction=sort_direction,
sort_by=sort_by,
use_typesense=use_typesense,
cursor=cursor,
request_options=request_options,
)
Expand Down Expand Up @@ -232,7 +226,6 @@ async def list(
folders_first: typing.Optional[bool] = None,
sort_direction: typing.Optional[SortDirection] = None,
sort_by: typing.Optional[KnowledgeBaseSortBy] = None,
use_typesense: typing.Optional[bool] = None,
cursor: typing.Optional[str] = None,
request_options: typing.Optional[RequestOptions] = None,
) -> GetKnowledgeBaseListResponseModel:
Expand Down Expand Up @@ -268,9 +261,6 @@ async def list(
sort_by : typing.Optional[KnowledgeBaseSortBy]
The field to sort the results by

use_typesense : typing.Optional[bool]
If set to true, the endpoint will use typesense DB to search for the documents).

cursor : typing.Optional[str]
Used for fetching next page. Cursor is returned in the response.

Expand Down Expand Up @@ -303,7 +293,6 @@ async def main() -> None:
folders_first=True,
sort_direction="asc",
sort_by="name",
use_typesense=True,
cursor="cursor",
)

Expand All @@ -320,7 +309,6 @@ async def main() -> None:
folders_first=folders_first,
sort_direction=sort_direction,
sort_by=sort_by,
use_typesense=use_typesense,
cursor=cursor,
request_options=request_options,
)
Expand Down
10 changes: 0 additions & 10 deletions src/elevenlabs/conversational_ai/knowledge_base/raw_client.py
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,6 @@ def list(
folders_first: typing.Optional[bool] = None,
sort_direction: typing.Optional[SortDirection] = None,
sort_by: typing.Optional[KnowledgeBaseSortBy] = None,
use_typesense: typing.Optional[bool] = None,
cursor: typing.Optional[str] = None,
request_options: typing.Optional[RequestOptions] = None,
) -> HttpResponse[GetKnowledgeBaseListResponseModel]:
Expand Down Expand Up @@ -78,9 +77,6 @@ def list(
sort_by : typing.Optional[KnowledgeBaseSortBy]
The field to sort the results by

use_typesense : typing.Optional[bool]
If set to true, the endpoint will use typesense DB to search for the documents).

cursor : typing.Optional[str]
Used for fetching next page. Cursor is returned in the response.

Expand All @@ -105,7 +101,6 @@ def list(
"folders_first": folders_first,
"sort_direction": sort_direction,
"sort_by": sort_by,
"use_typesense": use_typesense,
"cursor": cursor,
},
request_options=request_options,
Expand Down Expand Up @@ -217,7 +212,6 @@ async def list(
folders_first: typing.Optional[bool] = None,
sort_direction: typing.Optional[SortDirection] = None,
sort_by: typing.Optional[KnowledgeBaseSortBy] = None,
use_typesense: typing.Optional[bool] = None,
cursor: typing.Optional[str] = None,
request_options: typing.Optional[RequestOptions] = None,
) -> AsyncHttpResponse[GetKnowledgeBaseListResponseModel]:
Expand Down Expand Up @@ -253,9 +247,6 @@ async def list(
sort_by : typing.Optional[KnowledgeBaseSortBy]
The field to sort the results by

use_typesense : typing.Optional[bool]
If set to true, the endpoint will use typesense DB to search for the documents).

cursor : typing.Optional[str]
Used for fetching next page. Cursor is returned in the response.

Expand All @@ -280,7 +271,6 @@ async def list(
"folders_first": folders_first,
"sort_direction": sort_direction,
"sort_by": sort_by,
"use_typesense": use_typesense,
"cursor": cursor,
},
request_options=request_options,
Expand Down
4 changes: 2 additions & 2 deletions src/elevenlabs/core/client_wrapper.py
Original file line number Diff line number Diff line change
Expand Up @@ -22,10 +22,10 @@ def __init__(

def get_headers(self) -> typing.Dict[str, str]:
headers: typing.Dict[str, str] = {
"User-Agent": "elevenlabs/v2.28.0",
"User-Agent": "elevenlabs/v2.29.0",
"X-Fern-Language": "Python",
"X-Fern-SDK-Name": "elevenlabs",
"X-Fern-SDK-Version": "v2.28.0",
"X-Fern-SDK-Version": "v2.29.0",
**(self.get_custom_headers() or {}),
}
if self._api_key is not None:
Expand Down
Loading