---
title: "Record an explicit founder review decision: revise, withdraw, adopt an inspected legacy result, or correct a publication record. Revision creates a new attempt only on a won transaction. This endpoint never publishes. Scope 'act'; free."
method: POST
path: "/api/v1/moves/{id}/review"
---

# Record an explicit founder review decision: revise, withdraw, adopt an inspected legacy result, or correct a publication record. Revision creates a new attempt only on a won transaction. This endpoint never publishes. Scope 'act'; free.

`POST /api/v1/moves/{id}/review`

## Request

- Base URL: `https://afterlaunch.io`
- URL: `https://afterlaunch.io/api/v1/moves/{id}/review`
- Auth: HTTP bearer

## Path parameters

- `id` string, uuid, required

## Request body

- object
  - `operation` 'revise' | 'withdraw' | 'adopt_legacy_result' | 'correct_publication', required: adopt_legacy_result requires a null expected attempt, exact move CAS, exact legacy job CAS when job_id is present, and inspected prepared content or asset URL.
  - `job_id` string, uuid, nullable, required
  - `expected_attempt_id` string, uuid, nullable, required: Exact managed attempt. Null identifies legacy work and requires exact move CAS plus legacy job CAS when job_id is present.
  - `expected_move_state` 'pending' | 'taken_on' | 'shipped' | 'skipped' | 'archived' | 'expired' | 'null', nullable
  - `expected_move_updated_at` string, date-time, nullable
  - `expected_legacy_state` string, nullable: get_move: prepared_result.legacy_state ?? state.
  - `expected_legacy_updated_at` string, date-time, nullable
  - `prepared_content` string, nullable
  - `asset_url` string, nullable
  - `note` string, nullable

## Response `200`

Review decision committed or unchanged.

- object
  - `data` object, required
  - `meta` object, required
    - `enrollment_id` string, uuid, required
    - `generated_at` string, date-time, required

## Other responses

- `401`: Missing, invalid or revoked API key.
- `403`: The key does not carry the scope this endpoint requires.
- `404`: Unknown or cross-tenant move.
- `409`: Stale attempt or illegal review transition.
- `429`: Per-key rate limit exceeded. Honour Retry-After.

---

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