AI music negative prompt: why the API returns 400
Sume's music API rejects a non-empty negative_prompt with HTTP 400. What the error looks like and how to write exclusions in the prompt instead.

A negative prompt does not work on Sume's music API: a non-empty negative_prompt returns HTTP 400 with public_reason=negative_prompt_unsupported. The docs say Music 1.0 and Lyria do not support negative prompting, so omit the field, or send an empty string, and write what you want to avoid into the positive prompt.
From the Music 1.0 and Music Router docs, read 2026-09-29.
What does a working request look like?
Move each exclusion into the prompt as a clause. The example below excludes vocals and drums.
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: exclusions-001" \
-d '{
"prompt": "Ambient piano and pad, 60 BPM, A minor. A 1-minute track. No drums, no vocals, no spoken word."
}'Which other fields are rejected?
| Field | Result |
|---|---|
negative_prompt non-empty | HTTP 400, negative_prompt_unsupported |
negative_prompt omitted or "" | Accepted |
duration / duration_seconds | Rejected as unrecognized |
prompt over 5,000 characters | Outside the 1-5,000 limit |
Unknown model on the router | 400 model_not_found with catalog_url |
Do exclusions always work?
Not always. The docs call prompt directions creative guidance, not guaranteed settings, so listen to each take. If an unwanted element appears, restate the exclusion more plainly and generate again; each take is a billed generation.
Sources
Related posts
More in Developers
- AI music API webhook: get a callback when the track is ready
Submit a music job with mode webhook and a public HTTPS URL, verify the signed callback, and keep polling as a backup. Headers, events and retries.
- AI SDK 7 createMCPClient: connect a remote HTTP MCP server
In AI SDK 7, createMCPClient takes an http transport with a url and headers. Point it at https://mcp.sume.com/mcp, load client.tools(), and close in finally.
- AI SDK 7 isStepCount stopWhen: cap a paid tool loop
stopWhen: isStepCount(5) limits AI SDK steps, not spend. For paid Sume MCP tools, pair it with max_spend_usd, dry_run and an idempotency_key.
- AI SDK MCP client authorization bearer header: what to send Sume
Set headers.Authorization to Bearer plus your Sume API key on the AI SDK http transport, and send only one credential header. An OAuth token is not an API key.
Written by Sume