Skip to main content

Errors

A successful response contains only the result. An error contains one error object with a type and a message. There is no other envelope, and the HTTP status code tells you what happened:

{
"error": {
"type": "AuthorizationError",
"message": "Invalid or revoked API key."
}
}

Branch on the status code and error.type, never on message. Messages are written for developers and may change; show your own text to end users.

Status codes for POST /v1/check​

StatustypeWhenCountedWhat to do
200The address was checked. The body is the resultYesSee Check an email
400ValidationErrorThe value is not an email address (Invalid email "nope": expected local@domain)YesAsk the user for a valid email address
400ValidationErrorThe body is not valid JSON (Request body must be valid JSON.)NoFix your request
401AuthorizationErrorAPI key missing, malformed, unknown or revokedNoCheck your key: see Authentication
404NotFoundErrorUnknown pathNoCheck the URL (/v1/check)
413ValidationErrorRequest body too large (Request body is too large.)NoSend only { "email": "..." }
422ValidationErrorNo JSON body, or email missing, not a string, empty or over 254 characters (email is required)NoFix your request
429QuotaExceededErrorMonthly quota used up. Retry-After = seconds until the 1st, 00:00 UTCNoDon't retry this month. Upgrade or wait for the reset
429RateLimitErrorToo many requests per second. Retry-After: 1NoSlow down: see Rate limits
500InternalServerErrorUnexpected error on our sideNoFail open
503InternalServerErrorThe check is temporarily unavailable, or the request took longer than 30 secondsNoFail open

In a signup flow, every row except 200 and 400 (not an email address) means: create the account as pending and recheck it later. See Never block a signup.

Error types​

typeMeaning
ValidationErrorThe request or the email value is invalid
AuthorizationErrorThe API key is missing, invalid or revoked
NotFoundErrorThe resource does not exist
QuotaExceededErrorThe monthly quota is used up
RateLimitErrorToo many requests in a short time
InternalServerErrorSomething failed on our side

Every response, including errors, has an x-request-id header. Include it when you report a problem.