---
title: Music Router
description: Music generation through the Music Router — sume/music-auto picks the engine (Lyria 3.5 today); explicit Lyria ids pass through.
---

Music Router is Sume's model surface for music generation, the sibling of
[Image Router](/models/images) and [Video Router](/models/videos). Send a
prompt; Sume picks the engine when `model` is omitted or set to
`sume/music-auto` (Lyria 3.5 today). Pin an explicit catalog id from
`GET /v1/music-router/models` to pass through to that engine.

[Music 1.0](/models/music) (`sume/music-1.0`) is retiring gradually: its
routes keep working and keep `job.model = sume/music-1.0`, but every request
now resolves through the Music Router. New integrations should call 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}
```

Public model id: `sume/music-router`. Routable ids: `sume/music-auto`
(default), `lyria-3.5`, `lyria-3-pro`.

## Request fields

Same body as [Music 1.0](/models/music) plus an optional `model`:

| Field | Required | Notes |
|---|---|---|
| `model` | No | Routable id from the catalog. Omitted = `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; steer length in the prompt (“a 2-minute track”, `[0:00-0:30] Intro: …`). |
| `image_url` | No | Optional public HTTPS image, or `null` to clear. |
| `negative_prompt` | No | Unsupported when non-empty. Omit or send `""`. |
| `metadata`, `mode`, `webhook_url`, `wait_timeout_seconds` | No | As on Music 1.0. |

`duration` / `duration_seconds` are rejected.

## 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 requested routable id (`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.

## Pricing

Every Music Router model charges the fixed Music price per audio generation.
The catalog lists the provider list price per model for reference.

## 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`.
`result.lyrics` carries the model-reported lyrics or section map when present.
