Global limit
Every authenticated merchant gets a base of 1,000 requests per minute, shared across all/v1/* endpoints, enforced on a rolling 60-second window. The limit is per merchant (not per IP) — seats and servers behind a shared egress NAT all count against the same quota, but separate merchants never share quotas with each other.
Merchant rate-limit tiers
Merchants can be placed on a higher tier by Anton. The tier applies a multiplier to the base 1,000 rpm ceiling.
Read your current tier from
GET /v1/merchant — the response includes rate_limit_multiplier (1, 2, 5, 10, or 20) and the effective rate_limit_per_minute. Promotions take effect immediately on the next request; no rollout is required.
Endpoint-specific limits
Some endpoints are more expensive or more sensitive and carry a tighter ceiling:
Sensitive operations — webhook test sends and similar one-off verification flows — run under a lower per-merchant ceiling to prevent abuse. Normal integration traffic will not reach it.
Intelligence runs under a dedicated per-merchant limiter in addition to the global quota, because evaluations fan out to multiple scoring systems per call. The limit applies across all
/v1/intelligence/* endpoints. Sustained-volume screening integrations can request a raise the same way as the global ceiling.
Headers on every response
When you exceed a limit, Anton returns
429 Too Many Requests with an additional header:
Response body:
Handling 429
Treat429 as transient. Back off for at least the number of seconds in Retry-After before retrying. Use jittered exponential backoff when retrying many requests at once — retrying everything at the exact Retry-After moment creates a thundering herd that trips the limiter again.