Docs
GuidesAPI referenceWebhooksWeb widget

Assistants

Create an assistant

POST/assistants

Start from a template (receptionist, scheduler, lead_qualifier, support or blank), or send a full config, which overrides the template. See Build an assistant for what each setting does.

#Request body

namestringdefault ""
≤ 120 chars
templatestringdefault "receptionist"
receptionist | scheduler | lead_qualifier | support | blank
configobject
Full configuration; overrides the template
Show 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 true
languagestringdefault "en"
≤ 16 chars
mode"standard" | "live"default "standard"
live_voicestringdefault "marin"
modelobject
Show 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 false
prioritybooleandefault true
racebooleandefault true
transcriberobject
Show 5 fields
provider"deepgram" | "openai"default "deepgram"
modelstringdefault "flux-general-en"
≤ 60 chars
keytermsarray of string
eot_thresholdnumberdefault 0.7
min 0.5, max 0.9
eagerbooleandefault true
voiceobject
Show 2 fields
voice_idstringdefault ""
≤ 80 chars
speednumberdefault 1
min 0.7, max 1.2
builtinobject
Show 7 fields
bookingbooleandefault true
messagesbooleandefault true
transferbooleandefault true
smsbooleandefault true
payment_linksbooleandefault true
knowledgebooleandefault true
end_callbooleandefault true
tool_idsarray of integer
knowledge_idsarray of integer
analysisobject
Show 4 fields
summary_promptstringdefault ""
≤ 2000 chars
success_rubricstringdefault ""
≤ 2000 chars
success_scale"pass_fail" | "score_10" | "descriptive"default "score_10"
structuredarray of StructuredField
advancedobject
Show 14 fields
max_duration_sintegerdefault 600
min 30, max 3600
silence_timeout_sintegerdefault 12
min 5, max 120
idle_messagesarray of string
idle_maxintegerdefault 2
min 1, max 5
end_call_messagestringdefault ""
≤ 300 chars
end_call_phrasesarray of string
recordingbooleandefault true
recording_noticebooleandefault true
interrupt_min_wordsintegerdefault 1
min 1, max 5
background"off" | "office"default "off"
voicemail_detectionbooleandefault true
voicemail_messagestringdefault ""
≤ 600 chars
server_urlstringdefault ""
≤ 500 chars
hipaabooleandefault false
variablesobject
workflow_idinteger

#Example request

curl -X POST https://app.bluepenguin.io/api/v1/assistants \
  -H "Authorization: Bearer $BLUEPENGUIN_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "name": "Front desk",
  "template": "receptionist"
}'

#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

StatusWhen
401Missing or invalid API key.
422A parameter or field is invalid; the reply lists which.
429More than 240 requests a minute on this key.