Music prompt rejected by policy: rewrite only the flagged part
If Sume Music rejects a prompt on policy, change the flagged content but keep the musical brief. The docs say not to flatten it to a generic bed; here is how.

After a policy rejection from Sume Music, change the flagged part of the prompt and keep the rest of the musical brief; the docs also say to retry only within your authorized budget and not to reduce the request to a generic bed. Each retry is a new generation at $0.125.
The rule comes from the Music 1.0 docs. It is aimed at agents and scripts that retry on their own, because a shortcut that strips the prompt down to "calm music" returns a track that no longer fits the video.
What counts as the flagged part?
The error does not need a guess about which words offend; the practical approach is to look for named people, real song titles, quoted lyrics or requests to sound like a specific living artist, and change those. Describe the sound instead: tempo, instruments, texture, structure. The docs' own example is a seven-axis brief with a tempo in BPM, a key, named instruments, an arc over time, and a production era.
| Flagged-style content | Replace with |
|---|---|
| A named artist or band | Genre, era, instrumentation |
| A named song | Tempo, mood, structure |
| Quoted lyrics | A description of the vocal feel, or "Instrumental, no vocals" |
| A person's voice | An abstract vocal texture, or none |
How many retries is enough?
Set the budget before the loop starts. Three attempts cost $0.375; five cost $0.625. If the third attempt is also rejected, a person should read the prompt, because a loop that rewrites blindly tends to drift from the brief. Log the attempt number and the changed phrase with each try.
- Cap attempts per scene.
- Log the phrase that changed.
- Stop and ask a person after the cap.
- Never remove the tempo, instruments or arc to "be safe".
What not to send
The route rejects a few fields outright, which is different from a policy rejection and cheaper to fix. duration and duration_seconds are rejected, and a non-empty negative_prompt returns 400 with public_reason=negative_prompt_unsupported. Describe what you want in the prompt, including "Instrumental, no vocals" when you want none. If you attach an image_url, it must be public HTTPS.
| Field | Result |
|---|---|
duration or duration_seconds | Rejected |
Non-empty negative_prompt | 400, negative_prompt_unsupported |
Non-HTTPS image_url | Rejected |
| Prompt over 5,000 characters | Rejected |
Keep the brief in version control
Store the brief as text next to the project, with the rewrites listed in order. When the track is accepted, the approved prompt is the one to reuse for the next scene in the same project, since the next scene should contrast or continue it on purpose.
A retry loop that behaves
If an agent calls the music route for you, give it explicit rules in its instructions: one brief per scene, a cap of three attempts, a rule that only the flagged phrase may change, and a requirement to report the final prompt back. An agent that rewrites the whole prompt after each rejection will spend the budget without converging.
Also make the failure visible. A rejected scene should show up in your project notes with the phrase that was changed, so that a person can see the pattern: if one client keeps naming a band, the fix belongs in the brief template, not in the retry loop.
- One brief per scene.
- At most three attempts at $0.125 each.
- Report the final prompt with the track.
- Escalate to a person when the cap is hit.
Sources
Related posts
More in Developers
- n=10 on the Sume Image API: docs say 10, catalog says 4 (Grok 1)
The Image API docs say n goes up to 10, but every catalog model caps lower: 4 for most, 1 for Grok Image, 1 or 4 for Soul. The 400 you get and how to batch.
- Next.js Oct 14 security update: redeploy, then test your Sume webhook
Next.js will ship an out-of-band security update on Oct 14. Prepare your Sume webhook receiver now, then prove it still verifies after you redeploy.
- Node 26.11 --process-timeout exits 124: the Sume job keeps running
Node 26.11.0 adds --process-timeout, which kills a script with exit code 124. A Sume job it was waiting on keeps running and billing, so save the polling URL.
- Node script for a 9:16 TikTok video: check the model, then submit
A Node 20 fetch script that confirms a Sume model lists 9:16 and your duration, submits one 12-second 720p job, and saves an MP4 that fits TikTok's API limits.
Written by Sume