PricingAPI keys
OverviewQuickstartAuthentication
GenerateModelsImagesVideoUploads
JobsJobs and pollingWebhooks
ReferenceErrors and retriesLimitsClient
BillingBilling
Media toolsOverviewAvatarRemix mediaFace swapMusicTimelineVideo captions
MCPOverviewQuickstartOAuthTools and gates
CLIOverviewInstall and loginCommandsAgent skills
API referenceAPI reference
EnterpriseOverviewAgentsFormatsBest practices

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:

text
POST /v1/music-router/generate

Catalog:

text
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 and ace-step. 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:

FieldRequiredNotes
modelNoRoutable 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.
promptYes1–5000 characters. Put exclusions in the positive prompt. Control the length in the prompt (“a 2-minute track”, [0:00-0:30] Intro: …).
image_urlNoOptional public HTTPS image, or null to clear. Only sume/music-auto, lyria-3.5 and lyria-3-pro take one.
duration_secondsNoThe 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; each defaults to 60). The other models set their length from the prompt.
negative_promptNoSume does not support a non-empty value. Omit the field or send "".
metadata, mode, webhook_url, wait_timeout_secondsNoSame as on Music 1.0.

Sume rejects duration, and duration_seconds on models that set their own length.

Create a Music Router job

bash
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.

Price

Each Music Router model has its own price, in US dollars (usd_per_audio) and in credits (credits_per_audio). Most charge per track; elevenlabs-music-2.5 charges per started minute and ace-step per second, so their catalog row also lists usd_per_minute and credits_per_minute. GET /v1/music-router/models and the API rate card list the current prices, and dry_run returns a request's exact charge.

Poll and fetch the result

bash
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.

On this page

  1. Request fields
  2. Create a Music Router job
  3. Price
  4. Poll and fetch the result