Assistants
Update an assistant
PATCH/assistants/{assistant_id}
Send name, config or both. config replaces the whole configuration, and any setting you leave out goes back to its default. To change one setting, get the assistant, edit its config and send all of it back.
#Parameters
assistant_idinteger · pathrequired
#Request body
namestring- ≤ 120 chars
configobjectShow 17 fields
first_message_mode"assistant_first" | "wait_for_user" | "model_generated"default "assistant_first"first_messagestringdefault ""- ≤ 1000 chars
system_promptstringdefault ""- ≤ 30000 chars
business_contextbooleandefault truelanguagestringdefault "en"- ≤ 16 chars
mode"standard" | "live"default "standard"live_voicestringdefault "marin"modelobjectShow 8 fields
provider"openai" | "custom"default "openai"modelstringdefault "gpt-5.6-luna"- ≤ 80 chars
temperaturenumberdefault 0.4- min 0, max 1.5
max_tokensintegerdefault 300- min 40, max 2000
custom_urlstringdefault ""- ≤ 300 chars
custom_key_setbooleandefault falseprioritybooleandefault trueracebooleandefault true
transcriberobjectShow 5 fields
provider"deepgram" | "openai"default "deepgram"modelstringdefault "flux-general-en"- ≤ 60 chars
keytermsarray of stringeot_thresholdnumberdefault 0.7- min 0.5, max 0.9
eagerbooleandefault true
voiceobjectShow 2 fields
voice_idstringdefault ""- ≤ 80 chars
speednumberdefault 1- min 0.7, max 1.2
builtinobjectShow 7 fields
bookingbooleandefault truemessagesbooleandefault truetransferbooleandefault truesmsbooleandefault truepayment_linksbooleandefault trueknowledgebooleandefault trueend_callbooleandefault true
tool_idsarray of integerknowledge_idsarray of integeranalysisobjectShow 4 fields
summary_promptstringdefault ""- ≤ 2000 chars
success_rubricstringdefault ""- ≤ 2000 chars
success_scale"pass_fail" | "score_10" | "descriptive"default "score_10"structuredarray of StructuredField
advancedobjectShow 14 fields
max_duration_sintegerdefault 600- min 30, max 3600
silence_timeout_sintegerdefault 12- min 5, max 120
idle_messagesarray of stringidle_maxintegerdefault 2- min 1, max 5
end_call_messagestringdefault ""- ≤ 300 chars
end_call_phrasesarray of stringrecordingbooleandefault truerecording_noticebooleandefault trueinterrupt_min_wordsintegerdefault 1- min 1, max 5
background"off" | "office"default "off"voicemail_detectionbooleandefault truevoicemail_messagestringdefault ""- ≤ 600 chars
server_urlstringdefault ""- ≤ 500 chars
hipaabooleandefault false
variablesobjectworkflow_idinteger
#Example request
curl -X PATCH https://app.bluepenguin.io/api/v1/assistants/12 \
-H "Authorization: Bearer $BLUEPENGUIN_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "Front desk (evenings)"
}'const r = await fetch('https://app.bluepenguin.io/api/v1/assistants/12', {
method: 'PATCH',
headers: {
authorization: `Bearer ${process.env.BLUEPENGUIN_KEY}`,
'content-type': 'application/json',
},
body: JSON.stringify({
"name": "Front desk (evenings)"
}),
})
const data = await r.json()import os, requests
r = requests.patch(
"https://app.bluepenguin.io/api/v1/assistants/12",
headers={"Authorization": f"Bearer {os.environ['BLUEPENGUIN_KEY']}"},
json={
"name": "Front desk (evenings)"
},
)
data = r.json()#Example response
200 OK
{
"id": 12,
"name": "Front desk",
"is_default": true,
"created_at": "2026-09-30T10:12:00Z",
"updated_at": "2026-10-02T08:40:11Z",
"config": {
"first_message_mode": "assistant_first",
"first_message": "Thanks for calling Brightside Dental, this is Ava.",
"system_prompt": "You are Ava…",
"language": "en",
"mode": "standard",
"voice": {
"voice_id": "cartesia:…",
"speed": 1
},
"builtin": {
"booking": true,
"messages": true,
"transfer": true,
"sms": true,
"payment_links": true,
"knowledge": true,
"end_call": true
},
"…": "…"
}
}#Errors
| Status | When |
|---|---|
401 | Missing or invalid API key. |
404 | not_found: it doesn't exist or belongs to another business. |
422 | A parameter or field is invalid; the reply lists which. |
429 | More than 240 requests a minute on this key. |