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, over any access method (REST, SDK, or MCP), which all draw down the same allowance. Most operations cost 1 record each; a few compute-intensive operations may cost more. Each plan includes a monthly record allowance:
Free— 1,000 records / monthStarter— 10,000 records / monthDeveloper— 50,000 records / monthPro— 100,000 records / monthScale— 250,000 records / monthEnterprise— 500,000+ / 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": "pro"
}
}
}Pay-as-you-go overage
At launch, your monthly allowance is a hard limit and self-serve pay-as-you-go is not available — exceeding the allowance returns 429. The capability below is preserved for when it is enabled for your account.
When enabled on a paid plan, requests that exceed your monthly 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.
