# Errors and outcomes

## HTTP errors

| Status | Meaning | What to do |
| --- | --- | --- |
| 400 | The request is missing something or is invalid | Read the `error` message. |
| 401 | No key, or the key was revoked | Send `Authorization: Bearer <key>`. |
| 402 | Not enough credits for the request's worst case, or a [spending limit](https://skryp.dev/docs/credits#spending-limits) would be passed (the `error` starts `Spending cap reached:`) | Add credits, raise the limit in the dashboard, or lower `max_credits`. |
| 403 | The key or role cannot do this (keys cannot manage keys, limits or billing), or the account's email is not verified yet | Use the dashboard, or verify the email. |
| 404 | Not found in your workspace | Resources from other workspaces are invisible. |
| 429 | Too many requests at once or per minute | Retry after a short wait. |

## Page outcomes

| `status` | Meaning | Charged |
| --- | --- | --- |
| `ok` | Usable content came back | Yes |
| `not_found` | The site says the page does not exist (404/410) | At most 1 credit |
| `blocked` | Every allowed route was blocked | No |
| `failed` | The site or the network failed | No |
| `unavailable` | No exit could be proven in the strict country | No |
| `budget_exhausted` | The next route costs more than `max_credits` | No |
| `invalid` | The URL is not allowed (for example a private address) | No |

Source: https://skryp.dev/docs/errors
