Skip to content
Splashify Pro
Email docsEmail

Errors

Every error from the Email API has a stable error code + a human-readable message. Build retry / error-handling logic against the code, not the message.

Response shape

json
{
  "success": false,
  "error": "INSUFFICIENT_BALANCE",
  "message": "Wallet balance ₹0.00. Recharge to continue sending."
}

success: false is always present. error is the stable code. message is for display + may change for clarity over time.

400 Bad Request

401 Unauthorized

402 Payment Required

403 Forbidden

404 Not Found

409 Conflict

429 Too Many Requests

500 Internal Server Error

502 Bad Gateway

503 Service Unavailable

SMTP errors (in webhook payloads)

When a Bounce event fires, the bounce.bouncedRecipients[].diagnosticCode field carries the SMTP diagnostic from the recipient's MX. Common ones:

Retry strategy

Rule of thumb:

  • 400-class errors: don't retry. Fix the request.
  • 402: don't retry. Recharge first.
  • 403 + 404: don't retry. Fix configuration first.
  • 429: retry with exponential backoff (start 1s, double up to 60s).
  • 500 / 502 / 503: retry up to 3 times with exponential backoff.

Idempotency: /send is NOT idempotent on retry — duplicate calls with the same body will produce duplicate email sends. Implement your own dedup against your business identifier (charge_id, etc.) before calling /send.

When to contact support

  • 500-class errors persist > 5 minutes
  • 402 even though wallet balance shows positive
  • 403 SENDING_PAUSED with no clear cause in /reputation

Email [email protected] or open a ticket in Splashify Pro Email.