---
title: "Grant a member or viewer of the active organization a role on a project"
method: POST
path: "/v1/project-members"
tags: ["Projects"]
---

# Grant a member or viewer of the active organization a role on a project

`POST /v1/project-members`

## Request

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

## Headers

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

## Request body

- object
  - `data` object, required
    - `projectId` string, uuid, required
    - `userId` string, uuid, required: A member or viewer of the active organization other than the caller.
    - `role` 'admin' | 'member' | 'viewer', required: `viewer` reads the project; `member` also deploys into it and changes its deployments, templates and alerts; `admin` also renames it and manages the other grants on it. An organization viewer only reads, whatever the project role.

## Response `201`

The created grant

- object
  - `data` object, required
    - `id` string, uuid, required: The grant id, used to change or revoke it.
    - `projectId` string, uuid, required
    - `userId` string, uuid, required
    - `username` string, nullable, required
    - `email` string, nullable, required
    - `role` 'admin' | 'member' | 'viewer', required: `viewer` reads the project; `member` also deploys into it and changes its deployments, templates and alerts; `admin` also renames it and manages the other grants on it. An organization viewer only reads, whatever the project role.
    - `createdAt` string, date-time, required

## Other responses

- `400`: The body is not valid
- `401`: Unauthorized
- `403`: The caller cannot manage access to projects of the active organization
- `404`: No such project within the caller's reach, or no such member in the active organization
- `409`: The user already has access to the project (`already_granted`), reaches every project as an owner or admin (`implicit_project_access`) or is a billing member (`billing_role_not_grantable`)

## Changes

- **2026-10-15** `bb97e5bacb6f`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/akash-network/apis/akash-network-console-api/changes/v1/project-members/post.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)
