---
title: "Record a review and return the next prompt"
method: POST
path: "/agent/session/grade"
---

# Record a review and return the next prompt

`POST /agent/session/grade`

## Request

- Base URL: `https://fluidrecall.com/api/v1`
- URL: `https://fluidrecall.com/api/v1/agent/session/grade`
- Auth: one of:
  - HTTP bearer
  - HTTP dpop

Write. Calls recordReview, then listDue. Trust dueAt on the review. The next prompt has no answer. The following queue uses asOf when sent, otherwise reviewedAt. Idempotency matches recordReview.

## Request body

- object
  - `cardId` string, uuid, required
  - `rating` 'again' | 'hard' | 'good' | 'easy', required
  - `reviewedAt` string: UTC ISO-8601 timestamp ending in Z
  - `idempotencyKey` string, required
  - `deckId` string, uuid, nullable
  - `asOf` string, nullable: UTC ISO-8601 timestamp ending in Z
  - `limit` integer
  - `newCardMode` 'daily' | 'extra'
  - `extraNew` integer

## Response `200`

Markdown review plus the next prompt. No answer.

## Other responses

- `400`: Invalid JSON or fields.
- `401`: Missing or wrong token.
- `404`: No card with that id for this token.
- `409`: Same idempotency key and a different body.

---

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