---
title: "Record a closeout's lessons learned"
method: PUT
path: "/readiness/projects/{id}/closeout/lessons"
tags: ["readiness"]
---

# Record a closeout's lessons learned

`PUT /readiness/projects/{id}/closeout/lessons`

## Request

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

Requires project.edit, on a closeout that is DRAFT (404 CLOSEOUT_NOT_FOUND before it is started, 409 CLOSEOUT_LOCKED once in review or signed off). `values` maps a lesson key (wentWell, toImprove, scheduleVarianceReason, budgetVarianceReason, leavesBehind; any other key is a 400) to its text; null or an empty string clears it, and keys not sent keep their answer. The answers are stored on the closeout itself, so this route is their only writer. Audited as CLOSEOUT_LESSONS_UPDATED. Returns the closeout body.

## Path parameters

- `id` string, required

## Headers

- `X-Organization-Id` string, required

## Request body

- object
  - `values` object, required
    - `wentWell` string, nullable
    - `toImprove` string, nullable
    - `scheduleVarianceReason` string, nullable
    - `budgetVarianceReason` string, nullable
    - `leavesBehind` string, nullable

## Response `200`

The closeout body

## Other responses

- `400`: Validation error
- `401`: Unauthorized - missing or invalid JWT
- `403`: Forbidden - insufficient role
- `404`: Project or closeout not found
- `409`: CLOSEOUT_LOCKED

---

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