> ## Documentation Index
> Fetch the complete documentation index at: https://developers.respondent.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Project statuses

> Manage project lifecycle from draft to close

# Managing project status

Each project status PATCH endpoint updates two key fields that control what a project is doing:

* **projectStatus**: `DRAFT`, `PAID`, `ARCHIVED`, `CLOSED`
* **projectRecruitingStatus**: `RECRUITING`, `RECRUITED`, `PAUSED`

## Status transitions

| Action      | Endpoint                                         | projectStatus | projectRecruitingStatus | Requirements                                     |
| ----------- | ------------------------------------------------ | ------------- | ----------------------- | ------------------------------------------------ |
| **Publish** | [PATCH .../publish](/projects/publish-a-project) | `PAID`        | `RECRUITING`            | Must be `DRAFT`, must have 2+ screener questions |
| **Pause**   | [PATCH .../pause](/projects/pause-a-project)     | `PAID`        | `PAUSED`                | Must currently be `PAID`                         |
| **Close**   | [PATCH .../close](/projects/close-a-project)     | `CLOSED`      | `RECRUITED`             | No unpaid participants                           |

### Publish details

When published, the following fields are set automatically:

* `publishedAt` = current time
* `expireAt` = 1 month from now

### Pause details

A project's `projectRecruitingStatus` becomes `PAUSED` in two ways:

* **Manually**, via [PATCH .../pause](/projects/pause-a-project).
* **Automatically**, When enough qualified participants to meet the project's `targetNumberOfParticipants` have applied to the project. Our recruiting algorithm dynamically sources up to 3x the target to ensure you can reach your target even if some participants do not complete the study or provide poor quality answers and need to be replaced

While a project is `PAUSED`:

* **Sourcing stops.** New applicants can no longer apply through matching, and matching/recruitment emails are not sent.
* **Auto-invites keep flowing.** Applicants who were already qualified before the pause continue to receive invitations on their normal `automations.invite` schedule, up to the project's invite cap (or completes cap for invite-to-complete flows). Participants who have already been invited can still schedule, attend, and be paid.

In other words, `PAUSED` means *"stop sourcing new applicants"* — not *"stop inviting."* This matters most for invite-to-complete integrations, where completion volume, not invite volume, determines when recruitment is finished; the project will keep auto-inviting qualified applicants (subject to eligibility and quota checks) even while paused.

To resume sourcing after an auto-pause, unpause the project with [PATCH .../pause](/projects/pause-a-project) (the same endpoint toggles the status).

### Close details

When closed, the following fields are populated:

* `closedDetails.closed` = `true`
* `closedDetails.closedMessage` = message passed in the request
* `closedDetails.closedByUserId` = current user ID
* `closedDetails.closedOnDate` = current time

<Warning>
  If your project has screener responses in `SCHEDULED` or `ATTENDED` status, you will receive a **400 error** with the message "Project has unpaid participants and cannot be closed". Ensure all participants are paid before closing.
</Warning>

## Editing a project after publish

`PATCH /v1/projects/{projectId}` accepts different fields depending on the project's current status. Once a project is live (`projectStatus: PAID`), it is treated as a published project and only a limited set of fields can be modified.

### Fields you can update on a live (published) project

* `publicTitle`
* `publicInternalName`
* `publicDescription`
* `participantTimeRequiredMinutes`
* `incentiveAmount`
* `ndaDetails`
* `externalResearcher`

### Fields that cannot be changed on a live project

Targeting, methodology, and recruitment-shape fields are locked once a project is published. This includes (but is not limited to):

* `targetNumberOfParticipants`
* `targetResearchMethodology`, `typeOfResearch`
* `targetMarketType`, `targetCountry`, `targetCities`, `targetLocationRespondentInPerson`
* `targetProjectTopics`, `targetProfessionalIndustries`, `targetJobTitles`, `targetJobFunctions`, `targetAudienceSkills`
* `automations` (including `autoinvite` and `autopay`)

If you need to change any of these on a live project, close or archive the project and create a new one. Screener questions on a live project are also locked — set them up while the project is still in `DRAFT`.

See [Update a project](/projects/update-a-project) for the full request reference.
