---
title: "Submit up to 200 reviews (idempotent by review id); returns each updated card"
method: POST
path: "/revise/reviews"
tags: ["revise"]
---

# Submit up to 200 reviews (idempotent by review id); returns each updated card

`POST /revise/reviews`

## Request

- Base URL: `https://api.focusbear.io` (the document declares no server; this is the origin it was published from)
- URL: `https://api.focusbear.io/revise/reviews`
- Auth: HTTP bearer

## Request body

- SubmitReviseReviewsDto
  - `reviews` ReviseReviewItemDto[], required
    - `id` string, uuid, required: Client-generated review id; the idempotency key
    - `card_id` string, uuid, required
    - `response` 'no_idea' | 'again' | 'hard' | 'good' | 'easy', required
    - `reviewed_at` string, required: When the user answered, on the client clock (ISO 8601)
    - `duration_ms` number
    - `session_id` string, uuid: Client-generated session id, for stats

## Response `200`

- SubmitReviseReviewsResponseDto
  - `results` ReviseReviewResultDto[], required: In request order
    - `id` string, required
    - `status` 'applied' | 'duplicate' | 'card_not_found' | 'invalid_time', required
    - `card` ReviseCardResponseDto
      - `id` string, required
      - `deck_id` string, nullable, required
      - `front` string, required
      - `back` string, required
      - `source_type` 'manual' | 'note' | 'pdf' | 'anki' | 'algoapp' | 'file', required
      - `source_note_id` string, nullable, required
      - `source_label` string, nullable, required
      - `created_by` 'user' | 'ai', required
      - `needs_rewrite` boolean, required
      - `rewrite_flagged_at` string, nullable, required
      - `rewrite_resolved_at` string, nullable, required
      - `state` 'learning' | 'review' | 'relearning', required
      - `step` number, nullable, required
      - `stability` number, nullable, required
      - `difficulty` number, nullable, required
      - `due_at` string, required
      - `last_reviewed_at` string, nullable, required
      - `first_reviewed_at` string, nullable, required
      - `review_count` number, required
      - `lapse_count` number, required
      - `is_new` boolean, required: Never reviewed
      - `preview_due_at` RevisePreviewDueAtDto, required
        - `no_idea` string, required
        - `again` string, required
        - `hard` string, required
        - `good` string, required
        - `easy` string, required
      - `created_at` string, required
      - `updated_at` string, required
      - `deleted_at` string, nullable, required

---

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