Skip to main content
Each of the three engines an agent runs on - transcriber, model and voice - can have a fallback: a second one, from a different provider, that takes over if the first provider stops responding during a call. You set them with PATCH /v1/agents/{agent_id} (or on create), like any other setting.

What to send

A model id belongs to exactly one provider, so for the transcriber and the model you only name the model - a provider you send is ignored. A voice id does not say whose voice it is, so the voice backup needs both. Pick values from the catalogues: GET /v1/transcribers, GET /v1/models, and GET /v1/voices?provider=.

Example

The response is the whole agent. Each block now shows its backup in full, next to the main engine it stands in for:
Read fallback back to confirm it was saved. If it comes back null, there is no backup.

Rules

The backup must be from a different provider

What fails during an outage is the provider - it is unreachable, the key is rejected, the region is down - and every model behind it fails together. So a backup on the same provider as the main engine is refused:
Changing the main engine onto the backup’s provider is the same clash, and refused the same way.

Changing one field keeps the others

fallback merges like the rest of the body. { "voice": { "fallback": { "voice_id": "anushka" } } } changes the backup voice and keeps its provider. The exception is the voice backup’s provider: a voice belongs to its provider, so switching provider without a voice_id clears the old voice and the request is refused until you name one. Send both together:

Remove a backup with null

During a call

The backup is only used if the main provider stops responding. When it is, the agent switches for the rest of that call - it does not go back and forth. A backup only has to support the agent’s primary language, which is why a failover returns the conversation to it - see If a provider fails mid-call. The call is billed at the engine it actually ran on.

Errors

A backup the configuration itself refuses reads voice_config_invalid:
The same-provider clash reads document_invalid: the field is real and the value well-formed, but the agent cannot use it - the example above under Rules shows it in full. A 422 lists every problem in the request - see Validation errors.