---
title: "AudioLab API: audio analysis as building blocks"
description: "Loudness (EBU R128 / BS.1770-4), voice quality, and signal analysis behind one key. On-device playground (no signup, no upload) + hosted API + MCP server + Vercel AI SDK provider."
source: https://audiolab.tools/api
status: live
---

# AudioLab API

Audio analysis as an API. Loudness, voice quality, and signal analysis behind
**one key**, with a playground that runs the engine **in the browser** so the
audio never has to leave the user's device.

**Status:** the hosted API is **live with self-serve keys** at audiolab.tools/v1/*
behind a Bearer key (free tier + paid tiers at audiolab.tools/connect, Stripe billing live).
The in-browser playground is live and free today. Email partners@audiolab.tools for enterprise.

## The four surfaces (pick the right one for the job)

| Surface | When | Source |
|---|---|---|
| In-browser playground | Try it, see the response shape, no signup, no upload | <https://audiolab.tools/api#playground> |
| Hosted REST API | Server-side, batch, pipeline use | `POST https://audiolab.tools/v1/...` |
| Vercel AI SDK provider | Building with `ai` / OpenAI / Anthropic agent tools | `npm i @audiolabtools/ai-sdk` |
| MCP server | Claude Desktop / Claude Code / any MCP client; **supports local file paths** | `{"command": "npx", "args": ["-y", "@audiolabtools/mcp-server"]}` |

## The three core endpoints

```
POST /v1/mixlab/analyze    → loudness + dynamics + tonal balance
POST /v1/voicelab/qa       → speech-quality QA
POST /v1/signallab   → content tagging + signal metadata
POST /v1/analyze/profile   → one named question, only the lenses it needs
```

Each takes a multipart file or a JSON `{url}` body. Returns structured JSON.
Full response schemas at <https://audiolab.tools/api#schema> (mirrors the
OpenAPI 3.1 spec at <https://audiolab.tools/openapi.yaml> 1:1, single source).

## Loudness benchmark (every case published)

5/5 must-pass compliance checks pass for the canonical reference signals (ITU-R BS.1770-4 + EBU Tech
3341/3342). Within ±0.1 LU on integrated loudness, BS.1770 tolerance on
true-peak. Every case, expected and measured, is published on this page.

Per-task accuracy (scene, pitch, beat) is **not claimed** without a published
benchmark. Per-task benchmarks are a Could-tier item.

## Quickstart

```sh
curl https://audiolab.tools/v1/mixlab/analyze \
  -H "Authorization: Bearer $AUDIOLAB_KEY" \
  -H "Content-Type: application/json" \
  -d '{"url":"https://example.com/track.wav"}'
```

JavaScript via the AI SDK:

```ts
import { generateText } from 'ai';
import { audiolab } from '@audiolabtools/ai-sdk';
import { anthropic } from '@ai-sdk/anthropic';

await generateText({
  model: anthropic('claude-opus-4-7'),
  tools: audiolab({ apiKey: process.env.AUDIOLAB_API_KEY }).tools,
  prompt: 'Analyze the loudness of https://example.com/song.wav',
});
```

## Honest scope

- AudioLab **measures**. It does **not normalize** or write audio: no file
  comes out, only JSON. To actually change loudness, use `ffmpeg -af
  loudnorm=I=-14:TP=-1:LRA=11` informed by AudioLab's measurement.
- The engine is **pure TypeScript**. No WASM, no native dependencies in the
  analysis layer. ffmpeg is only used for the *decode* step server-side.
- **Voice/signal labels are heuristic.** Useful for triage and gating, not
  certified for legal/medical/broadcast-compliance use.
- **Privacy difference between surfaces:**
  - Playground: audio genuinely never leaves the device.
  - MCP server with `path`: the file is uploaded to the API (deleted right after analysis) rather than hosted publicly, so it does cross the network.
  - Hosted API / MCP with `url`: the server fetches the audio, so it crosses
    the network. Worth flagging when privacy is the user's concern.
- **Streaming / realtime:** not supported. One-shot, file-based.
- **Native batch endpoint:** `POST /v1/batch`, up to 20 items per call, any analysis route (`{ "urls": [...], "objectPaths": [...], "endpoint": "mixlab/analyze" }`); each item is metered as one call. Local files: mint uploads via `/api/upload-url` (API-key auth) and pass the objectPaths.

## Authoritative references

- Methodology (math behind every measurement): <https://audiolab.tools/methodology>
- OpenAPI spec (request/response shapes): <https://audiolab.tools/openapi.yaml>
- Loudness benchmark (EBU 3341/3342 compliance): <https://audiolab.tools/api#benchmark>
- AI-native overview: <https://audiolab.tools/llms.txt>
- Pinnable agent prompt: <https://audiolab.tools/CLAUDE.md>
- Get a self-serve key (free tier, no purchase): <https://audiolab.tools/account>

## Not to be confused with

AudioLab.tools is a browser-based + hosted audio-analysis platform at
<https://audiolab.tools>. **Distinct from** any mobile audio-recording app
called "AudioLab", and from the Audiolab hifi-equipment brand at audiolab.co.uk.

## Built by

Nathan Renting · Eindhoven, NL · <https://nathanrenting.dev>. Solo-built,
EU-hosted, self-funded, no investors.
