---
title: "Save Dispatch Plan"
method: POST
path: "/v1/plans/{planId}/save"
tags: ["Dispatch plans"]
---

# Save Dispatch Plan

`POST /v1/plans/{planId}/save`

## Request

- Base URL: `https://api.sandbox.usenash.com`
- URL: `https://api.sandbox.usenash.com/v1/plans/{planId}/save`
- Auth: none declared
- TypeScript: <https://skmtc.dev/usenash/apis/nash-api/docs/v1/plans/:planId/save/post.ts> (a function with typed inputs; its response is checked against the schema)

Save the plan's current draft as the version Discard returns to. Fails with 409 `PLAN_LEASE_HELD` (naming `heldBy`) while anyone has the plan open in the Planner, and with 409 `PLAN_REVISION_STALE` (naming `currentRevision`) when the plan changed since `expectedRevision`.

## Path parameters

- `planId` string, required

## Request body

- DispatchPlanWrite
  - `expectedRevision` integer, required: The `revision` of the plan you last read.

## Response `200`

OK

- DispatchPlanWriteResult
  - `planId` string, required
  - `revision` integer, required
  - `contentHash` string, required
  - `restoreVersionNumber` integer, required: The saved version that Discard returns the plan to.

## Other responses

- `422`: Unprocessable Content

## Changes

- **2026-11-03** `e3713837c5c9`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/usenash/apis/nash-api/changes/v1/plans/:planId/save/post.md)

---

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