Skip to content

Rate limits

The API enforces two layers of throttling:

A sliding window per API key. Anonymous requests fall back to a per-IP bucket.

TierRequests / minute
free30
pro600
enterprise6 000
anonymous30

Exceeding triggers 429 RATE_LIMITED:

{
"code": "RATE_LIMITED",
"message": "Too many requests. Slow down or upgrade your plan."
}

The Retry-After header advertises the suggested wait. Backoff and retry.

Counted per item, including each item in a batch. Resets at the first day of each calendar month UTC.

TierOn-chain / monthOff-chain / month
free20unlimited
pro2 000unlimited
enterpriseunlimitedunlimited

Exceeding returns 429 QUOTA_EXCEEDED with the reset timestamp. See Authentication.

If you’re sending hundreds of attestations per minute, switch to mode: "offchain". The signed envelope is unmetered at every tier, costs zero gas, and can be brought on-chain selectively later. See SDK → Off-chain.

  • Failed authentications count against the per-IP anonymous bucket: a wrong-key flood is rate-limited just like an anonymous one.
  • Monthly quotas count attempted on-chain operations regardless of whether the chain accepted them. A batch that reverts costs you the items it was going to attest. Validate carefully before batching.