Rate limits
Requests are limited to 1000 per minute per API key (sliding window). Every response carries the current state:
When exceeded you get
429:
Retry-After seconds (or until X-RateLimit-Reset) and retry.
Rate-limited requests are rejected before any work happens, so they are
always safe to resend.
Batch endpoints
The/batch endpoints share your key but use a lower limit of 20 requests
per minute. A single batch performs up to 1000 operations, so the
per-operation ceiling stays comparable. A batch body is capped at
1000 items (400 over that).
Error shape
Every error response is JSON with anerror object carrying a stable,
machine-readable code (snake_case) and a human message:
code and message:
issues: per-field breakdown on validation failures (code: "validation_failed").suggestions: “did you mean” candidates on unknown-type404s:
unauthorized) and rate limits (rate_limited).
Status codes
Batch and participant endpoints report per-item errors inside a
2xx
response body (e.g. contact_suppressed when someone on your Do Not
Contact list is skipped). The request succeeds while individual items
fail. Always check the per-item errors array.Server errors return a generic message by design: they never echo stack
traces or payload contents. Every response includes an
X-Request-Id
header; include it when contacting support about a failed request.Related
Authentication
How API keys and the
401 responses work.Quickstart
See the request and response shapes in action.