> ## Documentation Index
> Fetch the complete documentation index at: https://docs.omnifence.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Errors

> Understand API error codes and response format

When a request fails, the API returns a JSON error object with a machine-readable code, a human-readable message, and the HTTP status code.

## Error format

```json theme={null}
{
  "error": "ERROR_CODE",
  "message": "A description of what went wrong",
  "statusCode": 400
}
```

## Error codes

| Code                  | Status | Description                                                                                 |
| --------------------- | ------ | ------------------------------------------------------------------------------------------- |
| `INVALID_REQUEST`     | 400    | The request is missing required fields or contains invalid values.                          |
| `UNAUTHORIZED`        | 401    | The API key is missing, invalid, or inactive.                                               |
| `PAYMENT_REQUIRED`    | 402    | Your account credit balance is at or below zero. Top up to resume submitting jobs.          |
| `ACCOUNT_TERMINATED`  | 403    | Your account has been terminated. Contact support.                                          |
| `JOB_NOT_FOUND`       | 404    | The job ID does not exist or belongs to a different account.                                |
| `RATE_LIMITED`        | 429    | You have exceeded your per-client rate limit. See [rate limiting](/platform/rate-limiting). |
| `INTERNAL_ERROR`      | 500    | An unexpected server error occurred. Retry after a short delay.                             |
| `SERVICE_UNAVAILABLE` | 503    | A downstream dependency (database, GPU provider) is temporarily unavailable.                |

## Handling errors

* **400**: Check your request body, query parameters, or file uploads against the [API reference](/api-reference/introduction).
* **401**: Verify your API key is correct and active.
* **402**: Your credit balance has hit zero or gone negative. Check your balance via `GET /billing/balance` and contact support to top up.
* **403**: Your account has been permanently terminated. This is not recoverable via the API.
* **404**: Confirm the job ID is correct and was created under your account.
* **429**: Back off and retry. Use exponential backoff with jitter.
* **500/503**: Retry after a short delay. If the error persists, contact [support@omnifence.ai](mailto:support@omnifence.ai).
