Every API error is JSON with an error message that says what went wrong. Read the message first. The fixes for the ones people hit most often are below. The full list of status codes is in the API reference.

401 "Unauthorized"

The key is missing, malformed or revoked. Send it as Authorization: Bearer <key> (with the word Bearer and one space), and check it hasn't been revoked under Settings → API keys. Keys are shown only once, when they're created. If you've lost one, create a new key.

403 "Forbidden: … permission required"

The key doesn't have the permission the message names. Permissions are chosen when a key is created and can't be changed, so create a new key that has it.

403 for a plan or sending reason

The message explains it: for example, you've reached your plan's contact limit, or sending is paused for the workspace. A pause is explained on your dashboard. See My campaign hasn't sent.

404 "… not found"

The ID doesn't belong to this key's workspace. It may come from another workspace, or have been deleted. A key never sees another workspace's data.

409 Conflict

Something is in the way: a name that's already taken, a resource in the wrong state, or an address on your suppression list. Change the name, or check the item's state in the app.

422 "Cannot send to contact with status: …" or "No deliverable recipient…"

The contact isn't subscribed (for example they unsubscribed, bounced or complained), or every recipient is suppressed or isn't a real mailbox. Those people can't be emailed. See Suppressions.

429 "Hourly send limit reached…" or "…used its API writes for the hour"

You've used this hour's allowance for sending or for changes. Wait for the time in the Retry-After header and try again. Reads (GET) aren't affected. If you regularly hit it, spread the work out or upgrade on Billing & Plans.

503

The delivery provider or another service failed for a moment. Try again shortly. Nothing was sent to the recipients listed under failed.