Beatlyze Audio analysis API

Docs

Quickstart the live Beatlyze API.

These notes are tuned for the current production surface at https://api.beatlyze.dev. Use them to move from proof to integration without guessing the flow.

Quickstart

1. Create an API key. 2. Submit audio. 3. Poll the job.

curl -X POST https://api.beatlyze.dev/v1/auth/register \
  -H "Content-Type: application/json" \
  --data '{"email":"[email protected]"}'

curl -X POST https://api.beatlyze.dev/v1/analyze/upload \
  -H "X-API-Key: bz_your_api_key" \
  -F "[email protected]"

curl https://api.beatlyze.dev/v1/analysis/JOB_ID \
  -H "X-API-Key: bz_your_api_key"
Async-first contract

Uploads and URL submissions return a job_id first. Result retrieval is a separate step by design.

Demo

Use the anonymous URL demo before signup.

curl -X POST https://api.beatlyze.dev/v1/demo/analyze/url \
  -H "Content-Type: application/json" \
  --data '{"url":"https://samplelib.com/lib/preview/mp3/sample-15s.mp3"}'

The response includes a signed demo poll URL. No API key is required, but the result is token-gated and rate-limited.

Auth

Email verification is activation, not account ceremony.

Registration returns the API key once. If verification is enabled, the key exists immediately but protected routes stay blocked until the inbox link is completed on the verification page.

Create key

POST /v1/auth/register with { "email": "..." }

Verify email

POST /v1/auth/verify-email or use the hosted verification page.

Analysis

The main result shape stays simple.

{
  "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,
    "sections": []
  }
}

Billing

Usage and tier state are both API-readable.

Usage

GET /v1/usage returns current month, limit, count, and remaining quota.

Billing status

GET /v1/billing/status returns tier, meter status, portal availability, and email verification state.

Full result

GET /v1/analysis/{job_id}/full returns the full payload including section data.

Webhook delivery log

GET /v1/analysis/{job_id}/webhooks returns delivery attempts, status codes, and errors for a webhook-enabled job.

Assets

Machine-readable references