For AI agents: a documentation index is available at the root level at /llms.txt and /llms-full.txt. Append /llms.txt to any URL for a page-level index, or .md for the markdown version of any page.
Contact us
DocumentationAPI Reference
DocumentationAPI Reference
  • Authentication
    • GETVerify API key
  • Documents
    • POSTUpload document
    • POSTUpload document into folder
    • GETList documents
    • GETList documents in folder
    • GETGet document
    • POSTCreate folder
    • DELDelete folder
    • POSTMove documents between folders
    • DELDelete documents
  • Workspaces
    • GETGet workspace
    • DELDelete workspace
    • POSTUpdate workspace
    • POSTAdd or remove workspace embeddings
    • GETList workspace tools
    • POSTAttach tool to workspace
    • DELDetach tool from workspace
  • Number Requests
    • GETList number requests
    • POSTRequest a phone number
    • GETGet number request
  • Numbers
    • GETList phone numbers
    • GETList phone numbers in organization
  • Organizations
    • GETList organizations
    • POSTCreate organization
    • GETGet organization
    • DELDelete organization
    • POSTUpdate organization
    • GETList workspaces in organization
    • POSTCreate workspace
    • GETList organization tools
    • POSTCreate organization tool
    • DELDelete organization tool
    • PATCHUpdate organization tool
  • Accounts
    • GETList accounts
    • POSTCreate account
  • Voice Integration
    • GETGet voice assistant config
    • PATCHUpdate voice assistant config
    • GETGet voice integration catalog
    • POSTProvision voice integration
    • GETList voice call logs
    • GETList workspace voice call logs
  • Whats App Integration
    • POSTMint a WhatsApp Business connect page token
    • GETRender WhatsApp Business connect iframe page
    • POSTFinalize WhatsApp Business onboarding (iframe-initiated)
    • DELDisconnect WhatsApp Business integration
Contact us
LogoLogo
Voice Integration

Update voice assistant config

PATCH
https://staging-app.lumenia.net/api/v1/workspace/:slug/voice-integration/assistant
PATCH
/api/v1/workspace/:slug/voice-integration/assistant
$curl -X PATCH https://staging-app.lumenia.net/api/v1/workspace/slug/voice-integration/assistant \
> -H "X-Account-Id: X-Account-Id" \
> -H "Authorization: Bearer <token>" \
> -H "Content-Type: application/json" \
> -d '{
> "voice": {
> "provider": "11labs",
> "voiceId": "21m00Tcm4TlvDq8ikWAM",
> "model": "eleven_multilingual_v2"
> }
>}'
1{
2 "success": true,
3 "assistant": {}
4}
Partially update the voice assistant for a workspace. All top-level fields are optional, but the body must include at least one of: firstMessage, prompt, voice, transcriber, fallbackVoices, fallbackTranscribers, number_id. Only the fields you send are updated; any field you omit is left unchanged (including `number_id`: omit it to keep the current linked phone number). Allowed values for voice/transcriber are governed by GET /v1/voice-integration/catalog and error messages point back to the relevant catalog path. **Provider-completeness rule.** When a voice/transcriber object includes `provider`, the rest of the required fields for that provider MUST be present in the same object. The server will not carry over `voiceId` / `model` / `language` from the existing assistant when you change provider, because those values are provider-specific. **Per-provider field requirements:** - `voice.provider = "vapi"` -> also send `voiceId` (one of catalog voice.providers[vapi].voiceIds[].value). Do NOT send `model`. - `voice.provider = "11labs"` -> also send `voiceId` (freeform from the ElevenLabs library) AND `model` (one of catalog voice.providers[11labs].models[].value). - `transcriber.provider = "deepgram"` or `"11labs"` -> also send `model` AND `language`. `model` must belong to the chosen provider; `language` must belong to the chosen model. **Partial top-level updates.** If you omit `provider` from a top-level `voice` or `transcriber` object, only structural type checks run on the remaining fields, useful for tweaking just `model` or `voiceId` without switching provider. The merged result is then re-validated against the catalog so stale combinations are still rejected. **number_id.** When present, must be a positive integer ID of a `numbers` row in the same organization as the workspace. The target number must not already be linked to a different voice integration. Same rules as POST `/v1/workspace/{slug}/voice-integration`. **Fallback arrays are REPLACE, not merge.** Sending `fallbackVoices` or `fallbackTranscribers` overwrites the entire stored list with the array you send (no per-index merge, no append). To add a fallback, resend every existing fallback you want to keep plus the new one. To clear all fallbacks, send `[]`. To leave the list untouched, omit the key entirely. Because items are not merged with anything, every item MUST include `provider` plus the rest of the required fields for that provider; an item like `{ "voiceId": "Clara" }` is rejected.
Was this page helpful?
Previous

Get voice integration catalog

Next
Built with

Partially update the voice assistant for a workspace. All top-level fields are optional, but the body must include at least one of: firstMessage, prompt, voice, transcriber, fallbackVoices, fallbackTranscribers, number_id. Only the fields you send are updated; any field you omit is left unchanged (including number_id: omit it to keep the current linked phone number). Allowed values for voice/transcriber are governed by GET /v1/voice-integration/catalog and error messages point back to the relevant catalog path.

Provider-completeness rule. When a voice/transcriber object includes provider, the rest of the required fields for that provider MUST be present in the same object. The server will not carry over voiceId / model / language from the existing assistant when you change provider, because those values are provider-specific.

Per-provider field requirements:

  • voice.provider = "vapi" -> also send voiceId (one of catalog voice.providers[vapi].voiceIds[].value). Do NOT send model.
  • voice.provider = "11labs" -> also send voiceId (freeform from the ElevenLabs library) AND model (one of catalog voice.providers[11labs].models[].value).
  • transcriber.provider = "deepgram" or "11labs" -> also send model AND language. model must belong to the chosen provider; language must belong to the chosen model.

Partial top-level updates. If you omit provider from a top-level voice or transcriber object, only structural type checks run on the remaining fields, useful for tweaking just model or voiceId without switching provider. The merged result is then re-validated against the catalog so stale combinations are still rejected.

number_id. When present, must be a positive integer ID of a numbers row in the same organization as the workspace. The target number must not already be linked to a different voice integration. Same rules as POST /v1/workspace/{slug}/voice-integration.

Fallback arrays are REPLACE, not merge. Sending fallbackVoices or fallbackTranscribers overwrites the entire stored list with the array you send (no per-index merge, no append). To add a fallback, resend every existing fallback you want to keep plus the new one. To clear all fallbacks, send []. To leave the list untouched, omit the key entirely. Because items are not merged with anything, every item MUST include provider plus the rest of the required fields for that provider; an item like { "voiceId": "Clara" } is rejected.

Authentication

AuthorizationBearer

Bearer authentication of the form Bearer <token>, where token is your auth token.

Path parameters

slugstringRequired
Workspace slug

Headers

X-Account-IdstringRequired
Account uuid context. Must belong to the API key's partner. Routes that target an org additionally require the org to belong to this account.

Request

Partial update. All fields are optional, but at least one must be present or the API returns 400. Omitted fields are left unchanged.
firstMessagestringOptional

Non-empty when present.

promptstringOptional

Replaces the system / voice assistant system prompt. Non-empty when present.

voiceobjectOptional

Voice config. When provider is present, the rest of the required fields for that provider must also be present (see route description for the per-provider rules).

transcriberobjectOptional
Transcriber config. When provider is present, both model and language must also be present.
fallbackVoiceslist of objectsOptional

REPLACES the entire stored fallback voice list — no per-index merge, no append. Omit the key to keep the existing list; send an empty array to clear it; resend the full list (existing + new) to add. Each item is standalone and must include provider plus the rest of the required fields for that provider (same rules as voice).

fallbackTranscriberslist of objectsOptional

REPLACES the entire stored fallback transcriber list — no per-index merge, no append. Omit the key to keep the existing list; send an empty array to clear it; resend the full list (existing + new) to add. Each item is standalone and must include provider, model, and language (same rules as transcriber).

number_idintegerOptional

Omit to leave the linked phone number unchanged. When set, positive integer ID of a numbers row under the same organization as the workspace; must not be in use by another voice integration.

Response

Updated assistant returned
successboolean
assistantobject

Errors

400
Bad Request Error
403
Forbidden Error
404
Not Found Error
500
Internal Server Error