Errors

HTTP status codes, error shapes, and resilient client patterns.

Pipevideo returns conventional HTTP status codes with JSON error bodies.

Error shape

Failed requests return JSON:

{
  "message": "Human readable error description"
}

Rate-limited requests (429) may include additional data:

{
  "message": "Rate limit exceeded. Please try again later.",
  "data": {
    "retry_after": 42
  }
}

Status codes

CodeORPC codeWhenWhat to do
400BAD_REQUESTInvalid model, insufficient credits, malformed input, unsupported providerFix the request; retrying without changes will not succeed
401UNAUTHORIZEDMissing, invalid, expired, or inactive API keyCheck credentials; verify no whitespace in the key
404NOT_FOUNDGeneration not found (wrong id or different organization)Verify the generation id
429TOO_MANY_REQUESTSRate limit exceeded (100 req/min per key)Wait retry_after seconds; see Rate limits
500INTERNAL_SERVER_ERRORUnexpected server errorRetry with exponential backoff

Generation failures

When a generation's status is failed (via poll or webhook), check the error object or errorMessage:

CauseDescription
Insufficient creditsBalance is zero or charge failed
Provider failureVideo orchestration provider or render pipeline error
Model not supportedOrchestration model not available on selected provider
Invalid promptMissing or empty text content

Generation failures are distinct from HTTP errors — the POST may return 200 with status: "pending", and the failure appears on subsequent polls or via webhook.

Retry guidance

StatusRetry?
400No — fix the input
401No — fix credentials
404No — verify the resource id
429Yes — after retry_after seconds
500Yes — with exponential backoff and jitter

For generation polling, continue polling on pending or processing. Stop on completed or failed.

Logging

Log status codes and error messages — never log raw API keys. Use generation id values to correlate with the dashboard and support requests.