CarsXE

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

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 billingBehavior 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:

json
{
"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
}
}

The message tells you which API hit its limit, the billing period (month/year), your tier, and the exact numbers. Variants you may see:


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

Code
CARSXE_API_KEY="YOUR_API_KEY"
URL="https://api.carsxe.com/v1/specs?vin=1HGCM82633A004352"

response=$(curl -s -w "\n%{http_code}" -H "x-api-key: $CARSXE_API_KEY" "$URL")
body=$(echo "$response" | sed '$d')
status=$(echo "$response" | tail -n 1)

if [ "$status" = "429" ]; then
  remaining=$(echo "$body" | jq -r '.usage.remaining')
  message=$(echo "$body" | jq -r '.message')
  if [ "$remaining" = "0" ]; then
    echo "CarsXE quota exhausted: $message" >&2
    exit 1
  fi
  # Bulk request too large — shrink and retry
  echo "Retry with at most $remaining VINs" >&2
fi

Two practical patterns:

For generic retry/backoff handling of 5xx errors, see the full code samples on the Errors page.


Raising your limits