---
title: "Add candidates to a project"
method: PUT
path: "/v0/projects/{project_id}/candidates"
tags: ["Project and Candidates Membership"]
---

# Add candidates to a project

`PUT /v0/projects/{project_id}/candidates`

## Request

- Base URL: `https://api.gem.com` (the document declares no server; this is the origin it was published from)
- URL: `https://api.gem.com/v0/projects/{project_id}/candidates`
- Auth: none declared

Add candidates into a project.

Returns 204 no content if candidates are successfully added to
the project.

If candidates are already in the project, a 400 error will be returned
with `errors` containing information on the candidates already in the
project in this shape:
```
{
    "code": 400,
    "errors": {
        "json": {
            "candidate_ids": [
                "string"
            ]
        }
    },
    "message": "Candidates with the ids are already in the project",
    "status": "Bad Request"
}
```

## Request body

- ProjectCandidateMembershipUpdate
  - `candidate_ids` string[], required
  - `user_id` string, ObjectID: User performing the update. If included, the user must have write access to the project.

## Response `204`

No Content

## Other responses

- `422`: Unprocessable Content
- `default`: Default error response

---

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