---
title: "Create a card; repeating a client-generated id returns the existing card"
method: POST
path: "/revise/cards"
tags: ["revise"]
---

# Create a card; repeating a client-generated id returns the existing card

`POST /revise/cards`

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

## Request body

- CreateReviseCardDto
  - `front` string, required
  - `back` string, required
  - `id` string, uuid: Client-generated id; repeating it returns the existing card
  - `source_type` 'manual' | 'note' | 'pdf' | 'anki' | 'algoapp' | 'file': Import sources are accepted too: the Mac reads Anki and AlgoApp files itself (preview mode) and copies those cards to the account, and they must stay imported cards, due at once and outside the daily new-card allowance. Refusing them failed every 100-card batch of a copy with a 400.
  - `source_note_id` string, uuid: The user's note the card came from
  - `source_label` string: PDF file name or note title
  - `created_by` 'user' | 'ai'
  - `deck_id` string, uuid

## Response `201`

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