timeline_mode explicit. A card changes once for every group of its card_add, card_move, card_leave_board and card_join_board steps in activities that share a created_at; steps about people do not change the card. Write one snapshot for every change except the last, with no gaps and no repeats. A snapshot keeps the title, description, board, column, lane, type, owner, ASAP flag, due date, size, estimate, and planned dates; custom property values are not kept, and an earlier state is never archived. Who made a change is the author_ref of its steps in activities. Nothing is guessed or filled in: a history that contradicts the card or the activities is rejected.resource_files of the manifest, with "resource": "card_history". An entity can have any number of files. See Bundle format.[
{
"resource": "card_history",
"path": "resources/card_history.json"
}
]| Field | Type | Required | Description |
|---|---|---|---|
external_id | string (ExternalId) | Yes | Your own identifier of the record, for example k-mrr, unique within the resource across all of its files and case sensitive. Other records refer to this one by it.Constraints: 1–512 characters. |
card_ref | Ref<cards> refers to Cards | Yes | The card this snapshot belongs to. Give the external_id of a cards record. |
changed_at | Timestamp | Yes | Time of the change that produced this state; it equals the created_at of the card actions of that change. A card has at most one snapshot for a changed_at.Constraints: RFC 3339 with a time zone. |
snapshot | object refers to Boards or Card types or Columns or Lanes or Users | Yes | The fields of the card in that state: title, board_ref, column_ref and type_ref are required; description, lane_ref, owner_ref, asap, due_date, size, estimate_workload, planned_start and planned_end are optional. |
snapshot.board_ref | Ref<boards> refers to Boards | Yes | Board of the card. Constraints: 1–512 characters. |
snapshot.column_ref | Ref<columns> refers to Columns | Yes | Column of the card. Constraints: 1–512 characters. |
snapshot.title | string | Yes | Card title. Constraints: 1–1024 characters. |
snapshot.type_ref | Ref<card_types> refers to Card types | Yes | Type of the card. Constraints: 1–512 characters. |
snapshot.asap | boolean | No | Whether the card is marked as urgent. |
snapshot.description | RichText? | No | Card description. |
snapshot.due_date | DateValue? | No | Due date. |
snapshot.estimate_workload | number? | No | Estimated workload in hours, up to two decimal places. Constraints: minimum 0; maximum 99999.99. |
snapshot.lane_ref | Ref<lanes>? refers to Lanes | No | Lane the card was in at that state, a lane of board_ref. Absent or null means the first lane of that board, that is the first lanes record of the board.Constraints: 1–512 characters. |
snapshot.owner_ref | Ref<users>? refers to Users | No | Owner of the card. Constraints: 1–512 characters. |
snapshot.planned_end | DateValue? | No | Planned end. |
snapshot.planned_start | DateValue? | No | Planned start. |
snapshot.size | object? | No | Card size. |
snapshot.size.display | string | Depends on the variant | The size as the card shows it, for example 3 SP, or XL for a T-shirt size. Give value, display or both: without display the card shows value and unit together; a size that is not a number, such as XL, needs only display. Charts count only value.Constraints: at most 267 characters. |
snapshot.size.value | number | Depends on the variant | Numeric size. |
snapshot.size.unit | string | No | Unit of value, for example SP for story points or h for hours. Without display the card shows the value and the unit together, for example 3 SP.Constraints: at most 256 characters. |
{
"external_id": "ch-k-mrr-1",
"card_ref": "k-mrr",
"changed_at": "2026-01-12T09:30:00Z",
"snapshot": {
"title": "Monthly recurring revenue",
"board_ref": "b-kpi",
"column_ref": "c-backlog",
"lane_ref": "l-core",
"type_ref": "ct-metric",
"owner_ref": "u-ava",
"asap": false
}
}