Docs/API reference/Errors & rate limits

Errors & rate limits

Every error is a JSON payload with a stable shape, and rate limits are enforced per API key and per IP.

v1 · beta

Error shape

json
{
  "error": "Invalid request",
  "details": { /* validation issues, when applicable */ }
}

Status codes

StatusMeaningRetry?
400Validation failed — the details field lists the offending inputsno — fix the request
401Missing, malformed, or revoked API keyno
404Resource not found in this workspace (template version, contact)no
422Recipient suppressed, or workspace quota exhaustedno
429Rate limitedyes — after backoff
5xxTransient server erroryes — with backoff

Rate limits

  • 100 requests / minute per API key
  • 1,000 requests / hour per IP address

Exceeding either returns 429 with standard draft-6 rate limit headers (RateLimit-Limit, RateLimit-Remaining, RateLimit-Reset) so clients can back off precisely.

The SDK backs off for you.

@ewyn/client retries 429 and 5xx automatically with exponential backoff, and idempotencyKey guarantees retries never double-send.

Timeouts

The SDK aborts requests after 30 seconds by default and surfaces them as an EwynApiError with status 408 and code TIMEOUT. Timeouts are not retried automatically — pair sends with an idempotency key and retry on your side if delivery is critical.

Was this page helpful?