Errors & Rate Limits
HTTP status behavior is intentionally consistent so integrations can distinguish authentication, authorization, validation and throttling failures.
Common responses
| Status | Error | Meaning |
|---|---|---|
| 400 | invalid_company, invalid_page, invalid_page_size, date_range_required, invalid_date_range and endpoint-specific validation codes | The request is authenticated but invalid. Correct the request before retrying. |
| 401 | unauthorized | API key is invalid or inactive (including revoked/expired key behavior). |
| 403 | forbidden | The client is valid but does not have the required scope. |
| 404 | company_not_found | The company is unavailable or the client is not authorized for it. |
| 429 | rate_limit_exceeded | The client exceeded its configured minute or daily request limit. |
Rate-limit response
{
"error": "rate_limit_exceeded",
"message": "The API client has exceeded its minute request limit.",
"retryAfterSeconds": 60
}
When throttled, wait for the supplied retry period and honor the HTTP Retry-After header. Do not continuously retry a 429 response.
Validation examples
{
"error": "forbidden",
"message": "The API client does not have the inventory.read scope."
}
{
"error": "company_not_found",
"message": "The company does not exist or this API client does not have access to it."
}