CarsXE limits are volume-based quotas tied to your subscription, not per-second throttles. Each API has an included monthly volume for your tier; when you reach it, what happens next depends on your overage settings. This page explains how the quotas work, exactly what a 429 looks like, and how to handle limits gracefully in code.
There are no per-second request throttles on standard plans, but keep burst concurrency reasonable — extremely aggressive parallel traffic can still be rejected upstream before it reaches your quota.
How quotas work
- Per-API quotas. Each API (Specs, Market Value, History, …) has its own included monthly volume, determined by your subscription tier. A few related APIs share a combined quota.
- Monthly reset. Usage counters reset at the start of each billing period. Trial allowances are one-time — they do not reset monthly.
- Units, not requests. Most requests consume 1 unit. Bulk endpoints (for example Recalls Batch) consume one unit per VIN, so a 500-VIN batch uses 500 units in a single request.
- Failed validation is free. Requests rejected with a
400validation error (missing VIN, bad parameter, etc.) are blocked before any lookup and don't count against your quota. - Plan-gated APIs. Some APIs aren't included in lower tiers at all. Calling one returns a
403— see Errors — not a429.
You can see your current usage per API at any time on the developer dashboard.
What happens when you hit the limit
There are two possible behaviors, controlled by your overage billing preference in the dashboard:
| Overage billing | Behavior past the included quota |
|---|---|
| Enabled (default on plans with overage pricing) | Requests keep succeeding. Each unit past your included volume is billed at your tier's per-call overage rate. You will never see a quota 429. |
| Disabled (opt-out) | Requests are rejected with a 429 until the period resets or you re-enable overage. |
Enterprise plans use custom pricing and monthly invoicing — included volume and overage terms are set in your contract.
The 429 response
Quota errors use the standard error envelope plus a usage object:
{
"success": false,
"message": "API limit exceeded for market_value (6/2026). Subscription tier: starter. Current usage: 5000, Limit: 5000.",
"usage": {
"current": 5000,
"limit": 5000,
"remaining": 0
}
}- Name
usage.current- Type
- number
- Description
Units consumed so far this billing period (or in total, for one-time trial allowances).
- Name
usage.limit- Type
- number
- Description
Your included volume for this API on your current tier.
- Name
usage.remaining- Type
- number
- Description
Units left before the limit.
0when the request was rejected.
The message tells you which API hit its limit, the billing period (month/year), your tier, and the exact numbers. Variants you may see:
This request requires N units.— appended when a bulk request would exceed the limit even thoughcurrent < limit. Reduce the batch size to fit withinremaining, or split it across billing periods.Please upgrade your tier to continue using the API.— appended for one-time (trial) allowances that never reset. Waiting won't help; upgrade to continue.Enable overage billing in your dashboard billing preferences to continue with overage charges: …— appended when you've opted out of overage but your plan supports it. Re-enable overage on the developer dashboard and the same request will succeed immediately.
Usage alerts
You don't have to discover a quota 429 in production. CarsXE emails the account owner when an API reaches 80%, 90%, and 100% of its included volume, so you can upgrade or enable overage before requests start failing.
Handling 429s in code
A quota 429 is not transient — unlike a 5xx, retrying with backoff won't make it succeed. The right response depends on usage:
Handle a 429
Two practical patterns:
- Track
usage.remainingproactively. It's returned on quota errors, and your live numbers are always on the dashboard. Alerting at your own threshold (say 75%) gives you more lead time than the built-in emails. - Size batches to fit. Before a bulk call, make sure the VIN count is at or below your remaining units — a rejected batch consumes nothing, but it also accomplishes nothing.
For generic retry/backoff handling of 5xx errors, see the full code samples on the Errors page.
Raising your limits
- Upgrade your tier for more included volume on every API — compare plans on the pricing page.
- Enable overage billing to never be blocked: usage past the included volume is billed per call at your tier's rate.
- Go enterprise for high or spiky volume: custom quotas, custom pricing, and consolidated monthly invoicing. Contact us to talk through your numbers.