Skip to Content

Errors

All errors share one shape:

{ "error": { "code": "some_error_code", "message": "Human-readable explanation" } }

Error codes

HTTP statusCodeMeaning
400invalid_jsonThe request body could not be parsed as JSON.
401unauthorizedMissing, malformed, invalid, or revoked API key.
403domain_not_foundThe from domain is not registered on your account.
403domain_not_verifiedThe from domain is registered but not verified.
404not_foundThe resource (or route) does not exist.
422validation_errorA request field failed validation. The message names the field, e.g. subject: String must contain at least 1 character(s). For batches it includes the index: emails.42.subject: ....
500internal_errorSomething went wrong on Retransmit’s side. Safe to retry.

Handling errors

  • Treat any non-2xx response as a failure and read error.code — the codes are stable; the messages are for humans and may change.
  • 500 responses are retryable.
  • 403 domain errors are configuration problems: fix them in the dashboard rather than retrying.

Send failures are asynchronous

Sending is queued, so a provider rejection never surfaces as an HTTP error on submit. Retransmit retries transient provider failures automatically with exponential backoff; an email that exhausts its retries is dead-lettered and marked failed with the provider’s message in error. Detect failures via Get Email / Get Batch, or subscribe to the email.failed webhook.

Last updated on