Skip to content

Add silence_timeout_seconds to CreateAssistantDto, UpdateAssistantDto, Assistant, and AssistantOverrides #24

Description

@Yondiame

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:

  1. Bypass the typed SDK and POST raw JSON, losing all model validation, or
  2. 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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions