---
title: Music 1.0
description: Generate music from text (and optional image conditioning) with Sume Music 1.0.
---

Use Music 1.0 for prompt-driven music generation. The request is text-first;
optional image conditioning is supported. Provider model ids stay internal.

Primary invoke URL:

```text
POST /v1/music-1.0/generate
```

Model-run alias (same body):

```text
POST /v1/models/sume/music-1.0/runs
```

Public model id: `sume/music-1.0`.

## When to use

| Goal | Approach |
|---|---|
| Text → music | `prompt` only |
| Visual conditioning | `prompt` + optional `image_url` |
| Steer away from styles | put exclusions in the positive `prompt` (e.g. “no vocals, no spoken word”) |

## Hard constraints

- Do **not** send `duration` or `duration_seconds`. They are unrecognized and
  rejected on Music 1.0.
- Do **not** send a non-empty `negative_prompt`. Music 1.0 / Lyria 3 does not
  support negative prompting; non-empty values return HTTP 400 with
  `public_reason=negative_prompt_unsupported`. Omit the field or send `""`.
- Prompt max length is 5000 characters.
- Image URLs must be public HTTPS. Send `null` for `image_url` only when you
  intentionally clear an image input on a client that reuses request objects.

## Request fields

| Field | Required | Notes |
|---|---|---|
| `prompt` | Yes | 1–5000 characters. Include exclusions in the positive prompt. |
| `negative_prompt` | No | Unsupported when non-empty. Omit or send `""`. |
| `image_url` | No | Optional public HTTPS image URL, or `null` to clear. |
| `metadata` | No | Caller metadata stored on the job; not sent to the provider. |
| `mode` | No | `async`, `sync`, `subscribe`, `webhook`. |
| `webhook_url` | No | Public HTTPS callback for webhook mode. |
| `wait_timeout_seconds` | No | 0–30 for `sync` / `subscribe`. |

## Create a music job

<!-- api-call-example:music-generate -->

Image-conditioned example:

```bash
curl -X POST https://api.sume.com/v1/music-1.0/generate \
  -H "Authorization: Bearer $SUME_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: music-image-001" \
  -d '{
    "prompt": "Cinematic ambient underscore matching the mood of the reference still, instrumental only",
    "image_url": "https://example.com/moodboard.png"
  }'
```

## 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"
```

On success, read the audio artifact from `result.artifacts[]` where `type` is
`audio` (typically `audio/mpeg` on `media.sume.com`).

## Artifacts

Completed Music 1.0 jobs return Sume-hosted audio artifacts:

```json
{
  "id": "job_...",
  "status": "completed",
  "result": {
    "artifacts": [
      {
        "id": "artifact_...",
        "type": "audio",
        "url": "https://media.sume.com/artifacts/...",
        "content_type": "audio/mpeg"
      }
    ]
  }
}
```

Use Sume media URLs from the result. Raw provider URLs are not public outputs.

## Pricing

Fixed **$0.10 USD** per accepted Music 1.0 generation. Price does not vary by
prompt length or optional image conditioning.

## Next

- [Jobs and results](/workflows/jobs-and-results) for polling and webhooks
- [Recipes](/api/cookbook) for short copy-paste flows
