Docs · Work
Case operations
Lifecycle operations available on Work items: clone, duplicate, archive, restore, merge, batch, pin, unpin, assign, and tag.
Overview
Beyond creating and running Work items, Zero exposes a set of management operations for organising, triaging, and relating items across a project.
Clone and duplicate
Clone copies a Work item's metadata and memory files into a new item with a fresh state. The original item is unchanged. Use clone when you want to re-run a resolved item against a different branch or context.
POST /cases/:id/cloneDuplicate is a shallow copy — title and description only, no memory files. Use duplicate for creating a follow-on item from a template or pattern.
POST /cases/:id/duplicateArchive and restore
Archiving removes a Work item from the active list without deleting it. Memory files are preserved. Archived items do not appear in the default Work queue.
POST /cases/:id/archive
POST /cases/:id/restore
PATCH /cases/:id/set-archived # { "archived": true|false }set-archived is the toggle form; the two POST routes are convenience aliases.
Merge and batch
Merge combines two Work items into one. The secondary item's sessions and memory are appended to the primary. Both IDs must belong to the same project.
POST /cases/merge
{ "primary_id": "...", "secondary_id": "..." }Batch applies a single operation to multiple Work items in one request. Supported operations: archive, assign, tag.
POST /cases/batch
{ "ids": ["...", "..."], "op": "archive" | "assign" | "tag", ... }Pin and unpin
Pinned Work items are persisted in a local list and surfaced at the top of the queue. Pin state is per-machine — it is not synced to the console.
POST /cases/:id/pin
POST /cases/:id/unpin
GET /cases/pinned # returns array of pinned IDs
GET /pinned # aliasAssign and tag
Assign a Work item to a user identity. The assigned user appears in the item's metadata and can be used to filter the queue.
PATCH /cases/:id/assign
{ "assignee": "user-id" }Tags are free-form strings stored on the Work item. Replace the full tag list with a PUT.
PUT /cases/:id/tags
{ "tags": ["auth", "urgent"] }Similar and clusters
Zero can surface Work items that share similar titles or descriptions using a Jaccard-similarity pass over the in-memory case list.
GET /cases/similar?q=<title-fragment>
GET /cases/clusters/cases/clusters groups the full Work list by shared token overlap. Use it to identify duplicate or related Work before merging.
API reference
| Method | Path | Description |
|---|---|---|
| POST | /cases/:id/clone | Clone with memory files |
| POST | /cases/:id/duplicate | Shallow copy |
| POST | /cases/:id/archive | Move to archive |
| POST | /cases/:id/restore | Restore from archive |
| PATCH | /cases/:id/set-archived | Toggle archive state |
| POST | /cases/merge | Merge two items |
| POST | /cases/batch | Batch operation |
| POST | /cases/:id/pin | Pin to top |
| POST | /cases/:id/unpin | Unpin |
| GET | /cases/pinned | List pinned IDs |
| PATCH | /cases/:id/assign | Assign to user |
| PUT | /cases/:id/tags | Replace tag list |
| GET | /cases/similar | Similarity search |
| GET | /cases/clusters | Cluster grouping |