# Error Codes (/docs/guides/errors/error-reference) 

# 🚦 Error Codes & Rate Limiting [#-error-codes--rate-limiting]

Hands In uses conventional HTTP status codes to indicate the type of error. This section lists common error codes, along with guidance on interpreting rate limit responses and retry strategies.

## 🔸 Client Errors (4xx) [#-client-errors-4xx]

These are issues with the request — you’ll need to correct the input or fix your integration logic.

| HTTP Status | Error Name            | Description                                            |
| ----------- | --------------------- | ------------------------------------------------------ |
| 400         | INVALID\_FIELD        | Malformed request or missing fields                    |
| 401         | UNAUTHORIZED          | Authentication failed — check API key/token            |
| 403         | FORBIDDEN             | Access denied — see `detail` for specific reason       |
| 404         | NOT\_FOUND            | Resource not found — check resource ID or endpoint     |
| 409         | CONFLICT              | Request could not be completed due to a state conflict |
| 422         | UNPROCESSABLE\_ENTITY | Validation failed — required or invalid fields         |
| 429         | TOO\_MANY\_REQUESTS   | Rate limit exceeded                                    |

## 🔺 Server Errors (5xx) [#-server-errors-5xx]

These indicate internal issues. They are typically temporary and safe to retry.

| HTTP Status | Error Name              | Description                                           |
| ----------- | ----------------------- | ----------------------------------------------------- |
| 500         | INTERNAL\_SERVER\_ERROR | Unexpected internal error                             |
| 502         | BAD\_GATEWAY            | Temporary unavailability between services             |
| 503         | SERVICE\_UNAVAILABLE    | API temporarily down — retry with exponential backoff |

## ⏱️ Rate Limiting [#️-rate-limiting]

Hands In enforces request rate limits to ensure platform stability.

* When exceeded, you'll receive a `429 Too Many Requests` status
* The `Retry-After` header (in seconds) indicates when to retry
* Always use **exponential backoff** when retrying (1s, 2s, 4s…)
* If you're consistently hitting limits, contact support to discuss limits for your account
