Why did my request fail?
Last updated: June 12, 2026
If an API request fails, the response uses a standard HTTP status code, and asynchronous generation results carry a status field. Here is what each one means and what to do.
HTTP status codes
Code | Meaning | What to do |
400 Bad Request | Malformed request or invalid parameters | Check your request body and parameter formats. |
402 Payment Required | Insufficient credits | Add credits to your account, then retry. |
403 Forbidden | API key lacks access to the resource | Check the key is valid and for the right environment. |
422 Unprocessable Entity | Invalid request body or parameters | Correct the flagged fields and resubmit. |
429 Too Many Requests | You exceeded your concurrency limit | Back off and retry once a previous task finishes. |
500 Internal Server Error | Unexpected error on our side | Retry with exponential backoff; if it persists, contact support. |
503 Service Unavailable | Temporary unavailability or high load | Wait a few moments and retry. |
Generation result statuses
When you poll a request with its polling_url, the status field is one of:
Status | Meaning |
Ready | Generation complete; the result is available to download. |
Pending | Still processing; keep polling. |
Request Moderated | Input flagged before processing. Not charged. |
Content Moderated | Output flagged after processing. Not charged. |
Task not found | The task ID does not exist or has expired. |
Error | Processing failed; check the error details. |
Handling transient errors (500 / 503 / 429)
These are usually temporary. Retry with exponential backoff (for example wait 1s, then 2s, then 4s) rather than retrying immediately in a tight loop. A short retry is almost always enough.
Still failing?
Check current service status at status.bfl.ml, and if a 500 persists, reach out to support@blackforestlabs.ai with your request ID so we can investigate.