Master Blaster API
The same mastering as the page, for programs. You need an API key from MediaAtlas (contact). Keys are metered in minutes of audio per month; we keep counts for invoicing, never your audio or file names. Results are deleted one hour after they are ready, as on the privacy page.
Master a track
curl -X POST "https://masterblaster.mediaatlas.si/v1/masters?mode=full&chips=balance&target=-16" \ -H "Authorization: Bearer mb_..." \ --data-binary @track.wav
The body is the audio file itself (WAV, FLAC, MP3, ...). Query: mode full (default for keys) or clip (20 s excerpt); chips a comma-separated list of wishes from GET /api/prompts; target source, -14, -16 or -18 LUFS (default: keep the source loudness); tag=0 leaves the visible credit line out of the tags (the signed proof stays). Answer 202: {"id", "status", "position", "eta_s", "url"}.
Wait for it
curl https://masterblaster.mediaatlas.si/v1/masters/<id> -H "Authorization: Bearer mb_..."
status is queued, processing, done or error. When done: result (loudness of both files, gain, limiter, alignment, the list of findings), files (addresses of original.wav and mastered.wav, also with your key) and expires_s, and proof {id, t}: the ID of the master (MB-XXXX-XXXX), also written into its tags. Poll every few seconds.
For agents and bots
A program, a script or an AI agent uses the API the same way as any client, with a key of its own. Give each agent its own key: its limits, its usage and its revocation are then its own. GET /v1 (no key) describes the API in JSON, /llms.txt in text. Read Retry-After on every 429 and wait that many seconds; poll a job every 5 s, not faster.
Limits of a key
Every key has its own limits, set when it is made. GET /v1/usage shows yours:
{"limits": {"rpm": 30, "minutes_per_day": 60, "minutes_per_month": 600,
"max_track_seconds": 600, "max_active": 2, "max_upload_mb": 300, "demo_seconds": 20},
"modes": ["full", "clip"], "minutes_today": 12.5, "audio_minutes": 140.2, "jobs": 41, "errors": 0, "billed_tracks": 38, "plan_packs": 4, "month_eur": 81.6}
rpm: requests per minute (submits and polls together).minutes_per_day,minutes_per_month: minutes of audio mastered. A 20 s demo (mode=clip) counts 20 s. The count is added when a job finishes, so two jobs in the queue can take a quota a little over its end.max_track_seconds: the longest track in whole-track mode; a longer one is refused at once with413.max_active: tracks of this key waiting or running at the same time.modes:full(whole track) and/orclip(20 s demo).
Proof of mastering
Every master carries the ID and a signed proof in its tags (TXXX:MB_ID, TXXX:MB_PROOF, an Ed25519 signature over the SHA-256 of the decoded samples) and is in our register, kept 10 years for API masters. Anyone can check a file at /verify or with POST /api/verify (raw audio body, no key) and an ID with GET /api/verify?id=MB-XXXX-XXXX. Our public key: /.well-known/masterblaster-signing-key.pem. A proof is for the master as delivered: after an MP3 export or a level change the signature is still ours but the audio no longer matches.
Usage
curl https://masterblaster.mediaatlas.si/v1/usage -H "Authorization: Bearer mb_..."
Errors are {"error": {"code", "message"}} with 401 (key), 403 (mode), 429 (rate or quota, or two tracks already in the queue), 413 (file too large), 503 (queue full) or 404 (unknown or expired job, or a job of another key).