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

# Errors and status codes

> Reference of HTTP status codes and business-logic error codes returned by ReviewFlow, including rate-limit and plan-gated responses.

## HTTP status codes

| Status        | Meaning                                                       |
| ------------- | ------------------------------------------------------------- |
| `200` / `201` | Success. Body contains `"success": true` and a `data` field.  |
| `400`         | Bad request / validation failure.                             |
| `401`         | Missing or invalid auth credentials.                          |
| `403`         | Feature not available on your plan → `PLAN_UPGRADE_REQUIRED`. |
| `404`         | Resource not found.                                           |
| `429`         | Rate limited. Retry after the `Retry-After` header value.     |
| `500`         | Unexpected server error. Contact support with the request ID. |

## Error response shape

```json theme={null}
{
  "success": false,
  "error": {
    "code":    "VALIDATION_ERROR",
    "message": "Rating must be between 1 and 5"
  }
}
```

## Business-logic error codes

| Code                    | When thrown                                                                            |
| ----------------------- | -------------------------------------------------------------------------------------- |
| `PLAN_UPGRADE_REQUIRED` | Feature requires Growth or Enterprise plan.                                            |
| `TOO_SOON`              | Review younger than merchant's `minAgeDays` policy.                                    |
| `MAX_UPDATES_REACHED`   | Review hit the `maxUpdatesPerReview` limit.                                            |
| `ALREADY_PENDING`       | A review update request is already in flight.                                          |
| `FILTERS_DISABLED`      | Custom attribute filters are unavailable because the attribute state is `invalidated`. |
| `INVALID_SEQUENCE`      | `featuredSequence` is out of range (must be 1–999).                                    |
