API: pin an agent’s TTS model, and Simba 3.5 Turbo

An agent can now pin the Simba model it synthesizes on, and a new endpoint lists the models available to pin.

GET /v1/agents/tts-models

Lists the models a voice agent can be pinned to. The response is the whole catalog, identical for every workspace — which model serves an agent is a routing decision, not an entitlement, so nothing here is plan-gated, and the list is not paginated. Each entry carries the facts that decide whether a given agent may select it:

FieldWhat it says
idThe value to send as tts.model.
display_name, descriptionHuman-readable labels.
betaA training still under evaluation. Fully servable; just not one agents are steered onto by default.
defaultThe model an agent lands on with no pin and an uncurated voice. The only entry selectable for every agent and every voice.
english_onlyThe model has no multilingual deployment, so an agent that resolves through the multilingual serving cannot select it.
requires_voice_curationA voice must be registered for the model before it can be paired with it. The voice’s models array on GET /v1/agents/voices is the per-voice answer.

tts.model on the agent

AgentTTSConfig gains model (nullable). Null is the default and the recommended setting: the agent follows the model its voice is curated for, so a voice promoted to a newer training moves with it and no configuration goes stale. GET /v1/agents/voices now returns default_model per voice — what “automatic” resolves to for that voice. Send null or "" to clear a pin back to automatic.

A pin the agent could not actually be served with returns 400: an English-only model on an agent that resolves through the multilingual serving (it declares additional_languages, or its language is not English), or a model the chosen voice is not curated for. The pair is re-checked whenever voice_id, language, or additional_languages change, so an edit elsewhere cannot orphan a stored pin.

The model pinned at call start is recorded as tts_model on the conversation config snapshot (null = the automatic choice).

Simba 3.5 Turbo

AgentVoiceModel.name adds simba-3.5-turbo — the enum is now simba-3.0, simba-3.2, simba-3.5-turbo. Treat it as an open set and fall through for values you do not recognise. As of 2026-08-27, simba-3.5-turbo is offered on every first-party Speechify voice (its requires_voice_curation is false), except voices built for another model, whose speaker embedding is valid for that training alone; partner voices list no upgrade tier at all.

Nothing you already send changes — an agent with no tts.model runs on its voice’s curated model exactly as before.