SendboundSendbound

Error Handling

Error response format and a full list of Sendbound error codes.

All errors return a structured JSON body with a machine-readable code and a human-readable message.

{
  "error": {
    "code": "invalid_recipient",
    "message": "The recipient email address is not valid.",
    "details": {
      "field": "to",
      "value": "not-an-email"
    }
  }
}

The details field is present on validation errors and provides field-level context.

HTTP status codes

StatusMeaning
200Success
201Resource created
400Validation error — check the error.details field
401Missing or invalid API key
403API key does not have permission for this action
404Resource not found
409Conflict — resource already exists (e.g. duplicate email on upsert)
422Unprocessable — the request was well-formed but failed business logic
429Rate limited — back off and retry after Retry-After seconds
500Internal server error — contact support if this persists

Error codes

CodeHTTPDescription
unauthorized401API key is missing or invalid
forbidden403Key lacks permission for this resource
not_found404The requested resource does not exist
validation_error400One or more fields failed validation
invalid_recipient400The to address is not a valid email
domain_not_verified422Sending domain is not yet verified
domain_limit_reached422Free plan allows one sending domain
rate_limited429Rate limit exceeded; see Retry-After
contact_not_found404No contact with that ID exists
campaign_not_draft422Campaign cannot be modified after sending
duplicate_email409A contact with that email already exists
internal_error500Unexpected server error

Retries

Retry on 500 and 429 errors using exponential backoff. Do not retry 400, 401, 403, or 404 — these indicate a client-side problem that will not resolve on its own.