Rate Limits & Packages
Every account is subscribed to a package that sets two limits: a per-minute rate limit (per API key) and a monthly call quota (shared across all of your keys).
| Package | Monthly quota | Rate limit |
|---|---|---|
| Starter | 100,000 calls | 60 / min |
| Growth | 1,000,000 calls | 300 / min |
| Enterprise | 10,000,000 calls | 1,200 / min |
Contact your account manager to change packages.
Response headers
Every response includes your current standing:
X-RateLimit-Limit: 300
X-RateLimit-Remaining: 287
X-RateLimit-Reset: 1737460860
X-Quota-Limit: 1000000
X-Quota-Used: 42318X-RateLimit-*— per-minute limit, resets every minute (Unix timestamp)X-Quota-*— monthly package quota, shared across all your API keys
Exceeding a limit
Both limits return 429 Too Many Requests:
// Rate limit
{ "error": "rate limit exceeded", "limit": 300 }
// Monthly quota
{
"error": "monthly package quota exceeded",
"quota": 1000000,
"used": 1000000,
"package": "growth"
} When you hit the per-minute limit, a Retry-After header tells you how many seconds to wait before retrying.
Best practices
- Cache list responses where possible — vehicle/driver rosters change rarely.
- Poll
/live/vehiclesno more than once every few seconds per key. - Back off and retry on
429usingRetry-After, don't hammer the endpoint. - Use a dedicated key per integration so quota issues are easy to isolate.