Media tools
Music Router
Music generation through the Music Router — sume/music-auto picks the engine (Lyria 3.5 today); explicit Lyria ids pass through.
Music Router is the Sume model surface for music generation. It is in the
same family as Image Router and Video Router.
Send a prompt. If you omit model or set it to sume/music-auto, Sume selects
the engine (Lyria 3.5 today). To pass through to one engine, pin an explicit
catalog id from GET /v1/music-router/models.
The retirement of Music 1.0 (sume/music-1.0) is gradual. Its
routes continue to work and keep job.model = sume/music-1.0. But every
request now resolves through the Music Router. For new integrations, we recommend the
router.
Primary invoke URL:
POST /v1/music-router/generateCatalog:
GET /v1/music-router/models
GET /v1/music-router/models/{model_id}The public model id is sume/music-router. The routable ids are
sume/music-auto (default), lyria-3.5, lyria-3-pro,
elevenlabs-music-2.5, minimax-music-2.6, lyria-2, stable-audio-2.5,
ace-step, and cassetteai-music. sume/music-auto picks the engine (Lyria
3.5 today).
Request fields
The body is the same as for Music 1.0, plus an optional model:
| Field | Required | Notes |
|---|---|---|
model | No | Routable id from the catalog. If you omit it, the value is sume/music-auto. Unknown ids fail with 400 model_not_found and catalog_url. |
prompt | Yes | 1–5000 characters. Put exclusions in the positive prompt. Control the length in the prompt (“a 2-minute track”, [0:00-0:30] Intro: …). |
image_url | No | Optional public HTTPS image, or null to clear. Only sume/music-auto, lyria-3.5 and lyria-3-pro take one. |
duration_seconds | No | The track's length in whole seconds, only on models whose catalog row lists capabilities.duration_seconds (elevenlabs-music-2.5 10–300, stable-audio-2.5 5–190, ace-step 5–240, cassetteai-music 10–180; each defaults to 60). The other models set their length from the prompt. |
negative_prompt | No | Sume does not support a non-empty value. Omit the field or send "". |
metadata, mode, webhook_url, wait_timeout_seconds | No | Same as on Music 1.0. |
Sume rejects duration, and duration_seconds on models that set their own
length.
Create a Music Router job
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-001" \
-d '{
"model": "sume/music-auto",
"prompt": "Warm lo-fi hip hop, 84 BPM, C minor. Dusty Rhodes chords, brushed boom-bap drums, a muted trumpet answer at 0:10. A 30-second track. Instrumental, no vocals."
}'job.model echoes the routable id that you requested (sume/music-auto stays
sume/music-auto). job.request.routed_model names the catalog engine that
ran (for example lyria-3.5), on both the router and the Music 1.0 routes.
Credits
Each Music Router model has its own price in credits. Most charge per track;
elevenlabs-music-2.5 and cassetteai-music charge per started minute and
ace-step per second, so their catalog row also lists credits_per_minute.
GET /v1/music-router/models and the
API rate card list the current credits.
Poll and fetch the result
curl https://api.sume.com/v1/jobs/job_123/status \
-H "Authorization: Bearer $SUME_API_KEY"
curl https://api.sume.com/v1/jobs/job_123/result \
-H "Authorization: Bearer $SUME_API_KEY"Read the audio artifact from result.artifacts[] where type is audio.
When they are present, result.lyrics carries the model-reported lyrics or
section map.