Developers

API documentation

Master files from your own publishing workflow. The API uses API keys, raw file uploads and JSON responses. API access is included with the Creator and Pro packs.

Overview

Base URL: https://lufsready.com/api/v1. All responses are JSON. Jobs are processed asynchronously: you upload a file, then poll the job until its status is done or failed, then download the master. Jobs use minutes from your balance exactly like files uploaded in the dashboard, and failed jobs are refunded automatically.

Authentication

Create a key in Settings → API keys. Keys look like lr_live_ followed by 40 hexadecimal characters and are shown once. Send the key as a bearer token:

Authorization: Bearer lr_live_0123456789abcdef0123456789abcdef01234567

Keep keys secret and on your server; never put them in browser code. Revoke a key at any time from Settings.

Create a job

POST /api/v1/jobs. Send the file as the raw request body (not multipart) and pass the file name and settings as query parameters.

curl -X POST "https://lufsready.com/api/v1/jobs?name=episode-42.wav&preset=podcast" \
  -H "Authorization: Bearer $LUFSREADY_KEY" \
  -H "Content-Type: application/octet-stream" \
  --data-binary @episode-42.wav

Response 201 Created:

{
  "job": {
    "id": "job_4f1c0e9a2b7d3c5e8a1f",
    "status": "queued",
    "file": "episode-42.wav",
    "preset": "podcast",
    "durationSeconds": 2530.4,
    "minutesCharged": 43,
    "filesExpireAt": "2026-10-30T12:00:00.000Z"
  },
  "balance": 557
}

The name parameter is required and its extension must be one of: wav, mp3, m4a, aac, flac, ogg, oga, opus, aif, aiff, wma, webm, mp4, mov, mkv.

Job status and report

GET /api/v1/jobs/{id} returns the job. While processing, status is queued or processing and phase shows the current stage. When status is done, report contains the measurements of the original and the delivered file, every check with its target and result, and the processing steps. Poll every few seconds.

curl "https://lufsready.com/api/v1/jobs/job_4f1c0e9a2b7d3c5e8a1f" -H "Authorization: Bearer $LUFSREADY_KEY"
{
  "job": {
    "id": "job_4f1c0e9a2b7d3c5e8a1f",
    "status": "done",
    "report": {
      "passed": true,
      "target": { "metric": "lufs", "value": -16, "tolerance": 1 },
      "input":  { "integrated": -27.4, "truePeak": -0.2, "lra": 14.8, "rms": -31.0, "noiseFloor": -58.1 },
      "output": { "integrated": -16.1, "truePeak": -1.6, "lra": 6.9, "rms": -20.3, "format": "mp3", "bitrate": 192 },
      "checks": [
        { "id": "integrated", "target": "-16 LUFS (±1)", "value": -16.1, "pass": true },
        { "id": "truePeak", "target": "≤ -1 dBTP", "value": -1.6, "pass": true }
      ],
      "steps": ["Rumble filter (80 Hz high-pass) …", "…"]
    }
  }
}

The values above illustrate the format; your report contains the values measured on your file.

Download the master

GET /api/v1/jobs/{id}/download streams the mastered file (only when status is done and files have not expired).

curl -L -o episode-42-mastered.mp3 "https://lufsready.com/api/v1/jobs/job_4f1c0e9a2b7d3c5e8a1f/download" \
  -H "Authorization: Bearer $LUFSREADY_KEY"

Files are deleted 7 days after upload. Download them promptly.

List and delete jobs

  • GET /api/v1/jobs: your 50 most recent jobs.
  • DELETE /api/v1/jobs/{id}: deletes the job's files now. A queued job is cancelled and its minutes are returned.

Account balance

GET /api/v1/me returns your email and minute balance.

{ "email": "you@example.com", "balanceMinutes": 557 }

Presets and options

GET /api/v1/presets lists presets and their defaults. Query parameters accepted by POST /api/v1/jobs:

ParameterValuesDefault
nameOriginal file name with extension (required)—
presetpodcast, podcast-mono, acx, video, ebu-r128, atsc-a85, customrequired
targetLufs, truePeakCustom preset only: -30 to -9 LUFS; -6 to -0.1 dBTP—
noiseoff, light, medium, strongPreset default
rumble, deess, level, gate1 or 0Preset default
formatmp3, m4a, wav, flac (ACX: mp3 only)Preset default
bitrateMP3: 96, 128, 160, 192, 256, 320; M4A: 128, 160, 192, 256 (kbps)Preset default
bitDepth, sampleRateWAV/FLAC: 16 or 24; 44100 or 4800024 / preset
channelskeep, mono, stereoPreset default
notify1 to receive an email when the job finishes0

Errors and limits

Errors return a non-2xx status with { "error": "message" }.

StatusMeaning
400Invalid parameter
401Missing or invalid API key
402Not enough minutes for this file
403API access not included in your packs
404Job not found (or not yours)
410Files expired and were deleted
413File larger than 95 MB
415Unsupported file type
422File unreadable, has no audio, or is shorter than 3 seconds / longer than 4 hours
429Too many requests, or 5 jobs already in progress

Need help integrating? Contact support.