Update an assistant
Partial update — only the provided fields change. Every update creates a version snapshot. PUT is accepted as an alias of PATCH. Required scope: assistants:write (keys without scope restrictions have full access).
Authorizations
API key (fam_..., created under Settings → API Keys) or an OAuth 2.0 access token (fam_at_...). Keys can be restricted to scopes such as assistants:read, calls:write, campaigns:write, automations:read, dashboards:read, dashboards:write, leads:write, segments:write, phone_numbers:write, sip_trunks:write, knowledge:write, voices:read, billing:read, settings:write, platform:read, platform:write; a *:write scope implies the matching *:read. Automation and dashboard endpoints also accept the legacy calls:* scope. Keys without scope restrictions have full access.
Path Parameters
Assistant ID.
Body
Writable assistant fields. Unknown fields are ignored. Non-null engine model overrides require the Fallbacks & Guardrails add-on and are validated against the assistant owner's effective catalog access and engine compatibility. Null resets to the next default level.
Monotone optimistic concurrency revision.
x >= 1Number of assistants currently assigned to this tool.
x >= 0pipeline, realtime, half_cascade openai, azure, google, groq, anthropic, null deepgram, openai, google, azure cartesia, elevenlabs, openai, google, azure Cartesia dynamic-emotions toggle. Send [] to disable it or any non-empty array to enable every supported Cartesia emotion.
Optional free-text speaking-style instructions for compatible TTS models. Send null to clear the override.
Voice stability override. Send null to use the voice-provider default.
0 <= x <= 1Voice similarity override. Send null to use the voice-provider default.
0 <= x <= 1Voice-style exaggeration override. Send null to use the voice-provider default.
0 <= x <= 1Speaker-boost override. Send null to use the voice-provider default.
multilingual_model, english_model, vad, stt bvc, bvc_telephony, none agent_speaks_first, user_speaks_first When true, the caller may barge in during the opening greeting (first message / audio / silence fallback). Default false = play greeting uninterrupted. Separate from allow_interruptions (rest of the call).
When greeting_mode is user_speaks_first: after ai_entry_timeout_sec of initial silence, the assistant speaks (static or dynamic). Default false.
static, dynamic 1 <= x <= 20iOS/Android Call Screen Handling. Mirrored into flow_json.pre_call when a flow exists.
Agent type. Omit or null = Single prompt (default). Object = Conversational flow (Flow JSON v1). Seed Start→Agent→End for a basic flow; non-trivial graphs may require the flow_builder plan toggle. In flow mode, system_prompt is the Advanced / base prompt (agent-node text is appended).
Maximum call duration in seconds (60–1800). null = unlimited (budget cap still applies).
60 <= x <= 1800How long inbound callers hear ringing before the call times out (30–120 s, default 60).
30 <= x <= 120How long outbound SIP/WhatsApp calls ring before no-answer (15–80 s, default 45).
15 <= x <= 80Seconds after VAD detects speech with no STT transcript before asking the caller to repeat. null disables.
1 <= x <= 30off, questions_only, draft_for_review, tentative_live Agent-level post-call webhook URL.
1 <= x <= 300 <= x <= 5BackgroundAudioPlayer config (ambient, ambient_volume, thinking, thinking_volume). {} = off. Hold music is configured on the warm-transfer tool, not here.
Realtime turn handling: robust voice activity, semantic completion, or adaptive barge-in.
server_vad, semantic, adaptive How quickly the assistant responds when realtime_turn_mode is semantic.
auto, low, medium, high Per-language voice overrides for Pipeline/Half-cascade. Languages without an entry keep the main voice.
Automatic response-language switching; derived from secondary_languages by the dashboard.
inherit follows the workspace memory default; on/off override it.
inherit, on, off workspace = shared across assistants; assistant = private to this assistant; both = shared identity + per-assistant history.
workspace, assistant, both Per-assistant read allowlist intersected with workspace policy. Send [] to disable reads.
A currently operational memory channel. Web is deliberately excluded until signed-in browser users have a server-verified identity boundary.
voice, sms, whatsapp, email, telegram, slack, messenger, teams, discord, gchat, x Per-assistant write allowlist intersected with workspace policy. Send [] to disable writes.
A currently operational memory channel. Web is deliberately excluded until signed-in browser users have a server-verified identity boundary.
voice, sms, whatsapp, email, telegram, slack, messenger, teams, discord, gchat, x Allowed summary categories. Send [] for metadata-only memory with no new content summary.
identity, preferences, agreements, open_items When true, apply pii_redaction entity filters to stored transcripts.
PII entity categories + optional custom regexes.
Post-call analysis configuration. When set (non-empty), the LLM judge evaluates each finished transcript and writes the result to calls.analysis (plus the denormalized calls.sentiment/calls.success filter columns). All fields are optional.
AI-QA scorecard configuration (plan-gated ai_qa_scorecards). null or enabled: false disables scoring.
IANA timezone of the assistant (e.g. Europe/Berlin, default). Anchors the get_current_time system tool, the {{time}}/{{date}}/{{datetime}}/{{weekday}} system variables, and the check_business_hours built-in tool. On campaign calls the campaign's timezone overrides it per call.
Language the assistant answers in by default (ISO-639-1, see GET /languages).
Languages the assistant may switch to when the caller clearly speaks them (ISO-639-1). Non-empty implies multilingual STT + auto language switch.
Custom variable definitions, referenced as {{key}} and resolved per call (explicit call values > inbound webhook enrichment > system variables > default_value).
Optional webhook called on inbound calls to enrich variable values before the conversation starts.
Built-in tool configurations (also accepted as tools for compatibility).
Response
The updated assistant.
A voice assistant configuration. Nullable model overrides are independent per engine: pipeline uses llm_*, realtime uses realtime_*, and half-cascade uses half_cascade_* for its text-capable realtime input plus tts_* for output.