Skip to content

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

@Yondiame

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
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions