Music API metadata field: tag tracks by campaign, not sent to provider
Sume's Music Router stores a metadata object on the job and does not send it to the provider. How to tag generations by campaign, brief or scene for audits.

What metadata is
The Music Router request accepts metadata, described in the docs along with mode, webhook_url and wait_timeout_seconds as behaving the way they do on Music 1.0. The metadata is stored on the job and is not sent to the provider.
That makes it a safe place for your own labels. It will not change the music, and it will not leak your internal names to a vendor.
What to put in it
Keep it small and structural. A label you can search on later is worth more than a long description.
| Key | Example | Why |
|---|---|---|
| campaign | spring-launch | Group tracks by project |
| scene | hero-intro | Match a track to a place in the edit |
| brief_id | B-1042 | Trace back to the request |
| take | 3 | Know which attempt this was |
A request
{
"prompt": "Bright acoustic guitar, upbeat, 30 seconds",
"metadata": {
"campaign": "spring-launch",
"scene": "hero-intro",
"take": 3
}
}Rules of thumb
- Never put secrets or personal data in it; treat it as stored job data.
- Reuse the Idempotency-Key only for the same payload, metadata included. A different payload with the same key returns
409 idempotency_conflict. - Use a new key when you change
take, since that is a new generation. - Read it back from the job when you reconcile spend against campaigns.
Auditing later
A tag only helps if you read it back. When you reconcile a month of generations, list jobs, group by metadata.campaign, and multiply by $0.125. The result is a per-campaign music spend without scraping your own logs.
Decide on key names once for the whole team, and document them next to the code that sets them.
Why it helps with cost
Each generation is $0.125, so ten takes of a theme is $1.25. Tagging by campaign lets you add that up per project later instead of guessing. See music generation costs for the broader view.
Sources
Related posts
More in Developers
- n8n browser OAuth2 webhook auth vs Sume HMAC-signed webhooks
n8n 2.42 adds a browser OAuth2 flow for User Auth webhooks. Sume's webhooks are server-to-server and HMAC-signed instead. A Python verifier that fails closed.
- n8n durable agent message queue: replays and Sume idempotency keys
n8n 2.42 lays a durable agent message queue foundation. A queue that can redeliver means a paid Sume call needs a stable idempotency_key per message.
- Audit narration before posting a Short: flag 'here we see' lines
YouTube is reported to discount voice-over that only describes the screen. Transcribe a clip with Sume video inspect and flag describing lines first.
- How many video jobs can I send now? The in-flight budget, worked
Concurrency 100, queue 500, 30 processing and 10 queued gives a new in-flight budget of 60 on Sume. Why the 450 wave hint is a hint, not your limit.
Written by Sume