Errors
Every error code, what it means and what to do.
A failed request has an HTTP status and this body:
{ "error": { "code": "forbidden", "message": "You need the “Ban players” permission for this experience.", "request_id": "req_0a1b2c3d4e5f6a7b8c9d" } }details is added when there is more to say, for example the record_id of a ban that Roblox refused.
| HTTP | code | Meaning and what to do |
|---|---|---|
| 401 | unauthenticated | The key is missing, wrong, expired, revoked, or its owner is suspended. Check the header, or create a new key. |
| 403 | forbidden | The key, or the person behind it, lacks the permission, or has no access to that experience. An experience that does not exist gives the same answer. Check /v1/me. |
| 403 | feature_unavailable | The experience owner's plan does not include what you asked for. |
| 403 | limit_reached | A plan limit is used up. |
| 404 | not_found | The player, experience or other thing does not exist. |
| 409 | conflict | The request clashes with the current state, or an identical Idempotency-Key is still running. |
| 422 | validation | Something in the request is wrong. message names the field. |
| 424 | integration_missing | Setup is missing, usually an Open Cloud key with the right permissions on the experience. The message says which. |
| 429 | rate_limited | Too many requests. Wait for Retry-After seconds. |
| 502 | integration_error | Roblox refused or did not answer. For a ban, details.record_id is the record that was stored as failed. |
| 500 | internal_error | Our side. Try again, and tell us the request_id if it persists. |
Anything you cannot fix with a different request is worth retrying only on 429, 502 and 500.
Things that look like errors but are not
- A ban that needs a second person's approval answers
202withstatus: "pending_approval". - A kick is
queueduntil a game server confirms it.