Async by default
Job-based analysis matches how audio processing actually behaves — queue, poll, or receive a webhook. No fake-sync wrappers.
Audio analysis API
Create an API key on this page, submit audio, get a job ID, and pull back BPM, key, loudness, energy, mood, and section data as structured JSON without building your own DSP stack.
No dashboard detour before your first request.
X-API-Key header with async jobs, not fake sync promisesllms.txt ship togetherSubmit
POST /v1/analyze/upload or POST /v1/analyze/url
Queue
Receive job_id with status: "processing"
Retrieve
Poll result endpoint or accept a webhook callback
{
"job_id": "8b7a5c17-b1a1-42fd-aab8-51d0c4ff3d2a",
"status": "completed",
"result": {
"bpm": 127.8,
"bpm_confidence": 0.94,
"key": "A",
"scale": "minor",
"key_notation": "Am",
"key_confidence": 0.88,
"energy": 0.86,
"danceability": 0.91,
"valence": 0.44,
"loudness_lufs": -8.1,
"mood_tags": ["energetic", "dark"],
"genre_suggestions": ["techno", "house"],
"duration_seconds": 247.3,
"time_signature": 4
}
} Why teams switch
Job-based analysis matches how audio processing actually behaves — queue, poll, or receive a webhook. No fake-sync wrappers.
One auth header, structured JSON responses, OpenAPI spec, and
llms.txt. Integrates into existing tooling without ceremony.
Submit audio, retrieve results. BPM, key, loudness, mood, genre, and section data without standing up a pipeline.
Request flow
The examples below use the headers, routes, and async lifecycle your backend actually exposes today.
curl -X POST https://api.beatlyze.dev/v1/analyze/upload \
-H "X-API-Key: bz_your_api_key" \
-F "[email protected]"
# -> { "job_id": "...", "status": "processing" }
curl https://api.beatlyze.dev/v1/analysis/JOB_ID \
-H "X-API-Key: bz_your_api_key" import requests
import time
with open("track.mp3", "rb") as handle:
job = requests.post(
"https://api.beatlyze.dev/v1/analyze/upload",
headers={"X-API-Key": "bz_your_api_key"},
files={"file": handle},
).json()
while True:
res = requests.get(
f"https://api.beatlyze.dev/v1/analysis/{job['job_id']}",
headers={"X-API-Key": "bz_your_api_key"},
).json()
if res["status"] == "completed":
break
time.sleep(1) import { readFile } from "node:fs/promises";
const form = new FormData();
const file = await readFile("track.mp3");
form.append("file", new Blob([file]), "track.mp3");
const job = await fetch(
"https://api.beatlyze.dev/v1/analyze/upload",
{
method: "POST",
headers: { "X-API-Key": "bz_your_api_key" },
body: form,
}
).then((r) => r.json()); Try the live API
This demo calls the live anonymous endpoint at POST /v1/demo/analyze/url, then polls the real
job until the result is ready. No signup. No dashboard. Public audio URL only.
Move from proof to integration
Enter an email. The form calls POST /v1/auth/register directly against the live API —
no separate account portal or project setup. Your key is shown once. Copy it and make your first request immediately.
If email verification is enabled, the inbox link activates protected routes.
Feature surface
| Signal | What it gives you | Example |
|---|---|---|
| BPM + confidence | Tempo with a per-result reliability score | 127.8 / 0.94 |
| Key + scale | Harmonic notation, readable by key and scale | Am |
| LUFS loudness | Integrated loudness for normalization-aware workflows | −8.1 LUFS |
| Energy + danceability | Normalized behavioral signals for ranking and UX | 0.86 / 0.91 |
| Valence + mood tags | Emotional descriptors for search and discovery | energetic, dark |
| Genre suggestions | Top candidates without hand-labeling | techno, house |
| Section data | Structural timing and per-section snapshots | 7 sections |
| Usage endpoint | Monthly quota and plan limits built in | /v1/usage |
Use cases
Built for teams who need audio features in product workflows, but do not want to maintain their own analysis pipeline.
Enrich tracks with tempo, key, loudness, and mood for search, filtering, and metadata pipelines. Works on batches via URL submission.
BPM sorting, harmonic prep, energy-based sequencing — using the same analysis data your backend would compute anyway.
Structured audio signals for ranking, clustering, and playlist generation. Replaces hand-labeling or proxy signals from metadata.
Plans
These plans match the current product surface: fixed monthly tiers with clear included usage.
Free
€0 / month
Starter
€19 / month
Pro
€49 / month
Start building
Read the docs, open the full reference, or create a key and start integrating right away.
Need help or custom volume planning? [email protected]
Use an existing API key to upgrade, or enter an email to create a paid account and continue straight to Stripe.
or
If you use email, Beatlyze will create your account, start checkout, and save the new API key in this browser when available.