---
title: "Move a card to another deck"
method: POST
path: "/cards/{cardId}/move"
---

# Move a card to another deck

`POST /cards/{cardId}/move`

## Request

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

Write. Move an active card this token owns into another deck this token owns. Body is { deckId }. Unknown keys are rejected. CardSchedule and past reviews stay, so dueAt and learning or review state do not change. A second call when the card is already in that deck returns alreadyThere true and does not rewrite the schedule. A retired card is 404, the same as get and reveal. A card in an archived deck is 404 until that deck is unarchived. An archived target deck is 404. Another token's card or target deck is 404. Inventory the source deck first when you do not have the cardId. The response includes the prompt and does not include the answer.

## Path parameters

- `cardId` string, uuid, required

## Request body

- object
  - `deckId` string, uuid, required

## Response `200`

The card is in the target deck. The answer is not echoed. dueAt is unchanged.

- object
  - `cardId` string, uuid, required
  - `deckId` string, uuid, required
  - `previousDeckId` string, uuid, required
  - `prompt` string, required
  - `dueAt` string, required: UTC ISO-8601 timestamp ending in Z
  - `answerIncluded` false, required
  - `alreadyThere` boolean, required

## Other responses

- `400`: deckId is missing, not a uuid, or the body has extra fields.
- `401`: Missing or wrong token.
- `404`: No active card in an active deck for this token, or the target deck is missing, archived, or another tenant's.

---

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