Skip to main content
Failed requests return a 4xx or 5xx status and a JSON body:
Every response also carries an X-Request-Id header. Include it when you contact support.

Types

Codes

missing_api_key

No Authorization: Bearer ps_… header. See Authentication.

invalid_api_key

The key doesn’t exist or was revoked. Create a new one in the dashboard.

insufficient_credits

The live send needs more credits than your team has. Nothing was sent. Top up and retry.

missing_scope

The key doesn’t have the scope this endpoint needs, for example emails:send. See Scopes.

team_paused

Sending is paused for your team, usually after high bounce or complaint rates (see Sending reputation). Contact support.

resource_missing

The ID doesn’t match anything your team owns.

idempotency_key_reused

You reused an Idempotency-Key with a different body. Use a new key for a new request. See Idempotency.

idempotency_in_progress

A request with the same Idempotency-Key is still running. Wait a moment and retry.

idempotency_key_too_long

Idempotency-Key is limited to 255 characters.

invalid_parameter

A field is missing or malformed. param names it and message says what’s wrong.

missing_body

The email has neither html nor text. Send at least one.

too_many_recipients

More than 50 recipients across to, cc and bcc. Split the send.

domain_not_verified

With a live key, the from address must belong to a verified domain.

all_recipients_suppressed

Every recipient is on your suppression list after a hard bounce or a complaint. Nothing was sent.

rate_limited

More than 10 requests per second on this key. Wait Retry-After seconds.

internal_error

Something broke on our side. Retry with backoff, using an idempotency key. If it persists, contact support with the X-Request-Id.