Errors

Error shape

Every error response is JSON with a stable code so your client can switch on it.

Shape

{ "error": "pro_required", "message": "This feature requires quik.md Pro" }

Always inspect the error field, not the HTTP status alone. Status codes are stable but the human-readable message may change between releases.

Catalogue

StatusCodeMeaning
400bad_requestBody or query failed validation. The message contains the zod issue.
401unauthorizedMissing or invalid Bearer token / session.
402pro_requiredThe endpoint or feature requires a Pro plan (organize:true, voice transcribe, webhooks).
403forbiddenAuthenticated, but the resource isn't yours.
404not_foundResource doesn't exist or has been archived.
413audio_too_largeAudio upload exceeds 10 MB. Split or compress.
429rate_limitedPer-user request rate hit. Response includes retry_after (seconds) + Retry-After header. Free: 60/min, 1000/day. Pro: 300/min, 10000/day.
429ai_rate_limitedPer-user daily AI cap hit. Retry after midnight UTC.
429trial_quota_exceededTrial daily entry cap hit. Wait until UTC midnight or upgrade.