Error Response Format
Most errors return a JSON body with anerror field:
details object with field-level messages:
HTTP Status Codes
400 Bad Request
The request contains invalid or missing parameters.
Common causes:
- Missing a required query parameter or body field
- A string parameter exceeds its maximum length (e.g.
session_id> 32 chars,query> 200 chars or > 10 words) - An enum value is not one of the allowed options
401 Unauthorized
The request is missing an Authorization header, or the provided API key is invalid.
Common causes:
- No
Authorizationheader sent - API key has been revoked or does not exist
- Wrong key format (e.g. using a JWT token where a plain token is expected)
403 Forbidden
Access was denied even though authentication succeeded.
Recommendations API specific variants:
Origin/Referer is not in the store’s allowed domains list.
404 Not Found
The requested resource does not exist.
Management API example:
413 Payload Too Large
The request body exceeds 8 MB. This limit applies to all POST/PUT/PATCH requests.
Resolution: Split large payloads into smaller batches. For bulk item operations, use batches of up to 100 items per request.
422 Unprocessable Entity
The request is well-formed but cannot be processed due to a semantic error.
Common cause: Bulk item operations with more than 100 items per request.
429 Too Many Requests
You have exceeded the rate limit of 20 requests per second.
_bulk endpoints instead of sending individual item requests in rapid succession.
Rate Limits Summary
| Limit | Value |
|---|---|
| Requests per second | 20 |
| Max request body size | 8 MB |
| Max items per bulk request | 100 |
Max query length | 200 characters / 10 words |
Max session_id length | 32 characters |
Max user_id length | 36 characters |
Retrying Requests
| Status | Retry? | Strategy |
|---|---|---|
429 | Yes | Wait 1 second, then retry |
500, 502, 503 | Yes | Exponential backoff |
400, 401, 403, 404, 422 | No | Fix the request before retrying |