diff --git a/.gitignore b/.gitignore
index 367c9b00..d2e4ca80 100644
--- a/.gitignore
+++ b/.gitignore
@@ -3,4 +3,3 @@
__pycache__/
dist/
poetry.toml
-venv
\ No newline at end of file
diff --git a/pyproject.toml b/pyproject.toml
index aee79a3e..e044b093 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -3,7 +3,7 @@ name = "elevenlabs"
[tool.poetry]
name = "elevenlabs"
-version = "v2.6.1"
+version = "v2.7.0"
description = ""
readme = "README.md"
authors = []
diff --git a/reference.md b/reference.md
index 73811f5f..64e62225 100644
--- a/reference.md
+++ b/reference.md
@@ -6324,11 +6324,7 @@ Run a conversation between the agent and a simulated user.
```python
-from elevenlabs import (
- AgentConfig,
- ConversationSimulationSpecification,
- ElevenLabs,
-)
+from elevenlabs import ConversationSimulationSpecification, ElevenLabs
client = ElevenLabs(
api_key="YOUR_API_KEY",
@@ -6336,10 +6332,10 @@ client = ElevenLabs(
client.conversational_ai.agents.simulate_conversation(
agent_id="21m00Tcm4TlvDq8ikWAM",
simulation_specification=ConversationSimulationSpecification(
- simulated_user_config=AgentConfig(
- first_message="Hello, how can I help you today?",
- language="en",
- ),
+ simulated_user_config={
+ "first_message": "Hello, how can I help you today?",
+ "language": "en",
+ },
),
)
@@ -6420,11 +6416,7 @@ Run a conversation between the agent and a simulated user and stream back the re
```python
-from elevenlabs import (
- AgentConfig,
- ConversationSimulationSpecification,
- ElevenLabs,
-)
+from elevenlabs import ConversationSimulationSpecification, ElevenLabs
client = ElevenLabs(
api_key="YOUR_API_KEY",
@@ -6432,10 +6424,10 @@ client = ElevenLabs(
client.conversational_ai.agents.simulate_conversation_stream(
agent_id="21m00Tcm4TlvDq8ikWAM",
simulation_specification=ConversationSimulationSpecification(
- simulated_user_config=AgentConfig(
- first_message="Hello, how can I help you today?",
- language="en",
- ),
+ simulated_user_config={
+ "first_message": "Hello, how can I help you today?",
+ "language": "en",
+ },
),
)
@@ -6490,7 +6482,7 @@ client.conversational_ai.agents.simulate_conversation_stream(
## ConversationalAi PhoneNumbers
-client.conversational_ai.phone_numbers.create(...)
+client.conversational_ai.phone_numbers.list()
-
@@ -6502,7 +6494,7 @@ client.conversational_ai.agents.simulate_conversation_stream(
-
-Import Phone Number from provider configuration (Twilio or SIP trunk)
+Retrieve all Phone Numbers
@@ -6518,21 +6510,11 @@ Import Phone Number from provider configuration (Twilio or SIP trunk)
```python
from elevenlabs import ElevenLabs
-from elevenlabs.conversational_ai.phone_numbers import (
- PhoneNumbersCreateRequestBody_Twilio,
-)
client = ElevenLabs(
api_key="YOUR_API_KEY",
)
-client.conversational_ai.phone_numbers.create(
- request=PhoneNumbersCreateRequestBody_Twilio(
- phone_number="phone_number",
- label="label",
- sid="sid",
- token="token",
- ),
-)
+client.conversational_ai.phone_numbers.list()
```
@@ -6548,14 +6530,6 @@ client.conversational_ai.phone_numbers.create(
-
-**request:** `PhoneNumbersCreateRequestBody`
-
-
-
-
-
--
-
**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.
@@ -6568,7 +6542,7 @@ client.conversational_ai.phone_numbers.create(
-client.conversational_ai.phone_numbers.get(...)
+client.conversational_ai.phone_numbers.create(...)
-
@@ -6580,7 +6554,7 @@ client.conversational_ai.phone_numbers.create(
-
-Retrieve Phone Number details by ID
+Import Phone Number from provider configuration (Twilio or SIP trunk)
@@ -6596,12 +6570,20 @@ Retrieve Phone Number details by ID
```python
from elevenlabs import ElevenLabs
+from elevenlabs.conversational_ai.phone_numbers import (
+ PhoneNumbersCreateRequestBody_Twilio,
+)
client = ElevenLabs(
api_key="YOUR_API_KEY",
)
-client.conversational_ai.phone_numbers.get(
- phone_number_id="TeaqRRdTcIfIu2i7BYfT",
+client.conversational_ai.phone_numbers.create(
+ request=PhoneNumbersCreateRequestBody_Twilio(
+ phone_number="phone_number",
+ label="label",
+ sid="sid",
+ token="token",
+ ),
)
```
@@ -6618,7 +6600,7 @@ client.conversational_ai.phone_numbers.get(
-
-**phone_number_id:** `str` — The id of an agent. This is returned on agent creation.
+**request:** `PhoneNumbersCreateRequestBody`
@@ -6638,7 +6620,7 @@ client.conversational_ai.phone_numbers.get(
-client.conversational_ai.phone_numbers.delete(...)
+client.conversational_ai.phone_numbers.get(...)
-
@@ -6650,7 +6632,7 @@ client.conversational_ai.phone_numbers.get(
-
-Delete Phone Number by ID
+Retrieve Phone Number details by ID
@@ -6670,7 +6652,7 @@ from elevenlabs import ElevenLabs
client = ElevenLabs(
api_key="YOUR_API_KEY",
)
-client.conversational_ai.phone_numbers.delete(
+client.conversational_ai.phone_numbers.get(
phone_number_id="TeaqRRdTcIfIu2i7BYfT",
)
@@ -6708,7 +6690,7 @@ client.conversational_ai.phone_numbers.delete(
-client.conversational_ai.phone_numbers.update(...)
+client.conversational_ai.phone_numbers.delete(...)
-
@@ -6720,7 +6702,7 @@ client.conversational_ai.phone_numbers.delete(
-
-Update Phone Number details by ID
+Delete Phone Number by ID
@@ -6740,7 +6722,7 @@ from elevenlabs import ElevenLabs
client = ElevenLabs(
api_key="YOUR_API_KEY",
)
-client.conversational_ai.phone_numbers.update(
+client.conversational_ai.phone_numbers.delete(
phone_number_id="TeaqRRdTcIfIu2i7BYfT",
)
@@ -6766,14 +6748,6 @@ client.conversational_ai.phone_numbers.update(
-
-**agent_id:** `typing.Optional[str]`
-
-
-
-
-
--
-
**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.
@@ -6786,7 +6760,7 @@ client.conversational_ai.phone_numbers.update(
-client.conversational_ai.phone_numbers.list()
+client.conversational_ai.phone_numbers.update(...)
-
@@ -6798,7 +6772,7 @@ client.conversational_ai.phone_numbers.update(
-
-Retrieve all Phone Numbers
+Update Phone Number details by ID
@@ -6818,7 +6792,9 @@ from elevenlabs import ElevenLabs
client = ElevenLabs(
api_key="YOUR_API_KEY",
)
-client.conversational_ai.phone_numbers.list()
+client.conversational_ai.phone_numbers.update(
+ phone_number_id="TeaqRRdTcIfIu2i7BYfT",
+)
```
@@ -6834,6 +6810,22 @@ client.conversational_ai.phone_numbers.list()
-
+**phone_number_id:** `str` — The id of an agent. This is returned on agent creation.
+
+
+
+
+
+-
+
+**agent_id:** `typing.Optional[str]`
+
+
+
+
+
+-
+
**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.
diff --git a/src/elevenlabs/__init__.py b/src/elevenlabs/__init__.py
index 1059ac6b..cdb3ee7d 100644
--- a/src/elevenlabs/__init__.py
+++ b/src/elevenlabs/__init__.py
@@ -134,6 +134,7 @@
ConversationDeletionSettings,
ConversationHistoryAnalysisCommonModel,
ConversationHistoryBatchCallModel,
+ ConversationHistoryElevenAssistantCommonModel,
ConversationHistoryErrorCommonModel,
ConversationHistoryEvaluationCriteriaResultCommonModel,
ConversationHistoryFeedbackCommonModel,
@@ -154,7 +155,9 @@
ConversationHistoryTranscriptToolCallCommonModel,
ConversationHistoryTranscriptToolCallCommonModelToolDetails,
ConversationHistoryTranscriptToolCallCommonModelToolDetails_Client,
+ ConversationHistoryTranscriptToolCallCommonModelToolDetails_Mcp,
ConversationHistoryTranscriptToolCallCommonModelToolDetails_Webhook,
+ ConversationHistoryTranscriptToolCallMcpDetails,
ConversationHistoryTranscriptToolCallWebhookDetails,
ConversationHistoryTranscriptToolResultCommonModel,
ConversationHistoryTwilioPhoneCallModel,
@@ -185,7 +188,7 @@
CreatePhoneNumberResponseModel,
CreatePreviouslyGeneratedVoiceRequest,
CreatePronunciationDictionaryResponseModel,
- CreateSipTrunkPhoneNumberRequest,
+ CreateSipTrunkPhoneNumberRequestV2,
CreateTranscriptRequest,
CreateTwilioPhoneNumberRequest,
CustomLlm,
@@ -307,6 +310,8 @@
GetKnowledgeBaseTextResponseModel,
GetKnowledgeBaseUrlResponseModel,
GetLibraryVoicesResponse,
+ GetPhoneNumberInboundSipTrunkConfigResponseModel,
+ GetPhoneNumberOutboundSipTrunkConfigResponseModel,
GetPhoneNumberResponse,
GetPhoneNumberSipTrunkResponseModel,
GetPhoneNumberTwilioResponseModel,
@@ -332,6 +337,7 @@
HtmlExportOptions,
HttpValidationError,
ImageAvatar,
+ InboundSipTrunkConfigRequestModel,
InitialiseContext,
InitializeConnection,
InitializeConnectionMulti,
@@ -401,10 +407,15 @@
OrbAvatar,
OutboundCallRecipient,
OutboundCallRecipientResponseModel,
+ OutboundSipTrunkConfigRequestModel,
OutputFormat,
PdfExportOptions,
PhoneNumberAgentInfo,
PhoneNumberTransfer,
+ PhoneNumberTransferDestination,
+ PhoneNumberTransferTransferDestination,
+ PhoneNumberTransferTransferDestination_Phone,
+ PhoneNumberTransferTransferDestination_SipUri,
PlayDtmfToolConfig,
PodcastBulletinMode,
PodcastBulletinModeData,
@@ -504,10 +515,10 @@
SimilarVoiceCategory,
SimilarVoicesForSpeakerResponse,
SipMediaEncryptionEnum,
- SipTrunkConfigResponseModel,
- SipTrunkCredentials,
+ SipTrunkCredentialsRequestModel,
SipTrunkOutboundCallResponse,
SipTrunkTransportEnum,
+ SipUriTransferDestination,
SkipTurnToolConfig,
SpeakerAudioResponseModel,
SpeakerResponseModel,
@@ -573,7 +584,9 @@
ToolResponseModelToolConfig_Webhook,
ToolsResponseModel,
TransferToAgentToolConfig,
- TransferToNumberToolConfig,
+ TransferToNumberToolConfigInput,
+ TransferToNumberToolConfigOutput,
+ TransferTypeEnum,
TtsConversationalConfigInput,
TtsConversationalConfigOutput,
TtsConversationalConfigOverride,
@@ -891,6 +904,7 @@
"ConversationDeletionSettings",
"ConversationHistoryAnalysisCommonModel",
"ConversationHistoryBatchCallModel",
+ "ConversationHistoryElevenAssistantCommonModel",
"ConversationHistoryErrorCommonModel",
"ConversationHistoryEvaluationCriteriaResultCommonModel",
"ConversationHistoryFeedbackCommonModel",
@@ -911,7 +925,9 @@
"ConversationHistoryTranscriptToolCallCommonModel",
"ConversationHistoryTranscriptToolCallCommonModelToolDetails",
"ConversationHistoryTranscriptToolCallCommonModelToolDetails_Client",
+ "ConversationHistoryTranscriptToolCallCommonModelToolDetails_Mcp",
"ConversationHistoryTranscriptToolCallCommonModelToolDetails_Webhook",
+ "ConversationHistoryTranscriptToolCallMcpDetails",
"ConversationHistoryTranscriptToolCallWebhookDetails",
"ConversationHistoryTranscriptToolResultCommonModel",
"ConversationHistoryTwilioPhoneCallModel",
@@ -942,7 +958,7 @@
"CreatePhoneNumberResponseModel",
"CreatePreviouslyGeneratedVoiceRequest",
"CreatePronunciationDictionaryResponseModel",
- "CreateSipTrunkPhoneNumberRequest",
+ "CreateSipTrunkPhoneNumberRequestV2",
"CreateTranscriptRequest",
"CreateTwilioPhoneNumberRequest",
"CustomLlm",
@@ -1067,6 +1083,8 @@
"GetKnowledgeBaseTextResponseModel",
"GetKnowledgeBaseUrlResponseModel",
"GetLibraryVoicesResponse",
+ "GetPhoneNumberInboundSipTrunkConfigResponseModel",
+ "GetPhoneNumberOutboundSipTrunkConfigResponseModel",
"GetPhoneNumberResponse",
"GetPhoneNumberSipTrunkResponseModel",
"GetPhoneNumberTwilioResponseModel",
@@ -1093,6 +1111,7 @@
"HtmlExportOptions",
"HttpValidationError",
"ImageAvatar",
+ "InboundSipTrunkConfigRequestModel",
"InitialiseContext",
"InitializeConnection",
"InitializeConnectionMulti",
@@ -1163,10 +1182,15 @@
"OrbAvatar",
"OutboundCallRecipient",
"OutboundCallRecipientResponseModel",
+ "OutboundSipTrunkConfigRequestModel",
"OutputFormat",
"PdfExportOptions",
"PhoneNumberAgentInfo",
"PhoneNumberTransfer",
+ "PhoneNumberTransferDestination",
+ "PhoneNumberTransferTransferDestination",
+ "PhoneNumberTransferTransferDestination_Phone",
+ "PhoneNumberTransferTransferDestination_SipUri",
"PlayDtmfToolConfig",
"PodcastBulletinMode",
"PodcastBulletinModeData",
@@ -1272,10 +1296,10 @@
"SimilarVoiceCategory",
"SimilarVoicesForSpeakerResponse",
"SipMediaEncryptionEnum",
- "SipTrunkConfigResponseModel",
- "SipTrunkCredentials",
+ "SipTrunkCredentialsRequestModel",
"SipTrunkOutboundCallResponse",
"SipTrunkTransportEnum",
+ "SipUriTransferDestination",
"SkipTurnToolConfig",
"SpeakerAudioResponseModel",
"SpeakerResponseModel",
@@ -1357,7 +1381,9 @@
"ToolResponseModelToolConfig_Webhook",
"ToolsResponseModel",
"TransferToAgentToolConfig",
- "TransferToNumberToolConfig",
+ "TransferToNumberToolConfigInput",
+ "TransferToNumberToolConfigOutput",
+ "TransferTypeEnum",
"TtsConversationalConfigInput",
"TtsConversationalConfigOutput",
"TtsConversationalConfigOverride",
diff --git a/src/elevenlabs/conversational_ai/agents/client.py b/src/elevenlabs/conversational_ai/agents/client.py
index e780e956..37f08512 100644
--- a/src/elevenlabs/conversational_ai/agents/client.py
+++ b/src/elevenlabs/conversational_ai/agents/client.py
@@ -334,11 +334,7 @@ def simulate_conversation(
Examples
--------
- from elevenlabs import (
- AgentConfig,
- ConversationSimulationSpecification,
- ElevenLabs,
- )
+ from elevenlabs import ConversationSimulationSpecification, ElevenLabs
client = ElevenLabs(
api_key="YOUR_API_KEY",
@@ -346,10 +342,10 @@ def simulate_conversation(
client.conversational_ai.agents.simulate_conversation(
agent_id="21m00Tcm4TlvDq8ikWAM",
simulation_specification=ConversationSimulationSpecification(
- simulated_user_config=AgentConfig(
- first_message="Hello, how can I help you today?",
- language="en",
- ),
+ simulated_user_config={
+ "first_message": "Hello, how can I help you today?",
+ "language": "en",
+ },
),
)
"""
@@ -392,11 +388,7 @@ def simulate_conversation_stream(
Examples
--------
- from elevenlabs import (
- AgentConfig,
- ConversationSimulationSpecification,
- ElevenLabs,
- )
+ from elevenlabs import ConversationSimulationSpecification, ElevenLabs
client = ElevenLabs(
api_key="YOUR_API_KEY",
@@ -404,10 +396,10 @@ def simulate_conversation_stream(
client.conversational_ai.agents.simulate_conversation_stream(
agent_id="21m00Tcm4TlvDq8ikWAM",
simulation_specification=ConversationSimulationSpecification(
- simulated_user_config=AgentConfig(
- first_message="Hello, how can I help you today?",
- language="en",
- ),
+ simulated_user_config={
+ "first_message": "Hello, how can I help you today?",
+ "language": "en",
+ },
),
)
"""
@@ -784,11 +776,7 @@ async def simulate_conversation(
--------
import asyncio
- from elevenlabs import (
- AgentConfig,
- AsyncElevenLabs,
- ConversationSimulationSpecification,
- )
+ from elevenlabs import AsyncElevenLabs, ConversationSimulationSpecification
client = AsyncElevenLabs(
api_key="YOUR_API_KEY",
@@ -799,10 +787,10 @@ async def main() -> None:
await client.conversational_ai.agents.simulate_conversation(
agent_id="21m00Tcm4TlvDq8ikWAM",
simulation_specification=ConversationSimulationSpecification(
- simulated_user_config=AgentConfig(
- first_message="Hello, how can I help you today?",
- language="en",
- ),
+ simulated_user_config={
+ "first_message": "Hello, how can I help you today?",
+ "language": "en",
+ },
),
)
@@ -850,11 +838,7 @@ async def simulate_conversation_stream(
--------
import asyncio
- from elevenlabs import (
- AgentConfig,
- AsyncElevenLabs,
- ConversationSimulationSpecification,
- )
+ from elevenlabs import AsyncElevenLabs, ConversationSimulationSpecification
client = AsyncElevenLabs(
api_key="YOUR_API_KEY",
@@ -865,10 +849,10 @@ async def main() -> None:
await client.conversational_ai.agents.simulate_conversation_stream(
agent_id="21m00Tcm4TlvDq8ikWAM",
simulation_specification=ConversationSimulationSpecification(
- simulated_user_config=AgentConfig(
- first_message="Hello, how can I help you today?",
- language="en",
- ),
+ simulated_user_config={
+ "first_message": "Hello, how can I help you today?",
+ "language": "en",
+ },
),
)
diff --git a/src/elevenlabs/conversational_ai/phone_numbers/client.py b/src/elevenlabs/conversational_ai/phone_numbers/client.py
index 96b50bbc..50d328e7 100644
--- a/src/elevenlabs/conversational_ai/phone_numbers/client.py
+++ b/src/elevenlabs/conversational_ai/phone_numbers/client.py
@@ -30,6 +30,34 @@ def with_raw_response(self) -> RawPhoneNumbersClient:
"""
return self._raw_client
+ def list(
+ self, *, request_options: typing.Optional[RequestOptions] = None
+ ) -> typing.List[PhoneNumbersListResponseItem]:
+ """
+ Retrieve all Phone Numbers
+
+ Parameters
+ ----------
+ request_options : typing.Optional[RequestOptions]
+ Request-specific configuration.
+
+ Returns
+ -------
+ typing.List[PhoneNumbersListResponseItem]
+ Successful Response
+
+ Examples
+ --------
+ from elevenlabs import ElevenLabs
+
+ client = ElevenLabs(
+ api_key="YOUR_API_KEY",
+ )
+ client.conversational_ai.phone_numbers.list()
+ """
+ _response = self._raw_client.list(request_options=request_options)
+ return _response.data
+
def create(
self, *, request: PhoneNumbersCreateRequestBody, request_options: typing.Optional[RequestOptions] = None
) -> CreatePhoneNumberResponseModel:
@@ -175,7 +203,23 @@ def update(
_response = self._raw_client.update(phone_number_id, agent_id=agent_id, request_options=request_options)
return _response.data
- def list(
+
+class AsyncPhoneNumbersClient:
+ def __init__(self, *, client_wrapper: AsyncClientWrapper):
+ self._raw_client = AsyncRawPhoneNumbersClient(client_wrapper=client_wrapper)
+
+ @property
+ def with_raw_response(self) -> AsyncRawPhoneNumbersClient:
+ """
+ Retrieves a raw implementation of this client that returns raw responses.
+
+ Returns
+ -------
+ AsyncRawPhoneNumbersClient
+ """
+ return self._raw_client
+
+ async def list(
self, *, request_options: typing.Optional[RequestOptions] = None
) -> typing.List[PhoneNumbersListResponseItem]:
"""
@@ -193,31 +237,23 @@ def list(
Examples
--------
- from elevenlabs import ElevenLabs
+ import asyncio
- client = ElevenLabs(
+ from elevenlabs import AsyncElevenLabs
+
+ client = AsyncElevenLabs(
api_key="YOUR_API_KEY",
)
- client.conversational_ai.phone_numbers.list()
- """
- _response = self._raw_client.list(request_options=request_options)
- return _response.data
-class AsyncPhoneNumbersClient:
- def __init__(self, *, client_wrapper: AsyncClientWrapper):
- self._raw_client = AsyncRawPhoneNumbersClient(client_wrapper=client_wrapper)
+ async def main() -> None:
+ await client.conversational_ai.phone_numbers.list()
- @property
- def with_raw_response(self) -> AsyncRawPhoneNumbersClient:
- """
- Retrieves a raw implementation of this client that returns raw responses.
- Returns
- -------
- AsyncRawPhoneNumbersClient
+ asyncio.run(main())
"""
- return self._raw_client
+ _response = await self._raw_client.list(request_options=request_options)
+ return _response.data
async def create(
self, *, request: PhoneNumbersCreateRequestBody, request_options: typing.Optional[RequestOptions] = None
@@ -395,39 +431,3 @@ async def main() -> None:
"""
_response = await self._raw_client.update(phone_number_id, agent_id=agent_id, request_options=request_options)
return _response.data
-
- async def list(
- self, *, request_options: typing.Optional[RequestOptions] = None
- ) -> typing.List[PhoneNumbersListResponseItem]:
- """
- Retrieve all Phone Numbers
-
- Parameters
- ----------
- request_options : typing.Optional[RequestOptions]
- Request-specific configuration.
-
- Returns
- -------
- typing.List[PhoneNumbersListResponseItem]
- Successful Response
-
- Examples
- --------
- import asyncio
-
- from elevenlabs import AsyncElevenLabs
-
- client = AsyncElevenLabs(
- api_key="YOUR_API_KEY",
- )
-
-
- async def main() -> None:
- await client.conversational_ai.phone_numbers.list()
-
-
- asyncio.run(main())
- """
- _response = await self._raw_client.list(request_options=request_options)
- return _response.data
diff --git a/src/elevenlabs/conversational_ai/phone_numbers/raw_client.py b/src/elevenlabs/conversational_ai/phone_numbers/raw_client.py
index da4de0d6..4e117099 100644
--- a/src/elevenlabs/conversational_ai/phone_numbers/raw_client.py
+++ b/src/elevenlabs/conversational_ai/phone_numbers/raw_client.py
@@ -26,6 +26,54 @@ class RawPhoneNumbersClient:
def __init__(self, *, client_wrapper: SyncClientWrapper):
self._client_wrapper = client_wrapper
+ def list(
+ self, *, request_options: typing.Optional[RequestOptions] = None
+ ) -> HttpResponse[typing.List[PhoneNumbersListResponseItem]]:
+ """
+ Retrieve all Phone Numbers
+
+ Parameters
+ ----------
+ request_options : typing.Optional[RequestOptions]
+ Request-specific configuration.
+
+ Returns
+ -------
+ HttpResponse[typing.List[PhoneNumbersListResponseItem]]
+ Successful Response
+ """
+ _response = self._client_wrapper.httpx_client.request(
+ "v1/convai/phone-numbers",
+ base_url=self._client_wrapper.get_environment().base,
+ method="GET",
+ request_options=request_options,
+ )
+ try:
+ if 200 <= _response.status_code < 300:
+ _data = typing.cast(
+ typing.List[PhoneNumbersListResponseItem],
+ construct_type(
+ type_=typing.List[PhoneNumbersListResponseItem], # 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(
+ HttpValidationError,
+ construct_type(
+ type_=HttpValidationError, # type: ignore
+ object_=_response.json(),
+ ),
+ ),
+ )
+ _response_json = _response.json()
+ except JSONDecodeError:
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text)
+ raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)
+
def create(
self, *, request: PhoneNumbersCreateRequestBody, request_options: typing.Optional[RequestOptions] = None
) -> HttpResponse[CreatePhoneNumberResponseModel]:
@@ -45,7 +93,7 @@ def create(
Successful Response
"""
_response = self._client_wrapper.httpx_client.request(
- "v1/convai/phone-numbers/create",
+ "v1/convai/phone-numbers",
base_url=self._client_wrapper.get_environment().base,
method="POST",
json=convert_and_respect_annotation_metadata(
@@ -251,9 +299,14 @@ def update(
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 list(
+
+class AsyncRawPhoneNumbersClient:
+ def __init__(self, *, client_wrapper: AsyncClientWrapper):
+ self._client_wrapper = client_wrapper
+
+ async def list(
self, *, request_options: typing.Optional[RequestOptions] = None
- ) -> HttpResponse[typing.List[PhoneNumbersListResponseItem]]:
+ ) -> AsyncHttpResponse[typing.List[PhoneNumbersListResponseItem]]:
"""
Retrieve all Phone Numbers
@@ -264,10 +317,10 @@ def list(
Returns
-------
- HttpResponse[typing.List[PhoneNumbersListResponseItem]]
+ AsyncHttpResponse[typing.List[PhoneNumbersListResponseItem]]
Successful Response
"""
- _response = self._client_wrapper.httpx_client.request(
+ _response = await self._client_wrapper.httpx_client.request(
"v1/convai/phone-numbers",
base_url=self._client_wrapper.get_environment().base,
method="GET",
@@ -282,7 +335,7 @@ def list(
object_=_response.json(),
),
)
- return HttpResponse(response=_response, data=_data)
+ return AsyncHttpResponse(response=_response, data=_data)
if _response.status_code == 422:
raise UnprocessableEntityError(
headers=dict(_response.headers),
@@ -299,11 +352,6 @@ def list(
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 AsyncRawPhoneNumbersClient:
- def __init__(self, *, client_wrapper: AsyncClientWrapper):
- self._client_wrapper = client_wrapper
-
async def create(
self, *, request: PhoneNumbersCreateRequestBody, request_options: typing.Optional[RequestOptions] = None
) -> AsyncHttpResponse[CreatePhoneNumberResponseModel]:
@@ -323,7 +371,7 @@ async def create(
Successful Response
"""
_response = await self._client_wrapper.httpx_client.request(
- "v1/convai/phone-numbers/create",
+ "v1/convai/phone-numbers",
base_url=self._client_wrapper.get_environment().base,
method="POST",
json=convert_and_respect_annotation_metadata(
@@ -528,51 +576,3 @@ async def update(
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 list(
- self, *, request_options: typing.Optional[RequestOptions] = None
- ) -> AsyncHttpResponse[typing.List[PhoneNumbersListResponseItem]]:
- """
- Retrieve all Phone Numbers
-
- Parameters
- ----------
- request_options : typing.Optional[RequestOptions]
- Request-specific configuration.
-
- Returns
- -------
- AsyncHttpResponse[typing.List[PhoneNumbersListResponseItem]]
- Successful Response
- """
- _response = await self._client_wrapper.httpx_client.request(
- "v1/convai/phone-numbers",
- base_url=self._client_wrapper.get_environment().base,
- method="GET",
- request_options=request_options,
- )
- try:
- if 200 <= _response.status_code < 300:
- _data = typing.cast(
- typing.List[PhoneNumbersListResponseItem],
- construct_type(
- type_=typing.List[PhoneNumbersListResponseItem], # 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(
- HttpValidationError,
- construct_type(
- type_=HttpValidationError, # 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/conversational_ai/phone_numbers/types/phone_numbers_create_request_body.py b/src/elevenlabs/conversational_ai/phone_numbers/types/phone_numbers_create_request_body.py
index 5c15e366..ee71a3f6 100644
--- a/src/elevenlabs/conversational_ai/phone_numbers/types/phone_numbers_create_request_body.py
+++ b/src/elevenlabs/conversational_ai/phone_numbers/types/phone_numbers_create_request_body.py
@@ -8,9 +8,8 @@
import typing_extensions
from ....core.pydantic_utilities import IS_PYDANTIC_V2
from ....core.unchecked_base_model import UncheckedBaseModel, UnionMetadata
-from ....types.sip_media_encryption_enum import SipMediaEncryptionEnum
-from ....types.sip_trunk_credentials import SipTrunkCredentials
-from ....types.sip_trunk_transport_enum import SipTrunkTransportEnum
+from ....types.inbound_sip_trunk_config_request_model import InboundSipTrunkConfigRequestModel
+from ....types.outbound_sip_trunk_config_request_model import OutboundSipTrunkConfigRequestModel
class PhoneNumbersCreateRequestBody_Twilio(UncheckedBaseModel):
@@ -42,13 +41,8 @@ class PhoneNumbersCreateRequestBody_SipTrunk(UncheckedBaseModel):
provider: typing.Literal["sip_trunk"] = "sip_trunk"
phone_number: str
label: str
- termination_uri: str
- address: typing.Optional[str] = None
- transport: typing.Optional[SipTrunkTransportEnum] = None
- media_encryption: typing.Optional[SipMediaEncryptionEnum] = None
- inbound_media_encryption: typing.Optional[SipMediaEncryptionEnum] = None
- headers: typing.Optional[typing.Dict[str, str]] = None
- credentials: typing.Optional[SipTrunkCredentials] = None
+ inbound_trunk_config: typing.Optional[InboundSipTrunkConfigRequestModel] = None
+ outbound_trunk_config: typing.Optional[OutboundSipTrunkConfigRequestModel] = 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/conversational_ai/phone_numbers/types/phone_numbers_get_response.py b/src/elevenlabs/conversational_ai/phone_numbers/types/phone_numbers_get_response.py
index 18c84731..76b8f91b 100644
--- a/src/elevenlabs/conversational_ai/phone_numbers/types/phone_numbers_get_response.py
+++ b/src/elevenlabs/conversational_ai/phone_numbers/types/phone_numbers_get_response.py
@@ -8,8 +8,13 @@
import typing_extensions
from ....core.pydantic_utilities import IS_PYDANTIC_V2
from ....core.unchecked_base_model import UncheckedBaseModel, UnionMetadata
+from ....types.get_phone_number_inbound_sip_trunk_config_response_model import (
+ GetPhoneNumberInboundSipTrunkConfigResponseModel,
+)
+from ....types.get_phone_number_outbound_sip_trunk_config_response_model import (
+ GetPhoneNumberOutboundSipTrunkConfigResponseModel,
+)
from ....types.phone_number_agent_info import PhoneNumberAgentInfo
-from ....types.sip_trunk_config_response_model import SipTrunkConfigResponseModel
class PhoneNumbersGetResponse_Twilio(UncheckedBaseModel):
@@ -35,7 +40,9 @@ class PhoneNumbersGetResponse_SipTrunk(UncheckedBaseModel):
label: str
phone_number_id: str
assigned_agent: typing.Optional[PhoneNumberAgentInfo] = None
- provider_config: typing.Optional[SipTrunkConfigResponseModel] = None
+ provider_config: typing.Optional[GetPhoneNumberOutboundSipTrunkConfigResponseModel] = None
+ outbound_trunk: typing.Optional[GetPhoneNumberOutboundSipTrunkConfigResponseModel] = None
+ inbound_trunk: typing.Optional[GetPhoneNumberInboundSipTrunkConfigResponseModel] = 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/conversational_ai/phone_numbers/types/phone_numbers_list_response_item.py b/src/elevenlabs/conversational_ai/phone_numbers/types/phone_numbers_list_response_item.py
index 78dce652..27d1b78c 100644
--- a/src/elevenlabs/conversational_ai/phone_numbers/types/phone_numbers_list_response_item.py
+++ b/src/elevenlabs/conversational_ai/phone_numbers/types/phone_numbers_list_response_item.py
@@ -8,8 +8,13 @@
import typing_extensions
from ....core.pydantic_utilities import IS_PYDANTIC_V2
from ....core.unchecked_base_model import UncheckedBaseModel, UnionMetadata
+from ....types.get_phone_number_inbound_sip_trunk_config_response_model import (
+ GetPhoneNumberInboundSipTrunkConfigResponseModel,
+)
+from ....types.get_phone_number_outbound_sip_trunk_config_response_model import (
+ GetPhoneNumberOutboundSipTrunkConfigResponseModel,
+)
from ....types.phone_number_agent_info import PhoneNumberAgentInfo
-from ....types.sip_trunk_config_response_model import SipTrunkConfigResponseModel
class PhoneNumbersListResponseItem_Twilio(UncheckedBaseModel):
@@ -35,7 +40,9 @@ class PhoneNumbersListResponseItem_SipTrunk(UncheckedBaseModel):
label: str
phone_number_id: str
assigned_agent: typing.Optional[PhoneNumberAgentInfo] = None
- provider_config: typing.Optional[SipTrunkConfigResponseModel] = None
+ provider_config: typing.Optional[GetPhoneNumberOutboundSipTrunkConfigResponseModel] = None
+ outbound_trunk: typing.Optional[GetPhoneNumberOutboundSipTrunkConfigResponseModel] = None
+ inbound_trunk: typing.Optional[GetPhoneNumberInboundSipTrunkConfigResponseModel] = 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/conversational_ai/phone_numbers/types/phone_numbers_update_response.py b/src/elevenlabs/conversational_ai/phone_numbers/types/phone_numbers_update_response.py
index bd57ad95..c01bbc39 100644
--- a/src/elevenlabs/conversational_ai/phone_numbers/types/phone_numbers_update_response.py
+++ b/src/elevenlabs/conversational_ai/phone_numbers/types/phone_numbers_update_response.py
@@ -8,8 +8,13 @@
import typing_extensions
from ....core.pydantic_utilities import IS_PYDANTIC_V2
from ....core.unchecked_base_model import UncheckedBaseModel, UnionMetadata
+from ....types.get_phone_number_inbound_sip_trunk_config_response_model import (
+ GetPhoneNumberInboundSipTrunkConfigResponseModel,
+)
+from ....types.get_phone_number_outbound_sip_trunk_config_response_model import (
+ GetPhoneNumberOutboundSipTrunkConfigResponseModel,
+)
from ....types.phone_number_agent_info import PhoneNumberAgentInfo
-from ....types.sip_trunk_config_response_model import SipTrunkConfigResponseModel
class PhoneNumbersUpdateResponse_Twilio(UncheckedBaseModel):
@@ -35,7 +40,9 @@ class PhoneNumbersUpdateResponse_SipTrunk(UncheckedBaseModel):
label: str
phone_number_id: str
assigned_agent: typing.Optional[PhoneNumberAgentInfo] = None
- provider_config: typing.Optional[SipTrunkConfigResponseModel] = None
+ provider_config: typing.Optional[GetPhoneNumberOutboundSipTrunkConfigResponseModel] = None
+ outbound_trunk: typing.Optional[GetPhoneNumberOutboundSipTrunkConfigResponseModel] = None
+ inbound_trunk: typing.Optional[GetPhoneNumberInboundSipTrunkConfigResponseModel] = 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/core/client_wrapper.py b/src/elevenlabs/core/client_wrapper.py
index ee78d3e7..0207324b 100644
--- a/src/elevenlabs/core/client_wrapper.py
+++ b/src/elevenlabs/core/client_wrapper.py
@@ -21,10 +21,10 @@ def __init__(
def get_headers(self) -> typing.Dict[str, str]:
headers: typing.Dict[str, str] = {
- "User-Agent": "elevenlabs/v2.6.0",
+ "User-Agent": "elevenlabs/v2.7.0",
"X-Fern-Language": "Python",
"X-Fern-SDK-Name": "elevenlabs",
- "X-Fern-SDK-Version": "v2.6.0",
+ "X-Fern-SDK-Version": "v2.7.0",
}
if self._api_key is not None:
headers["xi-api-key"] = self._api_key
diff --git a/src/elevenlabs/types/__init__.py b/src/elevenlabs/types/__init__.py
index 3712ae42..6b2ac6eb 100644
--- a/src/elevenlabs/types/__init__.py
+++ b/src/elevenlabs/types/__init__.py
@@ -171,6 +171,7 @@
from .conversation_deletion_settings import ConversationDeletionSettings
from .conversation_history_analysis_common_model import ConversationHistoryAnalysisCommonModel
from .conversation_history_batch_call_model import ConversationHistoryBatchCallModel
+from .conversation_history_eleven_assistant_common_model import ConversationHistoryElevenAssistantCommonModel
from .conversation_history_error_common_model import ConversationHistoryErrorCommonModel
from .conversation_history_evaluation_criteria_result_common_model import (
ConversationHistoryEvaluationCriteriaResultCommonModel,
@@ -202,8 +203,10 @@
from .conversation_history_transcript_tool_call_common_model_tool_details import (
ConversationHistoryTranscriptToolCallCommonModelToolDetails,
ConversationHistoryTranscriptToolCallCommonModelToolDetails_Client,
+ ConversationHistoryTranscriptToolCallCommonModelToolDetails_Mcp,
ConversationHistoryTranscriptToolCallCommonModelToolDetails_Webhook,
)
+from .conversation_history_transcript_tool_call_mcp_details import ConversationHistoryTranscriptToolCallMcpDetails
from .conversation_history_transcript_tool_call_webhook_details import (
ConversationHistoryTranscriptToolCallWebhookDetails,
)
@@ -246,7 +249,7 @@
from .create_phone_number_response_model import CreatePhoneNumberResponseModel
from .create_previously_generated_voice_request import CreatePreviouslyGeneratedVoiceRequest
from .create_pronunciation_dictionary_response_model import CreatePronunciationDictionaryResponseModel
-from .create_sip_trunk_phone_number_request import CreateSipTrunkPhoneNumberRequest
+from .create_sip_trunk_phone_number_request_v_2 import CreateSipTrunkPhoneNumberRequestV2
from .create_transcript_request import CreateTranscriptRequest
from .create_twilio_phone_number_request import CreateTwilioPhoneNumberRequest
from .custom_llm import CustomLlm
@@ -388,6 +391,8 @@
from .get_knowledge_base_text_response_model import GetKnowledgeBaseTextResponseModel
from .get_knowledge_base_url_response_model import GetKnowledgeBaseUrlResponseModel
from .get_library_voices_response import GetLibraryVoicesResponse
+from .get_phone_number_inbound_sip_trunk_config_response_model import GetPhoneNumberInboundSipTrunkConfigResponseModel
+from .get_phone_number_outbound_sip_trunk_config_response_model import GetPhoneNumberOutboundSipTrunkConfigResponseModel
from .get_phone_number_response import GetPhoneNumberResponse
from .get_phone_number_sip_trunk_response_model import GetPhoneNumberSipTrunkResponseModel
from .get_phone_number_twilio_response_model import GetPhoneNumberTwilioResponseModel
@@ -417,6 +422,7 @@
from .html_export_options import HtmlExportOptions
from .http_validation_error import HttpValidationError
from .image_avatar import ImageAvatar
+from .inbound_sip_trunk_config_request_model import InboundSipTrunkConfigRequestModel
from .initialise_context import InitialiseContext
from .initialize_connection import InitializeConnection
from .initialize_connection_multi import InitializeConnectionMulti
@@ -488,10 +494,17 @@
from .orb_avatar import OrbAvatar
from .outbound_call_recipient import OutboundCallRecipient
from .outbound_call_recipient_response_model import OutboundCallRecipientResponseModel
+from .outbound_sip_trunk_config_request_model import OutboundSipTrunkConfigRequestModel
from .output_format import OutputFormat
from .pdf_export_options import PdfExportOptions
from .phone_number_agent_info import PhoneNumberAgentInfo
from .phone_number_transfer import PhoneNumberTransfer
+from .phone_number_transfer_destination import PhoneNumberTransferDestination
+from .phone_number_transfer_transfer_destination import (
+ PhoneNumberTransferTransferDestination,
+ PhoneNumberTransferTransferDestination_Phone,
+ PhoneNumberTransferTransferDestination_SipUri,
+)
from .play_dtmf_tool_config import PlayDtmfToolConfig
from .podcast_bulletin_mode import PodcastBulletinMode
from .podcast_bulletin_mode_data import PodcastBulletinModeData
@@ -597,10 +610,10 @@
from .similar_voice_category import SimilarVoiceCategory
from .similar_voices_for_speaker_response import SimilarVoicesForSpeakerResponse
from .sip_media_encryption_enum import SipMediaEncryptionEnum
-from .sip_trunk_config_response_model import SipTrunkConfigResponseModel
-from .sip_trunk_credentials import SipTrunkCredentials
+from .sip_trunk_credentials_request_model import SipTrunkCredentialsRequestModel
from .sip_trunk_outbound_call_response import SipTrunkOutboundCallResponse
from .sip_trunk_transport_enum import SipTrunkTransportEnum
+from .sip_uri_transfer_destination import SipUriTransferDestination
from .skip_turn_tool_config import SkipTurnToolConfig
from .speaker_audio_response_model import SpeakerAudioResponseModel
from .speaker_response_model import SpeakerResponseModel
@@ -674,7 +687,9 @@
)
from .tools_response_model import ToolsResponseModel
from .transfer_to_agent_tool_config import TransferToAgentToolConfig
-from .transfer_to_number_tool_config import TransferToNumberToolConfig
+from .transfer_to_number_tool_config_input import TransferToNumberToolConfigInput
+from .transfer_to_number_tool_config_output import TransferToNumberToolConfigOutput
+from .transfer_type_enum import TransferTypeEnum
from .tts_conversational_config_input import TtsConversationalConfigInput
from .tts_conversational_config_output import TtsConversationalConfigOutput
from .tts_conversational_config_override import TtsConversationalConfigOverride
@@ -902,6 +917,7 @@
"ConversationDeletionSettings",
"ConversationHistoryAnalysisCommonModel",
"ConversationHistoryBatchCallModel",
+ "ConversationHistoryElevenAssistantCommonModel",
"ConversationHistoryErrorCommonModel",
"ConversationHistoryEvaluationCriteriaResultCommonModel",
"ConversationHistoryFeedbackCommonModel",
@@ -922,7 +938,9 @@
"ConversationHistoryTranscriptToolCallCommonModel",
"ConversationHistoryTranscriptToolCallCommonModelToolDetails",
"ConversationHistoryTranscriptToolCallCommonModelToolDetails_Client",
+ "ConversationHistoryTranscriptToolCallCommonModelToolDetails_Mcp",
"ConversationHistoryTranscriptToolCallCommonModelToolDetails_Webhook",
+ "ConversationHistoryTranscriptToolCallMcpDetails",
"ConversationHistoryTranscriptToolCallWebhookDetails",
"ConversationHistoryTranscriptToolResultCommonModel",
"ConversationHistoryTwilioPhoneCallModel",
@@ -953,7 +971,7 @@
"CreatePhoneNumberResponseModel",
"CreatePreviouslyGeneratedVoiceRequest",
"CreatePronunciationDictionaryResponseModel",
- "CreateSipTrunkPhoneNumberRequest",
+ "CreateSipTrunkPhoneNumberRequestV2",
"CreateTranscriptRequest",
"CreateTwilioPhoneNumberRequest",
"CustomLlm",
@@ -1075,6 +1093,8 @@
"GetKnowledgeBaseTextResponseModel",
"GetKnowledgeBaseUrlResponseModel",
"GetLibraryVoicesResponse",
+ "GetPhoneNumberInboundSipTrunkConfigResponseModel",
+ "GetPhoneNumberOutboundSipTrunkConfigResponseModel",
"GetPhoneNumberResponse",
"GetPhoneNumberSipTrunkResponseModel",
"GetPhoneNumberTwilioResponseModel",
@@ -1100,6 +1120,7 @@
"HtmlExportOptions",
"HttpValidationError",
"ImageAvatar",
+ "InboundSipTrunkConfigRequestModel",
"InitialiseContext",
"InitializeConnection",
"InitializeConnectionMulti",
@@ -1169,10 +1190,15 @@
"OrbAvatar",
"OutboundCallRecipient",
"OutboundCallRecipientResponseModel",
+ "OutboundSipTrunkConfigRequestModel",
"OutputFormat",
"PdfExportOptions",
"PhoneNumberAgentInfo",
"PhoneNumberTransfer",
+ "PhoneNumberTransferDestination",
+ "PhoneNumberTransferTransferDestination",
+ "PhoneNumberTransferTransferDestination_Phone",
+ "PhoneNumberTransferTransferDestination_SipUri",
"PlayDtmfToolConfig",
"PodcastBulletinMode",
"PodcastBulletinModeData",
@@ -1272,10 +1298,10 @@
"SimilarVoiceCategory",
"SimilarVoicesForSpeakerResponse",
"SipMediaEncryptionEnum",
- "SipTrunkConfigResponseModel",
- "SipTrunkCredentials",
+ "SipTrunkCredentialsRequestModel",
"SipTrunkOutboundCallResponse",
"SipTrunkTransportEnum",
+ "SipUriTransferDestination",
"SkipTurnToolConfig",
"SpeakerAudioResponseModel",
"SpeakerResponseModel",
@@ -1341,7 +1367,9 @@
"ToolResponseModelToolConfig_Webhook",
"ToolsResponseModel",
"TransferToAgentToolConfig",
- "TransferToNumberToolConfig",
+ "TransferToNumberToolConfigInput",
+ "TransferToNumberToolConfigOutput",
+ "TransferTypeEnum",
"TtsConversationalConfigInput",
"TtsConversationalConfigOutput",
"TtsConversationalConfigOverride",
diff --git a/src/elevenlabs/types/agent_config.py b/src/elevenlabs/types/agent_config.py
index b0c75513..a684411f 100644
--- a/src/elevenlabs/types/agent_config.py
+++ b/src/elevenlabs/types/agent_config.py
@@ -2,36 +2,4 @@
import typing
-import pydantic
-from ..core.pydantic_utilities import IS_PYDANTIC_V2
-from ..core.unchecked_base_model import UncheckedBaseModel
-from .dynamic_variables_config import DynamicVariablesConfig
-from .prompt_agent_db_model import PromptAgentDbModel
-
-
-class AgentConfig(UncheckedBaseModel):
- first_message: typing.Optional[str] = pydantic.Field(default=None)
- """
- If non-empty, the first message the agent will say. If empty, the agent waits for the user to start the discussion.
- """
-
- language: typing.Optional[str] = pydantic.Field(default=None)
- """
- Language of the agent - used for ASR and TTS
- """
-
- dynamic_variables: typing.Optional[DynamicVariablesConfig] = pydantic.Field(default=None)
- """
- Configuration for dynamic variables
- """
-
- prompt: typing.Optional[PromptAgentDbModel] = 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
+AgentConfig = typing.Optional[typing.Any]
diff --git a/src/elevenlabs/types/conv_ai_webhooks.py b/src/elevenlabs/types/conv_ai_webhooks.py
index b21e043b..51acad3b 100644
--- a/src/elevenlabs/types/conv_ai_webhooks.py
+++ b/src/elevenlabs/types/conv_ai_webhooks.py
@@ -9,6 +9,10 @@
class ConvAiWebhooks(UncheckedBaseModel):
post_call_webhook_id: typing.Optional[str] = None
+ send_audio: typing.Optional[bool] = pydantic.Field(default=None)
+ """
+ Whether to send audio data with post-call webhooks for ConvAI conversations
+ """
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/conversation_history_eleven_assistant_common_model.py b/src/elevenlabs/types/conversation_history_eleven_assistant_common_model.py
new file mode 100644
index 00000000..9f76bbcc
--- /dev/null
+++ b/src/elevenlabs/types/conversation_history_eleven_assistant_common_model.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 ConversationHistoryElevenAssistantCommonModel(UncheckedBaseModel):
+ is_eleven_assistant: typing.Optional[bool] = None
+
+ if IS_PYDANTIC_V2:
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
+ else:
+
+ class Config:
+ frozen = True
+ smart_union = True
+ extra = pydantic.Extra.allow
diff --git a/src/elevenlabs/types/conversation_history_metadata_common_model.py b/src/elevenlabs/types/conversation_history_metadata_common_model.py
index b97ce538..88bc2a5c 100644
--- a/src/elevenlabs/types/conversation_history_metadata_common_model.py
+++ b/src/elevenlabs/types/conversation_history_metadata_common_model.py
@@ -9,6 +9,7 @@
from .conversation_charging_common_model import ConversationChargingCommonModel
from .conversation_deletion_settings import ConversationDeletionSettings
from .conversation_history_batch_call_model import ConversationHistoryBatchCallModel
+from .conversation_history_eleven_assistant_common_model import ConversationHistoryElevenAssistantCommonModel
from .conversation_history_error_common_model import ConversationHistoryErrorCommonModel
from .conversation_history_feedback_common_model import ConversationHistoryFeedbackCommonModel
from .conversation_history_metadata_common_model_phone_call import ConversationHistoryMetadataCommonModelPhoneCall
@@ -33,6 +34,7 @@ class ConversationHistoryMetadataCommonModel(UncheckedBaseModel):
rag_usage: typing.Optional[ConversationHistoryRagUsageCommonModel] = None
text_only: typing.Optional[bool] = None
features_usage: typing.Optional[FeaturesUsageCommonModel] = None
+ eleven_assistant: typing.Optional[ConversationHistoryElevenAssistantCommonModel] = 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/conversation_history_transcript_tool_call_common_model_tool_details.py b/src/elevenlabs/types/conversation_history_transcript_tool_call_common_model_tool_details.py
index e5b3a107..e34cde2e 100644
--- a/src/elevenlabs/types/conversation_history_transcript_tool_call_common_model_tool_details.py
+++ b/src/elevenlabs/types/conversation_history_transcript_tool_call_common_model_tool_details.py
@@ -24,6 +24,27 @@ class Config:
extra = pydantic.Extra.allow
+class ConversationHistoryTranscriptToolCallCommonModelToolDetails_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 ConversationHistoryTranscriptToolCallCommonModelToolDetails_Webhook(UncheckedBaseModel):
type: typing.Literal["webhook"] = "webhook"
method: str
@@ -46,6 +67,7 @@ class Config:
ConversationHistoryTranscriptToolCallCommonModelToolDetails = typing_extensions.Annotated[
typing.Union[
ConversationHistoryTranscriptToolCallCommonModelToolDetails_Client,
+ ConversationHistoryTranscriptToolCallCommonModelToolDetails_Mcp,
ConversationHistoryTranscriptToolCallCommonModelToolDetails_Webhook,
],
UnionMetadata(discriminant="type"),
diff --git a/src/elevenlabs/types/conversation_history_transcript_tool_call_mcp_details.py b/src/elevenlabs/types/conversation_history_transcript_tool_call_mcp_details.py
new file mode 100644
index 00000000..ed898ae1
--- /dev/null
+++ b/src/elevenlabs/types/conversation_history_transcript_tool_call_mcp_details.py
@@ -0,0 +1,27 @@
+# This file was auto-generated by Fern from our API Definition.
+
+import typing
+
+import pydantic
+from ..core.pydantic_utilities import IS_PYDANTIC_V2
+from ..core.unchecked_base_model import UncheckedBaseModel
+
+
+class ConversationHistoryTranscriptToolCallMcpDetails(UncheckedBaseModel):
+ 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
diff --git a/src/elevenlabs/types/create_sip_trunk_phone_number_request_v_2.py b/src/elevenlabs/types/create_sip_trunk_phone_number_request_v_2.py
new file mode 100644
index 00000000..d7a5b4f7
--- /dev/null
+++ b/src/elevenlabs/types/create_sip_trunk_phone_number_request_v_2.py
@@ -0,0 +1,33 @@
+# 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 .inbound_sip_trunk_config_request_model import InboundSipTrunkConfigRequestModel
+from .outbound_sip_trunk_config_request_model import OutboundSipTrunkConfigRequestModel
+
+
+class CreateSipTrunkPhoneNumberRequestV2(UncheckedBaseModel):
+ phone_number: str = pydantic.Field()
+ """
+ Phone number
+ """
+
+ label: str = pydantic.Field()
+ """
+ Label for the phone number
+ """
+
+ inbound_trunk_config: typing.Optional[InboundSipTrunkConfigRequestModel] = None
+ outbound_trunk_config: typing.Optional[OutboundSipTrunkConfigRequestModel] = 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/get_agent_response_model_phone_numbers_item.py b/src/elevenlabs/types/get_agent_response_model_phone_numbers_item.py
index 05c8a22a..fe495cbe 100644
--- a/src/elevenlabs/types/get_agent_response_model_phone_numbers_item.py
+++ b/src/elevenlabs/types/get_agent_response_model_phone_numbers_item.py
@@ -8,8 +8,9 @@
import typing_extensions
from ..core.pydantic_utilities import IS_PYDANTIC_V2
from ..core.unchecked_base_model import UncheckedBaseModel, UnionMetadata
+from .get_phone_number_inbound_sip_trunk_config_response_model import GetPhoneNumberInboundSipTrunkConfigResponseModel
+from .get_phone_number_outbound_sip_trunk_config_response_model import GetPhoneNumberOutboundSipTrunkConfigResponseModel
from .phone_number_agent_info import PhoneNumberAgentInfo
-from .sip_trunk_config_response_model import SipTrunkConfigResponseModel
class GetAgentResponseModelPhoneNumbersItem_SipTrunk(UncheckedBaseModel):
@@ -18,7 +19,9 @@ class GetAgentResponseModelPhoneNumbersItem_SipTrunk(UncheckedBaseModel):
label: str
phone_number_id: str
assigned_agent: typing.Optional[PhoneNumberAgentInfo] = None
- provider_config: typing.Optional[SipTrunkConfigResponseModel] = None
+ provider_config: typing.Optional[GetPhoneNumberOutboundSipTrunkConfigResponseModel] = None
+ outbound_trunk: typing.Optional[GetPhoneNumberOutboundSipTrunkConfigResponseModel] = None
+ inbound_trunk: typing.Optional[GetPhoneNumberInboundSipTrunkConfigResponseModel] = 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_phone_number_inbound_sip_trunk_config_response_model.py b/src/elevenlabs/types/get_phone_number_inbound_sip_trunk_config_response_model.py
new file mode 100644
index 00000000..5c6ba9b0
--- /dev/null
+++ b/src/elevenlabs/types/get_phone_number_inbound_sip_trunk_config_response_model.py
@@ -0,0 +1,40 @@
+# 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 .sip_media_encryption_enum import SipMediaEncryptionEnum
+
+
+class GetPhoneNumberInboundSipTrunkConfigResponseModel(UncheckedBaseModel):
+ allowed_addresses: typing.List[str] = pydantic.Field()
+ """
+ List of IP addresses that are allowed to use the trunk. Each item in the list can be an individual IP address or a Classless Inter-Domain Routing notation representing a CIDR block.
+ """
+
+ allowed_numbers: typing.Optional[typing.List[str]] = pydantic.Field(default=None)
+ """
+ List of phone numbers that are allowed to use the trunk.
+ """
+
+ media_encryption: SipMediaEncryptionEnum
+ has_auth_credentials: bool = pydantic.Field()
+ """
+ Whether authentication credentials are configured
+ """
+
+ username: typing.Optional[str] = pydantic.Field(default=None)
+ """
+ SIP trunk username (if available)
+ """
+
+ 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/sip_trunk_config_response_model.py b/src/elevenlabs/types/get_phone_number_outbound_sip_trunk_config_response_model.py
similarity index 95%
rename from src/elevenlabs/types/sip_trunk_config_response_model.py
rename to src/elevenlabs/types/get_phone_number_outbound_sip_trunk_config_response_model.py
index 159faf5d..14e00b03 100644
--- a/src/elevenlabs/types/sip_trunk_config_response_model.py
+++ b/src/elevenlabs/types/get_phone_number_outbound_sip_trunk_config_response_model.py
@@ -9,7 +9,7 @@
from .sip_trunk_transport_enum import SipTrunkTransportEnum
-class SipTrunkConfigResponseModel(UncheckedBaseModel):
+class GetPhoneNumberOutboundSipTrunkConfigResponseModel(UncheckedBaseModel):
"""
SIP Trunk configuration details for a phone number
"""
diff --git a/src/elevenlabs/types/get_phone_number_sip_trunk_response_model.py b/src/elevenlabs/types/get_phone_number_sip_trunk_response_model.py
index 2c96691b..8a3a394c 100644
--- a/src/elevenlabs/types/get_phone_number_sip_trunk_response_model.py
+++ b/src/elevenlabs/types/get_phone_number_sip_trunk_response_model.py
@@ -5,8 +5,9 @@
import pydantic
from ..core.pydantic_utilities import IS_PYDANTIC_V2
from ..core.unchecked_base_model import UncheckedBaseModel
+from .get_phone_number_inbound_sip_trunk_config_response_model import GetPhoneNumberInboundSipTrunkConfigResponseModel
+from .get_phone_number_outbound_sip_trunk_config_response_model import GetPhoneNumberOutboundSipTrunkConfigResponseModel
from .phone_number_agent_info import PhoneNumberAgentInfo
-from .sip_trunk_config_response_model import SipTrunkConfigResponseModel
class GetPhoneNumberSipTrunkResponseModel(UncheckedBaseModel):
@@ -30,7 +31,16 @@ class GetPhoneNumberSipTrunkResponseModel(UncheckedBaseModel):
The agent that is assigned to the phone number
"""
- provider_config: typing.Optional[SipTrunkConfigResponseModel] = None
+ provider_config: typing.Optional[GetPhoneNumberOutboundSipTrunkConfigResponseModel] = None
+ outbound_trunk: typing.Optional[GetPhoneNumberOutboundSipTrunkConfigResponseModel] = pydantic.Field(default=None)
+ """
+ Configuration of the Outbound SIP trunk - if configured.
+ """
+
+ inbound_trunk: typing.Optional[GetPhoneNumberInboundSipTrunkConfigResponseModel] = pydantic.Field(default=None)
+ """
+ Configuration of the Inbound SIP trunk - if configured.
+ """
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/inbound_sip_trunk_config_request_model.py b/src/elevenlabs/types/inbound_sip_trunk_config_request_model.py
new file mode 100644
index 00000000..f37896fd
--- /dev/null
+++ b/src/elevenlabs/types/inbound_sip_trunk_config_request_model.py
@@ -0,0 +1,40 @@
+# 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 .sip_media_encryption_enum import SipMediaEncryptionEnum
+from .sip_trunk_credentials_request_model import SipTrunkCredentialsRequestModel
+
+
+class InboundSipTrunkConfigRequestModel(UncheckedBaseModel):
+ allowed_addresses: typing.Optional[typing.List[str]] = pydantic.Field(default=None)
+ """
+ List of IP addresses that are allowed to use the trunk. Each item in the list can be an individual IP address or a Classless Inter-Domain Routing notation representing a CIDR block.
+ """
+
+ allowed_numbers: typing.Optional[typing.List[str]] = pydantic.Field(default=None)
+ """
+ List of phone numbers that are allowed to use the trunk.
+ """
+
+ media_encryption: typing.Optional[SipMediaEncryptionEnum] = pydantic.Field(default=None)
+ """
+ Whether or not to encrypt media (data layer).
+ """
+
+ credentials: typing.Optional[SipTrunkCredentialsRequestModel] = pydantic.Field(default=None)
+ """
+ Optional digest authentication credentials (username/password).
+ """
+
+ if IS_PYDANTIC_V2:
+ model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2
+ else:
+
+ class Config:
+ frozen = True
+ smart_union = True
+ extra = pydantic.Extra.allow
diff --git a/src/elevenlabs/types/create_sip_trunk_phone_number_request.py b/src/elevenlabs/types/outbound_sip_trunk_config_request_model.py
similarity index 56%
rename from src/elevenlabs/types/create_sip_trunk_phone_number_request.py
rename to src/elevenlabs/types/outbound_sip_trunk_config_request_model.py
index 4ac437e1..9f39b127 100644
--- a/src/elevenlabs/types/create_sip_trunk_phone_number_request.py
+++ b/src/elevenlabs/types/outbound_sip_trunk_config_request_model.py
@@ -6,35 +6,12 @@
from ..core.pydantic_utilities import IS_PYDANTIC_V2
from ..core.unchecked_base_model import UncheckedBaseModel
from .sip_media_encryption_enum import SipMediaEncryptionEnum
-from .sip_trunk_credentials import SipTrunkCredentials
+from .sip_trunk_credentials_request_model import SipTrunkCredentialsRequestModel
from .sip_trunk_transport_enum import SipTrunkTransportEnum
-class CreateSipTrunkPhoneNumberRequest(UncheckedBaseModel):
- """
- SIP trunk phone number request
-
- Includes termination URI and optional digest authentication credentials.
- If credentials are provided, both username and password must be included.
- If credentials are not provided, ACL authentication is assumed. (user needs to add our ips in their settings)
- """
-
- phone_number: str = pydantic.Field()
- """
- Phone number
- """
-
- label: str = pydantic.Field()
- """
- Label for the phone number
- """
-
- termination_uri: str = pydantic.Field()
- """
- SIP trunk termination URI
- """
-
- address: typing.Optional[str] = pydantic.Field(default=None)
+class OutboundSipTrunkConfigRequestModel(UncheckedBaseModel):
+ address: str = pydantic.Field()
"""
Hostname or IP the SIP INVITE is sent to.
"""
@@ -49,17 +26,12 @@ class CreateSipTrunkPhoneNumberRequest(UncheckedBaseModel):
Whether or not to encrypt media (data layer).
"""
- inbound_media_encryption: typing.Optional[SipMediaEncryptionEnum] = pydantic.Field(default=None)
- """
- Whether or not to encrypt media (data layer) for inbound calls.
- """
-
headers: typing.Optional[typing.Dict[str, str]] = pydantic.Field(default=None)
"""
SIP X-* headers for INVITE request. These headers are sent as-is and may help identify this call.
"""
- credentials: typing.Optional[SipTrunkCredentials] = pydantic.Field(default=None)
+ credentials: typing.Optional[SipTrunkCredentialsRequestModel] = pydantic.Field(default=None)
"""
Optional digest authentication credentials (username/password). If not provided, ACL authentication is assumed.
"""
diff --git a/src/elevenlabs/types/phone_number_transfer.py b/src/elevenlabs/types/phone_number_transfer.py
index 74258c17..174772b7 100644
--- a/src/elevenlabs/types/phone_number_transfer.py
+++ b/src/elevenlabs/types/phone_number_transfer.py
@@ -5,11 +5,15 @@
import pydantic
from ..core.pydantic_utilities import IS_PYDANTIC_V2
from ..core.unchecked_base_model import UncheckedBaseModel
+from .phone_number_transfer_transfer_destination import PhoneNumberTransferTransferDestination
+from .transfer_type_enum import TransferTypeEnum
class PhoneNumberTransfer(UncheckedBaseModel):
- phone_number: str
+ transfer_destination: typing.Optional[PhoneNumberTransferTransferDestination] = None
+ phone_number: typing.Optional[str] = None
condition: str
+ transfer_type: typing.Optional[TransferTypeEnum] = 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/phone_number_transfer_destination.py b/src/elevenlabs/types/phone_number_transfer_destination.py
new file mode 100644
index 00000000..05db276c
--- /dev/null
+++ b/src/elevenlabs/types/phone_number_transfer_destination.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 PhoneNumberTransferDestination(UncheckedBaseModel):
+ phone_number: 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
diff --git a/src/elevenlabs/types/phone_number_transfer_transfer_destination.py b/src/elevenlabs/types/phone_number_transfer_transfer_destination.py
new file mode 100644
index 00000000..6c0765d1
--- /dev/null
+++ b/src/elevenlabs/types/phone_number_transfer_transfer_destination.py
@@ -0,0 +1,44 @@
+# 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
+
+
+class PhoneNumberTransferTransferDestination_Phone(UncheckedBaseModel):
+ type: typing.Literal["phone"] = "phone"
+ phone_number: 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 PhoneNumberTransferTransferDestination_SipUri(UncheckedBaseModel):
+ type: typing.Literal["sip_uri"] = "sip_uri"
+ sip_uri: 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
+
+
+PhoneNumberTransferTransferDestination = typing_extensions.Annotated[
+ typing.Union[PhoneNumberTransferTransferDestination_Phone, PhoneNumberTransferTransferDestination_SipUri],
+ UnionMetadata(discriminant="type"),
+]
diff --git a/src/elevenlabs/types/prompt_agent_db_model.py b/src/elevenlabs/types/prompt_agent_db_model.py
index b0aef6a1..ba6ae76d 100644
--- a/src/elevenlabs/types/prompt_agent_db_model.py
+++ b/src/elevenlabs/types/prompt_agent_db_model.py
@@ -5,75 +5,9 @@
import pydantic
from ..core.pydantic_utilities import IS_PYDANTIC_V2
from ..core.unchecked_base_model import UncheckedBaseModel
-from .built_in_tools_input import BuiltInToolsInput
-from .custom_llm import CustomLlm
-from .knowledge_base_locator import KnowledgeBaseLocator
-from .llm import Llm
-from .rag_config import RagConfig
class PromptAgentDbModel(UncheckedBaseModel):
- prompt: typing.Optional[str] = pydantic.Field(default=None)
- """
- The prompt for the agent
- """
-
- llm: typing.Optional[Llm] = pydantic.Field(default=None)
- """
- The LLM to query with the prompt and the chat history
- """
-
- temperature: typing.Optional[float] = pydantic.Field(default=None)
- """
- The temperature for the LLM
- """
-
- max_tokens: typing.Optional[int] = pydantic.Field(default=None)
- """
- If greater than 0, maximum number of tokens the LLM can predict
- """
-
- tool_ids: typing.Optional[typing.List[str]] = pydantic.Field(default=None)
- """
- A list of IDs of tools used by the agent
- """
-
- built_in_tools: typing.Optional[BuiltInToolsInput] = pydantic.Field(default=None)
- """
- Built-in system tools to be used by the agent
- """
-
- mcp_server_ids: typing.Optional[typing.List[str]] = pydantic.Field(default=None)
- """
- A list of MCP server ids to be used by the agent
- """
-
- native_mcp_server_ids: typing.Optional[typing.List[str]] = pydantic.Field(default=None)
- """
- A list of Native MCP server ids to be used by the agent
- """
-
- knowledge_base: typing.Optional[typing.List[KnowledgeBaseLocator]] = pydantic.Field(default=None)
- """
- A list of knowledge bases to be used by the agent
- """
-
- custom_llm: typing.Optional[CustomLlm] = pydantic.Field(default=None)
- """
- Definition for a custom LLM if LLM field is set to 'CUSTOM_LLM'
- """
-
- ignore_default_personality: typing.Optional[bool] = pydantic.Field(default=None)
- """
- Whether to ignore the default personality
- """
-
- rag: typing.Optional[RagConfig] = pydantic.Field(default=None)
- """
- Configuration for RAG
- """
-
- knowledge_base_document_ids: typing.Optional[typing.List[str]] = None
tools: typing.Optional[typing.Optional[typing.Any]] = None
if IS_PYDANTIC_V2:
diff --git a/src/elevenlabs/types/sip_trunk_credentials.py b/src/elevenlabs/types/sip_trunk_credentials_request_model.py
similarity index 91%
rename from src/elevenlabs/types/sip_trunk_credentials.py
rename to src/elevenlabs/types/sip_trunk_credentials_request_model.py
index 173eb6e9..780a2f81 100644
--- a/src/elevenlabs/types/sip_trunk_credentials.py
+++ b/src/elevenlabs/types/sip_trunk_credentials_request_model.py
@@ -7,7 +7,7 @@
from ..core.unchecked_base_model import UncheckedBaseModel
-class SipTrunkCredentials(UncheckedBaseModel):
+class SipTrunkCredentialsRequestModel(UncheckedBaseModel):
username: str = pydantic.Field()
"""
SIP trunk username
diff --git a/src/elevenlabs/types/sip_uri_transfer_destination.py b/src/elevenlabs/types/sip_uri_transfer_destination.py
new file mode 100644
index 00000000..5dae82b0
--- /dev/null
+++ b/src/elevenlabs/types/sip_uri_transfer_destination.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 SipUriTransferDestination(UncheckedBaseModel):
+ sip_uri: 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
diff --git a/src/elevenlabs/types/subscription_status_type.py b/src/elevenlabs/types/subscription_status_type.py
index 67ed5e79..a2d2478f 100644
--- a/src/elevenlabs/types/subscription_status_type.py
+++ b/src/elevenlabs/types/subscription_status_type.py
@@ -3,8 +3,5 @@
import typing
SubscriptionStatusType = typing.Union[
- typing.Literal[
- "trialing", "active", "incomplete", "incomplete_expired", "past_due", "free", "free_disabled", "canceled"
- ],
- typing.Any,
+ typing.Literal["trialing", "active", "incomplete", "past_due", "free", "free_disabled"], typing.Any
]
diff --git a/src/elevenlabs/types/transfer_to_number_tool_config.py b/src/elevenlabs/types/transfer_to_number_tool_config_input.py
similarity index 93%
rename from src/elevenlabs/types/transfer_to_number_tool_config.py
rename to src/elevenlabs/types/transfer_to_number_tool_config_input.py
index 542eaf7e..59350f52 100644
--- a/src/elevenlabs/types/transfer_to_number_tool_config.py
+++ b/src/elevenlabs/types/transfer_to_number_tool_config_input.py
@@ -8,7 +8,7 @@
from .phone_number_transfer import PhoneNumberTransfer
-class TransferToNumberToolConfig(UncheckedBaseModel):
+class TransferToNumberToolConfigInput(UncheckedBaseModel):
transfers: typing.List[PhoneNumberTransfer]
enable_client_message: typing.Optional[bool] = pydantic.Field(default=None)
"""
diff --git a/src/elevenlabs/types/transfer_to_number_tool_config_output.py b/src/elevenlabs/types/transfer_to_number_tool_config_output.py
new file mode 100644
index 00000000..2420f33e
--- /dev/null
+++ b/src/elevenlabs/types/transfer_to_number_tool_config_output.py
@@ -0,0 +1,25 @@
+# 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 .phone_number_transfer import PhoneNumberTransfer
+
+
+class TransferToNumberToolConfigOutput(UncheckedBaseModel):
+ transfers: typing.List[PhoneNumberTransfer]
+ enable_client_message: typing.Optional[bool] = pydantic.Field(default=None)
+ """
+ Whether to play a message to the client while they wait for transfer. Defaults to true for backward compatibility.
+ """
+
+ 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/transfer_type_enum.py b/src/elevenlabs/types/transfer_type_enum.py
new file mode 100644
index 00000000..50f4e86a
--- /dev/null
+++ b/src/elevenlabs/types/transfer_type_enum.py
@@ -0,0 +1,5 @@
+# This file was auto-generated by Fern from our API Definition.
+
+import typing
+
+TransferTypeEnum = typing.Union[typing.Literal["conference", "sip_refer"], typing.Any]
diff --git a/src/elevenlabs/types/widget_text_contents.py b/src/elevenlabs/types/widget_text_contents.py
index f11abb67..8eb4c140 100644
--- a/src/elevenlabs/types/widget_text_contents.py
+++ b/src/elevenlabs/types/widget_text_contents.py
@@ -18,6 +18,11 @@ class WidgetTextContents(UncheckedBaseModel):
Text and ARIA label for the start call button.
"""
+ start_chat: typing.Optional[str] = pydantic.Field(default=None)
+ """
+ Text and ARIA label for the start chat button (text only)
+ """
+
new_call: typing.Optional[str] = pydantic.Field(default=None)
"""
Text and ARIA label for the new call button. Displayed when the caller already finished at least one call in order ot start the next one.
@@ -78,6 +83,11 @@ class WidgetTextContents(UncheckedBaseModel):
Status displayed when the agent is connecting.
"""
+ chatting_status: typing.Optional[str] = pydantic.Field(default=None)
+ """
+ Status displayed when the agent is chatting (text only)
+ """
+
input_label: typing.Optional[str] = pydantic.Field(default=None)
"""
ARIA label for the text message input.
@@ -88,6 +98,16 @@ class WidgetTextContents(UncheckedBaseModel):
Placeholder text for the text message input.
"""
+ input_placeholder_text_only: typing.Optional[str] = pydantic.Field(default=None)
+ """
+ Placeholder text for the text message input (text only)
+ """
+
+ input_placeholder_new_conversation: typing.Optional[str] = pydantic.Field(default=None)
+ """
+ Placeholder text for the text message input when starting a new conversation (text only)
+ """
+
user_ended_conversation: typing.Optional[str] = pydantic.Field(default=None)
"""
Information message displayed when the user ends the conversation.
diff --git a/src/elevenlabs/types/workspace_resource_type.py b/src/elevenlabs/types/workspace_resource_type.py
index b8d65ad5..7e049bb9 100644
--- a/src/elevenlabs/types/workspace_resource_type.py
+++ b/src/elevenlabs/types/workspace_resource_type.py
@@ -19,6 +19,7 @@
"convai_phone_numbers",
"convai_mcp_servers",
"convai_batch_calls",
+ "convai_agent_response_tests",
],
typing.Any,
]
diff --git a/src/elevenlabs/workspace/invites/types/body_invite_user_v_1_workspace_invites_add_post_workspace_permission.py b/src/elevenlabs/workspace/invites/types/body_invite_user_v_1_workspace_invites_add_post_workspace_permission.py
index 56e2e635..a975ec7c 100644
--- a/src/elevenlabs/workspace/invites/types/body_invite_user_v_1_workspace_invites_add_post_workspace_permission.py
+++ b/src/elevenlabs/workspace/invites/types/body_invite_user_v_1_workspace_invites_add_post_workspace_permission.py
@@ -20,6 +20,8 @@
"workspace_migration_admin",
"human_reviewer",
"productions_admin",
+ "support",
+ "internal",
],
typing.Any,
]