---
title: "Change the role, project access and project grants of a member of the active organization, all together or not at all"
method: PATCH
path: "/v1/organization-members/{id}"
tags: ["Organizations"]
---

# Change the role, project access and project grants of a member of the active organization, all together or not at all

`PATCH /v1/organization-members/{id}`

## Request

- Base URL: `https://console-api-sandbox.akash.network`
- URL: `https://console-api-sandbox.akash.network/v1/organization-members/{id}`
- Auth: one of:
  - HTTP bearer
  - API key in header `x-api-key`

## Path parameters

- `id` string, uuid, required

## Headers

- `x-organization-id` string
- `x-project-id` string, uuid

## Request body

- object
  - `data` object, required
    - `role` 'owner' | 'admin' | 'member' | 'billing' | 'viewer'
    - `projectAccess` 'all' | 'selected': Required when someone becomes a member or viewer from another role, refused with `project_access_required` otherwise. A member or viewer on `selected` needs at least one project grant. Ignored for owners, admins and billing members.
    - `projectGrants` object[]: Replaces every grant of a member or viewer on `selected`, in the body or already stored: grants not listed are removed. Refused for anyone else. Switching to `all` removes the member and viewer grants and keeps the admin ones.
      - `projectId` string, uuid, required
      - `role` 'admin' | 'member' | 'viewer', required

## Response `200`

The updated member

- object
  - `data` object, required
    - `id` string, uuid, required
    - `userId` string, uuid, required
    - `username` string, nullable, required
    - `email` string, nullable, required
    - `role` 'owner' | 'admin' | 'member' | 'billing' | 'viewer', required
    - `projectAccess` 'all' | 'selected', nullable, required: `all` for owners and admins, the stored access for members and viewers, null for billing members, who reach no project.
    - `projectCount` integer, nullable, required: The live projects a member or viewer on `selected` is granted, null for everyone else.
    - `createdAt` string, date-time, required

## Other responses

- `400`: The request is invalid, someone becoming a member or viewer has no project access stated (`project_access_required`), a member or viewer on specific projects would hold no grant, the grants name a project that is not live or someone they do not apply to, or the organization header names another organization than the API key's (`organization_mismatch`)
- `401`: Unauthorized
- `403`: The caller cannot change this member, the change touches the owner role and the caller is not an owner (`owner_role_restricted`), or the active organization is a personal one (`personal_organization`)
- `404`: No such member in the active organization
- `409`: The organization would be left without an owner (`last_owner`)

## Changes

- **2026-10-16** `97759744caf9`: 4 info
  - added the new optional request property `data/projectGrants`
  - the request property `data/role` became optional
  - added the required property `data/projectAccess` to the response with the `200` status
  - added the required property `data/projectCount` to the response with the `200` status
- **2026-10-16** `c3a0607d8a57`: 1 info
  - added the new optional request property `data/projectAccess`
- **2026-10-15** `bb97e5bacb6f`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/akash-network/apis/akash-network-console-api/changes/v1/organization-members/:id/patch.md)

---

[API](https://skmtc.dev/akash-network/apis/akash-network-console-api.md) - [All operations](https://skmtc.dev/akash-network/apis/akash-network-console-api/llms.txt) - [OpenAPI document](https://skmtc.dev/akash-network/apis/akash-network-console-api/revisions/b959efa6d493?raw)
