Music API 400 model_not_found: fix an unknown model id

An unknown model on POST /v1/music-router/generate fails with 400 model_not_found and a catalog_url. Use an id from GET /v1/music-router/models or omit model.

4 min readSume
All posts

A 400 model_not_found from POST /v1/music-router/generate means the model value is not a routable catalog id. The response includes a catalog_url; fix it by sending one of the listed ids or by omitting model, which routes to sume/music-auto.

Which ids are valid?

From the Music Router docs, read 2026-09-30:

Valid model values on the Music Router, read 2026-09-30.
ValueResult
OmittedRoutes as sume/music-auto
sume/music-autoSume picks the engine (Lyria 3.5 today)
lyria-3.5Passes through to that engine
lyria-3-proPasses through to that engine
Anything else, such as a misspelled id400 model_not_found plus catalog_url

What should I check first?

Compare your string with the catalog character by character, including the dot in lyria-3.5. Then call GET /v1/music-router/models and use an id it returns; do not send a Google preview id you saw elsewhere, since only catalog ids are accepted.

Is this the same as other 400s on music?

No. A non-empty negative_prompt is a separate 400 with public_reason=negative_prompt_unsupported, and duration or duration_seconds are rejected as unrecognized fields. A model_not_found is only about the id.

What does a corrected request look like?

Send an id from the catalog, or drop the field. This one passes through to lyria-3.5.

curl -X POST https://api.sume.com/v1/music-router/generate \
  -H "Authorization: Bearer $SUME_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: music-router-002" \
  -d '{"model": "lyria-3.5", "prompt": "Calm piano, 60 BPM, A minor. Instrumental, no vocals."}'

How do I submit the job and fetch the track?

A music request takes mode async, sync, subscribe or webhook. With sync or subscribe, wait_timeout_seconds is 0 to 30; with webhook, webhook_url must be a public HTTPS callback. Send an Idempotency-Key on the submit, then poll GET /v1/jobs/{job_id}/status and read GET /v1/jobs/{job_id}/result. The audio is the entry in result.artifacts[] where type is audio, hosted on media.sume.com; raw provider URLs are not public outputs. A corrected request uses the same fields; only model changes.

The prompt is 1 to 5000 characters. Put exclusions in the positive prompt ("Instrumental, no vocals"), because a non-empty negative_prompt is refused. Full field list: Music Router docs.

Sources

Related posts

More in Developers

All Developers posts

Written by Sume