MixLab

Analyze loudness, dynamics, stereo, and spectrum

Submit an audio file and get back the same JSON the in-browser MixLab analyzer renders. Every analysis returns inline; there is no async path. Files too long to decode are refused with 413 rather than queued.

post/v1/mixlab/analyze

Request

  • Base URL: https://audiolab.tools
  • URL: https://audiolab.tools/v1/mixlab/analyze
  • Auth: HTTP bearer

Request body

urlstring uri

Public http(s) URL to the audio file (alternative to multipart upload).

objectPathstring

Path returned by /api/upload-url, for audio that has no public URL. Readable only by the key that uploaded it, and kept for about an hour so a follow-up question about the same file does not need a re-upload.

seriesboolean

Send the curves as well: shortTermLufs, waveform and spectrum. Off by default since 22 September 2026, because they are ~98% of the payload and no answer needs them. Raw or multipart callers use ?series=true.

roundboolean

Round the numbers to what the measurement is worth: dB and LUFS to 2 decimals, seconds to 3, shares to 3, Hz to 1. Same keys, same types, only fewer decimals. Off by default: without it you get the full precision, exactly as before. Supported on mixlab/analyze, voicelab/qa, signallab and analyze/profile.

measureStatusboolean

Add one extra key, measureStatus, with the status (validated, proxy, beta, withdrawn, planned), the basis, how it works (dsp, model, mixed) and, where known, the margin of every measure in the answer. Off by default: without it the answer has no extra key. Supported on mixlab/analyze, voicelab/qa, signallab and analyze/profile.

Example request

{
  "url": "https://audiolab.tools/reference/is-original.mp3"
}

Response

Analysis complete.

durationSecnumber required
sampleRateinteger required
channelsinteger required
integratedLufsnumber required

Integrated loudness (LUFS), BS.1770-4.

reportUrlstring

Shareable numbers-only report page for this analysis (https://audiolab.tools/r/<id>). Present on every metered analysis response.

shortTermLufsMaxnumber
loudnessRangenumber

LRA (LU).

truePeakDbnumber required

True peak (dBTP).

peakDbnumber
rmsDbnumber
crestFactorDbnumber
stereoWidthnumber
stereoCorrelationnumber
stereoBalanceDbnumber

RMS left minus right, dB. Positive is left louder. 0 on mono.

stereoLayout'mono' | 'dual-mono' | 'one-sided' | 'stereo' | 'silent'

What kind of stereo file this is. dual-mono is two identical channels; one-sided is a dead channel.

bassCorrelationnumber nullable

Correlation below 120 Hz after a 4th-order low-pass. Null on mono or without energy there. Below 0 the low end cancels in mono.

momentaryLufsMaxnumber

Loudest 400 ms window (EBU Tech 3341 M), LUFS. Ungated.

plrDbnumber

Peak to loudness ratio: true peak minus integrated, LU.

psrDbnumber

Peak to short-term ratio: true peak minus the loudest 3 s window, LU.

monoCompatibleboolean
spectralCentroidHznumber
spectralRolloffHznumber
spectralFlatnessnumber
waveformnumber[]

Downsampled waveform peaks.

shortTermLufsnumber[]

Short-term loudness over time, at most 2000 points. Longer takes keep the PEAK per bucket, so a loud moment survives; seriesIntervalSec says how much time one point covers. Use /v1/mixlab/timeseries to choose the resolution yourself.

seriesIntervalSecnumber nullable

Seconds covered by one point of shortTermLufs.

fileNamestring

Example response

{
  "measureStatus": {
    "legend": "https://audiolab.tools/docs/start/read-a-response#the-five-statuses"
  }
}

Changes

No recorded changes to this operation across all 1 revision of this API.