---
title: "A project's closeout"
method: GET
path: "/readiness/projects/{id}/closeout"
tags: ["readiness"]
---

# A project's closeout

`GET /readiness/projects/{id}/closeout`

## Request

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

Returns `{ projectId, projectStatus, eligible, closeout, permissions }`. `eligible` is true on a COMPLETED or CANCELLED project. `closeout` is null until initiated, else `{ id, state (DRAFT | IN_REVIEW | SIGNED_OFF), initiatedAt, initiatedBy, submittedAt, signedOffAt, reportDocId, finalBaseline { id, name, takenAt }, evm, signoffs [{ id, reviewerId, reviewer, designated, decision (PENDING | SIGNED_OFF | CHANGES_REQUESTED), comment, decidedAt }], quorum { required, signedOff, changesRequested }, report { documentId, libraryId, name, updatedAt, url } | null, costSection, lessons [{ key, name, description, value }], reportError }`. `evm` is the EVM summary taken at initiation; for a caller who may not read the project's cost its cost figures are null and `costHidden` is true. `report` is the closeout report document (markdown, in the project's Project Documents library); it never carries cost figures. `costSection` is the EVM cost table as markdown, only for a caller who may read the project's cost and only when the project has cost data, else null. `lessons` is the fixed lesson set (keys wentWell, toImprove, scheduleVarianceReason, budgetVarianceReason, leavesBehind) with the workspace's labels and this project's answers. `reportError` `{ code, error }` is set only on the start response when the document quota or storage refused the report (the closeout itself was saved and `report` is null); else null. `permissions` is `{ canInitiate, canSubmit, canSignOff, multiReviewerAvailable, canEditLessons }` for this caller. Any caller who can read the project, or a reviewer named on its closeout. Every closeout route answers this same body.

## Path parameters

- `id` string, required

## Headers

- `X-Organization-Id` string, required

## Response `200`

Project closeout

## Other responses

- `400`: Validation error
- `401`: Unauthorized - missing or invalid JWT
- `404`: Project not found or not readable

---

[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)
