---
title: "Undo the latest review"
method: POST
path: "/cards/{cardId}/undo-review"
---

# Undo the latest review

`POST /cards/{cardId}/undo-review`

## Request

- Base URL: `https://fluidrecall.com/api/v1`
- URL: `https://fluidrecall.com/api/v1/cards/{cardId}/undo-review`
- Auth: one of:
  - HTTP bearer
  - HTTP dpop

Write. Undo the latest active review on a card this token owns. Body may be {} or { reviewId }. Unknown keys are rejected. Restores dueAt and the learning or review state to what they were before that grade. The review row stays, with undoneAt set, so export still lists it. A second call with the same reviewId returns alreadyUndone true and does not apply twice. A call with no reviewId undoes the new latest active review. When no active review remains, the response is 200 with nothingToUndo true. A reviewId that is not the latest active review is 409. Undo that later review first. A retired card is 404, the same as get and reveal. A card in an archived deck is 404 until that deck is unarchived. Another token's card is 404. The response includes the prompt and does not include the answer. There is no idempotency key. Retrying the original recordReview key after undo returns the original receipt and does not reapply the grade.

## Path parameters

- `cardId` string, uuid, required

## Request body

- object
  - `reviewId` string, uuid

## Response `200`

The schedule is restored, or the undo was already applied, or there was nothing to undo. The answer is not echoed.

- object
  - `cardId` string, uuid, required
  - `prompt` string, required
  - `dueAt` string, required: UTC ISO-8601 timestamp ending in Z
  - `reviewId` string, uuid, nullable, required
  - `undoneAt` string, nullable, required: UTC ISO-8601 timestamp ending in Z
  - `alreadyUndone` boolean, required
  - `nothingToUndo` boolean, required
  - `answerIncluded` false, required

## Other responses

- `400`: The body has extra fields, or reviewId is not a uuid.
- `401`: Missing or wrong token.
- `404`: No active card in an active deck for this token, or reviewId is not a review of that card.
- `409`: reviewId is not the latest active review, or the prior schedule cannot be restored.

---

[API](https://skmtc.dev/fluidrecall/apis/fluid-recall.md) · [All operations](https://skmtc.dev/fluidrecall/apis/fluid-recall/llms.txt) · [OpenAPI document](https://skmtc.dev/fluidrecall/apis/fluid-recall/revisions/7bf2563c3d2a?raw)
