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 | PAID | RECRUITING | Must be DRAFT, must have 2+ screener questions |
| Pause | PATCH …/pause | PAID | PAUSED | Must currently be PAID |
| Close | PATCH …/close | CLOSED | RECRUITED | No unpaid participants |
Publish details
When published, the following fields are set automatically:
publishedAt = current time
expireAt = 1 month from now
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
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.