---
title: "Send a closeout for sign-off"
method: POST
path: "/readiness/projects/{id}/closeout/submit"
tags: ["readiness"]
---

# Send a closeout for sign-off

`POST /readiness/projects/{id}/closeout/submit`

## Request

- Base URL: `https://api.onplana.com/api`
- URL: `https://api.onplana.com/api/readiness/projects/{id}/closeout/submit`
- Auth: one of:
  - HTTP bearer
  - API key in header `Authorization`

Requires project.edit. Moves the closeout to IN_REVIEW with one PENDING sign-off per reviewer, replacing any earlier panel. Without `reviewerIds` the reviewer is the project owner (every plan); naming any other panel is designated multi-reviewer sign-off and needs the auditLogs feature (402 with the plan-gate body). Reviewers must be active, non-guest members (400 REVIEWER_NOT_ELIGIBLE). 404 CLOSEOUT_NOT_FOUND before it is started; 409 CLOSEOUT_LOCKED once signed off. Audited as CLOSEOUT_SUBMITTED. Returns the closeout body.

## Path parameters

- `id` string, required

## Headers

- `X-Organization-Id` string, required

## Request body

- object
  - `reviewerIds` string[]

## Response `200`

The closeout body

## Other responses

- `400`: Validation error
- `401`: Unauthorized - missing or invalid JWT
- `402`: Plan gate - feature not available on current plan
- `403`: Forbidden - insufficient role
- `404`: Not found
- `409`: CLOSEOUT_LOCKED or PROJECT_NOT_CLOSED

---

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