Skip to content

Rate limits

Every key uses a sliding 60-second window. When exceeded the API returns 429 Too Many Requests.

Plan Rpm Calls/mo Batch receivers
Free 10 200
Starter 30 3,000 100
Pro 100 25,000 500
Business 300 150,000 2,000
Enterprise 1,000 custom 10,000
Ultra 5,000 custom 50,000
Carrier (Tier-1) per contract per contract per contract

Carrier tier (Tier-1 / national operators). Quotas, throughput and SLA are sized per contract with intra-tenant fair-scheduling. Includes dedicated deployment (isolated VPC or on-premises via On-prem isolated deployment), 24/7 NOC under contract and a negotiated financial SLA. Talk to sales.

Response headers

  • X-RateLimit-Limit — current rpm ceiling
  • X-RateLimit-Remaining — calls still available in the window
  • Retry-After — present on 429 responses

Demo keys

Additional hard cap of 6 rpm regardless of the nominal tier of the key.

Overage billing

Paid teams with a stripe_customer_id on file can opt to keep serving requests past the monthly quota instead of returning 429 Too Many Requests. Each surplus unit is billed via a Stripe out-of-cycle invoice; no service interruption.

How to enable:

  1. Server: env OVERAGE_BILLING_ENABLED=true (already on in production).
  2. Team: must have a stripe_customer_id (created automatically on first plan checkout).
  3. Per-unit price (configurable via STRIPE_OVERAGE_*_CENTS):
Metric Price per unit (BRL)
requests R$ 0.01
pdfs R$ 0.25
coverage_predict R$ 0.10
ai R$ 0.05

Response signalling:

When a request was served in overage mode (above the soft quota), the response carries:

X-Overage-Billing: true
X-Quota-Used: 1001
X-Quota-Limit: 1000

Your SDK can use this header to surface a "this call will be billed" notice to the operator. When the team is not enrolled, the default 429 behaviour is preserved.

To opt a team out of overage, clear stripe_customer_id via the Admin portal or PATCH /teams/{id} (eligibility cache expires after 60 s).