Getting Started
Rate limits & errors
Updated Sep 26, 2026
Rate limits
Each API key has its own limit in requests per minute (default 120, configurable from 10 to 6,000 when you create the key). Responses include:
| Header | Meaning |
|---|---|
X-RateLimit-Limit | Requests allowed per minute for this key |
X-RateLimit-Remaining | Requests left in the current window |
Retry-After | Seconds to wait (only on 429) |
Public, unauthenticated catalogue calls (e.g. GET /api/v1/skills without a key) share an IP-based limit. Some endpoints have additional limits: at most 10 queued or running simulation jobs and 25 sandbox robots per developer.
Errors
Errors are JSON objects with an error message. Validation errors may add an errors map.
{ "error": "This API key lacks the \"sandbox\" scope." }| Status | When |
|---|---|
400 | Malformed request |
401 | Missing, invalid, expired or revoked API key |
403 | The key lacks the required scope |
404 | Resource not found (or not yours) |
409 | The robot refused the command in its current state (e.g. SafeCore emergency stop) |
422 | Validation failed — see error / errors |
429 | Rate limit exceeded — honour Retry-After |
500 | Server error — retry with exponential backoff |
Retries
Retry 429 and 5xx responses with exponential backoff and jitter (for example 1 s, 2 s, 4 s, 8 s). Never retry 4xx responses other than 429 without changing the request.