Credits & Rate Limits

TuneLab bills by credits, not request count. Cache hits are free. You only pay when we actually do DSP work. Every response tells you exactly what you were charged via the _meta.credits_used field.

Cache hits are always free.
If we have the track pre-computed (9.3M+ tracks), you pay zero credits. Only misses trigger compute.

Credit weights

OperationCreditsNotes
Cache lookup (any endpoint)0Always free
GET /v1/resolve/{id}0Identity only, always free
GET /v1/key-bpm (miss)2On-demand compute
GET /v1/analyze (miss)10Full features including mood
POST /v1/bpm (upload)2Always charged
POST /v1/key (upload)2Always charged
POST /v1/analyze/upload10Async, returns 202
POST /v1/structure10Song structure segmentation
POST /v1/separate6 × minutes2-stem (vocal/instrumental)
POST /v1/separate?stems=410 × minutes4-stem (drums/bass/vocal/other)
POST /v1/transcribe10 × minutesAudio-to-MIDI
POST /v1/master5 × minutesAuto-mastering

Plan tiers

PlanPriceCredits / monthConcurrency
Free$0100 (one-time)1 req/s
Starter$293,0003
Pro$9912,00010
Scale$49975,00025
Enterprise$2,500+CustomCustom

Rate limit headers

Every response includes:

When credits run out

The API returns 402 Payment Required and the response body includes error: "insufficient_credits". Top up via credit packs in the dashboard or wait for your monthly refresh.

!
No surprise billing.
We never auto-charge for overage. If you hit 0 credits, you get 402s until you top up. Your card is never charged beyond your plan.