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.
Bearer authentication of the form Bearer <token>, where token is your auth token.
Non-empty when present.
Replaces the system / voice assistant system prompt. Non-empty when present.
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).
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).
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).
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.