Skip to content

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/generate
  • prompt (required, up to 2,000 chars)
  • kind: pro full song (10 credits), clip 30 seconds (1), wav studio 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.