Rate Limits & Errors
Rate limits
60 requests per minute, per account — shared across live and test keys. Once you go over, further requests fail until the next window starts.
Response
{
"errors": [
{
"message": "Rate limit exceeded — slow down and try again shortly",
"extensions": { "code": "RATE_LIMITED" }
}
],
"data": null
}If your integration needs a higher limit, talk to your GlamBug contact rather than working around it with parallel keys.
Error codes
GraphQL always responds 200 — check errors[].extensions.code in the response body, not the HTTP status.
| Code | Meaning |
|---|---|
UNAUTHENTICATED | Missing or invalid X-Api-Key header. |
FORBIDDEN | Authenticated, but not allowed to perform this operation. |
BAD_USER_INPUT | The request itself is invalid — an unknown SKU, insufficient stock, a missing required field. The message explains exactly what's wrong. |
SUBSCRIPTION_PAUSED | Your subscription fee is unpaid, or access was paused by us, so catalogue and order calls are refused. Read the reason with partnerBilling on the Payments page. Access resumes by itself once the wallet covers the fee. |
INSUFFICIENT_BALANCE | Your wallet balance, net of your other pending orders, doesn't cover this order. Nothing was created. See Orders. |
PARTNER_PHONE_MISSING | Your account is set up as white label but has no phone number on its profile, so parcels can't be labelled with it. Ask your GlamBug contact to add it, then resend. See Orders. |
RATE_LIMITED | Too many requests — see above. For ways to stay well inside the limit, see Staying in Sync. |
Getting help
If you hit something not covered here, or an error message that doesn't make sense, reach out to your GlamBug point of contact with the exact query and response you got back.