VoiceDock Docs
ApiAssistants

Create a new assistant

Create a new AI voice assistant with custom STT, LLM, and TTS configurations. Only the name is required - defaults will be applied for other settings.

POST
/assistants

Create a new AI voice assistant with custom STT, LLM, and TTS configurations. Only the name is required - defaults will be applied for other settings.

Authorization

BearerAuth
AuthorizationBearer <token>

API key authentication. Get your key from the dashboard.

In: header

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Response Body

application/json

application/json

application/json

curl -X POST "https://example.com/assistants" \  -H "Content-Type: application/json" \  -d '{    "name": "Customer Support Agent"  }'
{
  "assistant": {
    "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
    "name": "Customer Support Agent",
    "business_name": "Acme Corp",
    "notification_email": "support@acme.com",
    "first_message": "Hello, welcome to Acme. How can I help you today?",
    "is_active": true,
    "max_duration_seconds": 300,
    "autonomous_silence_handling": true,
    "silence_timeout_seconds": 8,
    "voicemail_detection": true,
    "voicemail_message": "Hello, this is Acme Corp. We will call you back at a later time. Thank you!",
    "gdpr_mode": false,
    "webhook_url": "http://example.com",
    "webhook_secret": "string",
    "webhook_events": [
      "string"
    ],
    "analysis_plan": {
      "structured_data_plan": {
        "enabled": true,
        "schema": {
          "type": "object",
          "properties": {
            "intent": {
              "type": "string"
            },
            "sentiment": {
              "type": "string",
              "enum": [
                "positive",
                "neutral",
                "negative"
              ]
            },
            "appointment_booked": {
              "type": "boolean"
            }
          }
        },
        "messages": [
          {
            "role": "system",
            "content": "Analyze the following call transcript according to this schema: {{schema}}"
          }
        ]
      },
      "min_messages_threshold": 5
    },
    "stt_config": {
      "provider": "deepgram",
      "model": "nova-3-general",
      "language": "en",
      "keyterms": [
        "yes",
        "no",
        "okay",
        "Acme"
      ],
      "tag_audio_events": true,
      "include_timestamps": false,
      "sample_rate": 16000,
      "languages": [
        "nl",
        "en"
      ],
      "code_switching": true,
      "region": "eu-west",
      "endpointing": 0.05,
      "custom_vocabulary": [
        "HMS Sovereign",
        "Flireo"
      ],
      "translation_enabled": false,
      "translation_target_languages": [
        "en"
      ]
    },
    "llm_config": {
      "provider": "openai",
      "model": "gpt-5.4",
      "voice": "ara",
      "vertexai": false,
      "location": "europe-west4",
      "analysis_model": "gemini-2.5-flash-lite",
      "temperature": 0.7,
      "messages": [
        {
          "role": "system",
          "content": "string"
        }
      ],
      "tools": [
        {
          "name": "lookup_contact",
          "description": "Look up contact information by name or phone number",
          "url": "https://n8n.example.com/webhook/contacts",
          "async": false,
          "parameters": {
            "type": "object",
            "properties": {
              "query": {
                "type": "string",
                "description": "Name or phone number to search"
              }
            },
            "required": [
              "query"
            ]
          }
        }
      ]
    },
    "tts_config": {
      "provider": "elevenlabs",
      "voice_id": "ukiwGs47sHyibruHJ1vg",
      "model": "eleven_flash_v2_5",
      "language": "nl",
      "stability": 0.5,
      "similarity_boost": 0.75,
      "use_speaker_boost": true,
      "speed": 1,
      "style": 0,
      "instructions": "Speak in a friendly and engaging tone."
    },
    "created_at": "2019-08-24T14:15:22Z",
    "updated_at": "2019-08-24T14:15:22Z"
  }
}
{
  "error": "Invalid API key",
  "message": "string"
}
{
  "error": "Invalid API key",
  "message": "string"
}