drama-3-preview model id vs Sume TTS Router model ids

Fish selects drama-3-preview with a model header. Sume TTS Router takes a required model id from its catalog, and unknown ids fail with 400 model_not_found.

4 min readSume
All posts

Fish Audio selects drama-3-preview with a model header, and an unrecognized value falls back to s2.1-pro. Sume's TTS Router takes a required model in the request body from GET /v1/tts-router/models, and an unknown id fails with 400 model_not_found. drama-3-preview is not a Sume id.

Fish facts are from its text-to-speech reference (read 2026-10-01); Sume facts are from the OpenAPI file.

How does Fish pick the model?

Its reference describes a model header: use s2.1-pro-free for the free developer tier, and drama-3-preview is a preview model whose behavior and availability may change. Allowed values are s1, s2-pro, s2.1-pro, s2.1-pro-free and drama-3-preview. If the header is omitted or unrecognized, the request falls back to s2.1-pro.

How does Sume pick the model?

Sume TTS 1.0 has no engine picker; model and model_id are rejected with 400. To choose a model, call POST /v1/tts-router/generate with a required model from the catalog, listed by GET /v1/tts-router/models. The response job.model echoes the requested id.

A mistyped id is an error, not a fallback, which is the opposite of the Fish header behavior.

Model selection compared as written by each vendor, read 2026-10-01.
Fish AudioSume TTS Router
Wheremodel headermodel in the request body
Unrecognized valueFalls back to s2.1-pro400 model_not_found with the catalog URL
Preview modeldrama-3-previewNot in the catalog
AuthPer Fish docsSume API key only

Which ids does Sume list today?

The OpenAPI file lists sonic-3.6, sonic-3.5, sonic-3, sonic-latest and sonic-preview, and describes the v1 catalog as Sonic only. Read the live list from GET /v1/tts-router/models before hardcoding an id.

What should I change when moving a request?

Move the model choice from a header into the JSON body, use a catalog id, and send your Sume API key only; the schema says not to send provider credentials. Check for model_not_found in your error handling instead of relying on a default. For another header-to-body case see HeyGen's per-request model id.

Sources

Related posts

More in Developers

All Developers posts

Written by Sume