---
title: "Add a user to a project or update their project role"
method: POST
path: "/projects/{project_id}/members"
---

# Add a user to a project or update their project role

`POST /projects/{project_id}/members`

## Request

- Base URL: `https://api.ionworks.com`
- URL: `https://api.ionworks.com/projects/{project_id}/members`
- Auth: none declared

Upsert (insert or update) a user's role for a project.

The caller must have ``project:manage_members`` on the project's
organization — enforced by RLS on the user-scoped client. The target
user must already belong to the caller's organization.

## Path parameters

- `project_id` string, uuid, required

## Request body

- UpsertProjectMemberBody
  - `user_id` string, required: ID of the user whose project role to set.
  - `project_role_id` string, required: ID of the project role to assign.

## Response `204`

Successful Response

## Other responses

- `422`: Validation Error

## Changes

- **2026-09-30** `ea3d377fec1a`: 1 breaking
  - for the `path` request parameter `project_id`, the format changed from no format to `uuid`

[Operation history](https://skmtc.dev/ionworks/apis/ionworks-api/changes/projects/:project_id/members/post.md)

---

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