Logo
Search
Docs

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,id
Stored in assistants.base_config_id
name string Required
Validation: required|string|max:40
Stored in assistants.name
type string Optional Nullable
Validation: nullable|string|in:demo,production
Stored in assistants.type
layer2_key string Optional Nullable

Layer-2 preset key.

Validation: nullable|string|max:64
prompt_template_id integer Optional Nullable
Validation: nullable|integer|exists:prompt_templates,id
Stored in assistants.template_id
industry_template_id integer Optional Nullable
Validation: nullable|integer|exists:industry_templates,id
system_prompt string Optional Nullable

Free-form system prompt override.

Validation: nullable|string
Stored in assistants.model
first_message string Optional Nullable
Validation: nullable|string (firstMessage also accepted)
Stored in assistants.first_message
end_call_message string Optional Nullable
Validation: nullable|string (endCallMessage also accepted)
Stored in assistants.end_call_message
server_url string Optional Nullable

Webhook for call events.

Validation: nullable|string|url
Stored in assistants.webhook_url
personality_id integer Optional Nullable
Validation: nullable|integer|exists:personalities,id
Stored in assistants.personality_id
metadata object Optional Nullable
Validation: nullable|array
Stored in assistants.metadata
variable_values object Optional Nullable

Template variable values.

Validation: nullable|array
Stored in assistants.metadata

Errors

StatusMeaningBody
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"
    }
}