diff --git a/README.md b/README.md index 97194e4..e69de29 100644 --- a/README.md +++ b/README.md @@ -1,152 +0,0 @@ -# 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 120be6b..fb67c18 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "Vapi" -version = "0.0.0-alpha2" +version = "0.0.0-alpha3" description = "" readme = "README.md" authors = [] diff --git a/reference.md b/reference.md deleted file mode 100644 index 05a7373..0000000 --- a/reference.md +++ /dev/null @@ -1,3662 +0,0 @@ -# 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 f468e54..11a9793 100644 --- a/src/vapi/__init__.py +++ b/src/vapi/__init__.py @@ -45,7 +45,8 @@ AzureOpenAiCredentialModelsItem, AzureOpenAiCredentialRegion, AzureVoice, - AzureVoiceVoiceId, + AzureVoiceId, + AzureVoiceIdEnum, BlockCompleteMessage, BlockCompleteMessageConditionsItem, BlockStartMessage, @@ -197,13 +198,15 @@ DeepgramTranscriberLanguage, DeepgramTranscriberModel, DeepgramVoice, - DeepgramVoiceVoiceId, + DeepgramVoiceId, + DeepgramVoiceIdEnum, DtmfTool, DtmfToolMessagesItem, ElevenLabsCredential, ElevenLabsVoice, + ElevenLabsVoiceId, + ElevenLabsVoiceIdEnum, ElevenLabsVoiceModel, - ElevenLabsVoiceVoiceId, EndCallTool, EndCallToolMessagesItem, Error, @@ -248,7 +251,8 @@ KnowledgeBase, LmntCredential, LmntVoice, - LmntVoiceVoiceId, + LmntVoiceId, + LmntVoiceIdEnum, Log, LogRequestHttpMethod, LogResource, @@ -268,7 +272,8 @@ Monitor, MonitorPlan, NeetsVoice, - NeetsVoiceVoiceId, + NeetsVoiceId, + NeetsVoiceIdEnum, OpenAiCredential, OpenAiFunction, OpenAiFunctionParameters, @@ -279,7 +284,7 @@ OpenAiModelModel, OpenAiModelToolsItem, OpenAiVoice, - OpenAiVoiceVoiceId, + OpenAiVoiceId, OpenRouterCredential, OpenRouterModel, OpenRouterModelToolsItem, @@ -301,8 +306,9 @@ RegexReplacement, RimeAiCredential, RimeAiVoice, + RimeAiVoiceId, + RimeAiVoiceIdEnum, RimeAiVoiceModel, - RimeAiVoiceVoiceId, RuleBasedCondition, RuleBasedConditionOperator, RunpodCredential, @@ -578,7 +584,8 @@ "AzureOpenAiCredentialModelsItem", "AzureOpenAiCredentialRegion", "AzureVoice", - "AzureVoiceVoiceId", + "AzureVoiceId", + "AzureVoiceIdEnum", "BadRequestError", "BlockCompleteMessage", "BlockCompleteMessageConditionsItem", @@ -737,13 +744,15 @@ "DeepgramTranscriberLanguage", "DeepgramTranscriberModel", "DeepgramVoice", - "DeepgramVoiceVoiceId", + "DeepgramVoiceId", + "DeepgramVoiceIdEnum", "DtmfTool", "DtmfToolMessagesItem", "ElevenLabsCredential", "ElevenLabsVoice", + "ElevenLabsVoiceId", + "ElevenLabsVoiceIdEnum", "ElevenLabsVoiceModel", - "ElevenLabsVoiceVoiceId", "EndCallTool", "EndCallToolMessagesItem", "Error", @@ -788,7 +797,8 @@ "KnowledgeBase", "LmntCredential", "LmntVoice", - "LmntVoiceVoiceId", + "LmntVoiceId", + "LmntVoiceIdEnum", "Log", "LogRequestHttpMethod", "LogResource", @@ -810,7 +820,8 @@ "Monitor", "MonitorPlan", "NeetsVoice", - "NeetsVoiceVoiceId", + "NeetsVoiceId", + "NeetsVoiceIdEnum", "OpenAiCredential", "OpenAiFunction", "OpenAiFunctionParameters", @@ -821,7 +832,7 @@ "OpenAiModelModel", "OpenAiModelToolsItem", "OpenAiVoice", - "OpenAiVoiceVoiceId", + "OpenAiVoiceId", "OpenRouterCredential", "OpenRouterModel", "OpenRouterModelToolsItem", @@ -849,8 +860,9 @@ "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 8f7a9e7..06bc83e 100644 --- a/src/vapi/analytics/client.py +++ b/src/vapi/analytics/client.py @@ -35,27 +35,6 @@ 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", @@ -103,35 +82,6 @@ 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 d654956..084d37c 100644 --- a/src/vapi/assistants/client.py +++ b/src/vapi/assistants/client.py @@ -94,15 +94,6 @@ 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", @@ -334,15 +325,6 @@ def create( ------- Assistant - - Examples - -------- - from vapi import Vapi - - client = Vapi( - token="YOUR_TOKEN", - ) - client.assistants.create() """ _response = self._client_wrapper.httpx_client.request( "assistant", @@ -433,17 +415,6 @@ 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)}", @@ -477,17 +448,6 @@ 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)}", @@ -707,17 +667,6 @@ 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)}", @@ -851,23 +800,6 @@ 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", @@ -1099,23 +1031,6 @@ 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", @@ -1206,25 +1121,6 @@ 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)}", @@ -1258,25 +1154,6 @@ 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)}", @@ -1496,25 +1373,6 @@ 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 7071f64..0ae2390 100644 --- a/src/vapi/blocks/client.py +++ b/src/vapi/blocks/client.py @@ -81,15 +81,6 @@ 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", @@ -136,19 +127,6 @@ 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", @@ -186,17 +164,6 @@ 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)}", @@ -230,17 +197,6 @@ 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)}", @@ -342,17 +298,6 @@ 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)}", @@ -450,23 +395,6 @@ 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", @@ -513,27 +441,6 @@ 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", @@ -571,25 +478,6 @@ 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)}", @@ -623,25 +511,6 @@ 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)}", @@ -743,25 +612,6 @@ 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 5328d82..371286d 100644 --- a/src/vapi/calls/client.py +++ b/src/vapi/calls/client.py @@ -81,15 +81,6 @@ 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", @@ -185,15 +176,6 @@ def create( ------- Call - - Examples - -------- - from vapi import Vapi - - client = Vapi( - token="YOUR_TOKEN", - ) - client.calls.create() """ _response = self._client_wrapper.httpx_client.request( "call", @@ -250,17 +232,6 @@ 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)}", @@ -294,17 +265,6 @@ 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)}", @@ -343,17 +303,6 @@ 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)}", @@ -438,23 +387,6 @@ 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", @@ -550,23 +482,6 @@ 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", @@ -623,25 +538,6 @@ 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)}", @@ -675,25 +571,6 @@ 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)}", @@ -732,25 +609,6 @@ 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 59dec37..5eca670 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-alpha2", + "X-Fern-SDK-Version": "0.0.0-alpha3", } headers["Authorization"] = f"Bearer {self._get_token()}" return headers diff --git a/src/vapi/files/client.py b/src/vapi/files/client.py index 12af218..c03032f 100644 --- a/src/vapi/files/client.py +++ b/src/vapi/files/client.py @@ -31,15 +31,6 @@ 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", @@ -74,15 +65,6 @@ 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", @@ -131,17 +113,6 @@ 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)}", @@ -175,17 +146,6 @@ 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)}", @@ -224,17 +184,6 @@ 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)}", @@ -275,23 +224,6 @@ 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", @@ -326,23 +258,6 @@ 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", @@ -391,25 +306,6 @@ 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)}", @@ -443,25 +339,6 @@ 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)}", @@ -500,25 +377,6 @@ 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 2af9a92..a1f38ed 100644 --- a/src/vapi/logs/client.py +++ b/src/vapi/logs/client.py @@ -108,20 +108,6 @@ 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( @@ -279,28 +265,6 @@ 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 c1250c0..81ef76e 100644 --- a/src/vapi/phone_numbers/client.py +++ b/src/vapi/phone_numbers/client.py @@ -78,15 +78,6 @@ 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", @@ -133,19 +124,6 @@ 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", @@ -183,17 +161,6 @@ 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)}", @@ -227,17 +194,6 @@ 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)}", @@ -315,17 +271,6 @@ 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)}", @@ -413,23 +358,6 @@ 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", @@ -476,27 +404,6 @@ 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", @@ -534,25 +441,6 @@ 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)}", @@ -588,25 +476,6 @@ 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)}", @@ -684,25 +553,6 @@ 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 6908413..aead2db 100644 --- a/src/vapi/squads/client.py +++ b/src/vapi/squads/client.py @@ -74,15 +74,6 @@ 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", @@ -145,17 +136,6 @@ 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", @@ -199,17 +179,6 @@ 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)}", @@ -243,17 +212,6 @@ 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)}", @@ -308,18 +266,6 @@ 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)}", @@ -406,23 +352,6 @@ 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", @@ -485,25 +414,6 @@ 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", @@ -547,25 +457,6 @@ 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)}", @@ -599,25 +490,6 @@ 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)}", @@ -672,26 +544,6 @@ 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 e83f794..9a099d4 100644 --- a/src/vapi/tools/client.py +++ b/src/vapi/tools/client.py @@ -80,15 +80,6 @@ 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", @@ -135,17 +126,6 @@ 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", @@ -183,17 +163,6 @@ 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)}", @@ -227,17 +196,6 @@ 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)}", @@ -308,17 +266,6 @@ 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)}", @@ -406,23 +353,6 @@ 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", @@ -469,25 +399,6 @@ 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", @@ -525,25 +436,6 @@ 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)}", @@ -577,25 +469,6 @@ 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)}", @@ -666,25 +539,6 @@ 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 3f3894a..b9561cc 100644 --- a/src/vapi/types/__init__.py +++ b/src/vapi/types/__init__.py @@ -44,7 +44,8 @@ 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_voice_id import AzureVoiceVoiceId +from .azure_voice_id import AzureVoiceId +from .azure_voice_id_enum import AzureVoiceIdEnum from .block_complete_message import BlockCompleteMessage from .block_complete_message_conditions_item import BlockCompleteMessageConditionsItem from .block_start_message import BlockStartMessage @@ -196,13 +197,15 @@ from .deepgram_transcriber_language import DeepgramTranscriberLanguage from .deepgram_transcriber_model import DeepgramTranscriberModel from .deepgram_voice import DeepgramVoice -from .deepgram_voice_voice_id import DeepgramVoiceVoiceId +from .deepgram_voice_id import DeepgramVoiceId +from .deepgram_voice_id_enum import DeepgramVoiceIdEnum 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 @@ -247,7 +250,8 @@ from .knowledge_base import KnowledgeBase from .lmnt_credential import LmntCredential from .lmnt_voice import LmntVoice -from .lmnt_voice_voice_id import LmntVoiceVoiceId +from .lmnt_voice_id import LmntVoiceId +from .lmnt_voice_id_enum import LmntVoiceIdEnum from .log import Log from .log_request_http_method import LogRequestHttpMethod from .log_resource import LogResource @@ -267,7 +271,8 @@ from .monitor import Monitor from .monitor_plan import MonitorPlan from .neets_voice import NeetsVoice -from .neets_voice_voice_id import NeetsVoiceVoiceId +from .neets_voice_id import NeetsVoiceId +from .neets_voice_id_enum import NeetsVoiceIdEnum from .open_ai_credential import OpenAiCredential from .open_ai_function import OpenAiFunction from .open_ai_function_parameters import OpenAiFunctionParameters @@ -278,7 +283,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_voice_id import OpenAiVoiceVoiceId +from .open_ai_voice_id import OpenAiVoiceId from .open_router_credential import OpenRouterCredential from .open_router_model import OpenRouterModel from .open_router_model_tools_item import OpenRouterModelToolsItem @@ -300,8 +305,9 @@ 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 @@ -535,7 +541,8 @@ "AzureOpenAiCredentialModelsItem", "AzureOpenAiCredentialRegion", "AzureVoice", - "AzureVoiceVoiceId", + "AzureVoiceId", + "AzureVoiceIdEnum", "BlockCompleteMessage", "BlockCompleteMessageConditionsItem", "BlockStartMessage", @@ -687,13 +694,15 @@ "DeepgramTranscriberLanguage", "DeepgramTranscriberModel", "DeepgramVoice", - "DeepgramVoiceVoiceId", + "DeepgramVoiceId", + "DeepgramVoiceIdEnum", "DtmfTool", "DtmfToolMessagesItem", "ElevenLabsCredential", "ElevenLabsVoice", + "ElevenLabsVoiceId", + "ElevenLabsVoiceIdEnum", "ElevenLabsVoiceModel", - "ElevenLabsVoiceVoiceId", "EndCallTool", "EndCallToolMessagesItem", "Error", @@ -738,7 +747,8 @@ "KnowledgeBase", "LmntCredential", "LmntVoice", - "LmntVoiceVoiceId", + "LmntVoiceId", + "LmntVoiceIdEnum", "Log", "LogRequestHttpMethod", "LogResource", @@ -758,7 +768,8 @@ "Monitor", "MonitorPlan", "NeetsVoice", - "NeetsVoiceVoiceId", + "NeetsVoiceId", + "NeetsVoiceIdEnum", "OpenAiCredential", "OpenAiFunction", "OpenAiFunctionParameters", @@ -769,7 +780,7 @@ "OpenAiModelModel", "OpenAiModelToolsItem", "OpenAiVoice", - "OpenAiVoiceVoiceId", + "OpenAiVoiceId", "OpenRouterCredential", "OpenRouterModel", "OpenRouterModelToolsItem", @@ -791,8 +802,9 @@ "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 bb65fd1..56d30c4 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_voice_id import AzureVoiceVoiceId +from .azure_voice_id import AzureVoiceId 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[AzureVoiceVoiceId, FieldMetadata(alias="voiceId")] = pydantic.Field() + voice_id: typing_extensions.Annotated[AzureVoiceId, 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 new file mode 100644 index 0000000..eeaabe6 --- /dev/null +++ b/src/vapi/types/azure_voice_id.py @@ -0,0 +1,6 @@ +# 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 new file mode 100644 index 0000000..5a9d854 --- /dev/null +++ b/src/vapi/types/azure_voice_id_enum.py @@ -0,0 +1,5 @@ +# 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 deleted file mode 100644 index f08f3bb..0000000 --- a/src/vapi/types/azure_voice_voice_id.py +++ /dev/null @@ -1,5 +0,0 @@ -# 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 f6bd9a0..f3becc5 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_voice_id import DeepgramVoiceVoiceId +from .deepgram_voice_id import DeepgramVoiceId 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[DeepgramVoiceVoiceId, FieldMetadata(alias="voiceId")] = pydantic.Field() + voice_id: typing_extensions.Annotated[DeepgramVoiceId, 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 new file mode 100644 index 0000000..fc28b6c --- /dev/null +++ b/src/vapi/types/deepgram_voice_id.py @@ -0,0 +1,6 @@ +# 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 new file mode 100644 index 0000000..06d6eb8 --- /dev/null +++ b/src/vapi/types/deepgram_voice_id_enum.py @@ -0,0 +1,10 @@ +# 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 deleted file mode 100644 index 00d6970..0000000 --- a/src/vapi/types/deepgram_voice_voice_id.py +++ /dev/null @@ -1,19 +0,0 @@ -# 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 2749bbe..6620031 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_voice_id import ElevenLabsVoiceVoiceId +from .eleven_labs_voice_id import ElevenLabsVoiceId 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[ElevenLabsVoiceVoiceId, FieldMetadata(alias="voiceId")] = pydantic.Field() + voice_id: typing_extensions.Annotated[ElevenLabsVoiceId, 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 new file mode 100644 index 0000000..633af95 --- /dev/null +++ b/src/vapi/types/eleven_labs_voice_id.py @@ -0,0 +1,6 @@ +# 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 new file mode 100644 index 0000000..1f9894b --- /dev/null +++ b/src/vapi/types/eleven_labs_voice_id_enum.py @@ -0,0 +1,24 @@ +# 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 deleted file mode 100644 index b1f8f55..0000000 --- a/src/vapi/types/eleven_labs_voice_voice_id.py +++ /dev/null @@ -1,22 +0,0 @@ -# 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 65fd95c..18d21ab 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_voice_id import LmntVoiceVoiceId +from .lmnt_voice_id import LmntVoiceId 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[LmntVoiceVoiceId, FieldMetadata(alias="voiceId")] = pydantic.Field() + voice_id: typing_extensions.Annotated[LmntVoiceId, 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 new file mode 100644 index 0000000..c1d5c18 --- /dev/null +++ b/src/vapi/types/lmnt_voice_id.py @@ -0,0 +1,6 @@ +# 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 new file mode 100644 index 0000000..482a8e3 --- /dev/null +++ b/src/vapi/types/lmnt_voice_id_enum.py @@ -0,0 +1,5 @@ +# 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 deleted file mode 100644 index f7c5969..0000000 --- a/src/vapi/types/lmnt_voice_voice_id.py +++ /dev/null @@ -1,5 +0,0 @@ -# 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 82285d9..6c77093 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_voice_id import NeetsVoiceVoiceId +from .neets_voice_id import NeetsVoiceId 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[NeetsVoiceVoiceId, FieldMetadata(alias="voiceId")] = pydantic.Field() + voice_id: typing_extensions.Annotated[NeetsVoiceId, 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 new file mode 100644 index 0000000..4389d43 --- /dev/null +++ b/src/vapi/types/neets_voice_id.py @@ -0,0 +1,6 @@ +# 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 new file mode 100644 index 0000000..d000456 --- /dev/null +++ b/src/vapi/types/neets_voice_id_enum.py @@ -0,0 +1,5 @@ +# 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 deleted file mode 100644 index f9b908f..0000000 --- a/src/vapi/types/neets_voice_voice_id.py +++ /dev/null @@ -1,5 +0,0 @@ -# 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 78bb7c9..5866ae4 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_voice_id import OpenAiVoiceVoiceId +from .open_ai_voice_id import OpenAiVoiceId 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[OpenAiVoiceVoiceId, FieldMetadata(alias="voiceId")] = pydantic.Field() + voice_id: typing_extensions.Annotated[OpenAiVoiceId, 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 new file mode 100644 index 0000000..595f327 --- /dev/null +++ b/src/vapi/types/open_ai_voice_id.py @@ -0,0 +1,5 @@ +# 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 deleted file mode 100644 index 97b1b8c..0000000 --- a/src/vapi/types/open_ai_voice_voice_id.py +++ /dev/null @@ -1,5 +0,0 @@ -# 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 07162b5..6e11183 100644 --- a/src/vapi/types/play_ht_voice_voice_id.py +++ b/src/vapi/types/play_ht_voice_voice_id.py @@ -1,17 +1,6 @@ # This file was auto-generated by Fern from our API Definition. +from __future__ import annotations import typing -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, -] +PlayHtVoiceVoiceId = typing.Union["PlayHtVoiceVoiceId", str] diff --git a/src/vapi/types/rime_ai_voice.py b/src/vapi/types/rime_ai_voice.py index 433baac..8c8289a 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_voice_id import RimeAiVoiceVoiceId +from .rime_ai_voice_id import RimeAiVoiceId 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[RimeAiVoiceVoiceId, FieldMetadata(alias="voiceId")] = pydantic.Field() + voice_id: typing_extensions.Annotated[RimeAiVoiceId, 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 new file mode 100644 index 0000000..c22bbc0 --- /dev/null +++ b/src/vapi/types/rime_ai_voice_id.py @@ -0,0 +1,6 @@ +# 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 new file mode 100644 index 0000000..a18c73b --- /dev/null +++ b/src/vapi/types/rime_ai_voice_id_enum.py @@ -0,0 +1,90 @@ +# 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 deleted file mode 100644 index ff718ea..0000000 --- a/src/vapi/types/rime_ai_voice_voice_id.py +++ /dev/null @@ -1,88 +0,0 @@ -# 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, -]