# Error codes

> Every error returns a stable code, a human message and a link to the fix.

Source: https://helpdox.fekbd.com/docs/relay-api/errors/error-codes/

Every error returns a stable `code`, a human message and a link to the fix. Follow the steps below — it takes just a few minutes.

## Before you begin

- A Relay account and a test-mode API key
- `curl` or one of the official SDKs

## Steps

1. 1Read the HTTP status4xx means fix the request; 5xx means retry later.
2. 2Use the codeBranch on `error.code`, never on the message text.
3. 3Log the request IDInclude `Relay-Request-Id` when you contact support.

Tip

The full list lives in the table below.

## Common codes

| Code | HTTP | What to do |
| --- | --- | --- |
| `invalid_recipient` | 422 | Check the number is in E.164 format, like +15550100001. |
| `insufficient_scope` | 403 | Give the key the scope named in the message. |
| `rate_limited` | 429 | Wait for `Retry-After` seconds. |
| `provider_unavailable` | 503 | Retry with backoff; Relay already tried a second carrier. |

## Still stuck?

Include the request ID from the `Relay-Request-Id` response header — it lets us find your call in seconds.
