bad_request | 400 | Malformed request that isn’t covered by a more specific code. |
unauthenticated | 401 | Missing or invalid Authorization: Bearer sk_…. |
insufficient_credits | 402 | Your credit balance is at or below zero, so POST /v1/assets rejects the upload before it starts — top up first. An upload that starts with a positive balance but can’t cover the final per-minute charge instead lands the asset in pending_payment, which activates on your next top-up. |
forbidden | 403 | Authenticated, but not allowed for this resource. Rare — most ownership failures surface as not_found so an attacker can’t probe existence. |
not_found | 404 | Resource doesn’t exist, or doesn’t belong to you. |
conflict | 409 | A state-machine violation not covered by one of the more specific 409 codes below. |
asset_processing | 409 | POST /v1/cuts: the asset is still being prepared and isn’t cuttable yet. Transient — back off for the Retry-After seconds and retry. |
asset_payment_required | 409 | POST /v1/cuts: the asset is prepared but unpaid (pending_payment). Top up, then retry. |
asset_failed | 409 | POST /v1/cuts: the asset failed preparation and can’t be cut. Terminal — re-upload. |
asset_not_ready | 409 | POST /v1/renders: a video output needs the asset ready (an audio output instead gates on cuttable, like a cut). |
modifier_not_ready | 409 | POST /v1/renders: the cut_id names a cut of this asset that isn’t completed yet. |
unsupported_format | 409 | A cut/subtitle export format that isn’t available for this entity. |
precondition_failed | 412 | A required header / preflight condition wasn’t met (e.g. Tus-Resumable). |
payload_too_large | 413 | Body / Upload-Length exceeds the documented cap. |
unsupported_media_type | 415 | Wrong Content-Type on the request body. |
validation_error | 422 | The request was well-formed but one or more fields failed validation. fields[] lists each one. |
internal_error | 500 | Something failed server-side. Include the X-Request-Id header in a support ticket so we can trace the request. |
upstream_error | 502 | A downstream service rejected our integration. Retry won’t help without changing the request. |
upstream_unavailable | 503 | A downstream service is transiently unreachable. Retry after the Retry-After header’s seconds. |