For agents
Let an agent make the song
One tool, generate_song, with the same validation, credit costs and per-song license as the composer.
1. Read the tool manifest (public)
curl -s https://ironsound.org/api/mcp/generateprompt(required, up to 2,000 chars)kind:profull song (10 credits),clip30 seconds (1),wavstudio master (20)instrumental,durationMinutes(1–4),bpm(40–240),lyrics(up to 2,000 chars)
2. Call it
From a signed-in browser session (an agent running in your browser, or a script that reuses your session cookie), every kind is available. The account must have confirmed it is 18 or older.
POST https://ironsound.org/api/mcp/generate
Content-Type: application/json
{
"tool": "generate_song",
"arguments": {
"prompt": "Upbeat synthwave about a night drive, male vocal",
"kind": "clip",
"bpm": 110
}
}The response is a job handle: { tool, jobId, statusUrl, license }. Poll statusUrl from the same session until job.status is succeeded (or failed, which returns the credits). The song then appears in the library.
Server-to-server: service keys
Backends without a browser session use a service key (is_…) with the soundtrack:generate scope, sent as Authorization: Bearer is_…. A service key generates 30-second clips only. Keys aren't self-serve yet: email [email protected] with what you're building. Clips land in the key owner's library.
curl -s -X POST https://ironsound.org/api/v1/soundtracks \
-H "Authorization: Bearer $IRONSOUND_KEY" \
-H "Content-Type: application/json" \
-d '{"mood":"calm piano for a meditation app intro","vocals":false,"bpm":70}'Limits and rules
- Rate limit: 8 generations per 10 minutes per account. One song generates at a time per account.
- Credits come from the account balance. Failed runs return their credits.
- Every finished song carries the per-song license. No artist-voice clones or lyrics you don't own.
- Machine-readable index: llms.txt, openapi.json.