MISSING_API_KEY | 401 | No x-api-key header. | No |
INVALID_API_KEY | 401 | Key wrong, revoked or account inactive. | No |
FORBIDDEN | 403 | The resource belongs to another account. | No |
VALIDATION_FAILED | 400 | Invalid body. See details. | No |
EXTERNAL_ID_REQUIRED | 400 | POST /products without externalId. | No |
PRODUCT_IMAGES_REQUIRED | 400 | New or one-shot product without an image. | No |
CUSTOMER_IMAGE_REQUIRED | 400 | Try-on without person. | No |
FILE_REQUIRED | 400 | Upload without file. | No |
MULTIPART_FILE_NOT_FOUND | 400 | A fileKey has no matching file field. | No |
INVALID_IMAGE_INPUT | 400 | An image has neither url nor fileKey. | No |
INVALID_IMAGE | 400 | File is not a valid image. | No |
UNSUPPORTED_IMAGE_TYPE | 400 | Not JPEG, PNG, WebP or HEIC. | No |
CUSTOMER_IMAGE_FETCH_FAILED | 400 | person URL could not be downloaded. | Once, then fix the URL |
PRODUCT_IMAGE_FETCH_FAILED | async | A product image URL could not be downloaded. | Once, then fix the URL |
MISSING_REQUIRED_CLASSIFICATION | 422 or async | The product type needs a specific image (e.g. worn on a model, details.key says which). | After adding the image |
FILE_TOO_LARGE | 413 | An image is over 10 MB. | After resizing |
INSUFFICIENT_CREDITS | 402 | Balance is 0. | After top-up |
QUOTA_EXCEEDED | 402 | Account quota reached, usually temporary. | Yes, with backoff |
RATE_LIMITED | 429 | Too many requests. | Yes, honor Retry-After |
PRODUCT_NOT_FOUND | 404 | Product expired or never created. | Resend the product inline |
GENERATION_NOT_FOUND | 404 | Wrong generation ID. | No |
ACCOUNT_NOT_FOUND | 404 | Account lookup failed (rare). | No |
ROUTE_NOT_FOUND | 404 | Unknown path. Body may not follow the error shape. | No |
RESERVED_EXTERNAL_ID | 409 | externalId starts with _anon_. | No |
INTERNAL_ERROR | 500 | Unexpected server error. | Yes, up to 3 times |
GENERATION_FAILED | async | The generation failed. | Yes, up to 3 times |
GENERATION_TIMEOUT | async | The generation didn’t finish in time. | Yes |