Docs/Get started/Rate limits & errors
Rate limits & errors
Varmir charges per minute of audio, not per request, so there's no QPS limit on REST calls. WebSocket streams are capped per plan. Every error response follows the same JSON envelope.
Quota & concurrency
REST calls only count against your credit balance — there's no per-second cap. WebSocket streams have a plan-based concurrency limit: 1 on the free trial, 5 on Pro, 50 on Business, unlimited on Enterprise.
Hitting the concurrency cap returns 429 rate_limited on new connections. Existing streams keep running.
Error envelope
Errors always look like this:
{ "error": "insufficient_credits", "message": "Your balance is empty." }The error code is stable and machine-readable. The message is human-friendly and may change.
Status codes
HTTPerrorDescription
400invalid_requestBody is malformed or missing required fields.
401invalid_api_keyMissing, revoked or malformed Bearer token.
402insufficient_creditsYour balance is empty. Top up in Billing.
403forbiddenAuthenticated, but the key cannot access this endpoint.
404not_foundResource doesn't exist.
413audio_too_largeUpload exceeds 100 MB. Stream large files via WebSocket.
429rate_limitedYou exceeded the concurrent stream cap. Retry with backoff.
500internalWe hit an unexpected error. The request did not consume credits.