---
title: "Create project user"
method: POST
path: "/organization/projects/{project_id}/users"
tags: ["Projects"]
---

# Create project user

`POST /organization/projects/{project_id}/users`

Adds a user to the project. Users must already be members of the organization to be added to a project.

## Path parameters

- `project_id` string, required

## Request body

- ProjectUserCreateRequest
  - `user_id` string, nullable — The ID of the user.
  - `email` string, nullable — Email of the user to add.
  - `role` string, required — `owner` or `member`

## Response `200`

User added to project successfully.

- ProjectUser — Represents an individual user in a project.
  - `object` 'organization.project.user', required — The object type, which is always `organization.project.user`
  - `id` string, required — The identifier, which can be referenced in API endpoints
  - `name` string, nullable — The name of the user
  - `email` string, nullable — The email address of the user
  - `role` string, required — `owner` or `member`
  - `added_at` integer, required — The Unix timestamp (in seconds) of when the project was added.

## Other responses

- `400` — The request is invalid or the user cannot be added to the project in its current state.
- `403` — The caller lacks the required permissions.
- `404` — The project or user was not found in the organization.
- `409` — The request conflicts with the current state of the resource.
- `429` — The request exceeded the rate limit.

## Changes

- **2026-09-16** `0756c0e352d6` — 4 info
  - added the non-success response with the status `403`
  - added the non-success response with the status `404`
  - added the non-success response with the status `409`
  - added the non-success response with the status `429`
- **2026-09-03** `9430b00d75b4` — 1 info
  - added the optional property `error/misalignment` to the response with the `400` status
- **2026-05-13** `74cbcf73838f` — 8 breaking, 6 info
  - removed the enum value `member` of the request property `role`
  - removed the enum value `owner` of the request property `role`
  - the response property `email` became optional for the status `200`
  - the response property `name` became optional for the status `200`
  - …10 more
- **2024-08-06** `8eca3b09b705` — 1 info
  - endpoint added

[Change history](https://skmtc.dev/openai/apis/openapi/changes/organization/projects/:project_id/users/post.md)

---

[API](https://skmtc.dev/openai/apis/openapi.md) · [All operations](https://skmtc.dev/openai/apis/openapi/llms.txt) · [OpenAPI document](https://skmtc.dev/openai/apis/openapi/revisions/c40bf0ba89d2?raw)
