---
title: "Start a review session: due cards first, then new cards"
method: POST
path: "/revise/sessions/start"
tags: ["revise"]
---

# Start a review session: due cards first, then new cards

`POST /revise/sessions/start`

## 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/sessions/start`
- Auth: HTTP bearer

## Request body

- StartReviseSessionDto
  - `deck_id` string, uuid: Review one deck; omit for every deck
  - `review_limit` number
  - `new_cards_per_day` number

## Response `200`

- StartReviseSessionResponseDto
  - `cards` ReviseCardResponseDto[], required: Due review cards first, then imported cards never reviewed, then new cards
    - `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
  - `due_count` number, required: Review cards due now plus imported cards never reviewed, in scope, before the limit
  - `new_count` number, required: Never-reviewed cards made in Revise, in scope, before the daily limit

## Other responses

- `409`: REVISE_REWRITE_REQUIRED: cards flagged "No idea" must be rewritten or kept first; body lists them

---

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