Properties
| Name | Type | Description |
|---|---|---|
| name | object | New name for the agent |
| description | object | New description for the agent |
| prompt_id | object | Prompt ID to assign (null to detach) |
| send_mode | object | Default send mode: 'auto' or 'draft'. OMIT to leave the send-mode unchanged. |
| knowledge_collection_ids | object | Replace all knowledge collections with these IDs (empty list = clear all) |
| status | object | Agent status: 'active', 'paused', or 'archived'. OMIT to leave the status unchanged. |
| text_engine | object | Text-execution engine: 'agentic', 'ai_assisted', 'rule_based', or 'claude_channels'. Replaces the legacy execution_mode field (20260523_002). Voice is now derived from triggers, not engine. OMIT to le |
| remote_tool | object | For an external_agent: the integration action that starts the remote agent. |
| target_session | object | For a Claude Code agent: the desktop session that answers questions from the AI panel. |
| model | object | The model the agent runs on; omit for the platform default. |
| max_iterations | object | Hard cap on loop turns per run; omit to leave it unchanged. |
| output_text_filters | object | Post-processing rules for agent responses. |
| api_surface | object | OpenAI endpoint routing setting. |
| native_web_search | object | Whether the agent may use the model provider's built-in web search. |
| prompt_text | object | The agent's system prompt. |
| auto_reply_rules | object | Plain-English rules injected into the fast model's prompt. |
| priority | object | Agent priority for trigger matching. LOWER number = HIGHER priority (wins tiebreaks). Typical range 1-100. Fallback auto-reply agents use 10; specialised/topical agents use 100. When two agents match |
| vision_enabled | object | Per-agent opt-in for vision content. |
| allowed_tools | object | Names of the capabilities this agent may use; replaces the current list. Omit to leave it unchanged; an empty list leaves the agent with none. |
| denied_tools | object | Block-list of capabilities the agent must not call. |
| include_situation | object | Include situation context (channel, sender info, trigger type) in the agent's prompt. OMIT to leave this flag unchanged. |
| include_learned_style | object | Include learned communication style (per-contact tone, dormancy state) in the agent's prompt. OMIT to leave this flag unchanged. |
| include_job_state | object | Include current job state (active job context, tasks, notes) in the agent's prompt. OMIT to leave this flag unchanged. |
| include_conversation_history | object | Include recent messages from this thread (up to 20) in the agent's prompt. A voice call follows it too: true (default) starts the call with the earlier messages and calls with this caller, false start |
| include_thread_summary | object | Include condensed summary of older thread messages in the agent's prompt. OMIT to leave this flag unchanged. |
| include_tool_call_history | object | Include the agent's own past calls and results from recent runs. |
| include_safety_guidelines | object | Inject the generic Safety Guidelines block (~80 tokens) into the system prompt. Default OFF — enable only if you don't already write safety rules in your Instructions. Agentic mode only. OMIT to leave |
| include_data_confidentiality | object | Inject the Data Confidentiality block (~250 tokens, cross-contact PII isolation + prompt-injection defense) into the system prompt. Default OFF. Agentic mode only. OMIT to leave this flag unchanged. |
| include_factual_accuracy | object | Inject the Factual Accuracy block (~100 tokens, generic anti-hallucination rules) into the system prompt. Default OFF — skip if you write domain-specific accuracy rules in Instructions. Agentic mode o |
| include_specialists | object | Inject a [SPECIALISTS] block (~50–200 tokens) listing the workspace's delegation-capable agents so a router-style agent can pick a handoff target without first calling agents.list. Default OFF for new |
| fast_model | object | Model for the fast-path responder (voice, text auto-reply, agent executor). Defaults to deepseek-v4-flash-nothink when unset. Non-Anthropic models (deepseek-v4-flash-nothink, gpt-4.1-nano, kimi-k2.6) |
| fast_prompt_override | object | Full fast-path prompt override; placeholders are substituted. |
| script | object | rule_based Python code run in the workbench sandbox on each matched event. |
| voice_primary_model | object | Primary model for voice turns. |
| voice_realtime_model | object | Realtime (v2v) model for the agent's voice_engine. openai_realtime: 'gpt-realtime' (~18c/min on short calls) or 'gpt-realtime-mini' (~75% cheaper). gemini_realtime: a Gemini Live model, newest first ' |
| voice_realtime_voice | object | The voice a realtime (v2v) engine speaks in. gemini_realtime: Puck (male, upbeat), Charon (male, informative), Fenrir (male, excitable), Orus (male, firm), Kore (female, firm), Aoede (female, breezy), |
| voice_endpointing_max_delay | object | LiveKit endpointing.max_delay (0.5-10.0s, default 3.0). Ceiling on how long the agent waits for a turn to end. voice_endpointing_min_delay is the floor after silence; this is what stops a thinking pau |
| voice_endpointing_mode | object | LiveKit endpointing mode. 'fixed' (default) waits voice_endpointing_min_delay every turn; 'dynamic' adapts the wait from the conversation's own rhythm. OMIT to leave unchanged. |
| voice_max_call_duration_s | object | Wall-clock cap for a voice call in seconds, clamped to 60-14400; the worker ends the call at it regardless of what the conversation is doing. OMIT to leave unchanged (default is no cap — a call ends w |
| voice_output_gain_db | object | Output attenuation in dB applied to the agent's WhatsApp call audio before the codec (-12.0 to 0.0, default 0 = unchanged). Use a negative value (e.g. -3.5) when a hot voice engine (OpenAI Realtime ri |
| voice_max_tokens | object | Max tokens per voice reply. |
| voice_max_tool_calls | object | Maximum calls per voice turn. |
| voice_stt_provider | object | Speech-to-text provider. 'deepgram' (default) runs Nova-3 / Flux and preserves existing behaviour. 'gladia' routes to Gladia streaming STT (solaria-1), which is Deepgram-class latency and covers ~115 |
| voice_stt_model | object | Speech-to-text model for voice. |
| voice_stt_language | object | STT language code, validated against the SELECTED voice_stt_provider. 'multi' (default) enables autodetect / code-switching on either provider; a singleton like 'en', 'ru', 'uz' gives higher accuracy |
| voice_stt_keyterms | object | Domain-vocab bias for STT — names, product SKUs, etc. Passed verbatim as repeated `&keyterm= |
| voice_transfer_numbers | object | Phone numbers (E.164, e.g. '+15551234567') the agent may cold-transfer a live call to ('let me put you through to a manager'). Any destination not on this list is refused; an empty list [] means the a |
| voice_tts_provider | object | Text-to-speech provider: 'deepgram' (default, Aura-2 EN-only), 'openai' (multilingual), 'cartesia' (Sonic-3, ultra-low TTFB, multilingual), 'alibaba' (CosyVoice v3-flash, multilingual, ~95ms TTFB), 'q |
| voice_tts_voice | object | TTS voice id — provider-specific (e.g. 'aura-2-thalia-en' for Deepgram, 'alloy' for OpenAI, Cartesia voice UUID). Pass null to revert to provider default. |
| voice_tts_language | object | TTS language code, BCP-47 lite e.g. 'en', 'es', 'pt-BR' (Cartesia only, default 'en'). |
| voice_tts_speed | object | TTS playback speed multiplier (0.5-2.0, default 1.0). OpenAI/Cartesia only — ignored for Deepgram. |
| voice_endpointing_min_delay | object | Silence after end-of-utterance before agent replies (0.1-2.0s, default 0.3). Higher = fewer false interrupts; lower = snappier. |
| voice_interruption_min_duration | object | Min caller speech duration to interrupt the agent (0.1-1.5s, default 0.25). Higher = ignore short fillers like 'uh-huh'. |
| voice_group_interim_barge_in | object | GROUP/Meet barge-in: interrupt the agent AS SOON AS a participant starts speaking (on the interim transcript), instead of waiting for the finished utterance. Default true. Set true to make a presenter |
| voice_group_barge_in_min_words | object | GROUP/Meet barge-in word gate (1-6, default 1): a participant line must have at least this many words to interrupt the agent. 1 = any word interrupts (most responsive); raise to ignore short cross-tal |
| voice_group_barge_in_stop_words | object | GROUP/Meet barge-in stop-words: any of these words/phrases ALWAYS interrupts the agent, even below voice_group_barge_in_min_words (e.g. ['стоп','подожди','вопрос','stop','wait','question']). Empty lis |
| voice_group_barge_in_requires_address | object | GROUP/Meet barge-in: when true, only lines that ADDRESS the agent (by name/keyword) interrupt it — two humans talking to each other won't break the walk. Default false. OMIT to leave unchanged. |
| voice_greeting | object | Opening line the agent speaks when the call connects. Pass an empty string "" to clear. Omit or null leaves unchanged. |
| voice_greeting_returning | object | Greeting variant for RETURNING callers (thread has prior history or a resolved name). Supports '{name}' — replaced with the caller's name when known, stripped when not. Pass an empty string "" to clea |
| voice_filler_enabled | object | Emit thinking filler audio while working. |
| voice_denoise | object | Server-side noise suppression (DeepFilterNet) on the INBOUND caller audio before STT — cleans background noise so the agent hears callers in loud/public places and gets fewer false barge-ins. Channel- |
| voice_filler_audio_preset | object | Which bundled clip plays as thinking filler. |
| voice_greeting_interruptible | object | Allow the caller to barge in during the opener TTS. Default true (trial-friendly — long greetings can be interrupted). Set false on outbound-call agents whose configured opener would otherwise get pre |
| voice_silence_reprompt_s | object | Re-prompt a silent caller after N seconds. |
| voice_greeting_prerender | object | Pre-synthesize the greeting in the agent's voice. |
| voice_speak_first | object | Greet immediately, or listen first and answer. |
| voice_preemptive_generation | object | Speculatively start the model on speech-to-text partials. |
| voice_hold_ready_reply | object | Keep a ready reply the caller talked over and say it at the next pause. |
| voice_record_calls | object | Record voice calls handled by this agent (stereo audio: caller and agent on separate channels), stored with the call for later playback. Default false. Ensure callers are informed of recording where c |
| voice_record_announce | object | On recorded calls, prepend a short 'this call may be recorded' notice to the agent's greeting. Only takes effect when voice_record_calls is enabled. Default false. OMIT to leave unchanged. |
| voice_call_analysis | object | Run post-call analysis after each answered call. |
| voice_thinking_texts | object | Phrases spoken while the agent sets up the turn. |
| voice_turn_detector | object | Voice end-of-turn detector: 'vad' (default — sharp, low-latency) or 'multilingual' (semantic model, ~1s slower per turn, fewer mid-pause cuts). OMIT to leave unchanged. |
| voice_engine | object | Voice execution engine. |
| voice_v2v_transcripts | object | Enable live transcripts for voice-to-voice engines (default true). OMIT to leave unchanged. |
| pause_on_human_reply | object | Pause the agent on a thread the moment a human operator replies there. Default true. OMIT to leave unchanged. |
| require_explicit_send | object | When true, the agent answers a customer only by sending a message explicitly (or stays silent); its closing text is never delivered. Requires the agent to be allowed to stay silent. Default false. |
| resume_policy | object | When a human-paused thread hands control back to the agent: 'manual' (stays paused until an operator resumes it from the thread header), 'next_incoming_from_guest' (default — resumes on the contact's |
| debounce_seconds | object | Seconds to wait after the last inbound message before generating, so rapid-fire messages coalesce into one reply (0-120, default 5). OMIT to leave unchanged. |
| voice_flux_eot_threshold | object | Flux STT end-of-turn confidence threshold (0.1-1.0). Higher = wait for more certainty before finalizing the turn. Flux STT only (ignored on nova-3). OMIT to keep the worker default (0.7). |
| voice_flux_eager_eot_threshold | object | Flux eager end-of-turn threshold. |
| voice_flux_eot_timeout_ms | object | Flux end-of-turn hard timeout in ms (500-15000). Flux STT only. OMIT to keep the worker default (5000). |
| voice_early_finalize_confidence | object | Flux early-finalize confidence (0.1-1.0, worker default 0.65). Lower = finalize sooner on trailing silence (snappier, small mid-word clip risk). Flux STT only. OMIT to leave unchanged. |
| voice_mip_opt_out | object | Opt out of Deepgram's model-improvement program (privacy) for Flux STT. Default false. OMIT to leave unchanged. |
| voice_tools | object | The exact set of capabilities exposed to the live voice runner. |
| default_calendar_id | object | Default Google calendar for this agent's calendar operations. |
JSON Schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://artifacts.apis.io/dialogbrain-com/json-schema/dialogbrain-com-agent-update-request-schema.json",
"title": "AgentUpdateRequest",
"x-generated": "2026-10-30",
"x-method": "derived",
"x-generator": "derive-json-schema.py",
"x-source": "openapi/dialogbrain-com-openapi.json#/components/schemas/AgentUpdateRequest",
"properties": {
"name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Name",
"description": "New name for the agent"
},
"description": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Description",
"description": "New description for the agent"
},
"prompt_id": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"title": "Prompt Id",
"description": "Prompt ID to assign (null to detach)"
},
"send_mode": {
"anyOf": [
{
"type": "string",
"enum": [
"auto",
"draft"
]
},
{
"type": "null"
}
],
"title": "Send Mode",
"description": "Default send mode: 'auto' or 'draft'. OMIT to leave the send-mode unchanged."
},
"knowledge_collection_ids": {
"anyOf": [
{
"items": {},
"type": "array"
},
{
"type": "null"
}
],
"title": "Knowledge Collection Ids",
"description": "Replace all knowledge collections with these IDs (empty list = clear all)"
},
"status": {
"anyOf": [
{
"type": "string",
"enum": [
"active",
"paused",
"archived"
]
},
{
"type": "null"
}
],
"title": "Status",
"description": "Agent status: 'active', 'paused', or 'archived'. OMIT to leave the status unchanged."
},
"text_engine": {
"anyOf": [
{
"type": "string",
"enum": [
"rule_based",
"agentic",
"claude_channels",
"external_agent"
]
},
{
"type": "null"
}
],
"title": "Text Engine",
"description": "Text-execution engine: 'agentic', 'ai_assisted', 'rule_based', or 'claude_channels'. Replaces the legacy execution_mode field (20260523_002). Voice is now derived from triggers, not engine. OMIT to leave unchanged."
},
"remote_tool": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Remote Tool",
"description": "For an external_agent: the integration action that starts the remote agent."
},
"target_session": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Target Session",
"description": "For a Claude Code agent: the desktop session that answers questions from the AI panel."
},
"model": {
"anyOf": [
{
"type": "string",
"enum": [
"claude-haiku-4-5-20251001",
"claude-opus-4-6",
"claude-sonnet-4-6",
"claude-sonnet-5",
"dashscope-glm-5.2",
"dashscope-glm-5.2-nothink",
"deepseek-v4-flash",
"deepseek-v4-flash-nothink",
"gpt-4.1",
"gpt-4.1-mini",
"gpt-4.1-nano",
"gpt-4o",
"kimi-k2.6",
"qwen-flash",
"qwen-plus",
"qwen3-vl-plus",
"qwen3.6-flash",
"qwen3.6-plus"
]
},
{
"type": "null"
}
],
"title": "Model",
"description": "The model the agent runs on; omit for the platform default."
},
"max_iterations": {
"anyOf": [
{
"type": "integer",
"maximum": 50.0,
"minimum": 1.0
},
{
"type": "null"
}
],
"title": "Max Iterations",
"description": "Hard cap on loop turns per run; omit to leave it unchanged."
},
"output_text_filters": {
"anyOf": [
{
"items": {},
"type": "array"
},
{
"type": "null"
}
],
"title": "Output Text Filters",
"description": "Post-processing rules for agent responses."
},
"api_surface": {
"anyOf": [
{
"type": "string",
"enum": [
"chat_completions",
"responses"
]
},
{
"type": "null"
}
],
"title": "Api Surface",
"description": "OpenAI endpoint routing setting."
},
"native_web_search": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"title": "Native Web Search",
"description": "Whether the agent may use the model provider's built-in web search."
},
"prompt_text": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Prompt Text",
"description": "The agent's system prompt."
},
"auto_reply_rules": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Auto Reply Rules",
"description": "Plain-English rules injected into the fast model's prompt."
},
"priority": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"title": "Priority",
"description": "Agent priority for trigger matching. LOWER number = HIGHER priority (wins tiebreaks). Typical range 1-100. Fallback auto-reply agents use 10; specialised/topical agents use 100. When two agents match the same incoming message, the one with the lower priority number fires."
},
"vision_enabled": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"title": "Vision Enabled",
"description": "Per-agent opt-in for vision content."
},
"allowed_tools": {
"anyOf": [
{
"items": {},
"type": "array"
},
{
"type": "null"
}
],
"title": "Allowed Tools",
"description": "Names of the capabilities this agent may use; replaces the current list. Omit to leave it unchanged; an empty list leaves the agent with none."
},
"denied_tools": {
"anyOf": [
{
"items": {},
"type": "array"
},
{
"type": "null"
}
],
"title": "Denied Tools",
"description": "Block-list of capabilities the agent must not call."
},
"include_situation": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"title": "Include Situation",
"description": "Include situation context (channel, sender info, trigger type) in the agent's prompt. OMIT to leave this flag unchanged."
},
"include_learned_style": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"title": "Include Learned Style",
"description": "Include learned communication style (per-contact tone, dormancy state) in the agent's prompt. OMIT to leave this flag unchanged."
},
"include_job_state": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"title": "Include Job State",
"description": "Include current job state (active job context, tasks, notes) in the agent's prompt. OMIT to leave this flag unchanged."
},
"include_conversation_history": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"title": "Include Conversation History",
"description": "Include recent messages from this thread (up to 20) in the agent's prompt. A voice call follows it too: true (default) starts the call with the earlier messages and calls with this caller, false starts every call from zero (for an agent that takes a new order each call). OMIT to leave this flag unchanged."
},
"include_thread_summary": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"title": "Include Thread Summary",
"description": "Include condensed summary of older thread messages in the agent's prompt. OMIT to leave this flag unchanged."
},
"include_tool_call_history": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"title": "Include Tool Call History",
"description": "Include the agent's own past calls and results from recent runs."
},
"include_safety_guidelines": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"title": "Include Safety Guidelines",
"description": "Inject the generic Safety Guidelines block (~80 tokens) into the system prompt. Default OFF — enable only if you don't already write safety rules in your Instructions. Agentic mode only. OMIT to leave this flag unchanged."
},
"include_data_confidentiality": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"title": "Include Data Confidentiality",
"description": "Inject the Data Confidentiality block (~250 tokens, cross-contact PII isolation + prompt-injection defense) into the system prompt. Default OFF. Agentic mode only. OMIT to leave this flag unchanged."
},
"include_factual_accuracy": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"title": "Include Factual Accuracy",
"description": "Inject the Factual Accuracy block (~100 tokens, generic anti-hallucination rules) into the system prompt. Default OFF — skip if you write domain-specific accuracy rules in Instructions. Agentic mode only. OMIT to leave this flag unchanged."
},
"include_specialists": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"title": "Include Specialists",
"description": "Inject a [SPECIALISTS] block (~50–200 tokens) listing the workspace's delegation-capable agents so a router-style agent can pick a handoff target without first calling agents.list. Default OFF for new agents; the Router template ships with this ON. Agentic mode only. OMIT to leave this flag unchanged."
},
"fast_model": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Fast Model",
"description": "Model for the fast-path responder (voice, text auto-reply, agent executor). Defaults to deepseek-v4-flash-nothink when unset. Non-Anthropic models (deepseek-v4-flash-nothink, gpt-4.1-nano, kimi-k2.6) do NOT use BYOK today — they use the system API key + credits. Pass null to revert to default."
},
"fast_prompt_override": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Fast Prompt Override",
"description": "Full fast-path prompt override; placeholders are substituted."
},
"script": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Script",
"description": "rule_based Python code run in the workbench sandbox on each matched event."
},
"voice_primary_model": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Voice Primary Model",
"description": "Primary model for voice turns."
},
"voice_realtime_model": {
"anyOf": [
{
"type": "string",
"enum": [
"gpt-realtime",
"gpt-realtime-mini",
"gemini-3.8-live",
"gemini-3.1-flash-live-preview",
"gemini-2.5-flash-native-audio-latest",
"gemini-2.5-flash-native-audio-preview-12-2025",
"default"
]
},
{
"type": "null"
}
],
"title": "Voice Realtime Model",
"description": "Realtime (v2v) model for the agent's voice_engine. openai_realtime: 'gpt-realtime' (~18c/min on short calls) or 'gpt-realtime-mini' (~75% cheaper). gemini_realtime: a Gemini Live model, newest first 'gemini-3.8-live' (the default), 'gemini-3.1-flash-live-preview', 'gemini-2.5-flash-native-audio-latest', 'gemini-2.5-flash-native-audio-preview-12-2025'. 'default' = back to the engine's default. OMIT to leave unchanged."
},
"voice_realtime_voice": {
"anyOf": [
{
"type": "string",
"enum": [
"Puck",
"Charon",
"Fenrir",
"Orus",
"Kore",
"Aoede",
"Leda",
"Zephyr",
"default"
]
},
{
"type": "null"
}
],
"title": "Voice Realtime Voice",
"description": "The voice a realtime (v2v) engine speaks in. gemini_realtime: Puck (male, upbeat), Charon (male, informative), Fenrir (male, excitable), Orus (male, firm), Kore (female, firm), Aoede (female, breezy), Leda (female, youthful), Zephyr (female, bright); default Puck. An engine not named here has a fixed voice. Separate from voice_tts_voice, which is the pipeline engine's TTS voice. 'default' = back to the engine's default. OMIT to leave unchanged."
},
"voice_endpointing_max_delay": {
"anyOf": [
{
"type": "number",
"maximum": 10.0,
"minimum": 0.5
},
{
"type": "null"
}
],
"title": "Voice Endpointing Max Delay",
"description": "LiveKit endpointing.max_delay (0.5-10.0s, default 3.0). Ceiling on how long the agent waits for a turn to end. voice_endpointing_min_delay is the floor after silence; this is what stops a thinking pause from holding the turn open, and it is the knob to raise when an agent talks over someone who pauses mid-thought."
},
"voice_endpointing_mode": {
"anyOf": [
{
"type": "string",
"enum": [
"fixed",
"dynamic"
]
},
{
"type": "null"
}
],
"title": "Voice Endpointing Mode",
"description": "LiveKit endpointing mode. 'fixed' (default) waits voice_endpointing_min_delay every turn; 'dynamic' adapts the wait from the conversation's own rhythm. OMIT to leave unchanged."
},
"voice_max_call_duration_s": {
"anyOf": [
{
"type": "integer",
"maximum": 14400.0,
"minimum": 1.0
},
{
"type": "null"
}
],
"title": "Voice Max Call Duration S",
"description": "Wall-clock cap for a voice call in seconds, clamped to 60-14400; the worker ends the call at it regardless of what the conversation is doing. OMIT to leave unchanged (default is no cap — a call ends when the conversation ends). To REMOVE an existing cap, clear the field in the agent's Voice settings UI (0 there = no limit). Two agents talking to each other are capped separately by calls.agent_duel's own max_duration_s."
},
"voice_output_gain_db": {
"anyOf": [
{
"type": "number",
"maximum": 0.0,
"minimum": -12.0
},
{
"type": "null"
}
],
"title": "Voice Output Gain Db",
"description": "Output attenuation in dB applied to the agent's WhatsApp call audio before the codec (-12.0 to 0.0, default 0 = unchanged). Use a negative value (e.g. -3.5) when a hot voice engine (OpenAI Realtime rides near 0 dBFS) causes blown-speaker distortion on loud words: the 24 kbps call codec needs headroom, and this restores it. Applied on the next call, no deploy needed."
},
"voice_max_tokens": {
"anyOf": [
{
"type": "integer",
"maximum": 200.0,
"minimum": 40.0
},
{
"type": "null"
}
],
"title": "Voice Max Tokens",
"description": "Max tokens per voice reply."
},
"voice_max_tool_calls": {
"anyOf": [
{
"type": "integer",
"maximum": 10.0,
"minimum": 1.0
},
{
"type": "null"
}
],
"title": "Voice Max Tool Calls",
"description": "Maximum calls per voice turn."
},
"voice_stt_provider": {
"anyOf": [
{
"type": "string",
"enum": [
"deepgram",
"gladia"
]
},
{
"type": "null"
}
],
"title": "Voice Stt Provider",
"description": "Speech-to-text provider. 'deepgram' (default) runs Nova-3 / Flux and preserves existing behaviour. 'gladia' routes to Gladia streaming STT (solaria-1), which is Deepgram-class latency and covers ~115 languages Deepgram does NOT — including Uzbek ('uz'), Kazakh ('kk'), Azerbaijani ('az'), Tajik ('tg'). Pick 'gladia' when the caller's language is outside Deepgram's coverage, then set voice_stt_language to that language's code. The provider also decides which language codes voice_stt_language accepts. OMIT to leave the STT provider unchanged."
},
"voice_stt_model": {
"anyOf": [
{
"type": "string",
"enum": [
"flux",
"flux-general-en",
"flux-general-multi",
"nova-3"
]
},
{
"type": "null"
}
],
"title": "Voice Stt Model",
"description": "Speech-to-text model for voice."
},
"voice_stt_language": {
"anyOf": [
{
"type": "string",
"enum": [
"af",
"am",
"ar",
"ar-AE",
"ar-DZ",
"ar-EG",
"ar-IQ",
"ar-IR",
"ar-JO",
"ar-KW",
"ar-LB",
"ar-MA",
"ar-PS",
"ar-QA",
"ar-SA",
"ar-SD",
"ar-SY",
"ar-TD",
"ar-TN",
"as",
"ast",
"az",
"ba",
"be",
"bg",
"bn",
"bo",
"br",
"bs",
"ca",
"ceb",
"cs",
"cy",
"da",
"da-DK",
"de",
"de-CH",
"el",
"en",
"en-AU",
"en-GB",
"en-IN",
"en-NZ",
"en-US",
"es",
"es-419",
"et",
"eu",
"fa",
"ff",
"fi",
"fo",
"fr",
"fr-CA",
"fy",
"ga",
"gd",
"gl",
"gu",
"ha",
"haw",
"he",
"hi",
"hr",
"ht",
"hu",
"hy",
"id",
"ig",
"ilo",
"is",
"it",
"ja",
"jv",
"ka",
"kk",
"km",
"kn",
"ko",
"ko-KR",
"la",
"lb",
"lg",
"ln",
"lo",
"lt",
"lv",
"mg",
"mi",
"mk",
"ml",
"mn",
"mo",
"mr",
"ms",
"mt",
"multi",
"my",
"ne",
"nl",
"nl-BE",
"nn",
"no",
"oc",
"or",
"pa",
"pl",
"ps",
"pt",
"pt-BR",
"pt-PT",
"ro",
"ru",
"sa",
"sd",
"si",
"sk",
"sl",
"sn",
"so",
"sq",
"sr",
"ss",
"su",
"sv",
"sv-SE",
"sw",
"ta",
"te",
"tg",
"th",
"th-TH",
"tk",
"tl",
"tn",
"tr",
"tt",
"uk",
"ur",
"uz",
"vi",
"wo",
"xh",
"yi",
"yo",
"zh",
"zh-CN",
"zh-HK",
"zh-Hans",
"zh-Hant",
"zh-TW",
"zu"
]
},
{
"type": "null"
}
],
"title": "Voice Stt Language",
"description": "STT language code, validated against the SELECTED voice_stt_provider. 'multi' (default) enables autodetect / code-switching on either provider; a singleton like 'en', 'ru', 'uz' gives higher accuracy when the caller language is known. Deepgram provider: 'en' runs on Flux (fastest, eager end-of-turn); 'multi' and every other language run on Nova-3. Some languages — notably Thai ('th'), Vietnamese ('vi'), Indonesian ('id'), Tagalog ('tl') — are NOT in Nova-3's 'multi' auto-detect set, so those callers MUST be given an explicit code. Gladia provider: use its codes (e.g. 'uz' Uzbek, 'kk' Kazakh, 'az' Azerbaijani, 'tg' Tajik) — these are NOT valid under Deepgram. The enum below lists the union of both providers' codes; a code invalid for the chosen provider is rejected on save. OMIT to leave the STT language unchanged."
},
"voice_stt_keyterms": {
"anyOf": [
{
"items": {},
"type": "array"
},
{
"type": "null"
}
],
"title": "Voice Stt Keyterms",
"description": "Domain-vocab bias for STT — names, product SKUs, etc. Passed verbatim as repeated `&keyterm=<w>` query params. Works on both Nova-3 and Flux. Prefer short phrases over full sentences. Empty list [] = no bias. Omit leaves unchanged."
},
"voice_transfer_numbers": {
"anyOf": [
{
"items": {},
"type": "array"
},
{
"type": "null"
}
],
"title": "Voice Transfer Numbers",
"description": "Phone numbers (E.164, e.g. '+15551234567') the agent may cold-transfer a live call to ('let me put you through to a manager'). Any destination not on this list is refused; an empty list [] means the agent cannot transfer at all. Omit leaves unchanged."
},
"voice_tts_provider": {
"anyOf": [
{
"type": "string",
"enum": [
"alibaba",
"cartesia",
"deepgram",
"openai",
"qwen",
"xai"
]
},
{
"type": "null"
}
],
"title": "Voice Tts Provider",
"description": "Text-to-speech provider: 'deepgram' (default, Aura-2 EN-only), 'openai' (multilingual), 'cartesia' (Sonic-3, ultra-low TTFB, multilingual), 'alibaba' (CosyVoice v3-flash, multilingual, ~95ms TTFB), 'qwen' (Qwen3-TTS, self-hosted), or 'xai' (Grok, ~20 langs). OMIT to leave the TTS provider unchanged."
},
"voice_tts_voice": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Voice Tts Voice",
"description": "TTS voice id — provider-specific (e.g. 'aura-2-thalia-en' for Deepgram, 'alloy' for OpenAI, Cartesia voice UUID). Pass null to revert to provider default."
},
"voice_tts_language": {
"anyOf": [
{
"type": "string",
"pattern": "^[a-z]{2}(-[A-Z]{2})?$"
},
{
"type": "null"
}
],
"title": "Voice Tts Language",
"description": "TTS language code, BCP-47 lite e.g. 'en', 'es', 'pt-BR' (Cartesia only, default 'en')."
},
"voice_tts_speed": {
"anyOf": [
{
"type": "number",
"maximum": 2.0,
"minimum": 0.5
},
{
"type": "null"
}
],
"title": "Voice Tts Speed",
"description": "TTS playback speed multiplier (0.5-2.0, default 1.0). OpenAI/Cartesia only — ignored for Deepgram."
},
"voice_endpointing_min_delay": {
"anyOf": [
{
"type": "number",
"maximum": 2.0,
"minimum": 0.1
},
{
"type": "null"
}
],
"title": "Voice Endpointing Min Delay",
"description": "Silence after end-of-utterance before agent replies (0.1-2.0s, default 0.3). Higher = fewer false interrupts; lower = snappier."
},
"voice_interruption_min_duration": {
"anyOf": [
{
"type": "number",
"maximum": 1.5,
"minimum": 0.1
},
{
"type": "null"
}
],
"title": "Voice Interruption Min Duration",
"description": "Min caller speech duration to interrupt the agent (0.1-1.5s, default 0.25). Higher = ignore short fillers like 'uh-huh'."
},
"voice_group_interim_barge_in": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"title": "Voice Group Interim Barge In",
"description": "GROUP/Meet barge-in: interrupt the agent AS SOON AS a participant starts speaking (on the interim transcript), instead of waiting for the finished utterance. Default true. Set true to make a presenter/group agent easy to interrupt mid-sentence (word-gated by voice_group_barge_in_min_words so ambient noise can't trip it); false = only a completed utterance interrupts. OMIT to leave unchanged."
},
"voice_group_barge_in_min_words": {
"anyOf": [
{
"type": "integer",
"maximum": 6.0,
"minimum": 1.0
},
{
"type": "null"
}
],
"title": "Voice Group Barge In Min Words",
"description": "GROUP/Meet barge-in word gate (1-6, default 1): a participant line must have at least this many words to interrupt the agent. 1 = any word interrupts (most responsive); raise to ignore short cross-talk. OMIT to leave unchanged."
},
"voice_group_barge_in_stop_words": {
"anyOf": [
{
"items": {},
"type": "array"
},
{
"type": "null"
}
],
"title": "Voice Group Barge In Stop Words",
"description": "GROUP/Meet barge-in stop-words: any of these words/phrases ALWAYS interrupts the agent, even below voice_group_barge_in_min_words (e.g. ['стоп','подожди','вопрос','stop','wait','question']). Empty list [] clears. OMIT to leave unchanged."
},
"voice_group_barge_in_requires_address": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"title": "Voice Group Barge In Requires Address",
"description": "GROUP/Meet barge-in: when true, only lines that ADDRESS the agent (by name/keyword) interrupt it — two humans talking to each other won't break the walk. Default false. OMIT to leave unchanged."
},
"voice_greeting": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Voice Greeting",
"description": "Opening line the agent speaks when the call connects. Pass an empty string \"\" to clear. Omit or null leaves unchanged."
},
"voice_greeting_returning": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Voice Greeting Returning",
"description": "Greeting variant for RETURNING callers (thread has prior history or a resolved name). Supports '{name}' — replaced with the caller's name when known, stripped when not. Pass an empty string \"\" to clear (always use voice_greeting). Omit or null leaves unchanged."
},
"voice_filler_enabled": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"title": "Voice Filler Enabled",
"description": "Emit thinking filler audio while working."
},
"voice_denoise": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"title": "Voice Denoise",
"description": "Server-side noise suppression (DeepFilterNet) on the INBOUND caller audio before STT — cleans background noise so the agent hears callers in loud/public places and gets fewer false barge-ins. Channel-agnostic: applies to every voice channel the agent answers on. Default false (unset). OMIT to leave unchanged."
},
"voice_filler_audio_preset": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Voice Filler Audio Preset",
"description": "Which bundled clip plays as thinking filler."
},
"voice_greeting_interruptible": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"title": "Voice Greeting Interruptible",
"description": "Allow the caller to barge in during the opener TTS. Default true (trial-friendly — long greetings can be interrupted). Set false on outbound-call agents whose configured opener would otherwise get preempted by the caller's 'Hello?' triggering an off-script auto-turn. OMIT to leave this flag unchanged."
},
"voice_silence_reprompt_s": {
"anyOf": [
{
"type": "number",
"maximum": 30.0,
"minimum": 0.0
},
{
"type": "null"
}
],
"title": "Voice Silence Reprompt S",
"description": "Re-prompt a silent caller after N seconds."
},
"voice_greeting_prerender": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"title": "Voice Greeting Prerender",
"description": "Pre-synthesize the greeting in the agent's voice."
},
"voice_speak_first": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"title": "Voice Speak First",
"description": "Greet immediately, or listen first and answer."
},
"voice_preemptive_generation": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"title": "Voice Preemptive Generation",
"description": "Speculatively start the model on speech-to-text partials."
},
"voice_hold_ready_reply": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"title": "Voice Hold Ready Reply",
"description": "Keep a ready reply the caller talked over and say it at the next pause."
},
"voice_record_calls": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"title": "Voice Record Calls",
"description": "Record voice calls handled by this agent (stereo audio: caller and agent on separate channels), stored with the call for later playback. Default false. Ensure callers are informed of recording where consent rules apply. OMIT to leave this flag unchanged."
},
"voice_record_announce": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"title": "Voice Record Announce",
"description": "On recorded calls, prepend a short 'this call may be recorded' not
# --- truncated at 32 KB (37 KB total) ---
# Full source: https://artifacts.apis.io/dialogbrain-com/json-schema/dialogbrain-com-agent-update-request-schema.json
Work with this as data
Every JSON Schema here is available over the APIs.io API and to AI agents over MCP.
MCP server
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
Tools for schemas
4 MCP tools reach this
find_json_schemasBrowse and filter every JSON Schema in the catalog.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.
Call it yourself
curl for this page
This JSON Schema
curl "https://apis.io/api/v1/json-schemas/dialogbrain-com-agent-update-request"
All schemas
curl "https://apis.io/api/v1/json-schemas?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Get an API key
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.