Summary
The Vapi REST API supports silenceTimeoutSeconds on the Assistant object (the duration of silence after which a call is automatically ended). The vapi-python SDK exposes this field on TransferAssistant but not on the primary assistant create/update/override types, which is where it's actually needed for everyday use.
This forces consumers to either drop down to raw HTTP requests or monkey-patch the generated Pydantic models to set it.
Verified against vapi-python==1.11.1
| Type |
Has silence_timeout_seconds? |
TransferAssistant (warm-transfer payload) |
✅ Yes — defined at vapi/types/transfer_assistant.py:88, aliased to silenceTimeoutSeconds |
CreateAssistantDto |
❌ No |
UpdateAssistantDto |
❌ No |
Assistant |
❌ No |
AssistantOverrides (per-call override) |
❌ No |
In fact, CreateAssistantDto, Assistant, and AssistantOverrides contain no timeout field of any kind — the only matches for timeout in those files are imports of the CallHookCustomerSpeechTimeout hook type, which is unrelated.
Current Behavior
from vapi import Vapi
client = Vapi(token=...)
client.assistants.create(
name="my-assistant",
silence_timeout_seconds=30, # not accepted: not a field on CreateAssistantDto
...
)
The field is silently dropped (or raises a Pydantic validation error depending on how the DTO is constructed), so the call ends up using the platform default rather than the configured value.
Expected Behavior
silence_timeout_seconds should be a first-class field on the same types where it exists in the REST API, mirroring the existing implementation on TransferAssistant:
- Python field:
silence_timeout_seconds
- Wire field:
silenceTimeoutSeconds
- Type:
Optional[int] (seconds)
- Server-side default applies when omitted
Specifically it should be added to:
CreateAssistantDto
UpdateAssistantDto
Assistant
AssistantOverrides
Why This Matters
Silence handling is one of the most important knobs for voice agent UX. Without SDK support on the create/update path, teams using vapi-python in production have to either:
- Bypass the typed SDK and POST raw JSON, losing all model validation, or
- Subclass / patch the generated Pydantic models, which breaks on every SDK upgrade.
The inconsistency is the kicker — the field is already generated for TransferAssistant, so this is almost certainly an upstream spec/codegen omission rather than a deliberate design choice.
Proposed Change
If the SDK is generated from an OpenAPI/Fern spec, please confirm whether silenceTimeoutSeconds is missing from the spec definitions for the create/update/override schemas and regenerate from a corrected spec. Otherwise, add the field to the four types listed above with the same FieldMetadata(alias="silenceTimeoutSeconds") pattern used in transfer_assistant.py.
References
- SDK version checked:
vapi-python==1.11.1
- Existing precedent in SDK:
vapi/types/transfer_assistant.py:88
- Vapi API docs: Assistant object →
silenceTimeoutSeconds
Summary
The Vapi REST API supports
silenceTimeoutSecondson the Assistant object (the duration of silence after which a call is automatically ended). Thevapi-pythonSDK exposes this field onTransferAssistantbut not on the primary assistant create/update/override types, which is where it's actually needed for everyday use.This forces consumers to either drop down to raw HTTP requests or monkey-patch the generated Pydantic models to set it.
Verified against
vapi-python==1.11.1silence_timeout_seconds?TransferAssistant(warm-transfer payload)vapi/types/transfer_assistant.py:88, aliased tosilenceTimeoutSecondsCreateAssistantDtoUpdateAssistantDtoAssistantAssistantOverrides(per-call override)In fact,
CreateAssistantDto,Assistant, andAssistantOverridescontain no timeout field of any kind — the only matches fortimeoutin those files are imports of theCallHookCustomerSpeechTimeouthook type, which is unrelated.Current Behavior
The field is silently dropped (or raises a Pydantic validation error depending on how the DTO is constructed), so the call ends up using the platform default rather than the configured value.
Expected Behavior
silence_timeout_secondsshould be a first-class field on the same types where it exists in the REST API, mirroring the existing implementation onTransferAssistant:silence_timeout_secondssilenceTimeoutSecondsOptional[int](seconds)Specifically it should be added to:
CreateAssistantDtoUpdateAssistantDtoAssistantAssistantOverridesWhy This Matters
Silence handling is one of the most important knobs for voice agent UX. Without SDK support on the create/update path, teams using
vapi-pythonin production have to either:The inconsistency is the kicker — the field is already generated for
TransferAssistant, so this is almost certainly an upstream spec/codegen omission rather than a deliberate design choice.Proposed Change
If the SDK is generated from an OpenAPI/Fern spec, please confirm whether
silenceTimeoutSecondsis missing from the spec definitions for the create/update/override schemas and regenerate from a corrected spec. Otherwise, add the field to the four types listed above with the sameFieldMetadata(alias="silenceTimeoutSeconds")pattern used intransfer_assistant.py.References
vapi-python==1.11.1vapi/types/transfer_assistant.py:88silenceTimeoutSeconds