Skip to main content
Every failure returns a JSON body, and every endpoint answers with the same envelope, so the codes below apply across the API rather than per endpoint. The reference pages show the success response; the failures live here. Branch on error_code where it is present, and always keep a default case that surfaces message and details.suggestion, so an unfamiliar code degrades into a readable failure instead of a crash.

Status codes

Error shapes

Most errors carry a human-readable message:
Standard error
PSD and render failures add a machine-readable error_code and a details object with a suggestion:
Structured error

Upload error codes

POST /api/v1/psd/upload returns these on error_code. A successful upload can also carry advisory codes under warnings, and they never fail it. Hidden layers covers PSD_HIDDEN_SMART_OBJECTS, and PSD compatibility covers PSD_NESTED_CONTENTS_UNAVAILABLE. PSD_GRADIENT_MAP_UNSUPPORTED counts the Gradient Map layers that renders do not apply, so the layers below them render without the gradient: a map with a Noise gradient, a colour stop outside RGB, or a method other than Perceptual, Linear, Classic or Smooth. In Photoshop, switch it to a Solid gradient with RGB colour stops and one of those methods, or merge it into the layer below, then upload the PSD again.

Render error codes

Render, text layer, font, artwork and photo mockup failures use the same error_code field. Take the HTTP status from the response rather than from this table. These are the codes integrations hit most often, not an exhaustive registry.

Rate limits and concurrency limits

Two ceilings answer 429: a request rate, and a cap on how many long operations run at once. Both report their state in response headers, and error.type says which one you hit.

Usage limits

The numbers, the headers, and both 429 bodies.

Retry strategy

Retry 429, 500, 502, 503, 504 and network errors. Do not retry 400, 401, 402, 403, 404 or 422: fix the request or the billing state first. Credits are charged only on successful requests.
Retry with backoff

Webhooks

Let long jobs call you back instead of polling them.

Plans and limits

Every active plan’s concurrency and template ceilings.