Skip to main content
Errors are returned with a standard HTTP status and a JSON body:

Status codes

Plan-limit errors (402)

These carry upgrade: true so you can prompt the user to upgrade:

Recommendations

  • Authenticate every request and handle 401 by surfacing a key problem, not retrying.
  • Treat 402 as actionable — link the user to billing rather than failing silently.
  • Use idempotency (client_id) on sends so retries after a network blip never duplicate mail.
  • Verify webhook signatures and return 2xx quickly; failures are retried with backoff.