Write
move_card
Move a card to an absolute index, optionally across stacks.
Relative vs Absolute Moves
Unlike
reorder_cards which moves a card relatively inside a single stack,move_card is absolute and allows moving cards across different stacks.Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| outlineId | string | — | Outline ID. Defaults to your own outline. |
| stackId | string | Yes | ID of the stack currently containing the card. |
| cardId | string | Yes | ID of the card to move. |
| toIndex | number | Yes | Target index in the destination stack. |
| toStackId | string | — | ID of the destination stack. Defaults to the same stack. |
| ifUpdatedAt | string | — | Optional optimistic-concurrency guard: the outline updatedAt you last read (from get_profile or a previous write's response). If the outline changed since, the call fails with CONFLICT and nothing is written. |
Response
| Field | Type | What it means |
|---|---|---|
| outlineId | string | Resolved outline ID. |
| stackId | string | The stack the card now belongs to. |
| cardId | string | The card that was moved. |
| toIndex | number | The index the card was moved to. |
| updatedAt | string | null | The new updatedAt timestamp. |
Example
Request
json
{
"stackId": "stack_abc",
"cardId": "card_xyz789",
"toIndex": 0,
"toStackId": "stack_def"
}Response
json
{
"outlineId": "42",
"stackId": "stack_def",
"cardId": "card_xyz789",
"toIndex": 0,
"updatedAt": "2026-09-13T00:00:00.000Z"
}