diff --git a/README.md b/README.md
index e69de29..97194e4 100644
--- a/README.md
+++ b/README.md
@@ -0,0 +1,152 @@
+# Vapi Python Library
+
+[![fern shield](https://img.shields.io/badge/%F0%9F%8C%BF-Built%20with%20Fern-brightgreen)](https://buildwithfern.com?utm_source=github&utm_medium=github&utm_campaign=readme&utm_source=https%3A%2F%2Fgithub.com%2Ffern-demo%2Fvapi-python-sdk)
+[![pypi](https://img.shields.io/pypi/v/Vapi)](https://pypi.python.org/pypi/Vapi)
+
+The Vapi Python library provides convenient access to the Vapi API from Python.
+
+## Installation
+
+```sh
+pip install Vapi
+```
+
+## Reference
+
+A full reference for this library is available [here](./reference.md).
+
+## Usage
+
+Instantiate and use the client with the following:
+
+```python
+from vapi import Vapi
+
+client = Vapi(
+ token="YOUR_TOKEN",
+)
+client.calls.create()
+```
+
+## Async Client
+
+The SDK also exports an `async` client so that you can make non-blocking calls to our API.
+
+```python
+import asyncio
+
+from vapi import AsyncVapi
+
+client = AsyncVapi(
+ token="YOUR_TOKEN",
+)
+
+
+async def main() -> None:
+ await client.calls.create()
+
+
+asyncio.run(main())
+```
+
+## Exception Handling
+
+When the API returns a non-success status code (4xx or 5xx response), a subclass of the following error
+will be thrown.
+
+```python
+from vapi.core.api_error import ApiError
+
+try:
+ client.calls.create(...)
+except ApiError as e:
+ print(e.status_code)
+ print(e.body)
+```
+
+## Pagination
+
+Paginated requests will return a `SyncPager` or `AsyncPager`, which can be used as generators for the underlying object.
+
+```python
+from vapi import Vapi
+
+client = Vapi(
+ token="YOUR_TOKEN",
+)
+response = client.logs.get()
+for item in response:
+ yield item
+# alternatively, you can paginate page-by-page
+for page in response.iter_pages():
+ yield page
+```
+
+## Advanced
+
+### Retries
+
+The SDK is instrumented with automatic retries with exponential backoff. A request will be retried as long
+as the request is deemed retriable and the number of retry attempts has not grown larger than the configured
+retry limit (default: 2).
+
+A request is deemed retriable when any of the following HTTP status codes is returned:
+
+- [408](https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/408) (Timeout)
+- [429](https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/429) (Too Many Requests)
+- [5XX](https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/500) (Internal Server Errors)
+
+Use the `max_retries` request option to configure this behavior.
+
+```python
+client.calls.create(..., request_options={
+ "max_retries": 1
+})
+```
+
+### Timeouts
+
+The SDK defaults to a 60 second timeout. You can configure this with a timeout option at the client or request level.
+
+```python
+
+from vapi import Vapi
+
+client = Vapi(
+ ...,
+ timeout=20.0,
+)
+
+
+# Override timeout for a specific method
+client.calls.create(..., request_options={
+ "timeout_in_seconds": 1
+})
+```
+
+### Custom Client
+
+You can override the `httpx` client to customize it for your use-case. Some common use-cases include support for proxies
+and transports.
+```python
+import httpx
+from vapi import Vapi
+
+client = Vapi(
+ ...,
+ httpx_client=httpx.Client(
+ proxies="http://my.test.proxy.example.com",
+ transport=httpx.HTTPTransport(local_address="0.0.0.0"),
+ ),
+)
+```
+
+## Contributing
+
+While we value open-source contributions to this SDK, this library is generated programmatically.
+Additions made directly to this library would have to be moved over to our generation code,
+otherwise they would be overwritten upon the next generated release. Feel free to open a PR as
+a proof of concept, but know that we will not be able to merge it as-is. We suggest opening
+an issue first to discuss with us!
+
+On the other hand, contributions to the README are always very welcome!
diff --git a/pyproject.toml b/pyproject.toml
index fb67c18..9c9d930 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -1,6 +1,6 @@
[tool.poetry]
name = "Vapi"
-version = "0.0.0-alpha3"
+version = "0.0.0-alpha4"
description = ""
readme = "README.md"
authors = []
diff --git a/reference.md b/reference.md
new file mode 100644
index 0000000..05a7373
--- /dev/null
+++ b/reference.md
@@ -0,0 +1,3662 @@
+# Reference
+## Calls
+client.calls.list(...)
+
+-
+
+#### 🔌 Usage
+
+
+-
+
+
+-
+
+```python
+from vapi import Vapi
+
+client = Vapi(
+ token="YOUR_TOKEN",
+)
+client.calls.list()
+
+```
+
+
+
+
+
+#### ⚙️ Parameters
+
+
+-
+
+
+-
+
+**assistant_id:** `typing.Optional[str]` — This will return calls with the specified assistantId.
+
+
+
+
+
+-
+
+**limit:** `typing.Optional[float]` — This is the maximum number of items to return. Defaults to 100.
+
+
+
+
+
+-
+
+**created_at_gt:** `typing.Optional[dt.datetime]` — This will return items where the createdAt is greater than the specified value.
+
+
+
+
+
+-
+
+**created_at_lt:** `typing.Optional[dt.datetime]` — This will return items where the createdAt is less than the specified value.
+
+
+
+
+
+-
+
+**created_at_ge:** `typing.Optional[dt.datetime]` — This will return items where the createdAt is greater than or equal to the specified value.
+
+
+
+
+
+-
+
+**created_at_le:** `typing.Optional[dt.datetime]` — This will return items where the createdAt is less than or equal to the specified value.
+
+
+
+
+
+-
+
+**updated_at_gt:** `typing.Optional[dt.datetime]` — This will return items where the updatedAt is greater than the specified value.
+
+
+
+
+
+-
+
+**updated_at_lt:** `typing.Optional[dt.datetime]` — This will return items where the updatedAt is less than the specified value.
+
+
+
+
+
+-
+
+**updated_at_ge:** `typing.Optional[dt.datetime]` — This will return items where the updatedAt is greater than or equal to the specified value.
+
+
+
+
+
+-
+
+**updated_at_le:** `typing.Optional[dt.datetime]` — This will return items where the updatedAt is less than or equal to the specified value.
+
+
+
+
+
+-
+
+**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.
+
+
+
+
+
+
+
+
+
+
+
+client.calls.create(...)
+
+-
+
+#### 🔌 Usage
+
+
+-
+
+
+-
+
+```python
+from vapi import Vapi
+
+client = Vapi(
+ token="YOUR_TOKEN",
+)
+client.calls.create()
+
+```
+
+
+
+
+
+#### ⚙️ Parameters
+
+
+-
+
+
+-
+
+**name:** `typing.Optional[str]` — This is the name of the call. This is just for your own reference.
+
+
+
+
+
+-
+
+**assistant_id:** `typing.Optional[str]` — This is the assistant that will be used for the call. To use a transient assistant, use `assistant` instead.
+
+
+
+
+
+-
+
+**assistant:** `typing.Optional[CreateAssistantDto]` — This is the assistant that will be used for the call. To use an existing assistant, use `assistantId` instead.
+
+
+
+
+
+-
+
+**assistant_overrides:** `typing.Optional[AssistantOverrides]` — These are the overrides for the `assistant` or `assistantId`'s settings and template variables.
+
+
+
+
+
+-
+
+**squad_id:** `typing.Optional[str]` — This is the squad that will be used for the call. To use a transient squad, use `squad` instead.
+
+
+
+
+
+-
+
+**squad:** `typing.Optional[CreateSquadDto]` — This is a squad that will be used for the call. To use an existing squad, use `squadId` instead.
+
+
+
+
+
+-
+
+**phone_number_id:** `typing.Optional[str]`
+
+This is the phone number that will be used for the call. To use a transient number, use `phoneNumber` instead.
+
+Only relevant for `outboundPhoneCall` and `inboundPhoneCall` type.
+
+
+
+
+
+-
+
+**phone_number:** `typing.Optional[ImportTwilioPhoneNumberDto]`
+
+This is the phone number that will be used for the call. To use an existing number, use `phoneNumberId` instead.
+
+Only relevant for `outboundPhoneCall` and `inboundPhoneCall` type.
+
+
+
+
+
+-
+
+**customer_id:** `typing.Optional[str]`
+
+This is the customer that will be called. To call a transient customer , use `customer` instead.
+
+Only relevant for `outboundPhoneCall` and `inboundPhoneCall` type.
+
+
+
+
+
+-
+
+**customer:** `typing.Optional[CreateCustomerDto]`
+
+This is the customer that will be called. To call an existing customer, use `customerId` instead.
+
+Only relevant for `outboundPhoneCall` and `inboundPhoneCall` type.
+
+
+
+
+
+-
+
+**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.
+
+
+
+
+
+
+
+
+
+
+
+client.calls.get(...)
+
+-
+
+#### 🔌 Usage
+
+
+-
+
+
+-
+
+```python
+from vapi import Vapi
+
+client = Vapi(
+ token="YOUR_TOKEN",
+)
+client.calls.get(
+ id="id",
+)
+
+```
+
+
+
+
+
+#### ⚙️ Parameters
+
+
+-
+
+
+-
+
+**id:** `str`
+
+
+
+
+
+-
+
+**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.
+
+
+
+
+
+
+
+
+
+
+
+client.calls.delete(...)
+
+-
+
+#### 🔌 Usage
+
+
+-
+
+
+-
+
+```python
+from vapi import Vapi
+
+client = Vapi(
+ token="YOUR_TOKEN",
+)
+client.calls.delete(
+ id="id",
+)
+
+```
+
+
+
+
+
+#### ⚙️ Parameters
+
+
+-
+
+
+-
+
+**id:** `str`
+
+
+
+
+
+-
+
+**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.
+
+
+
+
+
+
+
+
+
+
+
+client.calls.update(...)
+
+-
+
+#### 🔌 Usage
+
+
+-
+
+
+-
+
+```python
+from vapi import Vapi
+
+client = Vapi(
+ token="YOUR_TOKEN",
+)
+client.calls.update(
+ id="id",
+)
+
+```
+
+
+
+
+
+#### ⚙️ Parameters
+
+
+-
+
+
+-
+
+**id:** `str`
+
+
+
+
+
+-
+
+**name:** `typing.Optional[str]` — This is the name of the call. This is just for your own reference.
+
+
+
+
+
+-
+
+**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.
+
+
+
+
+
+
+
+
+
+
+
+## Assistants
+client.assistants.list(...)
+
+-
+
+#### 🔌 Usage
+
+
+-
+
+
+-
+
+```python
+from vapi import Vapi
+
+client = Vapi(
+ token="YOUR_TOKEN",
+)
+client.assistants.list()
+
+```
+
+
+
+
+
+#### ⚙️ Parameters
+
+
+-
+
+
+-
+
+**limit:** `typing.Optional[float]` — This is the maximum number of items to return. Defaults to 100.
+
+
+
+
+
+-
+
+**created_at_gt:** `typing.Optional[dt.datetime]` — This will return items where the createdAt is greater than the specified value.
+
+
+
+
+
+-
+
+**created_at_lt:** `typing.Optional[dt.datetime]` — This will return items where the createdAt is less than the specified value.
+
+
+
+
+
+-
+
+**created_at_ge:** `typing.Optional[dt.datetime]` — This will return items where the createdAt is greater than or equal to the specified value.
+
+
+
+
+
+-
+
+**created_at_le:** `typing.Optional[dt.datetime]` — This will return items where the createdAt is less than or equal to the specified value.
+
+
+
+
+
+-
+
+**updated_at_gt:** `typing.Optional[dt.datetime]` — This will return items where the updatedAt is greater than the specified value.
+
+
+
+
+
+-
+
+**updated_at_lt:** `typing.Optional[dt.datetime]` — This will return items where the updatedAt is less than the specified value.
+
+
+
+
+
+-
+
+**updated_at_ge:** `typing.Optional[dt.datetime]` — This will return items where the updatedAt is greater than or equal to the specified value.
+
+
+
+
+
+-
+
+**updated_at_le:** `typing.Optional[dt.datetime]` — This will return items where the updatedAt is less than or equal to the specified value.
+
+
+
+
+
+-
+
+**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.
+
+
+
+
+
+
+
+
+
+
+
+client.assistants.create(...)
+
+-
+
+#### 🔌 Usage
+
+
+-
+
+
+-
+
+```python
+from vapi import Vapi
+
+client = Vapi(
+ token="YOUR_TOKEN",
+)
+client.assistants.create()
+
+```
+
+
+
+
+
+#### ⚙️ Parameters
+
+
+-
+
+
+-
+
+**transcriber:** `typing.Optional[CreateAssistantDtoTranscriber]` — These are the options for the assistant's transcriber.
+
+
+
+
+
+-
+
+**model:** `typing.Optional[CreateAssistantDtoModel]` — These are the options for the assistant's LLM.
+
+
+
+
+
+-
+
+**voice:** `typing.Optional[CreateAssistantDtoVoice]` — These are the options for the assistant's voice.
+
+
+
+
+
+-
+
+**first_message_mode:** `typing.Optional[CreateAssistantDtoFirstMessageMode]`
+
+This is the mode for the first message. Default is 'assistant-speaks-first'.
+
+Use:
+
+- 'assistant-speaks-first' to have the assistant speak first.
+- 'assistant-waits-for-user' to have the assistant wait for the user to speak first.
+- 'assistant-speaks-first-with-model-generated-message' to have the assistant speak first with a message generated by the model based on the conversation state. (`assistant.model.messages` at call start, `call.messages` at squad transfer points).
+
+@default 'assistant-speaks-first'
+
+
+
+
+
+-
+
+**hipaa_enabled:** `typing.Optional[bool]` — When this is enabled, no logs, recordings, or transcriptions will be stored. At the end of the call, you will still receive an end-of-call-report message to store on your server. Defaults to false.
+
+
+
+
+
+-
+
+**client_messages:** `typing.Optional[typing.Sequence[CreateAssistantDtoClientMessagesItem]]` — These are the messages that will be sent to your Client SDKs. Default is conversation-update,function-call,hang,model-output,speech-update,status-update,transcript,tool-calls,user-interrupted,voice-input. You can check the shape of the messages in ClientMessage schema.
+
+
+
+
+
+-
+
+**server_messages:** `typing.Optional[typing.Sequence[CreateAssistantDtoServerMessagesItem]]` — These are the messages that will be sent to your Server URL. Default is conversation-update,end-of-call-report,function-call,hang,speech-update,status-update,tool-calls,transfer-destination-request,user-interrupted. You can check the shape of the messages in ServerMessage schema.
+
+
+
+
+
+-
+
+**silence_timeout_seconds:** `typing.Optional[float]`
+
+How many seconds of silence to wait before ending the call. Defaults to 30.
+
+@default 30
+
+
+
+
+
+-
+
+**max_duration_seconds:** `typing.Optional[float]`
+
+This is the maximum number of seconds that the call will last. When the call reaches this duration, it will be ended.
+
+@default 600 (10 minutes)
+
+
+
+
+
+-
+
+**background_sound:** `typing.Optional[CreateAssistantDtoBackgroundSound]` — This is the background sound in the call. Default for phone calls is 'office' and default for web calls is 'off'.
+
+
+
+
+
+-
+
+**backchanneling_enabled:** `typing.Optional[bool]`
+
+This determines whether the model says 'mhmm', 'ahem' etc. while user is speaking.
+
+Default `false` while in beta.
+
+@default false
+
+
+
+
+
+-
+
+**background_denoising_enabled:** `typing.Optional[bool]`
+
+This enables filtering of noise and background speech while the user is talking.
+
+Default `false` while in beta.
+
+@default false
+
+
+
+
+
+-
+
+**model_output_in_messages_enabled:** `typing.Optional[bool]`
+
+This determines whether the model's output is used in conversation history rather than the transcription of assistant's speech.
+
+Default `false` while in beta.
+
+@default false
+
+
+
+
+
+-
+
+**transport_configurations:** `typing.Optional[typing.Sequence[TransportConfigurationTwilio]]` — These are the configurations to be passed to the transport providers of assistant's calls, like Twilio. You can store multiple configurations for different transport providers. For a call, only the configuration matching the call transport provider is used.
+
+
+
+
+
+-
+
+**name:** `typing.Optional[str]`
+
+This is the name of the assistant.
+
+This is required when you want to transfer between assistants in a call.
+
+
+
+
+
+-
+
+**first_message:** `typing.Optional[str]`
+
+This is the first message that the assistant will say. This can also be a URL to a containerized audio file (mp3, wav, etc.).
+
+If unspecified, assistant will wait for user to speak and use the model to respond once they speak.
+
+
+
+
+
+-
+
+**voicemail_detection:** `typing.Optional[TwilioVoicemailDetection]`
+
+These are the settings to configure or disable voicemail detection. Alternatively, voicemail detection can be configured using the model.tools=[VoicemailTool].
+This uses Twilio's built-in detection while the VoicemailTool relies on the model to detect if a voicemail was reached.
+You can use neither of them, one of them, or both of them. By default, Twilio built-in detection is enabled while VoicemailTool is not.
+
+
+
+
+
+-
+
+**voicemail_message:** `typing.Optional[str]`
+
+This is the message that the assistant will say if the call is forwarded to voicemail.
+
+If unspecified, it will hang up.
+
+
+
+
+
+-
+
+**end_call_message:** `typing.Optional[str]`
+
+This is the message that the assistant will say if it ends the call.
+
+If unspecified, it will hang up without saying anything.
+
+
+
+
+
+-
+
+**end_call_phrases:** `typing.Optional[typing.Sequence[str]]` — This list contains phrases that, if spoken by the assistant, will trigger the call to be hung up. Case insensitive.
+
+
+
+
+
+-
+
+**metadata:** `typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]]` — This is for metadata you want to store on the assistant.
+
+
+
+
+
+-
+
+**server_url:** `typing.Optional[str]`
+
+This is the URL Vapi will communicate with via HTTP GET and POST Requests. This is used for retrieving context, function calling, and end-of-call reports.
+
+All requests will be sent with the call object among other things relevant to that message. You can find more details in the Server URL documentation.
+
+This overrides the serverUrl set on the org and the phoneNumber. Order of precedence: tool.server.url > assistant.serverUrl > phoneNumber.serverUrl > org.serverUrl
+
+
+
+
+
+-
+
+**server_url_secret:** `typing.Optional[str]`
+
+This is the secret you can set that Vapi will send with every request to your server. Will be sent as a header called x-vapi-secret.
+
+Same precedence logic as serverUrl.
+
+
+
+
+
+-
+
+**analysis_plan:** `typing.Optional[AnalysisPlan]` — This is the plan for analysis of assistant's calls. Stored in `call.analysis`.
+
+
+
+
+
+-
+
+**artifact_plan:** `typing.Optional[ArtifactPlan]`
+
+This is the plan for artifacts generated during assistant's calls. Stored in `call.artifact`.
+
+Note: `recordingEnabled` is currently at the root level. It will be moved to `artifactPlan` in the future, but will remain backwards compatible.
+
+
+
+
+
+-
+
+**message_plan:** `typing.Optional[MessagePlan]`
+
+This is the plan for static predefined messages that can be spoken by the assistant during the call, like `idleMessages`.
+
+Note: `firstMessage`, `voicemailMessage`, and `endCallMessage` are currently at the root level. They will be moved to `messagePlan` in the future, but will remain backwards compatible.
+
+
+
+
+
+-
+
+**start_speaking_plan:** `typing.Optional[StartSpeakingPlan]`
+
+This is the plan for when the assistant should start talking.
+
+You should configure this if you're running into these issues:
+
+- The assistant is too slow to start talking after the customer is done speaking.
+- The assistant is too fast to start talking after the customer is done speaking.
+- The assistant is so fast that it's actually interrupting the customer.
+
+
+
+
+
+-
+
+**stop_speaking_plan:** `typing.Optional[StopSpeakingPlan]`
+
+This is the plan for when assistant should stop talking on customer interruption.
+
+You should configure this if you're running into these issues:
+
+- The assistant is too slow to recognize customer's interruption.
+- The assistant is too fast to recognize customer's interruption.
+- The assistant is getting interrupted by phrases that are just acknowledgments.
+- The assistant is getting interrupted by background noises.
+- The assistant is not properly stopping -- it starts talking right after getting interrupted.
+
+
+
+
+
+-
+
+**monitor_plan:** `typing.Optional[MonitorPlan]`
+
+This is the plan for real-time monitoring of the assistant's calls.
+
+Usage:
+
+- To enable live listening of the assistant's calls, set `monitorPlan.listenEnabled` to `true`.
+- To enable live control of the assistant's calls, set `monitorPlan.controlEnabled` to `true`.
+
+Note, `serverMessages`, `clientMessages`, `serverUrl` and `serverUrlSecret` are currently at the root level but will be moved to `monitorPlan` in the future. Will remain backwards compatible
+
+
+
+
+
+-
+
+**credential_ids:** `typing.Optional[typing.Sequence[str]]` — These are the credentials that will be used for the assistant calls. By default, all the credentials are available for use in the call but you can provide a subset using this.
+
+
+
+
+
+-
+
+**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.
+
+
+
+
+
+
+
+
+
+
+
+client.assistants.get(...)
+
+-
+
+#### 🔌 Usage
+
+
+-
+
+
+-
+
+```python
+from vapi import Vapi
+
+client = Vapi(
+ token="YOUR_TOKEN",
+)
+client.assistants.get(
+ id="id",
+)
+
+```
+
+
+
+
+
+#### ⚙️ Parameters
+
+
+-
+
+
+-
+
+**id:** `str`
+
+
+
+
+
+-
+
+**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.
+
+
+
+
+
+
+
+
+
+
+
+client.assistants.delete(...)
+
+-
+
+#### 🔌 Usage
+
+
+-
+
+
+-
+
+```python
+from vapi import Vapi
+
+client = Vapi(
+ token="YOUR_TOKEN",
+)
+client.assistants.delete(
+ id="id",
+)
+
+```
+
+
+
+
+
+#### ⚙️ Parameters
+
+
+-
+
+
+-
+
+**id:** `str`
+
+
+
+
+
+-
+
+**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.
+
+
+
+
+
+
+
+
+
+
+
+client.assistants.update(...)
+
+-
+
+#### 🔌 Usage
+
+
+-
+
+
+-
+
+```python
+from vapi import Vapi
+
+client = Vapi(
+ token="YOUR_TOKEN",
+)
+client.assistants.update(
+ id="id",
+)
+
+```
+
+
+
+
+
+#### ⚙️ Parameters
+
+
+-
+
+
+-
+
+**id:** `str`
+
+
+
+
+
+-
+
+**transcriber:** `typing.Optional[UpdateAssistantDtoTranscriber]` — These are the options for the assistant's transcriber.
+
+
+
+
+
+-
+
+**model:** `typing.Optional[UpdateAssistantDtoModel]` — These are the options for the assistant's LLM.
+
+
+
+
+
+-
+
+**voice:** `typing.Optional[UpdateAssistantDtoVoice]` — These are the options for the assistant's voice.
+
+
+
+
+
+-
+
+**first_message_mode:** `typing.Optional[UpdateAssistantDtoFirstMessageMode]`
+
+This is the mode for the first message. Default is 'assistant-speaks-first'.
+
+Use:
+- 'assistant-speaks-first' to have the assistant speak first.
+- 'assistant-waits-for-user' to have the assistant wait for the user to speak first.
+- 'assistant-speaks-first-with-model-generated-message' to have the assistant speak first with a message generated by the model based on the conversation state. (`assistant.model.messages` at call start, `call.messages` at squad transfer points).
+
+@default 'assistant-speaks-first'
+
+
+
+
+
+-
+
+**hipaa_enabled:** `typing.Optional[bool]` — When this is enabled, no logs, recordings, or transcriptions will be stored. At the end of the call, you will still receive an end-of-call-report message to store on your server. Defaults to false.
+
+
+
+
+
+-
+
+**client_messages:** `typing.Optional[typing.Sequence[UpdateAssistantDtoClientMessagesItem]]` — These are the messages that will be sent to your Client SDKs. Default is conversation-update,function-call,hang,model-output,speech-update,status-update,transcript,tool-calls,user-interrupted,voice-input. You can check the shape of the messages in ClientMessage schema.
+
+
+
+
+
+-
+
+**server_messages:** `typing.Optional[typing.Sequence[UpdateAssistantDtoServerMessagesItem]]` — These are the messages that will be sent to your Server URL. Default is conversation-update,end-of-call-report,function-call,hang,speech-update,status-update,tool-calls,transfer-destination-request,user-interrupted. You can check the shape of the messages in ServerMessage schema.
+
+
+
+
+
+-
+
+**silence_timeout_seconds:** `typing.Optional[float]`
+
+How many seconds of silence to wait before ending the call. Defaults to 30.
+
+@default 30
+
+
+
+
+
+-
+
+**max_duration_seconds:** `typing.Optional[float]`
+
+This is the maximum number of seconds that the call will last. When the call reaches this duration, it will be ended.
+
+@default 600 (10 minutes)
+
+
+
+
+
+-
+
+**background_sound:** `typing.Optional[UpdateAssistantDtoBackgroundSound]` — This is the background sound in the call. Default for phone calls is 'office' and default for web calls is 'off'.
+
+
+
+
+
+-
+
+**backchanneling_enabled:** `typing.Optional[bool]`
+
+This determines whether the model says 'mhmm', 'ahem' etc. while user is speaking.
+
+Default `false` while in beta.
+
+@default false
+
+
+
+
+
+-
+
+**background_denoising_enabled:** `typing.Optional[bool]`
+
+This enables filtering of noise and background speech while the user is talking.
+
+Default `false` while in beta.
+
+@default false
+
+
+
+
+
+-
+
+**model_output_in_messages_enabled:** `typing.Optional[bool]`
+
+This determines whether the model's output is used in conversation history rather than the transcription of assistant's speech.
+
+Default `false` while in beta.
+
+@default false
+
+
+
+
+
+-
+
+**transport_configurations:** `typing.Optional[typing.Sequence[TransportConfigurationTwilio]]` — These are the configurations to be passed to the transport providers of assistant's calls, like Twilio. You can store multiple configurations for different transport providers. For a call, only the configuration matching the call transport provider is used.
+
+
+
+
+
+-
+
+**name:** `typing.Optional[str]`
+
+This is the name of the assistant.
+
+This is required when you want to transfer between assistants in a call.
+
+
+
+
+
+-
+
+**first_message:** `typing.Optional[str]`
+
+This is the first message that the assistant will say. This can also be a URL to a containerized audio file (mp3, wav, etc.).
+
+If unspecified, assistant will wait for user to speak and use the model to respond once they speak.
+
+
+
+
+
+-
+
+**voicemail_detection:** `typing.Optional[TwilioVoicemailDetection]`
+
+These are the settings to configure or disable voicemail detection. Alternatively, voicemail detection can be configured using the model.tools=[VoicemailTool].
+This uses Twilio's built-in detection while the VoicemailTool relies on the model to detect if a voicemail was reached.
+You can use neither of them, one of them, or both of them. By default, Twilio built-in detection is enabled while VoicemailTool is not.
+
+
+
+
+
+-
+
+**voicemail_message:** `typing.Optional[str]`
+
+This is the message that the assistant will say if the call is forwarded to voicemail.
+
+If unspecified, it will hang up.
+
+
+
+
+
+-
+
+**end_call_message:** `typing.Optional[str]`
+
+This is the message that the assistant will say if it ends the call.
+
+If unspecified, it will hang up without saying anything.
+
+
+
+
+
+-
+
+**end_call_phrases:** `typing.Optional[typing.Sequence[str]]` — This list contains phrases that, if spoken by the assistant, will trigger the call to be hung up. Case insensitive.
+
+
+
+
+
+-
+
+**metadata:** `typing.Optional[typing.Dict[str, typing.Optional[typing.Any]]]` — This is for metadata you want to store on the assistant.
+
+
+
+
+
+-
+
+**server_url:** `typing.Optional[str]`
+
+This is the URL Vapi will communicate with via HTTP GET and POST Requests. This is used for retrieving context, function calling, and end-of-call reports.
+
+All requests will be sent with the call object among other things relevant to that message. You can find more details in the Server URL documentation.
+
+This overrides the serverUrl set on the org and the phoneNumber. Order of precedence: tool.server.url > assistant.serverUrl > phoneNumber.serverUrl > org.serverUrl
+
+
+
+
+
+-
+
+**server_url_secret:** `typing.Optional[str]`
+
+This is the secret you can set that Vapi will send with every request to your server. Will be sent as a header called x-vapi-secret.
+
+Same precedence logic as serverUrl.
+
+
+
+
+
+-
+
+**analysis_plan:** `typing.Optional[AnalysisPlan]` — This is the plan for analysis of assistant's calls. Stored in `call.analysis`.
+
+
+
+
+
+-
+
+**artifact_plan:** `typing.Optional[ArtifactPlan]`
+
+This is the plan for artifacts generated during assistant's calls. Stored in `call.artifact`.
+
+Note: `recordingEnabled` is currently at the root level. It will be moved to `artifactPlan` in the future, but will remain backwards compatible.
+
+
+
+
+
+-
+
+**message_plan:** `typing.Optional[MessagePlan]`
+
+This is the plan for static predefined messages that can be spoken by the assistant during the call, like `idleMessages`.
+
+Note: `firstMessage`, `voicemailMessage`, and `endCallMessage` are currently at the root level. They will be moved to `messagePlan` in the future, but will remain backwards compatible.
+
+
+
+
+
+-
+
+**start_speaking_plan:** `typing.Optional[StartSpeakingPlan]`
+
+This is the plan for when the assistant should start talking.
+
+You should configure this if you're running into these issues:
+- The assistant is too slow to start talking after the customer is done speaking.
+- The assistant is too fast to start talking after the customer is done speaking.
+- The assistant is so fast that it's actually interrupting the customer.
+
+
+
+
+
+-
+
+**stop_speaking_plan:** `typing.Optional[StopSpeakingPlan]`
+
+This is the plan for when assistant should stop talking on customer interruption.
+
+You should configure this if you're running into these issues:
+- The assistant is too slow to recognize customer's interruption.
+- The assistant is too fast to recognize customer's interruption.
+- The assistant is getting interrupted by phrases that are just acknowledgments.
+- The assistant is getting interrupted by background noises.
+- The assistant is not properly stopping -- it starts talking right after getting interrupted.
+
+
+
+
+
+-
+
+**monitor_plan:** `typing.Optional[MonitorPlan]`
+
+This is the plan for real-time monitoring of the assistant's calls.
+
+Usage:
+- To enable live listening of the assistant's calls, set `monitorPlan.listenEnabled` to `true`.
+- To enable live control of the assistant's calls, set `monitorPlan.controlEnabled` to `true`.
+
+Note, `serverMessages`, `clientMessages`, `serverUrl` and `serverUrlSecret` are currently at the root level but will be moved to `monitorPlan` in the future. Will remain backwards compatible
+
+
+
+
+
+-
+
+**credential_ids:** `typing.Optional[typing.Sequence[str]]` — These are the credentials that will be used for the assistant calls. By default, all the credentials are available for use in the call but you can provide a subset using this.
+
+
+
+
+
+-
+
+**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.
+
+
+
+
+
+
+
+
+
+
+
+## PhoneNumbers
+client.phone_numbers.list(...)
+
+-
+
+#### 🔌 Usage
+
+
+-
+
+
+-
+
+```python
+from vapi import Vapi
+
+client = Vapi(
+ token="YOUR_TOKEN",
+)
+client.phone_numbers.list()
+
+```
+
+
+
+
+
+#### ⚙️ Parameters
+
+
+-
+
+
+-
+
+**limit:** `typing.Optional[float]` — This is the maximum number of items to return. Defaults to 100.
+
+
+
+
+
+-
+
+**created_at_gt:** `typing.Optional[dt.datetime]` — This will return items where the createdAt is greater than the specified value.
+
+
+
+
+
+-
+
+**created_at_lt:** `typing.Optional[dt.datetime]` — This will return items where the createdAt is less than the specified value.
+
+
+
+
+
+-
+
+**created_at_ge:** `typing.Optional[dt.datetime]` — This will return items where the createdAt is greater than or equal to the specified value.
+
+
+
+
+
+-
+
+**created_at_le:** `typing.Optional[dt.datetime]` — This will return items where the createdAt is less than or equal to the specified value.
+
+
+
+
+
+-
+
+**updated_at_gt:** `typing.Optional[dt.datetime]` — This will return items where the updatedAt is greater than the specified value.
+
+
+
+
+
+-
+
+**updated_at_lt:** `typing.Optional[dt.datetime]` — This will return items where the updatedAt is less than the specified value.
+
+
+
+
+
+-
+
+**updated_at_ge:** `typing.Optional[dt.datetime]` — This will return items where the updatedAt is greater than or equal to the specified value.
+
+
+
+
+
+-
+
+**updated_at_le:** `typing.Optional[dt.datetime]` — This will return items where the updatedAt is less than or equal to the specified value.
+
+
+
+
+
+-
+
+**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.
+
+
+
+
+
+
+
+
+
+
+
+client.phone_numbers.create(...)
+
+-
+
+#### 🔌 Usage
+
+
+-
+
+
+-
+
+```python
+from vapi import CreateByoPhoneNumberDto, Vapi
+
+client = Vapi(
+ token="YOUR_TOKEN",
+)
+client.phone_numbers.create(
+ request=CreateByoPhoneNumberDto(
+ credential_id="credentialId",
+ ),
+)
+
+```
+
+
+
+
+
+#### ⚙️ Parameters
+
+
+-
+
+
+-
+
+**request:** `PhoneNumbersCreateRequest`
+
+
+
+
+
+-
+
+**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.
+
+
+
+
+
+
+
+
+
+
+
+client.phone_numbers.get(...)
+
+-
+
+#### 🔌 Usage
+
+
+-
+
+
+-
+
+```python
+from vapi import Vapi
+
+client = Vapi(
+ token="YOUR_TOKEN",
+)
+client.phone_numbers.get(
+ id="id",
+)
+
+```
+
+
+
+
+
+#### ⚙️ Parameters
+
+
+-
+
+
+-
+
+**id:** `str`
+
+
+
+
+
+-
+
+**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.
+
+
+
+
+
+
+
+
+
+
+
+client.phone_numbers.delete(...)
+
+-
+
+#### 🔌 Usage
+
+
+-
+
+
+-
+
+```python
+from vapi import Vapi
+
+client = Vapi(
+ token="YOUR_TOKEN",
+)
+client.phone_numbers.delete(
+ id="id",
+)
+
+```
+
+
+
+
+
+#### ⚙️ Parameters
+
+
+-
+
+
+-
+
+**id:** `str`
+
+
+
+
+
+-
+
+**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.
+
+
+
+
+
+
+
+
+
+
+
+client.phone_numbers.update(...)
+
+-
+
+#### 🔌 Usage
+
+
+-
+
+
+-
+
+```python
+from vapi import Vapi
+
+client = Vapi(
+ token="YOUR_TOKEN",
+)
+client.phone_numbers.update(
+ id="id",
+)
+
+```
+
+
+
+
+
+#### ⚙️ Parameters
+
+
+-
+
+
+-
+
+**id:** `str`
+
+
+
+
+
+-
+
+**fallback_destination:** `typing.Optional[UpdatePhoneNumberDtoFallbackDestination]`
+
+This is the fallback destination an inbound call will be transferred to if:
+1. `assistantId` is not set
+2. `squadId` is not set
+3. and, `assistant-request` message to the `serverUrl` fails
+
+If this is not set and above conditions are met, the inbound call is hung up with an error message.
+
+
+
+
+
+-
+
+**name:** `typing.Optional[str]` — This is the name of the phone number. This is just for your own reference.
+
+
+
+
+
+-
+
+**assistant_id:** `typing.Optional[str]`
+
+This is the assistant that will be used for incoming calls to this phone number.
+
+If neither `assistantId` nor `squadId` is set, `assistant-request` will be sent to your Server URL. Check `ServerMessage` and `ServerMessageResponse` for the shape of the message and response that is expected.
+
+
+
+
+
+-
+
+**squad_id:** `typing.Optional[str]`
+
+This is the squad that will be used for incoming calls to this phone number.
+
+If neither `assistantId` nor `squadId` is set, `assistant-request` will be sent to your Server URL. Check `ServerMessage` and `ServerMessageResponse` for the shape of the message and response that is expected.
+
+
+
+
+
+-
+
+**server_url:** `typing.Optional[str]`
+
+This is the server URL where messages will be sent for calls on this number. This includes the `assistant-request` message.
+
+You can see the shape of the messages sent in `ServerMessage`.
+
+This overrides the `org.serverUrl`. Order of precedence: tool.server.url > assistant.serverUrl > phoneNumber.serverUrl > org.serverUrl.
+
+
+
+
+
+-
+
+**server_url_secret:** `typing.Optional[str]`
+
+This is the secret Vapi will send with every message to your server. It's sent as a header called x-vapi-secret.
+
+Same precedence logic as serverUrl.
+
+
+
+
+
+-
+
+**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.
+
+
+
+
+
+
+
+
+
+
+
+## Squads
+client.squads.list(...)
+
+-
+
+#### 🔌 Usage
+
+
+-
+
+
+-
+
+```python
+from vapi import Vapi
+
+client = Vapi(
+ token="YOUR_TOKEN",
+)
+client.squads.list()
+
+```
+
+
+
+
+
+#### ⚙️ Parameters
+
+
+-
+
+
+-
+
+**limit:** `typing.Optional[float]` — This is the maximum number of items to return. Defaults to 100.
+
+
+
+
+
+-
+
+**created_at_gt:** `typing.Optional[dt.datetime]` — This will return items where the createdAt is greater than the specified value.
+
+
+
+
+
+-
+
+**created_at_lt:** `typing.Optional[dt.datetime]` — This will return items where the createdAt is less than the specified value.
+
+
+
+
+
+-
+
+**created_at_ge:** `typing.Optional[dt.datetime]` — This will return items where the createdAt is greater than or equal to the specified value.
+
+
+
+
+
+-
+
+**created_at_le:** `typing.Optional[dt.datetime]` — This will return items where the createdAt is less than or equal to the specified value.
+
+
+
+
+
+-
+
+**updated_at_gt:** `typing.Optional[dt.datetime]` — This will return items where the updatedAt is greater than the specified value.
+
+
+
+
+
+-
+
+**updated_at_lt:** `typing.Optional[dt.datetime]` — This will return items where the updatedAt is less than the specified value.
+
+
+
+
+
+-
+
+**updated_at_ge:** `typing.Optional[dt.datetime]` — This will return items where the updatedAt is greater than or equal to the specified value.
+
+
+
+
+
+-
+
+**updated_at_le:** `typing.Optional[dt.datetime]` — This will return items where the updatedAt is less than or equal to the specified value.
+
+
+
+
+
+-
+
+**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.
+
+
+
+
+
+
+
+
+
+
+
+client.squads.create(...)
+
+-
+
+#### 🔌 Usage
+
+
+-
+
+
+-
+
+```python
+from vapi import SquadMemberDto, Vapi
+
+client = Vapi(
+ token="YOUR_TOKEN",
+)
+client.squads.create(
+ members=[SquadMemberDto()],
+)
+
+```
+
+
+
+
+
+#### ⚙️ Parameters
+
+
+-
+
+
+-
+
+**members:** `typing.Sequence[SquadMemberDto]`
+
+This is the list of assistants that make up the squad.
+
+The call will start with the first assistant in the list.
+
+
+
+
+
+-
+
+**name:** `typing.Optional[str]` — This is the name of the squad.
+
+
+
+
+
+-
+
+**members_overrides:** `typing.Optional[AssistantOverrides]`
+
+This can be used to override all the assistants' settings and provide values for their template variables.
+
+Both `membersOverrides` and `members[n].assistantOverrides` can be used together. First, `members[n].assistantOverrides` is applied. Then, `membersOverrides` is applied as a global override.
+
+
+
+
+
+-
+
+**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.
+
+
+
+
+
+
+
+
+
+
+
+client.squads.get(...)
+
+-
+
+#### 🔌 Usage
+
+
+-
+
+
+-
+
+```python
+from vapi import Vapi
+
+client = Vapi(
+ token="YOUR_TOKEN",
+)
+client.squads.get(
+ id="id",
+)
+
+```
+
+
+
+
+
+#### ⚙️ Parameters
+
+
+-
+
+
+-
+
+**id:** `str`
+
+
+
+
+
+-
+
+**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.
+
+
+
+
+
+
+
+
+
+
+
+client.squads.delete(...)
+
+-
+
+#### 🔌 Usage
+
+
+-
+
+
+-
+
+```python
+from vapi import Vapi
+
+client = Vapi(
+ token="YOUR_TOKEN",
+)
+client.squads.delete(
+ id="id",
+)
+
+```
+
+
+
+
+
+#### ⚙️ Parameters
+
+
+-
+
+
+-
+
+**id:** `str`
+
+
+
+
+
+-
+
+**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.
+
+
+
+
+
+
+
+
+
+
+
+client.squads.update(...)
+
+-
+
+#### 🔌 Usage
+
+
+-
+
+
+-
+
+```python
+from vapi import SquadMemberDto, Vapi
+
+client = Vapi(
+ token="YOUR_TOKEN",
+)
+client.squads.update(
+ id="id",
+ members=[SquadMemberDto()],
+)
+
+```
+
+
+
+
+
+#### ⚙️ Parameters
+
+
+-
+
+
+-
+
+**id:** `str`
+
+
+
+
+
+-
+
+**members:** `typing.Sequence[SquadMemberDto]`
+
+This is the list of assistants that make up the squad.
+
+The call will start with the first assistant in the list.
+
+
+
+
+
+-
+
+**name:** `typing.Optional[str]` — This is the name of the squad.
+
+
+
+
+
+-
+
+**members_overrides:** `typing.Optional[AssistantOverrides]`
+
+This can be used to override all the assistants' settings and provide values for their template variables.
+
+Both `membersOverrides` and `members[n].assistantOverrides` can be used together. First, `members[n].assistantOverrides` is applied. Then, `membersOverrides` is applied as a global override.
+
+
+
+
+
+-
+
+**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.
+
+
+
+
+
+
+
+
+
+
+
+## Blocks
+client.blocks.list(...)
+
+-
+
+#### 🔌 Usage
+
+
+-
+
+
+-
+
+```python
+from vapi import Vapi
+
+client = Vapi(
+ token="YOUR_TOKEN",
+)
+client.blocks.list()
+
+```
+
+
+
+
+
+#### ⚙️ Parameters
+
+
+-
+
+
+-
+
+**limit:** `typing.Optional[float]` — This is the maximum number of items to return. Defaults to 100.
+
+
+
+
+
+-
+
+**created_at_gt:** `typing.Optional[dt.datetime]` — This will return items where the createdAt is greater than the specified value.
+
+
+
+
+
+-
+
+**created_at_lt:** `typing.Optional[dt.datetime]` — This will return items where the createdAt is less than the specified value.
+
+
+
+
+
+-
+
+**created_at_ge:** `typing.Optional[dt.datetime]` — This will return items where the createdAt is greater than or equal to the specified value.
+
+
+
+
+
+-
+
+**created_at_le:** `typing.Optional[dt.datetime]` — This will return items where the createdAt is less than or equal to the specified value.
+
+
+
+
+
+-
+
+**updated_at_gt:** `typing.Optional[dt.datetime]` — This will return items where the updatedAt is greater than the specified value.
+
+
+
+
+
+-
+
+**updated_at_lt:** `typing.Optional[dt.datetime]` — This will return items where the updatedAt is less than the specified value.
+
+
+
+
+
+-
+
+**updated_at_ge:** `typing.Optional[dt.datetime]` — This will return items where the updatedAt is greater than or equal to the specified value.
+
+
+
+
+
+-
+
+**updated_at_le:** `typing.Optional[dt.datetime]` — This will return items where the updatedAt is less than or equal to the specified value.
+
+
+
+
+
+-
+
+**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.
+
+
+
+
+
+
+
+
+
+
+
+client.blocks.create(...)
+
+-
+
+#### 🔌 Usage
+
+
+-
+
+
+-
+
+```python
+from vapi import CreateConversationBlockDto, Vapi
+
+client = Vapi(
+ token="YOUR_TOKEN",
+)
+client.blocks.create(
+ request=CreateConversationBlockDto(
+ instruction="instruction",
+ ),
+)
+
+```
+
+
+
+
+
+#### ⚙️ Parameters
+
+
+-
+
+
+-
+
+**request:** `BlocksCreateRequest`
+
+
+
+
+
+-
+
+**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.
+
+
+
+
+
+
+
+
+
+
+
+client.blocks.get(...)
+
+-
+
+#### 🔌 Usage
+
+
+-
+
+
+-
+
+```python
+from vapi import Vapi
+
+client = Vapi(
+ token="YOUR_TOKEN",
+)
+client.blocks.get(
+ id="id",
+)
+
+```
+
+
+
+
+
+#### ⚙️ Parameters
+
+
+-
+
+
+-
+
+**id:** `str`
+
+
+
+
+
+-
+
+**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.
+
+
+
+
+
+
+
+
+
+
+
+client.blocks.delete(...)
+
+-
+
+#### 🔌 Usage
+
+
+-
+
+
+-
+
+```python
+from vapi import Vapi
+
+client = Vapi(
+ token="YOUR_TOKEN",
+)
+client.blocks.delete(
+ id="id",
+)
+
+```
+
+
+
+
+
+#### ⚙️ Parameters
+
+
+-
+
+
+-
+
+**id:** `str`
+
+
+
+
+
+-
+
+**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.
+
+
+
+
+
+
+
+
+
+
+
+client.blocks.update(...)
+
+-
+
+#### 🔌 Usage
+
+
+-
+
+
+-
+
+```python
+from vapi import Vapi
+
+client = Vapi(
+ token="YOUR_TOKEN",
+)
+client.blocks.update(
+ id="id",
+)
+
+```
+
+
+
+
+
+#### ⚙️ Parameters
+
+
+-
+
+
+-
+
+**id:** `str`
+
+
+
+
+
+-
+
+**messages:** `typing.Optional[typing.Sequence[UpdateBlockDtoMessagesItem]]` — These are the pre-configured messages that will be spoken to the user while the block is running.
+
+
+
+
+
+-
+
+**input_schema:** `typing.Optional[JsonSchema]`
+
+This is the input schema for the block. This is the input the block needs to run. It's given to the block as `steps[0].input`
+
+These are accessible as variables:
+- ({{input.propertyName}}) in context of the block execution (step)
+- ({{stepName.input.propertyName}}) in context of the workflow
+
+
+
+
+
+-
+
+**output_schema:** `typing.Optional[JsonSchema]`
+
+This is the output schema for the block. This is the output the block will return to the workflow (`{{stepName.output}}`).
+
+These are accessible as variables:
+- ({{output.propertyName}}) in context of the block execution (step)
+- ({{stepName.output.propertyName}}) in context of the workflow (read caveat #1)
+- ({{blockName.output.propertyName}}) in context of the workflow (read caveat #2)
+
+Caveats:
+1. a workflow can execute a step multiple times. example, if a loop is used in the graph. {{stepName.output.propertyName}} will reference the latest usage of the step.
+2. a workflow can execute a block multiple times. example, if a step is called multiple times or if a block is used in multiple steps. {{blockName.output.propertyName}} will reference the latest usage of the block. this liquid variable is just provided for convenience when creating blocks outside of a workflow with steps.
+
+
+
+
+
+-
+
+**tool:** `typing.Optional[UpdateBlockDtoTool]` — This is the tool that the block will call. To use an existing tool, use `toolId`.
+
+
+
+
+
+-
+
+**steps:** `typing.Optional[typing.Sequence[UpdateBlockDtoStepsItem]]` — These are the steps in the workflow.
+
+
+
+
+
+-
+
+**name:** `typing.Optional[str]` — This is the name of the block. This is just for your reference.
+
+
+
+
+
+-
+
+**instruction:** `typing.Optional[str]`
+
+This is the instruction to the model.
+
+You can reference any variable in the context of the current block execution (step):
+- "{{input.your-property-name}}" for the current step's input
+- "{{your-step-name.output.your-property-name}}" for another step's output (in the same workflow; read caveat #1)
+- "{{your-step-name.input.your-property-name}}" for another step's input (in the same workflow; read caveat #1)
+- "{{your-block-name.output.your-property-name}}" for another block's output (in the same workflow; read caveat #2)
+- "{{your-block-name.input.your-property-name}}" for another block's input (in the same workflow; read caveat #2)
+- "{{workflow.input.your-property-name}}" for the current workflow's input
+- "{{global.your-property-name}}" for the global context
+
+This can be as simple or as complex as you want it to be.
+- "say hello and ask the user about their day!"
+- "collect the user's first and last name"
+- "user is {{input.firstName}} {{input.lastName}}. their age is {{input.age}}. ask them about their salary and if they might be interested in buying a house. we offer {{input.offer}}"
+
+Caveats:
+1. a workflow can execute a step multiple times. example, if a loop is used in the graph. {{stepName.output/input.propertyName}} will reference the latest usage of the step.
+2. a workflow can execute a block multiple times. example, if a step is called multiple times or if a block is used in multiple steps. {{blockName.output/input.propertyName}} will reference the latest usage of the block. this liquid variable is just provided for convenience when creating blocks outside of a workflow with steps.
+
+
+
+
+
+-
+
+**tool_id:** `typing.Optional[str]` — This is the id of the tool that the block will call. To use a transient tool, use `tool`.
+
+
+
+
+
+-
+
+**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.
+
+
+
+
+
+
+
+
+
+
+
+## Tools
+client.tools.list(...)
+
+-
+
+#### 🔌 Usage
+
+
+-
+
+
+-
+
+```python
+from vapi import Vapi
+
+client = Vapi(
+ token="YOUR_TOKEN",
+)
+client.tools.list()
+
+```
+
+
+
+
+
+#### ⚙️ Parameters
+
+
+-
+
+
+-
+
+**limit:** `typing.Optional[float]` — This is the maximum number of items to return. Defaults to 100.
+
+
+
+
+
+-
+
+**created_at_gt:** `typing.Optional[dt.datetime]` — This will return items where the createdAt is greater than the specified value.
+
+
+
+
+
+-
+
+**created_at_lt:** `typing.Optional[dt.datetime]` — This will return items where the createdAt is less than the specified value.
+
+
+
+
+
+-
+
+**created_at_ge:** `typing.Optional[dt.datetime]` — This will return items where the createdAt is greater than or equal to the specified value.
+
+
+
+
+
+-
+
+**created_at_le:** `typing.Optional[dt.datetime]` — This will return items where the createdAt is less than or equal to the specified value.
+
+
+
+
+
+-
+
+**updated_at_gt:** `typing.Optional[dt.datetime]` — This will return items where the updatedAt is greater than the specified value.
+
+
+
+
+
+-
+
+**updated_at_lt:** `typing.Optional[dt.datetime]` — This will return items where the updatedAt is less than the specified value.
+
+
+
+
+
+-
+
+**updated_at_ge:** `typing.Optional[dt.datetime]` — This will return items where the updatedAt is greater than or equal to the specified value.
+
+
+
+
+
+-
+
+**updated_at_le:** `typing.Optional[dt.datetime]` — This will return items where the updatedAt is less than or equal to the specified value.
+
+
+
+
+
+-
+
+**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.
+
+
+
+
+
+
+
+
+
+
+
+client.tools.create(...)
+
+-
+
+#### 🔌 Usage
+
+
+-
+
+
+-
+
+```python
+from vapi import CreateDtmfToolDto, Vapi
+
+client = Vapi(
+ token="YOUR_TOKEN",
+)
+client.tools.create(
+ request=CreateDtmfToolDto(),
+)
+
+```
+
+
+
+
+
+#### ⚙️ Parameters
+
+
+-
+
+
+-
+
+**request:** `ToolsCreateRequest`
+
+
+
+
+
+-
+
+**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.
+
+
+
+
+
+
+
+
+
+
+
+client.tools.get(...)
+
+-
+
+#### 🔌 Usage
+
+
+-
+
+
+-
+
+```python
+from vapi import Vapi
+
+client = Vapi(
+ token="YOUR_TOKEN",
+)
+client.tools.get(
+ id="id",
+)
+
+```
+
+
+
+
+
+#### ⚙️ Parameters
+
+
+-
+
+
+-
+
+**id:** `str`
+
+
+
+
+
+-
+
+**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.
+
+
+
+
+
+
+
+
+
+
+
+client.tools.delete(...)
+
+-
+
+#### 🔌 Usage
+
+
+-
+
+
+-
+
+```python
+from vapi import Vapi
+
+client = Vapi(
+ token="YOUR_TOKEN",
+)
+client.tools.delete(
+ id="id",
+)
+
+```
+
+
+
+
+
+#### ⚙️ Parameters
+
+
+-
+
+
+-
+
+**id:** `str`
+
+
+
+
+
+-
+
+**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.
+
+
+
+
+
+
+
+
+
+
+
+client.tools.update(...)
+
+-
+
+#### 🔌 Usage
+
+
+-
+
+
+-
+
+```python
+from vapi import Vapi
+
+client = Vapi(
+ token="YOUR_TOKEN",
+)
+client.tools.update(
+ id="id",
+)
+
+```
+
+
+
+
+
+#### ⚙️ Parameters
+
+
+-
+
+
+-
+
+**id:** `str`
+
+
+
+
+
+-
+
+**async_:** `typing.Optional[bool]`
+
+This determines if the tool is async.
+
+If async, the assistant will move forward without waiting for your server to respond. This is useful if you just want to trigger something on your server.
+
+If sync, the assistant will wait for your server to respond. This is useful if want assistant to respond with the result from your server.
+
+Defaults to synchronous (`false`).
+
+
+
+
+
+-
+
+**messages:** `typing.Optional[typing.Sequence[UpdateToolDtoMessagesItem]]`
+
+These are the messages that will be spoken to the user as the tool is running.
+
+For some tools, this is auto-filled based on special fields like `tool.destinations`. For others like the function tool, these can be custom configured.
+
+
+
+
+
+-
+
+**function:** `typing.Optional[OpenAiFunction]`
+
+This is the function definition of the tool.
+
+For `endCall`, `transferCall`, and `dtmf` tools, this is auto-filled based on tool-specific fields like `tool.destinations`. But, even in those cases, you can provide a custom function definition for advanced use cases.
+
+An example of an advanced use case is if you want to customize the message that's spoken for `endCall` tool. You can specify a function where it returns an argument "reason". Then, in `messages` array, you can have many "request-complete" messages. One of these messages will be triggered if the `messages[].conditions` matches the "reason" argument.
+
+
+
+
+
+-
+
+**server:** `typing.Optional[Server]`
+
+This is the server that will be hit when this tool is requested by the model.
+
+All requests will be sent with the call object among other things. You can find more details in the Server URL documentation.
+
+This overrides the serverUrl set on the org and the phoneNumber. Order of precedence: highest tool.server.url, then assistant.serverUrl, then phoneNumber.serverUrl, then org.serverUrl.
+
+
+
+
+
+-
+
+**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.
+
+
+
+
+
+
+
+
+
+
+
+## Files
+client.files.list()
+
+-
+
+#### 🔌 Usage
+
+
+-
+
+
+-
+
+```python
+from vapi import Vapi
+
+client = Vapi(
+ token="YOUR_TOKEN",
+)
+client.files.list()
+
+```
+
+
+
+
+
+#### ⚙️ Parameters
+
+
+-
+
+
+-
+
+**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.
+
+
+
+
+
+
+
+
+
+
+
+client.files.create(...)
+
+-
+
+#### 🔌 Usage
+
+
+-
+
+
+-
+
+```python
+from vapi import Vapi
+
+client = Vapi(
+ token="YOUR_TOKEN",
+)
+client.files.create()
+
+```
+
+
+
+
+
+#### ⚙️ Parameters
+
+
+-
+
+
+-
+
+**file:** `from __future__ import annotations
+
+core.File` — See core.File for more documentation
+
+
+
+
+
+-
+
+**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.
+
+
+
+
+
+
+
+
+
+
+
+client.files.get(...)
+
+-
+
+#### 🔌 Usage
+
+
+-
+
+
+-
+
+```python
+from vapi import Vapi
+
+client = Vapi(
+ token="YOUR_TOKEN",
+)
+client.files.get(
+ id="id",
+)
+
+```
+
+
+
+
+
+#### ⚙️ Parameters
+
+
+-
+
+
+-
+
+**id:** `str`
+
+
+
+
+
+-
+
+**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.
+
+
+
+
+
+
+
+
+
+
+
+client.files.delete(...)
+
+-
+
+#### 🔌 Usage
+
+
+-
+
+
+-
+
+```python
+from vapi import Vapi
+
+client = Vapi(
+ token="YOUR_TOKEN",
+)
+client.files.delete(
+ id="id",
+)
+
+```
+
+
+
+
+
+#### ⚙️ Parameters
+
+
+-
+
+
+-
+
+**id:** `str`
+
+
+
+
+
+-
+
+**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.
+
+
+
+
+
+
+
+
+
+
+
+client.files.update(...)
+
+-
+
+#### 🔌 Usage
+
+
+-
+
+
+-
+
+```python
+from vapi import Vapi
+
+client = Vapi(
+ token="YOUR_TOKEN",
+)
+client.files.update(
+ id="id",
+)
+
+```
+
+
+
+
+
+#### ⚙️ Parameters
+
+
+-
+
+
+-
+
+**id:** `str`
+
+
+
+
+
+-
+
+**name:** `typing.Optional[str]` — This is the name of the file. This is just for your own reference.
+
+
+
+
+
+-
+
+**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.
+
+
+
+
+
+
+
+
+
+
+
+## Analytics
+client.analytics.get(...)
+
+-
+
+#### 🔌 Usage
+
+
+-
+
+
+-
+
+```python
+from vapi import AnalyticsOperation, AnalyticsQuery, Vapi
+
+client = Vapi(
+ token="YOUR_TOKEN",
+)
+client.analytics.get(
+ queries=[
+ AnalyticsQuery(
+ name="name",
+ operations=[
+ AnalyticsOperation(
+ operation="sum",
+ column="id",
+ )
+ ],
+ )
+ ],
+)
+
+```
+
+
+
+
+
+#### ⚙️ Parameters
+
+
+-
+
+
+-
+
+**queries:** `typing.Sequence[AnalyticsQuery]` — This is the list of metric queries you want to perform.
+
+
+
+
+
+-
+
+**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.
+
+
+
+
+
+
+
+
+
+
+
+## Logs
+client.logs.get(...)
+
+-
+
+#### 🔌 Usage
+
+
+-
+
+
+-
+
+```python
+from vapi import Vapi
+
+client = Vapi(
+ token="YOUR_TOKEN",
+)
+response = client.logs.get()
+for item in response:
+ yield item
+# alternatively, you can paginate page-by-page
+for page in response.iter_pages():
+ yield page
+
+```
+
+
+
+
+
+#### ⚙️ Parameters
+
+
+-
+
+
+-
+
+**org_id:** `typing.Optional[str]` — This is the unique identifier for the org that this log belongs to.
+
+
+
+
+
+-
+
+**type:** `typing.Optional[LogsGetRequestType]` — This is the type of the log.
+
+
+
+
+
+-
+
+**assistant_id:** `typing.Optional[str]` — This is the ID of the assistant.
+
+
+
+
+
+-
+
+**phone_number_id:** `typing.Optional[str]` — This is the ID of the phone number.
+
+
+
+
+
+-
+
+**customer_id:** `typing.Optional[str]` — This is the ID of the customer.
+
+
+
+
+
+-
+
+**squad_id:** `typing.Optional[str]` — This is the ID of the squad.
+
+
+
+
+
+-
+
+**call_id:** `typing.Optional[str]` — This is the ID of the call.
+
+
+
+
+
+-
+
+**page:** `typing.Optional[float]` — This is the page number to return. Defaults to 1.
+
+
+
+
+
+-
+
+**sort_order:** `typing.Optional[LogsGetRequestSortOrder]` — This is the sort order for pagination. Defaults to 'ASC'.
+
+
+
+
+
+-
+
+**limit:** `typing.Optional[float]` — This is the maximum number of items to return. Defaults to 100.
+
+
+
+
+
+-
+
+**created_at_gt:** `typing.Optional[dt.datetime]` — This will return items where the createdAt is greater than the specified value.
+
+
+
+
+
+-
+
+**created_at_lt:** `typing.Optional[dt.datetime]` — This will return items where the createdAt is less than the specified value.
+
+
+
+
+
+-
+
+**created_at_ge:** `typing.Optional[dt.datetime]` — This will return items where the createdAt is greater than or equal to the specified value.
+
+
+
+
+
+-
+
+**created_at_le:** `typing.Optional[dt.datetime]` — This will return items where the createdAt is less than or equal to the specified value.
+
+
+
+
+
+-
+
+**updated_at_gt:** `typing.Optional[dt.datetime]` — This will return items where the updatedAt is greater than the specified value.
+
+
+
+
+
+-
+
+**updated_at_lt:** `typing.Optional[dt.datetime]` — This will return items where the updatedAt is less than the specified value.
+
+
+
+
+
+-
+
+**updated_at_ge:** `typing.Optional[dt.datetime]` — This will return items where the updatedAt is greater than or equal to the specified value.
+
+
+
+
+
+-
+
+**updated_at_le:** `typing.Optional[dt.datetime]` — This will return items where the updatedAt is less than or equal to the specified value.
+
+
+
+
+
+-
+
+**request_options:** `typing.Optional[RequestOptions]` — Request-specific configuration.
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/vapi/__init__.py b/src/vapi/__init__.py
index 11a9793..f468e54 100644
--- a/src/vapi/__init__.py
+++ b/src/vapi/__init__.py
@@ -45,8 +45,7 @@
AzureOpenAiCredentialModelsItem,
AzureOpenAiCredentialRegion,
AzureVoice,
- AzureVoiceId,
- AzureVoiceIdEnum,
+ AzureVoiceVoiceId,
BlockCompleteMessage,
BlockCompleteMessageConditionsItem,
BlockStartMessage,
@@ -198,15 +197,13 @@
DeepgramTranscriberLanguage,
DeepgramTranscriberModel,
DeepgramVoice,
- DeepgramVoiceId,
- DeepgramVoiceIdEnum,
+ DeepgramVoiceVoiceId,
DtmfTool,
DtmfToolMessagesItem,
ElevenLabsCredential,
ElevenLabsVoice,
- ElevenLabsVoiceId,
- ElevenLabsVoiceIdEnum,
ElevenLabsVoiceModel,
+ ElevenLabsVoiceVoiceId,
EndCallTool,
EndCallToolMessagesItem,
Error,
@@ -251,8 +248,7 @@
KnowledgeBase,
LmntCredential,
LmntVoice,
- LmntVoiceId,
- LmntVoiceIdEnum,
+ LmntVoiceVoiceId,
Log,
LogRequestHttpMethod,
LogResource,
@@ -272,8 +268,7 @@
Monitor,
MonitorPlan,
NeetsVoice,
- NeetsVoiceId,
- NeetsVoiceIdEnum,
+ NeetsVoiceVoiceId,
OpenAiCredential,
OpenAiFunction,
OpenAiFunctionParameters,
@@ -284,7 +279,7 @@
OpenAiModelModel,
OpenAiModelToolsItem,
OpenAiVoice,
- OpenAiVoiceId,
+ OpenAiVoiceVoiceId,
OpenRouterCredential,
OpenRouterModel,
OpenRouterModelToolsItem,
@@ -306,9 +301,8 @@
RegexReplacement,
RimeAiCredential,
RimeAiVoice,
- RimeAiVoiceId,
- RimeAiVoiceIdEnum,
RimeAiVoiceModel,
+ RimeAiVoiceVoiceId,
RuleBasedCondition,
RuleBasedConditionOperator,
RunpodCredential,
@@ -584,8 +578,7 @@
"AzureOpenAiCredentialModelsItem",
"AzureOpenAiCredentialRegion",
"AzureVoice",
- "AzureVoiceId",
- "AzureVoiceIdEnum",
+ "AzureVoiceVoiceId",
"BadRequestError",
"BlockCompleteMessage",
"BlockCompleteMessageConditionsItem",
@@ -744,15 +737,13 @@
"DeepgramTranscriberLanguage",
"DeepgramTranscriberModel",
"DeepgramVoice",
- "DeepgramVoiceId",
- "DeepgramVoiceIdEnum",
+ "DeepgramVoiceVoiceId",
"DtmfTool",
"DtmfToolMessagesItem",
"ElevenLabsCredential",
"ElevenLabsVoice",
- "ElevenLabsVoiceId",
- "ElevenLabsVoiceIdEnum",
"ElevenLabsVoiceModel",
+ "ElevenLabsVoiceVoiceId",
"EndCallTool",
"EndCallToolMessagesItem",
"Error",
@@ -797,8 +788,7 @@
"KnowledgeBase",
"LmntCredential",
"LmntVoice",
- "LmntVoiceId",
- "LmntVoiceIdEnum",
+ "LmntVoiceVoiceId",
"Log",
"LogRequestHttpMethod",
"LogResource",
@@ -820,8 +810,7 @@
"Monitor",
"MonitorPlan",
"NeetsVoice",
- "NeetsVoiceId",
- "NeetsVoiceIdEnum",
+ "NeetsVoiceVoiceId",
"OpenAiCredential",
"OpenAiFunction",
"OpenAiFunctionParameters",
@@ -832,7 +821,7 @@
"OpenAiModelModel",
"OpenAiModelToolsItem",
"OpenAiVoice",
- "OpenAiVoiceId",
+ "OpenAiVoiceVoiceId",
"OpenRouterCredential",
"OpenRouterModel",
"OpenRouterModelToolsItem",
@@ -860,9 +849,8 @@
"RegexReplacement",
"RimeAiCredential",
"RimeAiVoice",
- "RimeAiVoiceId",
- "RimeAiVoiceIdEnum",
"RimeAiVoiceModel",
+ "RimeAiVoiceVoiceId",
"RuleBasedCondition",
"RuleBasedConditionOperator",
"RunpodCredential",
diff --git a/src/vapi/analytics/client.py b/src/vapi/analytics/client.py
index 06bc83e..8f7a9e7 100644
--- a/src/vapi/analytics/client.py
+++ b/src/vapi/analytics/client.py
@@ -35,6 +35,27 @@ def get(
-------
typing.List[AnalyticsQueryResult]
+
+ Examples
+ --------
+ from vapi import AnalyticsOperation, AnalyticsQuery, Vapi
+
+ client = Vapi(
+ token="YOUR_TOKEN",
+ )
+ client.analytics.get(
+ queries=[
+ AnalyticsQuery(
+ name="name",
+ operations=[
+ AnalyticsOperation(
+ operation="sum",
+ column="id",
+ )
+ ],
+ )
+ ],
+ )
"""
_response = self._client_wrapper.httpx_client.request(
"analytics",
@@ -82,6 +103,35 @@ async def get(
-------
typing.List[AnalyticsQueryResult]
+
+ Examples
+ --------
+ import asyncio
+
+ from vapi import AnalyticsOperation, AnalyticsQuery, AsyncVapi
+
+ client = AsyncVapi(
+ token="YOUR_TOKEN",
+ )
+
+
+ async def main() -> None:
+ await client.analytics.get(
+ queries=[
+ AnalyticsQuery(
+ name="name",
+ operations=[
+ AnalyticsOperation(
+ operation="sum",
+ column="id",
+ )
+ ],
+ )
+ ],
+ )
+
+
+ asyncio.run(main())
"""
_response = await self._client_wrapper.httpx_client.request(
"analytics",
diff --git a/src/vapi/assistants/client.py b/src/vapi/assistants/client.py
index 084d37c..d654956 100644
--- a/src/vapi/assistants/client.py
+++ b/src/vapi/assistants/client.py
@@ -94,6 +94,15 @@ def list(
-------
typing.List[Assistant]
+
+ Examples
+ --------
+ from vapi import Vapi
+
+ client = Vapi(
+ token="YOUR_TOKEN",
+ )
+ client.assistants.list()
"""
_response = self._client_wrapper.httpx_client.request(
"assistant",
@@ -325,6 +334,15 @@ def create(
-------
Assistant
+
+ Examples
+ --------
+ from vapi import Vapi
+
+ client = Vapi(
+ token="YOUR_TOKEN",
+ )
+ client.assistants.create()
"""
_response = self._client_wrapper.httpx_client.request(
"assistant",
@@ -415,6 +433,17 @@ def get(self, id: str, *, request_options: typing.Optional[RequestOptions] = Non
-------
Assistant
+
+ Examples
+ --------
+ from vapi import Vapi
+
+ client = Vapi(
+ token="YOUR_TOKEN",
+ )
+ client.assistants.get(
+ id="id",
+ )
"""
_response = self._client_wrapper.httpx_client.request(
f"assistant/{jsonable_encoder(id)}",
@@ -448,6 +477,17 @@ def delete(self, id: str, *, request_options: typing.Optional[RequestOptions] =
-------
Assistant
+
+ Examples
+ --------
+ from vapi import Vapi
+
+ client = Vapi(
+ token="YOUR_TOKEN",
+ )
+ client.assistants.delete(
+ id="id",
+ )
"""
_response = self._client_wrapper.httpx_client.request(
f"assistant/{jsonable_encoder(id)}",
@@ -667,6 +707,17 @@ def update(
-------
Assistant
+
+ Examples
+ --------
+ from vapi import Vapi
+
+ client = Vapi(
+ token="YOUR_TOKEN",
+ )
+ client.assistants.update(
+ id="id",
+ )
"""
_response = self._client_wrapper.httpx_client.request(
f"assistant/{jsonable_encoder(id)}",
@@ -800,6 +851,23 @@ async def list(
-------
typing.List[Assistant]
+
+ Examples
+ --------
+ import asyncio
+
+ from vapi import AsyncVapi
+
+ client = AsyncVapi(
+ token="YOUR_TOKEN",
+ )
+
+
+ async def main() -> None:
+ await client.assistants.list()
+
+
+ asyncio.run(main())
"""
_response = await self._client_wrapper.httpx_client.request(
"assistant",
@@ -1031,6 +1099,23 @@ async def create(
-------
Assistant
+
+ Examples
+ --------
+ import asyncio
+
+ from vapi import AsyncVapi
+
+ client = AsyncVapi(
+ token="YOUR_TOKEN",
+ )
+
+
+ async def main() -> None:
+ await client.assistants.create()
+
+
+ asyncio.run(main())
"""
_response = await self._client_wrapper.httpx_client.request(
"assistant",
@@ -1121,6 +1206,25 @@ async def get(self, id: str, *, request_options: typing.Optional[RequestOptions]
-------
Assistant
+
+ Examples
+ --------
+ import asyncio
+
+ from vapi import AsyncVapi
+
+ client = AsyncVapi(
+ token="YOUR_TOKEN",
+ )
+
+
+ async def main() -> None:
+ await client.assistants.get(
+ id="id",
+ )
+
+
+ asyncio.run(main())
"""
_response = await self._client_wrapper.httpx_client.request(
f"assistant/{jsonable_encoder(id)}",
@@ -1154,6 +1258,25 @@ async def delete(self, id: str, *, request_options: typing.Optional[RequestOptio
-------
Assistant
+
+ Examples
+ --------
+ import asyncio
+
+ from vapi import AsyncVapi
+
+ client = AsyncVapi(
+ token="YOUR_TOKEN",
+ )
+
+
+ async def main() -> None:
+ await client.assistants.delete(
+ id="id",
+ )
+
+
+ asyncio.run(main())
"""
_response = await self._client_wrapper.httpx_client.request(
f"assistant/{jsonable_encoder(id)}",
@@ -1373,6 +1496,25 @@ async def update(
-------
Assistant
+
+ Examples
+ --------
+ import asyncio
+
+ from vapi import AsyncVapi
+
+ client = AsyncVapi(
+ token="YOUR_TOKEN",
+ )
+
+
+ async def main() -> None:
+ await client.assistants.update(
+ id="id",
+ )
+
+
+ asyncio.run(main())
"""
_response = await self._client_wrapper.httpx_client.request(
f"assistant/{jsonable_encoder(id)}",
diff --git a/src/vapi/blocks/client.py b/src/vapi/blocks/client.py
index 0ae2390..7071f64 100644
--- a/src/vapi/blocks/client.py
+++ b/src/vapi/blocks/client.py
@@ -81,6 +81,15 @@ def list(
-------
typing.List[BlocksListResponseItem]
+
+ Examples
+ --------
+ from vapi import Vapi
+
+ client = Vapi(
+ token="YOUR_TOKEN",
+ )
+ client.blocks.list()
"""
_response = self._client_wrapper.httpx_client.request(
"block",
@@ -127,6 +136,19 @@ def create(
-------
BlocksCreateResponse
+
+ Examples
+ --------
+ from vapi import CreateConversationBlockDto, Vapi
+
+ client = Vapi(
+ token="YOUR_TOKEN",
+ )
+ client.blocks.create(
+ request=CreateConversationBlockDto(
+ instruction="instruction",
+ ),
+ )
"""
_response = self._client_wrapper.httpx_client.request(
"block",
@@ -164,6 +186,17 @@ def get(self, id: str, *, request_options: typing.Optional[RequestOptions] = Non
-------
BlocksGetResponse
+
+ Examples
+ --------
+ from vapi import Vapi
+
+ client = Vapi(
+ token="YOUR_TOKEN",
+ )
+ client.blocks.get(
+ id="id",
+ )
"""
_response = self._client_wrapper.httpx_client.request(
f"block/{jsonable_encoder(id)}",
@@ -197,6 +230,17 @@ def delete(self, id: str, *, request_options: typing.Optional[RequestOptions] =
-------
BlocksDeleteResponse
+
+ Examples
+ --------
+ from vapi import Vapi
+
+ client = Vapi(
+ token="YOUR_TOKEN",
+ )
+ client.blocks.delete(
+ id="id",
+ )
"""
_response = self._client_wrapper.httpx_client.request(
f"block/{jsonable_encoder(id)}",
@@ -298,6 +342,17 @@ def update(
-------
BlocksUpdateResponse
+
+ Examples
+ --------
+ from vapi import Vapi
+
+ client = Vapi(
+ token="YOUR_TOKEN",
+ )
+ client.blocks.update(
+ id="id",
+ )
"""
_response = self._client_wrapper.httpx_client.request(
f"block/{jsonable_encoder(id)}",
@@ -395,6 +450,23 @@ async def list(
-------
typing.List[BlocksListResponseItem]
+
+ Examples
+ --------
+ import asyncio
+
+ from vapi import AsyncVapi
+
+ client = AsyncVapi(
+ token="YOUR_TOKEN",
+ )
+
+
+ async def main() -> None:
+ await client.blocks.list()
+
+
+ asyncio.run(main())
"""
_response = await self._client_wrapper.httpx_client.request(
"block",
@@ -441,6 +513,27 @@ async def create(
-------
BlocksCreateResponse
+
+ Examples
+ --------
+ import asyncio
+
+ from vapi import AsyncVapi, CreateConversationBlockDto
+
+ client = AsyncVapi(
+ token="YOUR_TOKEN",
+ )
+
+
+ async def main() -> None:
+ await client.blocks.create(
+ request=CreateConversationBlockDto(
+ instruction="instruction",
+ ),
+ )
+
+
+ asyncio.run(main())
"""
_response = await self._client_wrapper.httpx_client.request(
"block",
@@ -478,6 +571,25 @@ async def get(self, id: str, *, request_options: typing.Optional[RequestOptions]
-------
BlocksGetResponse
+
+ Examples
+ --------
+ import asyncio
+
+ from vapi import AsyncVapi
+
+ client = AsyncVapi(
+ token="YOUR_TOKEN",
+ )
+
+
+ async def main() -> None:
+ await client.blocks.get(
+ id="id",
+ )
+
+
+ asyncio.run(main())
"""
_response = await self._client_wrapper.httpx_client.request(
f"block/{jsonable_encoder(id)}",
@@ -511,6 +623,25 @@ async def delete(self, id: str, *, request_options: typing.Optional[RequestOptio
-------
BlocksDeleteResponse
+
+ Examples
+ --------
+ import asyncio
+
+ from vapi import AsyncVapi
+
+ client = AsyncVapi(
+ token="YOUR_TOKEN",
+ )
+
+
+ async def main() -> None:
+ await client.blocks.delete(
+ id="id",
+ )
+
+
+ asyncio.run(main())
"""
_response = await self._client_wrapper.httpx_client.request(
f"block/{jsonable_encoder(id)}",
@@ -612,6 +743,25 @@ async def update(
-------
BlocksUpdateResponse
+
+ Examples
+ --------
+ import asyncio
+
+ from vapi import AsyncVapi
+
+ client = AsyncVapi(
+ token="YOUR_TOKEN",
+ )
+
+
+ async def main() -> None:
+ await client.blocks.update(
+ id="id",
+ )
+
+
+ asyncio.run(main())
"""
_response = await self._client_wrapper.httpx_client.request(
f"block/{jsonable_encoder(id)}",
diff --git a/src/vapi/calls/client.py b/src/vapi/calls/client.py
index 371286d..5328d82 100644
--- a/src/vapi/calls/client.py
+++ b/src/vapi/calls/client.py
@@ -81,6 +81,15 @@ def list(
-------
typing.List[Call]
+
+ Examples
+ --------
+ from vapi import Vapi
+
+ client = Vapi(
+ token="YOUR_TOKEN",
+ )
+ client.calls.list()
"""
_response = self._client_wrapper.httpx_client.request(
"call",
@@ -176,6 +185,15 @@ def create(
-------
Call
+
+ Examples
+ --------
+ from vapi import Vapi
+
+ client = Vapi(
+ token="YOUR_TOKEN",
+ )
+ client.calls.create()
"""
_response = self._client_wrapper.httpx_client.request(
"call",
@@ -232,6 +250,17 @@ def get(self, id: str, *, request_options: typing.Optional[RequestOptions] = Non
-------
Call
+
+ Examples
+ --------
+ from vapi import Vapi
+
+ client = Vapi(
+ token="YOUR_TOKEN",
+ )
+ client.calls.get(
+ id="id",
+ )
"""
_response = self._client_wrapper.httpx_client.request(
f"call/{jsonable_encoder(id)}",
@@ -265,6 +294,17 @@ def delete(self, id: str, *, request_options: typing.Optional[RequestOptions] =
-------
Call
+
+ Examples
+ --------
+ from vapi import Vapi
+
+ client = Vapi(
+ token="YOUR_TOKEN",
+ )
+ client.calls.delete(
+ id="id",
+ )
"""
_response = self._client_wrapper.httpx_client.request(
f"call/{jsonable_encoder(id)}",
@@ -303,6 +343,17 @@ def update(
-------
Call
+
+ Examples
+ --------
+ from vapi import Vapi
+
+ client = Vapi(
+ token="YOUR_TOKEN",
+ )
+ client.calls.update(
+ id="id",
+ )
"""
_response = self._client_wrapper.httpx_client.request(
f"call/{jsonable_encoder(id)}",
@@ -387,6 +438,23 @@ async def list(
-------
typing.List[Call]
+
+ Examples
+ --------
+ import asyncio
+
+ from vapi import AsyncVapi
+
+ client = AsyncVapi(
+ token="YOUR_TOKEN",
+ )
+
+
+ async def main() -> None:
+ await client.calls.list()
+
+
+ asyncio.run(main())
"""
_response = await self._client_wrapper.httpx_client.request(
"call",
@@ -482,6 +550,23 @@ async def create(
-------
Call
+
+ Examples
+ --------
+ import asyncio
+
+ from vapi import AsyncVapi
+
+ client = AsyncVapi(
+ token="YOUR_TOKEN",
+ )
+
+
+ async def main() -> None:
+ await client.calls.create()
+
+
+ asyncio.run(main())
"""
_response = await self._client_wrapper.httpx_client.request(
"call",
@@ -538,6 +623,25 @@ async def get(self, id: str, *, request_options: typing.Optional[RequestOptions]
-------
Call
+
+ Examples
+ --------
+ import asyncio
+
+ from vapi import AsyncVapi
+
+ client = AsyncVapi(
+ token="YOUR_TOKEN",
+ )
+
+
+ async def main() -> None:
+ await client.calls.get(
+ id="id",
+ )
+
+
+ asyncio.run(main())
"""
_response = await self._client_wrapper.httpx_client.request(
f"call/{jsonable_encoder(id)}",
@@ -571,6 +675,25 @@ async def delete(self, id: str, *, request_options: typing.Optional[RequestOptio
-------
Call
+
+ Examples
+ --------
+ import asyncio
+
+ from vapi import AsyncVapi
+
+ client = AsyncVapi(
+ token="YOUR_TOKEN",
+ )
+
+
+ async def main() -> None:
+ await client.calls.delete(
+ id="id",
+ )
+
+
+ asyncio.run(main())
"""
_response = await self._client_wrapper.httpx_client.request(
f"call/{jsonable_encoder(id)}",
@@ -609,6 +732,25 @@ async def update(
-------
Call
+
+ Examples
+ --------
+ import asyncio
+
+ from vapi import AsyncVapi
+
+ client = AsyncVapi(
+ token="YOUR_TOKEN",
+ )
+
+
+ async def main() -> None:
+ await client.calls.update(
+ id="id",
+ )
+
+
+ asyncio.run(main())
"""
_response = await self._client_wrapper.httpx_client.request(
f"call/{jsonable_encoder(id)}",
diff --git a/src/vapi/core/client_wrapper.py b/src/vapi/core/client_wrapper.py
index 5eca670..2590054 100644
--- a/src/vapi/core/client_wrapper.py
+++ b/src/vapi/core/client_wrapper.py
@@ -22,7 +22,7 @@ def get_headers(self) -> typing.Dict[str, str]:
headers: typing.Dict[str, str] = {
"X-Fern-Language": "Python",
"X-Fern-SDK-Name": "Vapi",
- "X-Fern-SDK-Version": "0.0.0-alpha3",
+ "X-Fern-SDK-Version": "0.0.0-alpha4",
}
headers["Authorization"] = f"Bearer {self._get_token()}"
return headers
diff --git a/src/vapi/files/client.py b/src/vapi/files/client.py
index c03032f..12af218 100644
--- a/src/vapi/files/client.py
+++ b/src/vapi/files/client.py
@@ -31,6 +31,15 @@ def list(self, *, request_options: typing.Optional[RequestOptions] = None) -> ty
-------
typing.List[File]
+
+ Examples
+ --------
+ from vapi import Vapi
+
+ client = Vapi(
+ token="YOUR_TOKEN",
+ )
+ client.files.list()
"""
_response = self._client_wrapper.httpx_client.request(
"file",
@@ -65,6 +74,15 @@ def create(self, *, file: core.File, request_options: typing.Optional[RequestOpt
-------
File
File uploaded successfully
+
+ Examples
+ --------
+ from vapi import Vapi
+
+ client = Vapi(
+ token="YOUR_TOKEN",
+ )
+ client.files.create()
"""
_response = self._client_wrapper.httpx_client.request(
"file",
@@ -113,6 +131,17 @@ def get(self, id: str, *, request_options: typing.Optional[RequestOptions] = Non
-------
File
+
+ Examples
+ --------
+ from vapi import Vapi
+
+ client = Vapi(
+ token="YOUR_TOKEN",
+ )
+ client.files.get(
+ id="id",
+ )
"""
_response = self._client_wrapper.httpx_client.request(
f"file/{jsonable_encoder(id)}",
@@ -146,6 +175,17 @@ def delete(self, id: str, *, request_options: typing.Optional[RequestOptions] =
-------
File
+
+ Examples
+ --------
+ from vapi import Vapi
+
+ client = Vapi(
+ token="YOUR_TOKEN",
+ )
+ client.files.delete(
+ id="id",
+ )
"""
_response = self._client_wrapper.httpx_client.request(
f"file/{jsonable_encoder(id)}",
@@ -184,6 +224,17 @@ def update(
-------
File
+
+ Examples
+ --------
+ from vapi import Vapi
+
+ client = Vapi(
+ token="YOUR_TOKEN",
+ )
+ client.files.update(
+ id="id",
+ )
"""
_response = self._client_wrapper.httpx_client.request(
f"file/{jsonable_encoder(id)}",
@@ -224,6 +275,23 @@ async def list(self, *, request_options: typing.Optional[RequestOptions] = None)
-------
typing.List[File]
+
+ Examples
+ --------
+ import asyncio
+
+ from vapi import AsyncVapi
+
+ client = AsyncVapi(
+ token="YOUR_TOKEN",
+ )
+
+
+ async def main() -> None:
+ await client.files.list()
+
+
+ asyncio.run(main())
"""
_response = await self._client_wrapper.httpx_client.request(
"file",
@@ -258,6 +326,23 @@ async def create(self, *, file: core.File, request_options: typing.Optional[Requ
-------
File
File uploaded successfully
+
+ Examples
+ --------
+ import asyncio
+
+ from vapi import AsyncVapi
+
+ client = AsyncVapi(
+ token="YOUR_TOKEN",
+ )
+
+
+ async def main() -> None:
+ await client.files.create()
+
+
+ asyncio.run(main())
"""
_response = await self._client_wrapper.httpx_client.request(
"file",
@@ -306,6 +391,25 @@ async def get(self, id: str, *, request_options: typing.Optional[RequestOptions]
-------
File
+
+ Examples
+ --------
+ import asyncio
+
+ from vapi import AsyncVapi
+
+ client = AsyncVapi(
+ token="YOUR_TOKEN",
+ )
+
+
+ async def main() -> None:
+ await client.files.get(
+ id="id",
+ )
+
+
+ asyncio.run(main())
"""
_response = await self._client_wrapper.httpx_client.request(
f"file/{jsonable_encoder(id)}",
@@ -339,6 +443,25 @@ async def delete(self, id: str, *, request_options: typing.Optional[RequestOptio
-------
File
+
+ Examples
+ --------
+ import asyncio
+
+ from vapi import AsyncVapi
+
+ client = AsyncVapi(
+ token="YOUR_TOKEN",
+ )
+
+
+ async def main() -> None:
+ await client.files.delete(
+ id="id",
+ )
+
+
+ asyncio.run(main())
"""
_response = await self._client_wrapper.httpx_client.request(
f"file/{jsonable_encoder(id)}",
@@ -377,6 +500,25 @@ async def update(
-------
File
+
+ Examples
+ --------
+ import asyncio
+
+ from vapi import AsyncVapi
+
+ client = AsyncVapi(
+ token="YOUR_TOKEN",
+ )
+
+
+ async def main() -> None:
+ await client.files.update(
+ id="id",
+ )
+
+
+ asyncio.run(main())
"""
_response = await self._client_wrapper.httpx_client.request(
f"file/{jsonable_encoder(id)}",
diff --git a/src/vapi/logs/client.py b/src/vapi/logs/client.py
index a1f38ed..2af9a92 100644
--- a/src/vapi/logs/client.py
+++ b/src/vapi/logs/client.py
@@ -108,6 +108,20 @@ def get(
-------
SyncPager[Log]
+
+ Examples
+ --------
+ from vapi import Vapi
+
+ client = Vapi(
+ token="YOUR_TOKEN",
+ )
+ response = client.logs.get()
+ for item in response:
+ yield item
+ # alternatively, you can paginate page-by-page
+ for page in response.iter_pages():
+ yield page
"""
page = page if page is not None else 1
_response = self._client_wrapper.httpx_client.request(
@@ -265,6 +279,28 @@ async def get(
-------
AsyncPager[Log]
+
+ Examples
+ --------
+ import asyncio
+
+ from vapi import AsyncVapi
+
+ client = AsyncVapi(
+ token="YOUR_TOKEN",
+ )
+
+
+ async def main() -> None:
+ response = await client.logs.get()
+ async for item in response:
+ yield item
+ # alternatively, you can paginate page-by-page
+ async for page in response.iter_pages():
+ yield page
+
+
+ asyncio.run(main())
"""
page = page if page is not None else 1
_response = await self._client_wrapper.httpx_client.request(
diff --git a/src/vapi/phone_numbers/client.py b/src/vapi/phone_numbers/client.py
index 81ef76e..c1250c0 100644
--- a/src/vapi/phone_numbers/client.py
+++ b/src/vapi/phone_numbers/client.py
@@ -78,6 +78,15 @@ def list(
-------
typing.List[PhoneNumbersListResponseItem]
+
+ Examples
+ --------
+ from vapi import Vapi
+
+ client = Vapi(
+ token="YOUR_TOKEN",
+ )
+ client.phone_numbers.list()
"""
_response = self._client_wrapper.httpx_client.request(
"phone-number",
@@ -124,6 +133,19 @@ def create(
-------
PhoneNumbersCreateResponse
+
+ Examples
+ --------
+ from vapi import CreateByoPhoneNumberDto, Vapi
+
+ client = Vapi(
+ token="YOUR_TOKEN",
+ )
+ client.phone_numbers.create(
+ request=CreateByoPhoneNumberDto(
+ credential_id="credentialId",
+ ),
+ )
"""
_response = self._client_wrapper.httpx_client.request(
"phone-number",
@@ -161,6 +183,17 @@ def get(self, id: str, *, request_options: typing.Optional[RequestOptions] = Non
-------
PhoneNumbersGetResponse
+
+ Examples
+ --------
+ from vapi import Vapi
+
+ client = Vapi(
+ token="YOUR_TOKEN",
+ )
+ client.phone_numbers.get(
+ id="id",
+ )
"""
_response = self._client_wrapper.httpx_client.request(
f"phone-number/{jsonable_encoder(id)}",
@@ -194,6 +227,17 @@ def delete(self, id: str, *, request_options: typing.Optional[RequestOptions] =
-------
PhoneNumbersDeleteResponse
+
+ Examples
+ --------
+ from vapi import Vapi
+
+ client = Vapi(
+ token="YOUR_TOKEN",
+ )
+ client.phone_numbers.delete(
+ id="id",
+ )
"""
_response = self._client_wrapper.httpx_client.request(
f"phone-number/{jsonable_encoder(id)}",
@@ -271,6 +315,17 @@ def update(
-------
PhoneNumbersUpdateResponse
+
+ Examples
+ --------
+ from vapi import Vapi
+
+ client = Vapi(
+ token="YOUR_TOKEN",
+ )
+ client.phone_numbers.update(
+ id="id",
+ )
"""
_response = self._client_wrapper.httpx_client.request(
f"phone-number/{jsonable_encoder(id)}",
@@ -358,6 +413,23 @@ async def list(
-------
typing.List[PhoneNumbersListResponseItem]
+
+ Examples
+ --------
+ import asyncio
+
+ from vapi import AsyncVapi
+
+ client = AsyncVapi(
+ token="YOUR_TOKEN",
+ )
+
+
+ async def main() -> None:
+ await client.phone_numbers.list()
+
+
+ asyncio.run(main())
"""
_response = await self._client_wrapper.httpx_client.request(
"phone-number",
@@ -404,6 +476,27 @@ async def create(
-------
PhoneNumbersCreateResponse
+
+ Examples
+ --------
+ import asyncio
+
+ from vapi import AsyncVapi, CreateByoPhoneNumberDto
+
+ client = AsyncVapi(
+ token="YOUR_TOKEN",
+ )
+
+
+ async def main() -> None:
+ await client.phone_numbers.create(
+ request=CreateByoPhoneNumberDto(
+ credential_id="credentialId",
+ ),
+ )
+
+
+ asyncio.run(main())
"""
_response = await self._client_wrapper.httpx_client.request(
"phone-number",
@@ -441,6 +534,25 @@ async def get(self, id: str, *, request_options: typing.Optional[RequestOptions]
-------
PhoneNumbersGetResponse
+
+ Examples
+ --------
+ import asyncio
+
+ from vapi import AsyncVapi
+
+ client = AsyncVapi(
+ token="YOUR_TOKEN",
+ )
+
+
+ async def main() -> None:
+ await client.phone_numbers.get(
+ id="id",
+ )
+
+
+ asyncio.run(main())
"""
_response = await self._client_wrapper.httpx_client.request(
f"phone-number/{jsonable_encoder(id)}",
@@ -476,6 +588,25 @@ async def delete(
-------
PhoneNumbersDeleteResponse
+
+ Examples
+ --------
+ import asyncio
+
+ from vapi import AsyncVapi
+
+ client = AsyncVapi(
+ token="YOUR_TOKEN",
+ )
+
+
+ async def main() -> None:
+ await client.phone_numbers.delete(
+ id="id",
+ )
+
+
+ asyncio.run(main())
"""
_response = await self._client_wrapper.httpx_client.request(
f"phone-number/{jsonable_encoder(id)}",
@@ -553,6 +684,25 @@ async def update(
-------
PhoneNumbersUpdateResponse
+
+ Examples
+ --------
+ import asyncio
+
+ from vapi import AsyncVapi
+
+ client = AsyncVapi(
+ token="YOUR_TOKEN",
+ )
+
+
+ async def main() -> None:
+ await client.phone_numbers.update(
+ id="id",
+ )
+
+
+ asyncio.run(main())
"""
_response = await self._client_wrapper.httpx_client.request(
f"phone-number/{jsonable_encoder(id)}",
diff --git a/src/vapi/squads/client.py b/src/vapi/squads/client.py
index aead2db..6908413 100644
--- a/src/vapi/squads/client.py
+++ b/src/vapi/squads/client.py
@@ -74,6 +74,15 @@ def list(
-------
typing.List[Squad]
+
+ Examples
+ --------
+ from vapi import Vapi
+
+ client = Vapi(
+ token="YOUR_TOKEN",
+ )
+ client.squads.list()
"""
_response = self._client_wrapper.httpx_client.request(
"squad",
@@ -136,6 +145,17 @@ def create(
-------
Squad
+
+ Examples
+ --------
+ from vapi import SquadMemberDto, Vapi
+
+ client = Vapi(
+ token="YOUR_TOKEN",
+ )
+ client.squads.create(
+ members=[SquadMemberDto()],
+ )
"""
_response = self._client_wrapper.httpx_client.request(
"squad",
@@ -179,6 +199,17 @@ def get(self, id: str, *, request_options: typing.Optional[RequestOptions] = Non
-------
Squad
+
+ Examples
+ --------
+ from vapi import Vapi
+
+ client = Vapi(
+ token="YOUR_TOKEN",
+ )
+ client.squads.get(
+ id="id",
+ )
"""
_response = self._client_wrapper.httpx_client.request(
f"squad/{jsonable_encoder(id)}",
@@ -212,6 +243,17 @@ def delete(self, id: str, *, request_options: typing.Optional[RequestOptions] =
-------
Squad
+
+ Examples
+ --------
+ from vapi import Vapi
+
+ client = Vapi(
+ token="YOUR_TOKEN",
+ )
+ client.squads.delete(
+ id="id",
+ )
"""
_response = self._client_wrapper.httpx_client.request(
f"squad/{jsonable_encoder(id)}",
@@ -266,6 +308,18 @@ def update(
-------
Squad
+
+ Examples
+ --------
+ from vapi import SquadMemberDto, Vapi
+
+ client = Vapi(
+ token="YOUR_TOKEN",
+ )
+ client.squads.update(
+ id="id",
+ members=[SquadMemberDto()],
+ )
"""
_response = self._client_wrapper.httpx_client.request(
f"squad/{jsonable_encoder(id)}",
@@ -352,6 +406,23 @@ async def list(
-------
typing.List[Squad]
+
+ Examples
+ --------
+ import asyncio
+
+ from vapi import AsyncVapi
+
+ client = AsyncVapi(
+ token="YOUR_TOKEN",
+ )
+
+
+ async def main() -> None:
+ await client.squads.list()
+
+
+ asyncio.run(main())
"""
_response = await self._client_wrapper.httpx_client.request(
"squad",
@@ -414,6 +485,25 @@ async def create(
-------
Squad
+
+ Examples
+ --------
+ import asyncio
+
+ from vapi import AsyncVapi, SquadMemberDto
+
+ client = AsyncVapi(
+ token="YOUR_TOKEN",
+ )
+
+
+ async def main() -> None:
+ await client.squads.create(
+ members=[SquadMemberDto()],
+ )
+
+
+ asyncio.run(main())
"""
_response = await self._client_wrapper.httpx_client.request(
"squad",
@@ -457,6 +547,25 @@ async def get(self, id: str, *, request_options: typing.Optional[RequestOptions]
-------
Squad
+
+ Examples
+ --------
+ import asyncio
+
+ from vapi import AsyncVapi
+
+ client = AsyncVapi(
+ token="YOUR_TOKEN",
+ )
+
+
+ async def main() -> None:
+ await client.squads.get(
+ id="id",
+ )
+
+
+ asyncio.run(main())
"""
_response = await self._client_wrapper.httpx_client.request(
f"squad/{jsonable_encoder(id)}",
@@ -490,6 +599,25 @@ async def delete(self, id: str, *, request_options: typing.Optional[RequestOptio
-------
Squad
+
+ Examples
+ --------
+ import asyncio
+
+ from vapi import AsyncVapi
+
+ client = AsyncVapi(
+ token="YOUR_TOKEN",
+ )
+
+
+ async def main() -> None:
+ await client.squads.delete(
+ id="id",
+ )
+
+
+ asyncio.run(main())
"""
_response = await self._client_wrapper.httpx_client.request(
f"squad/{jsonable_encoder(id)}",
@@ -544,6 +672,26 @@ async def update(
-------
Squad
+
+ Examples
+ --------
+ import asyncio
+
+ from vapi import AsyncVapi, SquadMemberDto
+
+ client = AsyncVapi(
+ token="YOUR_TOKEN",
+ )
+
+
+ async def main() -> None:
+ await client.squads.update(
+ id="id",
+ members=[SquadMemberDto()],
+ )
+
+
+ asyncio.run(main())
"""
_response = await self._client_wrapper.httpx_client.request(
f"squad/{jsonable_encoder(id)}",
diff --git a/src/vapi/tools/client.py b/src/vapi/tools/client.py
index 9a099d4..e83f794 100644
--- a/src/vapi/tools/client.py
+++ b/src/vapi/tools/client.py
@@ -80,6 +80,15 @@ def list(
-------
typing.List[ToolsListResponseItem]
+
+ Examples
+ --------
+ from vapi import Vapi
+
+ client = Vapi(
+ token="YOUR_TOKEN",
+ )
+ client.tools.list()
"""
_response = self._client_wrapper.httpx_client.request(
"tool",
@@ -126,6 +135,17 @@ def create(
-------
ToolsCreateResponse
+
+ Examples
+ --------
+ from vapi import CreateDtmfToolDto, Vapi
+
+ client = Vapi(
+ token="YOUR_TOKEN",
+ )
+ client.tools.create(
+ request=CreateDtmfToolDto(),
+ )
"""
_response = self._client_wrapper.httpx_client.request(
"tool",
@@ -163,6 +183,17 @@ def get(self, id: str, *, request_options: typing.Optional[RequestOptions] = Non
-------
ToolsGetResponse
+
+ Examples
+ --------
+ from vapi import Vapi
+
+ client = Vapi(
+ token="YOUR_TOKEN",
+ )
+ client.tools.get(
+ id="id",
+ )
"""
_response = self._client_wrapper.httpx_client.request(
f"tool/{jsonable_encoder(id)}",
@@ -196,6 +227,17 @@ def delete(self, id: str, *, request_options: typing.Optional[RequestOptions] =
-------
ToolsDeleteResponse
+
+ Examples
+ --------
+ from vapi import Vapi
+
+ client = Vapi(
+ token="YOUR_TOKEN",
+ )
+ client.tools.delete(
+ id="id",
+ )
"""
_response = self._client_wrapper.httpx_client.request(
f"tool/{jsonable_encoder(id)}",
@@ -266,6 +308,17 @@ def update(
-------
ToolsUpdateResponse
+
+ Examples
+ --------
+ from vapi import Vapi
+
+ client = Vapi(
+ token="YOUR_TOKEN",
+ )
+ client.tools.update(
+ id="id",
+ )
"""
_response = self._client_wrapper.httpx_client.request(
f"tool/{jsonable_encoder(id)}",
@@ -353,6 +406,23 @@ async def list(
-------
typing.List[ToolsListResponseItem]
+
+ Examples
+ --------
+ import asyncio
+
+ from vapi import AsyncVapi
+
+ client = AsyncVapi(
+ token="YOUR_TOKEN",
+ )
+
+
+ async def main() -> None:
+ await client.tools.list()
+
+
+ asyncio.run(main())
"""
_response = await self._client_wrapper.httpx_client.request(
"tool",
@@ -399,6 +469,25 @@ async def create(
-------
ToolsCreateResponse
+
+ Examples
+ --------
+ import asyncio
+
+ from vapi import AsyncVapi, CreateDtmfToolDto
+
+ client = AsyncVapi(
+ token="YOUR_TOKEN",
+ )
+
+
+ async def main() -> None:
+ await client.tools.create(
+ request=CreateDtmfToolDto(),
+ )
+
+
+ asyncio.run(main())
"""
_response = await self._client_wrapper.httpx_client.request(
"tool",
@@ -436,6 +525,25 @@ async def get(self, id: str, *, request_options: typing.Optional[RequestOptions]
-------
ToolsGetResponse
+
+ Examples
+ --------
+ import asyncio
+
+ from vapi import AsyncVapi
+
+ client = AsyncVapi(
+ token="YOUR_TOKEN",
+ )
+
+
+ async def main() -> None:
+ await client.tools.get(
+ id="id",
+ )
+
+
+ asyncio.run(main())
"""
_response = await self._client_wrapper.httpx_client.request(
f"tool/{jsonable_encoder(id)}",
@@ -469,6 +577,25 @@ async def delete(self, id: str, *, request_options: typing.Optional[RequestOptio
-------
ToolsDeleteResponse
+
+ Examples
+ --------
+ import asyncio
+
+ from vapi import AsyncVapi
+
+ client = AsyncVapi(
+ token="YOUR_TOKEN",
+ )
+
+
+ async def main() -> None:
+ await client.tools.delete(
+ id="id",
+ )
+
+
+ asyncio.run(main())
"""
_response = await self._client_wrapper.httpx_client.request(
f"tool/{jsonable_encoder(id)}",
@@ -539,6 +666,25 @@ async def update(
-------
ToolsUpdateResponse
+
+ Examples
+ --------
+ import asyncio
+
+ from vapi import AsyncVapi
+
+ client = AsyncVapi(
+ token="YOUR_TOKEN",
+ )
+
+
+ async def main() -> None:
+ await client.tools.update(
+ id="id",
+ )
+
+
+ asyncio.run(main())
"""
_response = await self._client_wrapper.httpx_client.request(
f"tool/{jsonable_encoder(id)}",
diff --git a/src/vapi/types/__init__.py b/src/vapi/types/__init__.py
index b9561cc..3f3894a 100644
--- a/src/vapi/types/__init__.py
+++ b/src/vapi/types/__init__.py
@@ -44,8 +44,7 @@
from .azure_open_ai_credential_models_item import AzureOpenAiCredentialModelsItem
from .azure_open_ai_credential_region import AzureOpenAiCredentialRegion
from .azure_voice import AzureVoice
-from .azure_voice_id import AzureVoiceId
-from .azure_voice_id_enum import AzureVoiceIdEnum
+from .azure_voice_voice_id import AzureVoiceVoiceId
from .block_complete_message import BlockCompleteMessage
from .block_complete_message_conditions_item import BlockCompleteMessageConditionsItem
from .block_start_message import BlockStartMessage
@@ -197,15 +196,13 @@
from .deepgram_transcriber_language import DeepgramTranscriberLanguage
from .deepgram_transcriber_model import DeepgramTranscriberModel
from .deepgram_voice import DeepgramVoice
-from .deepgram_voice_id import DeepgramVoiceId
-from .deepgram_voice_id_enum import DeepgramVoiceIdEnum
+from .deepgram_voice_voice_id import DeepgramVoiceVoiceId
from .dtmf_tool import DtmfTool
from .dtmf_tool_messages_item import DtmfToolMessagesItem
from .eleven_labs_credential import ElevenLabsCredential
from .eleven_labs_voice import ElevenLabsVoice
-from .eleven_labs_voice_id import ElevenLabsVoiceId
-from .eleven_labs_voice_id_enum import ElevenLabsVoiceIdEnum
from .eleven_labs_voice_model import ElevenLabsVoiceModel
+from .eleven_labs_voice_voice_id import ElevenLabsVoiceVoiceId
from .end_call_tool import EndCallTool
from .end_call_tool_messages_item import EndCallToolMessagesItem
from .error import Error
@@ -250,8 +247,7 @@
from .knowledge_base import KnowledgeBase
from .lmnt_credential import LmntCredential
from .lmnt_voice import LmntVoice
-from .lmnt_voice_id import LmntVoiceId
-from .lmnt_voice_id_enum import LmntVoiceIdEnum
+from .lmnt_voice_voice_id import LmntVoiceVoiceId
from .log import Log
from .log_request_http_method import LogRequestHttpMethod
from .log_resource import LogResource
@@ -271,8 +267,7 @@
from .monitor import Monitor
from .monitor_plan import MonitorPlan
from .neets_voice import NeetsVoice
-from .neets_voice_id import NeetsVoiceId
-from .neets_voice_id_enum import NeetsVoiceIdEnum
+from .neets_voice_voice_id import NeetsVoiceVoiceId
from .open_ai_credential import OpenAiCredential
from .open_ai_function import OpenAiFunction
from .open_ai_function_parameters import OpenAiFunctionParameters
@@ -283,7 +278,7 @@
from .open_ai_model_model import OpenAiModelModel
from .open_ai_model_tools_item import OpenAiModelToolsItem
from .open_ai_voice import OpenAiVoice
-from .open_ai_voice_id import OpenAiVoiceId
+from .open_ai_voice_voice_id import OpenAiVoiceVoiceId
from .open_router_credential import OpenRouterCredential
from .open_router_model import OpenRouterModel
from .open_router_model_tools_item import OpenRouterModelToolsItem
@@ -305,9 +300,8 @@
from .regex_replacement import RegexReplacement
from .rime_ai_credential import RimeAiCredential
from .rime_ai_voice import RimeAiVoice
-from .rime_ai_voice_id import RimeAiVoiceId
-from .rime_ai_voice_id_enum import RimeAiVoiceIdEnum
from .rime_ai_voice_model import RimeAiVoiceModel
+from .rime_ai_voice_voice_id import RimeAiVoiceVoiceId
from .rule_based_condition import RuleBasedCondition
from .rule_based_condition_operator import RuleBasedConditionOperator
from .runpod_credential import RunpodCredential
@@ -541,8 +535,7 @@
"AzureOpenAiCredentialModelsItem",
"AzureOpenAiCredentialRegion",
"AzureVoice",
- "AzureVoiceId",
- "AzureVoiceIdEnum",
+ "AzureVoiceVoiceId",
"BlockCompleteMessage",
"BlockCompleteMessageConditionsItem",
"BlockStartMessage",
@@ -694,15 +687,13 @@
"DeepgramTranscriberLanguage",
"DeepgramTranscriberModel",
"DeepgramVoice",
- "DeepgramVoiceId",
- "DeepgramVoiceIdEnum",
+ "DeepgramVoiceVoiceId",
"DtmfTool",
"DtmfToolMessagesItem",
"ElevenLabsCredential",
"ElevenLabsVoice",
- "ElevenLabsVoiceId",
- "ElevenLabsVoiceIdEnum",
"ElevenLabsVoiceModel",
+ "ElevenLabsVoiceVoiceId",
"EndCallTool",
"EndCallToolMessagesItem",
"Error",
@@ -747,8 +738,7 @@
"KnowledgeBase",
"LmntCredential",
"LmntVoice",
- "LmntVoiceId",
- "LmntVoiceIdEnum",
+ "LmntVoiceVoiceId",
"Log",
"LogRequestHttpMethod",
"LogResource",
@@ -768,8 +758,7 @@
"Monitor",
"MonitorPlan",
"NeetsVoice",
- "NeetsVoiceId",
- "NeetsVoiceIdEnum",
+ "NeetsVoiceVoiceId",
"OpenAiCredential",
"OpenAiFunction",
"OpenAiFunctionParameters",
@@ -780,7 +769,7 @@
"OpenAiModelModel",
"OpenAiModelToolsItem",
"OpenAiVoice",
- "OpenAiVoiceId",
+ "OpenAiVoiceVoiceId",
"OpenRouterCredential",
"OpenRouterModel",
"OpenRouterModelToolsItem",
@@ -802,9 +791,8 @@
"RegexReplacement",
"RimeAiCredential",
"RimeAiVoice",
- "RimeAiVoiceId",
- "RimeAiVoiceIdEnum",
"RimeAiVoiceModel",
+ "RimeAiVoiceVoiceId",
"RuleBasedCondition",
"RuleBasedConditionOperator",
"RunpodCredential",
diff --git a/src/vapi/types/azure_voice.py b/src/vapi/types/azure_voice.py
index 56d30c4..bb65fd1 100644
--- a/src/vapi/types/azure_voice.py
+++ b/src/vapi/types/azure_voice.py
@@ -5,7 +5,7 @@
import typing
from ..core.serialization import FieldMetadata
import pydantic
-from .azure_voice_id import AzureVoiceId
+from .azure_voice_voice_id import AzureVoiceVoiceId
from .chunk_plan import ChunkPlan
from ..core.pydantic_utilities import IS_PYDANTIC_V2
@@ -25,7 +25,7 @@ class AzureVoice(UniversalBaseModel):
This is the voice provider that will be used.
"""
- voice_id: typing_extensions.Annotated[AzureVoiceId, FieldMetadata(alias="voiceId")] = pydantic.Field()
+ voice_id: typing_extensions.Annotated[AzureVoiceVoiceId, FieldMetadata(alias="voiceId")] = pydantic.Field()
"""
This is the provider-specific ID that will be used.
"""
diff --git a/src/vapi/types/azure_voice_id.py b/src/vapi/types/azure_voice_id.py
deleted file mode 100644
index eeaabe6..0000000
--- a/src/vapi/types/azure_voice_id.py
+++ /dev/null
@@ -1,6 +0,0 @@
-# This file was auto-generated by Fern from our API Definition.
-
-import typing
-from .azure_voice_id_enum import AzureVoiceIdEnum
-
-AzureVoiceId = typing.Union[AzureVoiceIdEnum, str]
diff --git a/src/vapi/types/azure_voice_id_enum.py b/src/vapi/types/azure_voice_id_enum.py
deleted file mode 100644
index 5a9d854..0000000
--- a/src/vapi/types/azure_voice_id_enum.py
+++ /dev/null
@@ -1,5 +0,0 @@
-# This file was auto-generated by Fern from our API Definition.
-
-import typing
-
-AzureVoiceIdEnum = typing.Union[typing.Literal["andrew", "brian", "emma"], typing.Any]
diff --git a/src/vapi/types/azure_voice_voice_id.py b/src/vapi/types/azure_voice_voice_id.py
new file mode 100644
index 0000000..f08f3bb
--- /dev/null
+++ b/src/vapi/types/azure_voice_voice_id.py
@@ -0,0 +1,5 @@
+# This file was auto-generated by Fern from our API Definition.
+
+import typing
+
+AzureVoiceVoiceId = typing.Union[typing.Literal["andrew"], typing.Literal["brian"], typing.Literal["emma"], str]
diff --git a/src/vapi/types/deepgram_voice.py b/src/vapi/types/deepgram_voice.py
index f3becc5..f6bd9a0 100644
--- a/src/vapi/types/deepgram_voice.py
+++ b/src/vapi/types/deepgram_voice.py
@@ -5,7 +5,7 @@
import typing
from ..core.serialization import FieldMetadata
import pydantic
-from .deepgram_voice_id import DeepgramVoiceId
+from .deepgram_voice_voice_id import DeepgramVoiceVoiceId
from .chunk_plan import ChunkPlan
from ..core.pydantic_utilities import IS_PYDANTIC_V2
@@ -25,7 +25,7 @@ class DeepgramVoice(UniversalBaseModel):
This is the voice provider that will be used.
"""
- voice_id: typing_extensions.Annotated[DeepgramVoiceId, FieldMetadata(alias="voiceId")] = pydantic.Field()
+ voice_id: typing_extensions.Annotated[DeepgramVoiceVoiceId, FieldMetadata(alias="voiceId")] = pydantic.Field()
"""
This is the provider-specific ID that will be used.
"""
diff --git a/src/vapi/types/deepgram_voice_id.py b/src/vapi/types/deepgram_voice_id.py
deleted file mode 100644
index fc28b6c..0000000
--- a/src/vapi/types/deepgram_voice_id.py
+++ /dev/null
@@ -1,6 +0,0 @@
-# This file was auto-generated by Fern from our API Definition.
-
-import typing
-from .deepgram_voice_id_enum import DeepgramVoiceIdEnum
-
-DeepgramVoiceId = typing.Union[DeepgramVoiceIdEnum, str]
diff --git a/src/vapi/types/deepgram_voice_id_enum.py b/src/vapi/types/deepgram_voice_id_enum.py
deleted file mode 100644
index 06d6eb8..0000000
--- a/src/vapi/types/deepgram_voice_id_enum.py
+++ /dev/null
@@ -1,10 +0,0 @@
-# This file was auto-generated by Fern from our API Definition.
-
-import typing
-
-DeepgramVoiceIdEnum = typing.Union[
- typing.Literal[
- "asteria", "luna", "stella", "athena", "hera", "orion", "arcas", "perseus", "angus", "orpheus", "helios", "zeus"
- ],
- typing.Any,
-]
diff --git a/src/vapi/types/deepgram_voice_voice_id.py b/src/vapi/types/deepgram_voice_voice_id.py
new file mode 100644
index 0000000..00d6970
--- /dev/null
+++ b/src/vapi/types/deepgram_voice_voice_id.py
@@ -0,0 +1,19 @@
+# This file was auto-generated by Fern from our API Definition.
+
+import typing
+
+DeepgramVoiceVoiceId = typing.Union[
+ typing.Literal["asteria"],
+ typing.Literal["luna"],
+ typing.Literal["stella"],
+ typing.Literal["athena"],
+ typing.Literal["hera"],
+ typing.Literal["orion"],
+ typing.Literal["arcas"],
+ typing.Literal["perseus"],
+ typing.Literal["angus"],
+ typing.Literal["orpheus"],
+ typing.Literal["helios"],
+ typing.Literal["zeus"],
+ str,
+]
diff --git a/src/vapi/types/eleven_labs_voice.py b/src/vapi/types/eleven_labs_voice.py
index 6620031..2749bbe 100644
--- a/src/vapi/types/eleven_labs_voice.py
+++ b/src/vapi/types/eleven_labs_voice.py
@@ -5,7 +5,7 @@
import typing
from ..core.serialization import FieldMetadata
import pydantic
-from .eleven_labs_voice_id import ElevenLabsVoiceId
+from .eleven_labs_voice_voice_id import ElevenLabsVoiceVoiceId
from .eleven_labs_voice_model import ElevenLabsVoiceModel
from .chunk_plan import ChunkPlan
from ..core.pydantic_utilities import IS_PYDANTIC_V2
@@ -26,7 +26,7 @@ class ElevenLabsVoice(UniversalBaseModel):
This is the voice provider that will be used.
"""
- voice_id: typing_extensions.Annotated[ElevenLabsVoiceId, FieldMetadata(alias="voiceId")] = pydantic.Field()
+ voice_id: typing_extensions.Annotated[ElevenLabsVoiceVoiceId, FieldMetadata(alias="voiceId")] = pydantic.Field()
"""
This is the provider-specific ID that will be used. Ensure the Voice is present in your 11Labs Voice Library.
"""
diff --git a/src/vapi/types/eleven_labs_voice_id.py b/src/vapi/types/eleven_labs_voice_id.py
deleted file mode 100644
index 633af95..0000000
--- a/src/vapi/types/eleven_labs_voice_id.py
+++ /dev/null
@@ -1,6 +0,0 @@
-# This file was auto-generated by Fern from our API Definition.
-
-import typing
-from .eleven_labs_voice_id_enum import ElevenLabsVoiceIdEnum
-
-ElevenLabsVoiceId = typing.Union[ElevenLabsVoiceIdEnum, str]
diff --git a/src/vapi/types/eleven_labs_voice_id_enum.py b/src/vapi/types/eleven_labs_voice_id_enum.py
deleted file mode 100644
index 1f9894b..0000000
--- a/src/vapi/types/eleven_labs_voice_id_enum.py
+++ /dev/null
@@ -1,24 +0,0 @@
-# This file was auto-generated by Fern from our API Definition.
-
-import typing
-
-ElevenLabsVoiceIdEnum = typing.Union[
- typing.Literal[
- "burt",
- "marissa",
- "andrea",
- "sarah",
- "phillip",
- "steve",
- "joseph",
- "myra",
- "paula",
- "ryan",
- "drew",
- "paul",
- "mrb",
- "matilda",
- "mark",
- ],
- typing.Any,
-]
diff --git a/src/vapi/types/eleven_labs_voice_voice_id.py b/src/vapi/types/eleven_labs_voice_voice_id.py
new file mode 100644
index 0000000..b1f8f55
--- /dev/null
+++ b/src/vapi/types/eleven_labs_voice_voice_id.py
@@ -0,0 +1,22 @@
+# This file was auto-generated by Fern from our API Definition.
+
+import typing
+
+ElevenLabsVoiceVoiceId = typing.Union[
+ typing.Literal["burt"],
+ typing.Literal["marissa"],
+ typing.Literal["andrea"],
+ typing.Literal["sarah"],
+ typing.Literal["phillip"],
+ typing.Literal["steve"],
+ typing.Literal["joseph"],
+ typing.Literal["myra"],
+ typing.Literal["paula"],
+ typing.Literal["ryan"],
+ typing.Literal["drew"],
+ typing.Literal["paul"],
+ typing.Literal["mrb"],
+ typing.Literal["matilda"],
+ typing.Literal["mark"],
+ str,
+]
diff --git a/src/vapi/types/lmnt_voice.py b/src/vapi/types/lmnt_voice.py
index 18d21ab..65fd95c 100644
--- a/src/vapi/types/lmnt_voice.py
+++ b/src/vapi/types/lmnt_voice.py
@@ -5,7 +5,7 @@
import typing
from ..core.serialization import FieldMetadata
import pydantic
-from .lmnt_voice_id import LmntVoiceId
+from .lmnt_voice_voice_id import LmntVoiceVoiceId
from .chunk_plan import ChunkPlan
from ..core.pydantic_utilities import IS_PYDANTIC_V2
@@ -25,7 +25,7 @@ class LmntVoice(UniversalBaseModel):
This is the voice provider that will be used.
"""
- voice_id: typing_extensions.Annotated[LmntVoiceId, FieldMetadata(alias="voiceId")] = pydantic.Field()
+ voice_id: typing_extensions.Annotated[LmntVoiceVoiceId, FieldMetadata(alias="voiceId")] = pydantic.Field()
"""
This is the provider-specific ID that will be used.
"""
diff --git a/src/vapi/types/lmnt_voice_id.py b/src/vapi/types/lmnt_voice_id.py
deleted file mode 100644
index c1d5c18..0000000
--- a/src/vapi/types/lmnt_voice_id.py
+++ /dev/null
@@ -1,6 +0,0 @@
-# This file was auto-generated by Fern from our API Definition.
-
-import typing
-from .lmnt_voice_id_enum import LmntVoiceIdEnum
-
-LmntVoiceId = typing.Union[LmntVoiceIdEnum, str]
diff --git a/src/vapi/types/lmnt_voice_id_enum.py b/src/vapi/types/lmnt_voice_id_enum.py
deleted file mode 100644
index 482a8e3..0000000
--- a/src/vapi/types/lmnt_voice_id_enum.py
+++ /dev/null
@@ -1,5 +0,0 @@
-# This file was auto-generated by Fern from our API Definition.
-
-import typing
-
-LmntVoiceIdEnum = typing.Union[typing.Literal["lily", "daniel"], typing.Any]
diff --git a/src/vapi/types/lmnt_voice_voice_id.py b/src/vapi/types/lmnt_voice_voice_id.py
new file mode 100644
index 0000000..f7c5969
--- /dev/null
+++ b/src/vapi/types/lmnt_voice_voice_id.py
@@ -0,0 +1,5 @@
+# This file was auto-generated by Fern from our API Definition.
+
+import typing
+
+LmntVoiceVoiceId = typing.Union[typing.Literal["lily"], typing.Literal["daniel"], str]
diff --git a/src/vapi/types/neets_voice.py b/src/vapi/types/neets_voice.py
index 6c77093..82285d9 100644
--- a/src/vapi/types/neets_voice.py
+++ b/src/vapi/types/neets_voice.py
@@ -5,7 +5,7 @@
import typing
from ..core.serialization import FieldMetadata
import pydantic
-from .neets_voice_id import NeetsVoiceId
+from .neets_voice_voice_id import NeetsVoiceVoiceId
from .chunk_plan import ChunkPlan
from ..core.pydantic_utilities import IS_PYDANTIC_V2
@@ -25,7 +25,7 @@ class NeetsVoice(UniversalBaseModel):
This is the voice provider that will be used.
"""
- voice_id: typing_extensions.Annotated[NeetsVoiceId, FieldMetadata(alias="voiceId")] = pydantic.Field()
+ voice_id: typing_extensions.Annotated[NeetsVoiceVoiceId, FieldMetadata(alias="voiceId")] = pydantic.Field()
"""
This is the provider-specific ID that will be used.
"""
diff --git a/src/vapi/types/neets_voice_id.py b/src/vapi/types/neets_voice_id.py
deleted file mode 100644
index 4389d43..0000000
--- a/src/vapi/types/neets_voice_id.py
+++ /dev/null
@@ -1,6 +0,0 @@
-# This file was auto-generated by Fern from our API Definition.
-
-import typing
-from .neets_voice_id_enum import NeetsVoiceIdEnum
-
-NeetsVoiceId = typing.Union[NeetsVoiceIdEnum, str]
diff --git a/src/vapi/types/neets_voice_id_enum.py b/src/vapi/types/neets_voice_id_enum.py
deleted file mode 100644
index d000456..0000000
--- a/src/vapi/types/neets_voice_id_enum.py
+++ /dev/null
@@ -1,5 +0,0 @@
-# This file was auto-generated by Fern from our API Definition.
-
-import typing
-
-NeetsVoiceIdEnum = typing.Union[typing.Literal["vits"], typing.Any]
diff --git a/src/vapi/types/neets_voice_voice_id.py b/src/vapi/types/neets_voice_voice_id.py
new file mode 100644
index 0000000..f9b908f
--- /dev/null
+++ b/src/vapi/types/neets_voice_voice_id.py
@@ -0,0 +1,5 @@
+# This file was auto-generated by Fern from our API Definition.
+
+import typing
+
+NeetsVoiceVoiceId = typing.Union[typing.Literal["vits"], typing.Literal["vits"], str]
diff --git a/src/vapi/types/open_ai_voice.py b/src/vapi/types/open_ai_voice.py
index 5866ae4..78bb7c9 100644
--- a/src/vapi/types/open_ai_voice.py
+++ b/src/vapi/types/open_ai_voice.py
@@ -5,7 +5,7 @@
import typing
from ..core.serialization import FieldMetadata
import pydantic
-from .open_ai_voice_id import OpenAiVoiceId
+from .open_ai_voice_voice_id import OpenAiVoiceVoiceId
from .chunk_plan import ChunkPlan
from ..core.pydantic_utilities import IS_PYDANTIC_V2
@@ -25,7 +25,7 @@ class OpenAiVoice(UniversalBaseModel):
This is the voice provider that will be used.
"""
- voice_id: typing_extensions.Annotated[OpenAiVoiceId, FieldMetadata(alias="voiceId")] = pydantic.Field()
+ voice_id: typing_extensions.Annotated[OpenAiVoiceVoiceId, FieldMetadata(alias="voiceId")] = pydantic.Field()
"""
This is the provider-specific ID that will be used.
"""
diff --git a/src/vapi/types/open_ai_voice_id.py b/src/vapi/types/open_ai_voice_id.py
deleted file mode 100644
index 595f327..0000000
--- a/src/vapi/types/open_ai_voice_id.py
+++ /dev/null
@@ -1,5 +0,0 @@
-# This file was auto-generated by Fern from our API Definition.
-
-import typing
-
-OpenAiVoiceId = typing.Union[typing.Literal["alloy", "echo", "fable", "onyx", "nova", "shimmer"], typing.Any]
diff --git a/src/vapi/types/open_ai_voice_voice_id.py b/src/vapi/types/open_ai_voice_voice_id.py
new file mode 100644
index 0000000..97b1b8c
--- /dev/null
+++ b/src/vapi/types/open_ai_voice_voice_id.py
@@ -0,0 +1,5 @@
+# This file was auto-generated by Fern from our API Definition.
+
+import typing
+
+OpenAiVoiceVoiceId = typing.Union[typing.Literal["alloy", "echo", "fable", "onyx", "nova", "shimmer"], typing.Any]
diff --git a/src/vapi/types/play_ht_voice_voice_id.py b/src/vapi/types/play_ht_voice_voice_id.py
index 6e11183..07162b5 100644
--- a/src/vapi/types/play_ht_voice_voice_id.py
+++ b/src/vapi/types/play_ht_voice_voice_id.py
@@ -1,6 +1,17 @@
# This file was auto-generated by Fern from our API Definition.
-from __future__ import annotations
import typing
-PlayHtVoiceVoiceId = typing.Union["PlayHtVoiceVoiceId", str]
+PlayHtVoiceVoiceId = typing.Union[
+ typing.Literal["jennifer"],
+ typing.Literal["melissa"],
+ typing.Literal["will"],
+ typing.Literal["chris"],
+ typing.Literal["matt"],
+ typing.Literal["jack"],
+ typing.Literal["ruby"],
+ typing.Literal["davis"],
+ typing.Literal["donna"],
+ typing.Literal["michael"],
+ str,
+]
diff --git a/src/vapi/types/rime_ai_voice.py b/src/vapi/types/rime_ai_voice.py
index 8c8289a..433baac 100644
--- a/src/vapi/types/rime_ai_voice.py
+++ b/src/vapi/types/rime_ai_voice.py
@@ -5,7 +5,7 @@
import typing
from ..core.serialization import FieldMetadata
import pydantic
-from .rime_ai_voice_id import RimeAiVoiceId
+from .rime_ai_voice_voice_id import RimeAiVoiceVoiceId
from .rime_ai_voice_model import RimeAiVoiceModel
from .chunk_plan import ChunkPlan
from ..core.pydantic_utilities import IS_PYDANTIC_V2
@@ -26,7 +26,7 @@ class RimeAiVoice(UniversalBaseModel):
This is the voice provider that will be used.
"""
- voice_id: typing_extensions.Annotated[RimeAiVoiceId, FieldMetadata(alias="voiceId")] = pydantic.Field()
+ voice_id: typing_extensions.Annotated[RimeAiVoiceVoiceId, FieldMetadata(alias="voiceId")] = pydantic.Field()
"""
This is the provider-specific ID that will be used.
"""
diff --git a/src/vapi/types/rime_ai_voice_id.py b/src/vapi/types/rime_ai_voice_id.py
deleted file mode 100644
index c22bbc0..0000000
--- a/src/vapi/types/rime_ai_voice_id.py
+++ /dev/null
@@ -1,6 +0,0 @@
-# This file was auto-generated by Fern from our API Definition.
-
-import typing
-from .rime_ai_voice_id_enum import RimeAiVoiceIdEnum
-
-RimeAiVoiceId = typing.Union[RimeAiVoiceIdEnum, str]
diff --git a/src/vapi/types/rime_ai_voice_id_enum.py b/src/vapi/types/rime_ai_voice_id_enum.py
deleted file mode 100644
index a18c73b..0000000
--- a/src/vapi/types/rime_ai_voice_id_enum.py
+++ /dev/null
@@ -1,90 +0,0 @@
-# This file was auto-generated by Fern from our API Definition.
-
-import typing
-
-RimeAiVoiceIdEnum = typing.Union[
- typing.Literal[
- "marsh",
- "bayou",
- "creek",
- "brook",
- "flower",
- "spore",
- "glacier",
- "gulch",
- "alpine",
- "cove",
- "lagoon",
- "tundra",
- "steppe",
- "mesa",
- "grove",
- "rainforest",
- "moraine",
- "wildflower",
- "peak",
- "boulder",
- "abbie",
- "allison",
- "ally",
- "alona",
- "amber",
- "ana",
- "antoine",
- "armon",
- "brenda",
- "brittany",
- "carol",
- "colin",
- "courtney",
- "elena",
- "elliot",
- "eva",
- "geoff",
- "gerald",
- "hank",
- "helen",
- "hera",
- "jen",
- "joe",
- "joy",
- "juan",
- "kendra",
- "kendrick",
- "kenneth",
- "kevin",
- "kris",
- "linda",
- "madison",
- "marge",
- "marina",
- "marissa",
- "marta",
- "maya",
- "nicholas",
- "nyles",
- "phil",
- "reba",
- "rex",
- "rick",
- "ritu",
- "rob",
- "rodney",
- "rohan",
- "rosco",
- "samantha",
- "sandy",
- "selena",
- "seth",
- "sharon",
- "stan",
- "tamra",
- "tanya",
- "tibur",
- "tj",
- "tyler",
- "viv",
- "yadira",
- ],
- typing.Any,
-]
diff --git a/src/vapi/types/rime_ai_voice_voice_id.py b/src/vapi/types/rime_ai_voice_voice_id.py
new file mode 100644
index 0000000..ff718ea
--- /dev/null
+++ b/src/vapi/types/rime_ai_voice_voice_id.py
@@ -0,0 +1,88 @@
+# This file was auto-generated by Fern from our API Definition.
+
+import typing
+
+RimeAiVoiceVoiceId = typing.Union[
+ typing.Literal["marsh"],
+ typing.Literal["bayou"],
+ typing.Literal["creek"],
+ typing.Literal["brook"],
+ typing.Literal["flower"],
+ typing.Literal["spore"],
+ typing.Literal["glacier"],
+ typing.Literal["gulch"],
+ typing.Literal["alpine"],
+ typing.Literal["cove"],
+ typing.Literal["lagoon"],
+ typing.Literal["tundra"],
+ typing.Literal["steppe"],
+ typing.Literal["mesa"],
+ typing.Literal["grove"],
+ typing.Literal["rainforest"],
+ typing.Literal["moraine"],
+ typing.Literal["wildflower"],
+ typing.Literal["peak"],
+ typing.Literal["boulder"],
+ typing.Literal["abbie"],
+ typing.Literal["allison"],
+ typing.Literal["ally"],
+ typing.Literal["alona"],
+ typing.Literal["amber"],
+ typing.Literal["ana"],
+ typing.Literal["antoine"],
+ typing.Literal["armon"],
+ typing.Literal["brenda"],
+ typing.Literal["brittany"],
+ typing.Literal["carol"],
+ typing.Literal["colin"],
+ typing.Literal["courtney"],
+ typing.Literal["elena"],
+ typing.Literal["elliot"],
+ typing.Literal["eva"],
+ typing.Literal["geoff"],
+ typing.Literal["gerald"],
+ typing.Literal["hank"],
+ typing.Literal["helen"],
+ typing.Literal["hera"],
+ typing.Literal["jen"],
+ typing.Literal["joe"],
+ typing.Literal["joy"],
+ typing.Literal["juan"],
+ typing.Literal["kendra"],
+ typing.Literal["kendrick"],
+ typing.Literal["kenneth"],
+ typing.Literal["kevin"],
+ typing.Literal["kris"],
+ typing.Literal["linda"],
+ typing.Literal["madison"],
+ typing.Literal["marge"],
+ typing.Literal["marina"],
+ typing.Literal["marissa"],
+ typing.Literal["marta"],
+ typing.Literal["maya"],
+ typing.Literal["nicholas"],
+ typing.Literal["nyles"],
+ typing.Literal["phil"],
+ typing.Literal["reba"],
+ typing.Literal["rex"],
+ typing.Literal["rick"],
+ typing.Literal["ritu"],
+ typing.Literal["rob"],
+ typing.Literal["rodney"],
+ typing.Literal["rohan"],
+ typing.Literal["rosco"],
+ typing.Literal["samantha"],
+ typing.Literal["sandy"],
+ typing.Literal["selena"],
+ typing.Literal["seth"],
+ typing.Literal["sharon"],
+ typing.Literal["stan"],
+ typing.Literal["tamra"],
+ typing.Literal["tanya"],
+ typing.Literal["tibur"],
+ typing.Literal["tj"],
+ typing.Literal["tyler"],
+ typing.Literal["viv"],
+ typing.Literal["yadira"],
+ str,
+]