Create key
POST /v1/auth/register with { "email": "..." }
Docs
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
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"
Demo
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
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.
POST /v1/auth/register with { "email": "..." }
POST /v1/auth/verify-email or use the hosted verification page.
Analysis
{
"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
GET /v1/usage returns current month, limit, count, and remaining quota.
GET /v1/billing/status returns tier, meter status, portal availability, and email verification state.
GET /v1/analysis/{job_id}/full returns the full payload including section data.
GET /v1/analysis/{job_id}/webhooks returns delivery attempts, status codes, and errors for a webhook-enabled job.
Assets