Archive a Record
Archive and restore records to hide them from active lists without deleting their data.
Archiving a record takes it out of its list without deleting it. The data — title, description, dates, assignees, tags, comments, checklists, and custom-field values — is preserved in full and reappears the moment you restore the record. Use the archiveRecord mutation to archive a record and unarchiveRecord to restore it. Records are Record objects in the API.
Archiving differs from deleting a record: a deleted record is moved to Trash and purged after the organization’s retention window, and only a project OWNER/ADMIN can restore it, whereas any member with edit access can archive and unarchive. It is also distinct from completion: a completed record (done: true) still lives in its list, whereas an archived record is hidden from it.
Both mutations take the record id and return the updated Record.
Request
Archive a record by passing its ID:
mutation ArchiveRecord {
archiveRecord(id: "todo_123") {
id
archived
archivedAt
}
}Restore it later with unarchiveRecord:
mutation RestoreRecord {
unarchiveRecord(id: "todo_123") {
id
archived
todoList {
id
title
}
}
}Parameters
archiveRecord
| Parameter | Type | Required | Description |
|---|---|---|---|
id | String! | Yes | ID of the record to archive. |
unarchiveRecord
| Parameter | Type | Required | Description |
|---|---|---|---|
id | String! | Yes | ID of the record to restore. |
Response
Both mutations return the updated Record. After archiveRecord, archived is true and archivedAt carries the archive timestamp; after unarchiveRecord, archived is false and archivedAt is null.
{
"data": {
"archiveRecord": {
"id": "todo_123",
"archived": true,
"archivedAt": "2026-06-05T14:21:00.000Z"
}
}
}Returns
| Field | Type | Description |
|---|---|---|
archived | Boolean! | true after archiving, false after restoring. |
archivedAt | DateTime | When the record was archived. null once restored. |
todoList | RecordList! | The record’s list. Unchanged by archiving — a restored record returns to the same list. |
See List records for the full set of selectable Record fields.
What archiving does
When you archive a record, the API:
- Marks it archived and records the timestamp and the acting user. The record drops out of its list’s active view and out of list-records results unless you explicitly query the archive (see Archive scope).
- Notifies connected clients in real time so the card disappears from open sessions.
- Excludes the record from charts and reports, whose counts recalculate accordingly.
The record’s list and position are left untouched. unarchiveRecord clears the archived flag and timestamp, and the record snaps back to exactly the spot it occupied before — there is no need to move or re-position it.
Re-archiving an already-archived record (or restoring an already-active one) is a no-op: the mutation returns the current record unchanged rather than erroring, and the original archivedAt / archived-by audit data is preserved. This is unlike archiving a workspace, where calling the mutation in the wrong state returns FORBIDDEN.
Errors
| Code | When |
|---|---|
TODO_NOT_FOUND | No record exists with the given id, or the caller can’t access it. |
FORBIDDEN | The caller lacks permission to archive or restore the record (see below). |
{
"errors": [
{
"message": "Todo was not found.",
"extensions": { "code": "TODO_NOT_FOUND" }
}
]
}Permissions
| Access level | Archive / Restore |
|---|---|
OWNER | Yes |
ADMIN | Yes |
MEMBER | Yes |
CLIENT | No |
COMMENT_ONLY | No |
VIEW_ONLY | No |
The record’s workspace must be active (not archived). Custom roles can further restrict these actions independently: a role with canArchiveRecords: false is denied archiving, and one with canUnarchiveRecords: false is denied restoring, even at an otherwise-permitted access level. Restoring deliberately does not require the view-archived permission — a role that can reach an archived record by direct link or reference can restore it without being able to browse the archive.
Related
- List records — query the archive with the
archivedfilter; see Archive scope. - Toggle completion — mark a record done without removing it from its list.
- Archive a workspace — the workspace-level equivalent.
- Records overview — the full record operation surface.