---
title: "Update access level"
method: PUT
path: "/v1/communities/{communityId}/members/{memberId}/access"
tags: ["Members"]
---

# Update access level

`PUT /v1/communities/{communityId}/members/{memberId}/access`

## Request

- Base URL: `https://api.subo.ai`
- URL: `https://api.subo.ai/v1/communities/{communityId}/members/{memberId}/access`
- Auth: API key in header `X-API-Key`

Grant access level member, creator, or admin. A grant adds to the access a member already has from Discord and never lowers it: setting `member` removes the grant, but a member who is a Discord server manager stays `admin`. Read `access` in the response for the effective level. Grants persist; they are not reset when the member next uses the bot. Granting or revoking `admin` (setting `admin`, or changing the level of someone granted `admin`) requires the key's issuer to be the community owner, the Discord server owner; otherwise 403. Cannot demote the community owner. Admin role required.

## Path parameters

- `communityId` string, required
- `memberId` string, required

## Request body

- object
  - `access` 'admin' | 'creator' | 'member', required: admin — full control; creator — create/manage projects; member — participate only

## Response `200`

Updated member

- object
  - `data` Member
    - `id` string
    - `platform_id` string, nullable
    - `name` string, nullable
    - `nick` string, nullable: Server-specific display name (Discord nickname)
    - `avatar_url` string, nullable
    - `access` 'admin' | 'creator' | 'member': Effective access level: the higher of derived_access and granted_access
    - `derived_access` 'admin' | 'creator', nullable: Access that comes from the member's Discord permissions (server owner, Manage Server, or a configured mod role). Recomputed by Subo; cannot be changed through the API
    - `granted_access` 'admin' | 'creator', nullable: Access granted through the web app or PUT .../access. Adds to derived_access, never lowers it
    - `rank` integer, nullable: XP leaderboard rank within the community
    - `xp_total` integer
    - `xp_monthly` integer
    - `participation` integer: Number of surveys completed by this member
    - `achievements` object[]: Achievement records earned by this member
    - `joined_at` string, date-time, nullable
    - `left_at` string, date-time, nullable

## Other responses

- `400`: Invalid access level
- `401`: Invalid or missing API key
- `403`: Forbidden
- `404`: Resource not found
- `429`: Rate limit exceeded — wait `retry_after` seconds before retrying. The same value appears in the `Retry-After` header.

---

[API](https://skmtc.dev/subo/apis/subo-api.md) · [All operations](https://skmtc.dev/subo/apis/subo-api/llms.txt) · [OpenAPI document](https://skmtc.dev/subo/apis/subo-api/revisions/12eab2ae4505?raw)
