API: every agent voice can be pinned to every model

tts.model on an agent no longer depends on the voice. Every voice Speechify serves — catalogue voices and your workspace’s clones alike — can now be pinned to simba-3.0, simba-3.2 or simba-3.5-turbo, and each voice’s models array on GET /v1/agents/voices lists all three.

Every Simba training conditions on the voice’s prompt audio, which every Speechify voice carries, so a voice was never the reason a model could not run. Where a model has a roster it was tuned on, the voice’s registrations still decide which of that model’s own trainings serves the call — an internal routing detail with no wire effect.

Two refusals remain, and both are unchanged:

  • An English-only model (simba-3.2, simba-3.5-turbo) cannot be pinned on an agent that resolves through the multilingual serving — one that declares additional_languages, or whose own language is not English. That is english_only on GET /v1/agents/tts-models.
  • A partner voice takes no Simba model at all; its provider selects its own.

requires_voice_curation on GET /v1/agents/tts-models is deprecated and is now false for every model. A picker that greys options out on it stops greying anything; drive it from english_only and the agent’s languages instead. default_model on each voice is unchanged — it still names what an unpinned agent resolves to, and a registration still moves it.