Rate limits
Every operation has a rate class. A class sets one or two limits, and each limit counts your organisation's requests to that operation, whichever credential sends them. The marketplace catalogue, which needs no credential, counts per client IP instead.
| Class | Limits | Used by |
|---|---|---|
read | 100 per second and 360,000 per hour | reads |
write | 50 per second and 36,000 per hour | creates, updates and actions |
telemetry | 10 per second and 180,000 per hour | positions, tracks and fuel levels |
command | 20 per second and 360,000 per hour | device commands |
bulk | 100 per hour | fuel statement imports |
report | 1,000 per day | report runs, a schedule run now |
credentials | 10 per minute | API key rotation and revocation, personal access tokens, webhook secret rotation |
public | 100 per second and 360,000 per hour, per client IP | the marketplace catalogue |
The figures are the gateway's configuration, the same that Developer Studio shows. There are no per-key or per-plan limits. A sandbox is its own organisation, so its traffic counts apart from yours.
Over a limit
The gateway answers 429 with {"error_msg": "rate limit exceeded"}. Each response carries
X-RateLimit-Limit, X-RateLimit-Remaining and X-RateLimit-Reset: wait until the reset before retrying, and
spread steady work below the per-second limit.
Don't poll
- For geofence entries, alerts, stop completions, fuel flags and maintenance, subscribe to webhooks instead of listing.
- For positions,
GET /v1/positions/latestreturns many devices in one call.