Overview
Moves the member to the previous rank by rank number.
- Permission scope
members.ranks.write- Community feature
rank-management- Content type
application/json
/v2/members/{userId}/rank/demoteMoves the member to the previous rank by rank number.
members.ranks.writerank-managementapplication/jsonSend Authorization: Bearer YOUR_API_KEY and X-Clan-Id: COMMUNITY_ID. The community API switch and key must be enabled. The key must have the scope shown above. See authentication and key storage.
| Name | Location | Type | Required | Constraints and description |
|---|---|---|---|---|
by | query | userId | username | No | How to interpret the identifier in the path. Prefer `username`: under Roblox's scoped user identifiers an in-experience user id is not a global one. |
userId | path | string | Yes | Roblox user id, or a username when `?by=username` is set. |
| Status | When it is returned |
|---|---|
| 400 | The request was malformed or failed validation. |
| 401 | The API key is missing, malformed, or not recognised for this community. |
| 403 | The API key is disabled, lacks the required permission (insufficient_scope), or the community's subscription or tier does not cover API access or this feature (feature_unavailable). These admission-time failures create no new operation. actor-authorization-revoked additionally means the API key, its required permission, the community API switch or API-access entitlement was revoked before dispatch. Restore authorization before retrying. This response has no operation status headers or reference. |
| 404 | The requested resource does not exist. |
| 409 | The request conflicts with current state. deadline-cancelled-before-dispatch confirms the unsent operation was cancelled at its deadline. When present, status headers identify the operation; check its cancellation or failure before retrying. |
| 429 | Rate limited, queue-full admission exhaustion, or provider-rejected-429 when Roblox rejects a scheduled attempt for throttling. queue-full means no new operation was admitted. Retry-After may be absent; honor it when supplied and use bounded backoff. When Location or X-Roblox-Operation-Id is present, check that operation before repeating a synchronous write; otherwise inspect current Roblox resource state before retrying. |
| 500 | Unexpected server error. |
| 502 | Roblox authorization failed or the provider returned an upstream error. Review the connection before retrying. When present, status headers identify the failed operation; a pre-admission failure may have no operation. |
| 503 | Roblox scheduling or its budgeted live-state read is unavailable. A failed pre-admission read creates no job. |
| 504 | A Roblox request timed out or has an unresolved outcome. With scheduling enabled, outcome-pending-check-status and provider-rejected-408 include Location and X-Roblox-Operation-Id only when current access to the frozen operation is verified; check authorized status before retrying. Revoked or unverifiable access omits references while retaining the pending outcome. The reference identifies the saved operation; status reports whether it remains pending or is terminal. With scheduling disabled, roblox_cloud_timeout has no operation or status headers. A timeout does not confirm success or failure; check the member's Roblox state before repeating a write without an accessible reference. |
This operation shares the key’s request budget. On 429, read error.code and follow Retry-After when present. Upstream Roblox limits may omit budget details. Check current state and this endpoint's recovery guidance before retrying a write. See rate limits and recovery.
The updated member
{
"data": {
"userId": 1234567,
"username": "PixelComet482",
"experience": 250,
"quotaPoints": 3,
"medals": [
"Long Service"
],
"qualifications": [
"Marksman"
],
"currentRank": {
"uniqueId": 900001,
"id": 10,
"name": "Private",
"experience": 200,
"locked": false
},
"nextRank": {
"uniqueId": 900001,
"id": 10,
"name": "Private",
"experience": 200,
"locked": false
},
"perks": {
"boosting": true,
"primary": true
},
"createdAt": 1735689600000,
"lastUpdatedAt": 1735689600000
}
}