V2 create assistant
POST
https://app.sulus.ai/api/v2/assistants
Create an assistant from the layered configuration
Authentication
Send a bearer token created on your dashboard's Developer page:
Authorization: Bearer <YOUR_API_KEY>
Request body
base_config_id
integer
Optional
Nullable
The layered base configuration; may be derived from a template instead.
Validation:
required_without_all:prompt_template_id,industry_template_id|nullable|integer|exists:assistant_base_configs,idStored in
assistants.base_config_idname
string
Required
Validation:
required|string|max:40Stored in
assistants.nametype
string
Optional
Nullable
Validation:
nullable|string|in:demo,productionStored in
assistants.typelayer2_key
string
Optional
Nullable
Layer-2 preset key.
Validation:
nullable|string|max:64prompt_template_id
integer
Optional
Nullable
Validation:
nullable|integer|exists:prompt_templates,idStored in
assistants.template_idindustry_template_id
integer
Optional
Nullable
Validation:
nullable|integer|exists:industry_templates,idsystem_prompt
string
Optional
Nullable
Free-form system prompt override.
Validation:
nullable|stringStored in
assistants.modelfirst_message
string
Optional
Nullable
Validation:
nullable|string (firstMessage also accepted)Stored in
assistants.first_messageend_call_message
string
Optional
Nullable
Validation:
nullable|string (endCallMessage also accepted)Stored in
assistants.end_call_messageserver_url
string
Optional
Nullable
Webhook for call events.
Validation:
nullable|string|urlStored in
assistants.webhook_urlpersonality_id
integer
Optional
Nullable
Validation:
nullable|integer|exists:personalities,idStored in
assistants.personality_idmetadata
object
Optional
Nullable
Validation:
nullable|arrayStored in
assistants.metadatavariable_values
object
Optional
Nullable
Template variable values.
Validation:
nullable|arrayStored in
assistants.metadataErrors
| Status | Meaning | Body |
|---|---|---|
403 |
Creation quota reached | |
500 |
Live platform write failed | {"success":false,"message":"Failed to create assistant in Cloud. Please try again."} |
422 |
Validation failed | |
401 |
Missing or invalid bearer token | |
403 |
Feature assistants not enabled for the account |
Notes
- The response `coreData` mirrors the live platform configuration; its `voice`/`model`/`transcriber` provider-selection sub-keys and internal bookkeeping are platform-managed and excluded from this example.
curl --request POST \
--url https://app.sulus.ai/api/v2/assistants \
--header 'Authorization: Bearer <YOUR_API_KEY>' \
--header 'Content-Type: application/json' \
--data '{
"base_config_id": 3,
"name": "Reception",
"type": "production",
"layer2_key": "friendly-professional",
"prompt_template_id": 5,
"industry_template_id": 7,
"system_prompt": "You are Sarah, the AI voice receptionist for Acme Dental.",
"first_message": "Thank you for calling {{companyName}}, this is {{personalityName}}. How can I help you today?",
"end_call_message": "Thank you for calling {{companyName}}, have a great day!",
"server_url": "https://automations.sulus.ai/webhook/lhg-live-demo-agents",
"personality_id": 12,
"metadata": {
"company_name": "Acme Dental",
"industry": "Dental"
},
"variable_values": {
"companyName": "Acme Dental",
"industry": "Dental",
"personalityName": "Sarah"
}
}'
import requests
url = "https://app.sulus.ai/api/v2/assistants"
headers = {"Authorization": "Bearer <YOUR_API_KEY>"}
payload = {
"base_config_id": 3,
"name": "Reception",
"type": "production",
"layer2_key": "friendly-professional",
"prompt_template_id": 5,
"industry_template_id": 7,
"system_prompt": "You are Sarah, the AI voice receptionist for Acme Dental.",
"first_message": "Thank you for calling {{companyName}}, this is {{personalityName}}. How can I help you today?",
"end_call_message": "Thank you for calling {{companyName}}, have a great day!",
"server_url": "https://automations.sulus.ai/webhook/lhg-live-demo-agents",
"personality_id": 12,
"metadata": {
"company_name": "Acme Dental",
"industry": "Dental"
},
"variable_values": {
"companyName": "Acme Dental",
"industry": "Dental",
"personalityName": "Sarah"
}
}
response = requests.post(url, json=payload, headers=headers)
print(response.json())
package main
import (
"fmt"
"io"
"net/http"
"strings"
)
func main() {
url := "https://app.sulus.ai/api/v2/assistants"
payload := strings.NewReader(`{
"base_config_id": 3,
"name": "Reception",
"type": "production",
"layer2_key": "friendly-professional",
"prompt_template_id": 5,
"industry_template_id": 7,
"system_prompt": "You are Sarah, the AI voice receptionist for Acme Dental.",
"first_message": "Thank you for calling {{companyName}}, this is {{personalityName}}. How can I help you today?",
"end_call_message": "Thank you for calling {{companyName}}, have a great day!",
"server_url": "https://automations.sulus.ai/webhook/lhg-live-demo-agents",
"personality_id": 12,
"metadata": {
"company_name": "Acme Dental",
"industry": "Dental"
},
"variable_values": {
"companyName": "Acme Dental",
"industry": "Dental",
"personalityName": "Sarah"
}
}`)
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <YOUR_API_KEY>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}
Response
201
{
"success": true,
"message": "Assistant created successfully",
"data": {
"id": 42,
"name": "Reception",
"user_id": 17,
"created_by": 5,
"reseller_id": "3",
"workspace_id": 9,
"template_id": 5,
"personality_id": 12,
"base_config_id": 3,
"type": "production",
"phone_number": "+14155550142",
"phone_number_id": "b2c3d4e5-6f7a-4b8c-9d0e-1f2a3b4c5d6e",
"webhook_url": "https://automations.sulus.ai/webhook/lhg-live-demo-agents",
"metadata": {
"company_name": "Acme Dental",
"industry": "Dental",
"location": "Austin, TX",
"services_products": "General and cosmetic dentistry, teeth whitening, emergency dental care",
"country": "United States",
"assistant_phone_number": "+14155550142",
"webhook_url": "https://automations.sulus.ai/webhook/lhg-live-demo-agents",
"personality": "Sarah",
"personality_id": 12,
"user_id": 17,
"user": "Jordan Lee",
"type": "production",
"available24_7": false,
"standard_hours": "Mon-Fri 9:00 AM - 5:00 PM",
"business_hours": {
"monday": "9:00 AM - 5:00 PM",
"tuesday": "9:00 AM - 5:00 PM",
"wednesday": "9:00 AM - 5:00 PM",
"thursday": "9:00 AM - 5:00 PM",
"friday": "9:00 AM - 5:00 PM",
"saturday": "Closed",
"sunday": "Closed"
},
"always_say": [
"We look forward to seeing you!"
],
"never_say": [
"I don't know, let me transfer you"
],
"pronunciation": [
{
"word": "Sulus",
"soundsLike": "SOO-luss"
}
],
"spam_handling": "end_call",
"variable_values": {
"companyName": "Acme Dental",
"industry": "Dental",
"personalityName": "Sarah"
},
"sms_notifications": [
"+14155550199"
],
"email_notifications": [
"[email protected]"
],
"created_at": "2026-01-15T10:22:03.000000Z",
"updated_at": "2026-07-28T14:05:41.000000Z"
},
"widget_embed_config": null,
"transcriber": {
"language": "en",
"confidenceThreshold": 0.4,
"formatTurns": true
},
"model": {
"messages": [
{
"role": "system",
"content": "You are Sarah, the AI voice receptionist for Acme Dental. Greet callers warmly, answer questions about services and hours, and offer to book an appointment or transfer to the front desk as needed."
}
],
"maxTokens": 300,
"toolIds": [
"c3d4e5f6-7a8b-49c0-8d1e-2f3a4b5c6d7e"
],
"functionCall": "auto"
},
"voice": {
"voiceId": "sarah-professional-01",
"speed": 1
},
"first_message": "Thank you for calling Acme Dental, this is Sarah. How can I help you today?",
"first_message_raw": "Thank you for calling {{companyName}}, this is {{personalityName}}. How can I help you today?",
"first_message_interruptions_enabled": true,
"first_message_mode": "assistant-speaks-first",
"voicemail_detection": {
"enabled": true,
"beepDetection": true,
"silenceDuration": 10,
"greetingDuration": 15
},
"client_messages": [
"transcript",
"status-update"
],
"server_messages": [
"end-of-call-report",
"status-update"
],
"max_duration_seconds": 1800,
"background_sound": "office",
"background_denoising_enabled": true,
"model_output_in_messages_enabled": false,
"transport_configurations": [],
"observability_plan": null,
"credential_ids": [],
"credentials": [],
"hooks": [],
"voicemail_message": "Please leave a message after the tone and we'll call you back.",
"end_call_message": "Thank you for calling Acme Dental, have a great day!",
"end_call_message_raw": "Thank you for calling {{companyName}}, have a great day!",
"end_call_phrases": [
"goodbye",
"that's all, thank you"
],
"compliance_plan": {
"recordingEnabled": true,
"transcriptionEnabled": true,
"dataRetentionDays": 365
},
"background_speech_denoising_plan": {
"smartDenoising": true,
"fourierDenoising": false
},
"analysis_plan": null,
"artifact_plan": {
"recording": true,
"transcript": true,
"summary": true,
"analysis": false
},
"start_speaking_plan": {
"initialDelayMs": 400,
"backgroundSoundVolume": 0.2
},
"stop_speaking_plan": {
"initialDelayMs": 0,
"backgroundSoundVolume": 0.1
},
"monitor_plan": {
"listenEnabled": false,
"controlEnabled": false,
"websocketUrl": null
},
"keypad_input_plan": {
"enabled": false,
"maxDigits": 4,
"terminateOnHash": true
},
"created_at": "2026-01-15T10:22:03.000000Z",
"updated_at": "2026-07-28T14:05:41.000000Z",
"vapi_assistant_id": "9f8e7d6c-5b4a-4c3d-8e2f-1a2b3c4d5e6f",
"assistant_id": "9f8e7d6c-5b4a-4c3d-8e2f-1a2b3c4d5e6f",
"coreData": {
"id": "9f8e7d6c-5b4a-4c3d-8e2f-1a2b3c4d5e6f",
"name": "Reception",
"firstMessage": "Thank you for calling Acme Dental, this is Sarah. How can I help you today?",
"voicemailMessage": "Please leave a message after the tone and we'll call you back.",
"endCallMessage": "Thank you for calling Acme Dental, have a great day!",
"endCallPhrases": [
"goodbye",
"that's all, thank you"
],
"maxDurationSeconds": 1800,
"backgroundSound": "office",
"voice": {
"voiceId": "sarah-professional-01",
"speed": 1
},
"model": {
"messages": [
{
"role": "system",
"content": "You are Sarah, the AI voice receptionist for Acme Dental. Greet callers warmly, answer questions about services and hours, and offer to book an appointment or transfer to the front desk as needed."
}
],
"maxTokens": 300,
"toolIds": [
"c3d4e5f6-7a8b-49c0-8d1e-2f3a4b5c6d7e"
]
},
"transcriber": {
"language": "en",
"confidenceThreshold": 0.4,
"formatTurns": true
},
"server": {
"url": "https://automations.sulus.ai/webhook/lhg-live-demo-agents"
},
"metadata": {
"company_name": "Acme Dental",
"industry": "Dental",
"location": "Austin, TX",
"services_products": "General and cosmetic dentistry, teeth whitening, emergency dental care",
"country": "United States",
"assistant_phone_number": "+14155550142",
"webhook_url": "https://automations.sulus.ai/webhook/lhg-live-demo-agents",
"personality": "Sarah",
"personality_id": 12,
"user_id": 17,
"user": "Jordan Lee",
"type": "production",
"available24_7": false,
"standard_hours": "Mon-Fri 9:00 AM - 5:00 PM",
"business_hours": {
"monday": "9:00 AM - 5:00 PM",
"tuesday": "9:00 AM - 5:00 PM",
"wednesday": "9:00 AM - 5:00 PM",
"thursday": "9:00 AM - 5:00 PM",
"friday": "9:00 AM - 5:00 PM",
"saturday": "Closed",
"sunday": "Closed"
},
"always_say": [
"We look forward to seeing you!"
],
"never_say": [
"I don't know, let me transfer you"
],
"pronunciation": [
{
"word": "Sulus",
"soundsLike": "SOO-luss"
}
],
"spam_handling": "end_call",
"variable_values": {
"companyName": "Acme Dental",
"industry": "Dental",
"personalityName": "Sarah"
},
"sms_notifications": [
"+14155550199"
],
"email_notifications": [
"[email protected]"
],
"created_at": "2026-01-15T10:22:03.000000Z",
"updated_at": "2026-07-28T14:05:41.000000Z"
}
},
"base_config_name": "Standard Receptionist Base"
}
}
Response — POST
/v2/assistants
201
{
"success": true,
"message": "Assistant created successfully",
"data": {
"id": 42,
"name": "Reception",
"user_id": 17,
"created_by": 5,
"reseller_id": "3",
"workspace_id": 9,
"template_id": 5,
"personality_id": 12,
"base_config_id": 3,
"type": "production",
"phone_number": "+14155550142",
"phone_number_id": "b2c3d4e5-6f7a-4b8c-9d0e-1f2a3b4c5d6e",
"webhook_url": "https://automations.sulus.ai/webhook/lhg-live-demo-agents",
"metadata": {
"company_name": "Acme Dental",
"industry": "Dental",
"location": "Austin, TX",
"services_products": "General and cosmetic dentistry, teeth whitening, emergency dental care",
"country": "United States",
"assistant_phone_number": "+14155550142",
"webhook_url": "https://automations.sulus.ai/webhook/lhg-live-demo-agents",
"personality": "Sarah",
"personality_id": 12,
"user_id": 17,
"user": "Jordan Lee",
"type": "production",
"available24_7": false,
"standard_hours": "Mon-Fri 9:00 AM - 5:00 PM",
"business_hours": {
"monday": "9:00 AM - 5:00 PM",
"tuesday": "9:00 AM - 5:00 PM",
"wednesday": "9:00 AM - 5:00 PM",
"thursday": "9:00 AM - 5:00 PM",
"friday": "9:00 AM - 5:00 PM",
"saturday": "Closed",
"sunday": "Closed"
},
"always_say": [
"We look forward to seeing you!"
],
"never_say": [
"I don't know, let me transfer you"
],
"pronunciation": [
{
"word": "Sulus",
"soundsLike": "SOO-luss"
}
],
"spam_handling": "end_call",
"variable_values": {
"companyName": "Acme Dental",
"industry": "Dental",
"personalityName": "Sarah"
},
"sms_notifications": [
"+14155550199"
],
"email_notifications": [
"[email protected]"
],
"created_at": "2026-01-15T10:22:03.000000Z",
"updated_at": "2026-07-28T14:05:41.000000Z"
},
"widget_embed_config": null,
"transcriber": {
"language": "en",
"confidenceThreshold": 0.4,
"formatTurns": true
},
"model": {
"messages": [
{
"role": "system",
"content": "You are Sarah, the AI voice receptionist for Acme Dental. Greet callers warmly, answer questions about services and hours, and offer to book an appointment or transfer to the front desk as needed."
}
],
"maxTokens": 300,
"toolIds": [
"c3d4e5f6-7a8b-49c0-8d1e-2f3a4b5c6d7e"
],
"functionCall": "auto"
},
"voice": {
"voiceId": "sarah-professional-01",
"speed": 1
},
"first_message": "Thank you for calling Acme Dental, this is Sarah. How can I help you today?",
"first_message_raw": "Thank you for calling {{companyName}}, this is {{personalityName}}. How can I help you today?",
"first_message_interruptions_enabled": true,
"first_message_mode": "assistant-speaks-first",
"voicemail_detection": {
"enabled": true,
"beepDetection": true,
"silenceDuration": 10,
"greetingDuration": 15
},
"client_messages": [
"transcript",
"status-update"
],
"server_messages": [
"end-of-call-report",
"status-update"
],
"max_duration_seconds": 1800,
"background_sound": "office",
"background_denoising_enabled": true,
"model_output_in_messages_enabled": false,
"transport_configurations": [],
"observability_plan": null,
"credential_ids": [],
"credentials": [],
"hooks": [],
"voicemail_message": "Please leave a message after the tone and we'll call you back.",
"end_call_message": "Thank you for calling Acme Dental, have a great day!",
"end_call_message_raw": "Thank you for calling {{companyName}}, have a great day!",
"end_call_phrases": [
"goodbye",
"that's all, thank you"
],
"compliance_plan": {
"recordingEnabled": true,
"transcriptionEnabled": true,
"dataRetentionDays": 365
},
"background_speech_denoising_plan": {
"smartDenoising": true,
"fourierDenoising": false
},
"analysis_plan": null,
"artifact_plan": {
"recording": true,
"transcript": true,
"summary": true,
"analysis": false
},
"start_speaking_plan": {
"initialDelayMs": 400,
"backgroundSoundVolume": 0.2
},
"stop_speaking_plan": {
"initialDelayMs": 0,
"backgroundSoundVolume": 0.1
},
"monitor_plan": {
"listenEnabled": false,
"controlEnabled": false,
"websocketUrl": null
},
"keypad_input_plan": {
"enabled": false,
"maxDigits": 4,
"terminateOnHash": true
},
"created_at": "2026-01-15T10:22:03.000000Z",
"updated_at": "2026-07-28T14:05:41.000000Z",
"vapi_assistant_id": "9f8e7d6c-5b4a-4c3d-8e2f-1a2b3c4d5e6f",
"assistant_id": "9f8e7d6c-5b4a-4c3d-8e2f-1a2b3c4d5e6f",
"coreData": {
"id": "9f8e7d6c-5b4a-4c3d-8e2f-1a2b3c4d5e6f",
"name": "Reception",
"firstMessage": "Thank you for calling Acme Dental, this is Sarah. How can I help you today?",
"voicemailMessage": "Please leave a message after the tone and we'll call you back.",
"endCallMessage": "Thank you for calling Acme Dental, have a great day!",
"endCallPhrases": [
"goodbye",
"that's all, thank you"
],
"maxDurationSeconds": 1800,
"backgroundSound": "office",
"voice": {
"voiceId": "sarah-professional-01",
"speed": 1
},
"model": {
"messages": [
{
"role": "system",
"content": "You are Sarah, the AI voice receptionist for Acme Dental. Greet callers warmly, answer questions about services and hours, and offer to book an appointment or transfer to the front desk as needed."
}
],
"maxTokens": 300,
"toolIds": [
"c3d4e5f6-7a8b-49c0-8d1e-2f3a4b5c6d7e"
]
},
"transcriber": {
"language": "en",
"confidenceThreshold": 0.4,
"formatTurns": true
},
"server": {
"url": "https://automations.sulus.ai/webhook/lhg-live-demo-agents"
},
"metadata": {
"company_name": "Acme Dental",
"industry": "Dental",
"location": "Austin, TX",
"services_products": "General and cosmetic dentistry, teeth whitening, emergency dental care",
"country": "United States",
"assistant_phone_number": "+14155550142",
"webhook_url": "https://automations.sulus.ai/webhook/lhg-live-demo-agents",
"personality": "Sarah",
"personality_id": 12,
"user_id": 17,
"user": "Jordan Lee",
"type": "production",
"available24_7": false,
"standard_hours": "Mon-Fri 9:00 AM - 5:00 PM",
"business_hours": {
"monday": "9:00 AM - 5:00 PM",
"tuesday": "9:00 AM - 5:00 PM",
"wednesday": "9:00 AM - 5:00 PM",
"thursday": "9:00 AM - 5:00 PM",
"friday": "9:00 AM - 5:00 PM",
"saturday": "Closed",
"sunday": "Closed"
},
"always_say": [
"We look forward to seeing you!"
],
"never_say": [
"I don't know, let me transfer you"
],
"pronunciation": [
{
"word": "Sulus",
"soundsLike": "SOO-luss"
}
],
"spam_handling": "end_call",
"variable_values": {
"companyName": "Acme Dental",
"industry": "Dental",
"personalityName": "Sarah"
},
"sms_notifications": [
"+14155550199"
],
"email_notifications": [
"[email protected]"
],
"created_at": "2026-01-15T10:22:03.000000Z",
"updated_at": "2026-07-28T14:05:41.000000Z"
}
},
"base_config_name": "Standard Receptionist Base"
}
}