Read the Sume Music Router catalog: auto, Lyria 3.5 and Lyria 3 Pro
GET /v1/music-router/models returns three ids, their prompt limits and prices in micro-dollars. A Node script prints the table so you do not hard-code it.

GET https://api.sume.com/v1/music-router/models returns three rows in data.models: sume/music-auto, lyria-3.5 and lyria-3-pro. Each has capability flags, a maximum prompt length and a pricing object with the provider list price and the billable price in micro-dollars per audio.
The Sume docs say every row is charged the one fixed Music price, so the catalog is mostly for checking which engine sume/music-auto resolves to.
A script that prints it
Run with Node 18 or later and SUME_API_KEY set.
async function main() {
const res = await fetch("https://api.sume.com/v1/music-router/models", {
headers: { "x-api-key": process.env.SUME_API_KEY ?? "" },
});
if (!res.ok) throw new Error("HTTP " + res.status);
const { data } = await res.json();
for (const m of data.models) {
const p = m.pricing;
console.log(
m.id.padEnd(16),
m.routing.padEnd(13),
"resolves_to", m.resolves_to ?? "-",
"max prompt", m.capabilities.max_prompt_characters,
"billable $" + (p.billable_usd_micros_per_audio / 1e6).toFixed(3),
);
}
}
main().catch((e) => { console.error(e.message); process.exit(1); });What to expect
From the repo catalog and docs, the rows are as below. The live response is the source of truth.
| Id | Routing | Notes |
|---|---|---|
| sume/music-auto | auto | Sume picks the engine; resolves to lyria-3.5 today |
| lyria-3.5 | pass_through | Provider list $0.10 per audio, billable $0.125 |
| lyria-3-pro | pass_through | Provider list $0.08 per audio listed in the catalog |
A catalog quirk worth reading twice
The Pro row lists a lower provider price than Lyria 3.5, yet the docs state that every Music Router model is charged one fixed Music price. Do not assume Pro is cheaper for you. Check a finished job's cost, or read billable_usd_micros_per_audio from your own response.
Generation itself takes a prompt of 1 to 5,000 characters, an optional image_url, and has no duration field. The output is an mp3 on media.sume.com.
Handling errors
A 401 means the key is missing, malformed or revoked. Send the key as x-api-key or as an Authorization Bearer header. Every error response carries an x-sume-request-id header that starts with req_, so log it and quote it if you contact support.
Use auto unless you are testing
sume/music-auto follows whatever Sume resolves, so your prompt keeps working if the default engine changes. Pin lyria-3.5 when you are comparing runs and need the engine fixed, as in a blind test of prompts. Because each try is a flat charge, it is cheap to run the same prompt on both explicit ids and listen.
Sources
Related posts
More in Developers
- Read the Sume TTS Router catalog in one request: Sonic ids, prices
GET /v1/tts-router/models lists the Sonic ids, the per-character list price, the margin and the 20,000-character cap. A small Node script prints them.
- Reconcile Sume jobs after a deploy or outage: poll what is open
After downtime, read status for every job your own table still shows as open, honor terminal and result_ready, and never resubmit. Python with sqlite.
- Redact faces and license plates: Pillow first, AI edit only to replace
For redaction use Pillow boxes you control; use an AI mask edit on openai/gpt-image-2.5 only to replace a plate or face, from $0.0094 per image on Sume.
- Redeliver a missed video webhook after a bad deploy: one Sume call
Receiver down when the video finished? POST /v1/jobs/{job_id}/webhook/redeliver re-sends job.completed with a fresh signature. Scope, statuses, pitfalls.
Written by Sume