Update Draft Config
Changed onPatch the draft configuration section by section; omitted sections keep their value. Changes only affect live sessions after the next publish. prompt.system_prompt is limited to 32000 tokens (422 beyond); keeping it under 2000 tokens is recommended for latency and cost. voice.voice_id accepts any public voice model id. voice.speaking_language accepts any of the 52 supported ISO 639-1 codes (the same set the console offers, see the Voice & language docs); anything else is 422. voice.expressive (default true) enables richer expressive delivery (emotion steering, laughter and sounds, pauses); off keeps the standard delivery. The asr section configures speech recognition. asr.model picks the model: deepgram:nova-3 (default), elevenlabs:scribe_v2_realtime, elevenlabs:scribe_v2_medical, or fish_audio:transcribe-stream-1 (Fish realtime recognition, which also decides end of turn and whether the caller is interrupting). Its former id fish_audio:transcribe-1-pro-realtime is still accepted and reads back as the current id. asr.multilingual (default false) lets recognition follow callers who switch language mid-call, off tells the recognizer to expect voice.speaking_language (models other than deepgram:nova-3 may still transcribe clear speech in another language). asr.strict_language (default false) enforces voice.speaking_language whatever asr.multilingual says: speech recognized as another language reaches the agent as [unintelligible speech]. Language is detected per utterance, so a short or heavily accented phrase in the speaking language can occasionally be detected as another language and replaced too. Only enable it when you explicitly need to stop the agent from understanding other languages. asr.keyterms is a recognition vocabulary of up to 50 plain terms (brand names, product terms, personal names), each at most 100 characters with no commas or semicolons. [] clears it and 20-50 focused terms work best. tool_ids and knowledge_source_ids replace their attachment lists wholesale and every id must resolve, else 422. llm.custom points the agent at your own OpenAI-compatible endpoint; mutually exclusive with llm.model, cleared with an explicit null. llm.fallback sets what the agent tries after its model fails: platform (default), manual (models in order, 1 to 3) or off. In manual, each model and primary (the agent's own model) take optional ttft_timeout_ms (500-30000, default 5000 ms, i.e. 5 seconds, when not set) and total_timeout_ms (1000-120000, at least ttft_timeout_ms when both are set, no limit when not set), and the first model can set parallel.kick_in_ms (300-10000, default 1500) to run alongside the agent's own model.
The response is the draft as stored, which can differ from the request:
- Every field comes back. Omitted fields keep their value or default.
- asr.keyterms and voice.pronunciation_dictionary_ids are trimmed and de-duplicated in order. tool_ids is de-duplicated in order.
- A tool that was archived drops out of tool_ids at the next tools write.
- conversation.interruption_ignore_phrases collapses inner spaces and drops case-insensitive duplicates.
- conversation.timezone, transfer phone numbers and transfer text fields are trimmed.
- conversation.eagerness and conversation.response_wait_ms move together. The wait wins when both are sent, and the tier is derived from it.
- conversation.response_max_wait_ms: 0 reads back as null (automatic).
- knowledge_base.enabled becomes true when you attach sources and omit it.
- llm.custom.base_url drops a trailing / and /chat/completions. llm.custom.model is trimmed. Setting llm.custom resets llm.model to the platform default.
- Secrets read back as has_secret, and llm.custom.api_key as null.
- voice also returns keyterms, multilingual_asr and asr_model copied from asr. They are deprecated.
- config_hash and updated_at are set by the server.
Compare against this response, or against config_hash, rather than the request body. Publishing never rewrites these values.
Request
- Base URLhttps://api.fish.audio
- URLhttps://api.fish.audio/v1/agent/agents/{agent_id}/config
- AuthHTTP bearer
Path parameters
Request body
Response
Request fulfilled, document follows
Changes
- info
endpoint added
- info