Rate Limits & Usage
Usage is metered per organization on a monthly calendar window (UTC). Two independent controls apply: monthly quotas and short-term burst limits.
Monthly quotas
Quotas are measured in records — one record is one item processed by any endpoint. Each plan includes a monthly record allowance:
Free— 1,000 records / monthDeveloper— 10,000 records / monthPro— 50,000 records / monthGrowth— 250,000 records / monthScale— 1,000,000 records / monthEnterprise— custom allowance
A request that processes a batch of 100 items consumes 100 records. Every successful response reports your position with X-Zapinner-Records-Used, X-Zapinner-Records-Limit, and X-Zapinner-Records-Remaining headers.
When you exceed a limit
Requests that would exceed a monthly quota return 429 and are not metered:
HTTP/1.1 429 Too Many Requests
{
"error": {
"code": "usage_limit_exceeded",
"message": "This request would exceed your monthly record allowance.",
"request_id": "req_xxx",
"details": {
"code": "MONTHLY_RECORD_LIMIT_REACHED",
"records_used": 50000,
"records_requested": 100,
"records_limit": 50000,
"records_remaining": 0,
"overage_enabled": false,
"upgrade_required": true,
"recommended_plan": "growth"
}
}
}Pay-as-you-go overage
On paid plans you can enable pay-as-you-go from your dashboard billing page. When enabled, requests that exceed your monthly record allowance are not blocked — the extra records are billed as metered overage at your plan's per-record rate. Responses past the allowance carry an X-Zapinner-Overage-Records header with the running overage total for the period.
You can set an optional monthly spending cap. Once overage charges reach the cap, requests are blocked again and return the same usage_limit_exceeded error, this time with an OVERAGE_SPENDING_CAP_REACHED detail code. With pay-as-you-go off (the default), exceeding the allowance always returns 429.
Burst limits
A per-organization burst limit protects the service from spikes, applied across all API keys and enforced consistently across serverless instances. The per-minute allowance scales with your plan (from 30/min on Free up to 600/min on Scale). Each response includes rate-limit headers:
X-RateLimit-Limit: 60
X-RateLimit-Remaining: 41
X-RateLimit-Reset: 1735689600
X-Request-Id: req_xxxWhen the burst window is exceeded you will receive 429 with a rate_limit_exceeded code and a Retry-After header.
What we meter
We record only privacy-safe metadata: endpoint, record counts, batch size, response status, and latency. We never store your raw request payloads.
