A collection holds memories, and search runs inside exactly one collection.
Create
collection_id is a UUID. Omit it and the client generates one; pass your own
and creating the same id twice with the same body is safe.
curl -X POST "https://api.zeroset.com/v2/workspaces/$WS/collections" \
-H "Authorization: Bearer $NEBULA_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"collection_id": "018f3c2a-6b41-7d8e-9a52-4c1e77b0d3aa", "name": "Support tickets"}'201 with the Collection: collection_id, name, state, metadata,
workspace_id, created_at, updated_at.
Read
collections.get returns one; collections.list returns a CollectionPage
with data, has_more and next_cursor.
Listing and creating collections need a workspace ID. Existing collection
methods need only the collection ID: GET /v2/collections/{collection_id}
resolves its workspace and checks your current access.
Update
PATCH accepts name and metadata. Both are optional; omitted fields are
left alone.
curl -X PATCH "https://api.zeroset.com/v2/collections/018f3c2a-6b41-7d8e-9a52-4c1e77b0d3aa" \
-H "Authorization: Bearer $NEBULA_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"name": "Support tickets (2026)"}'Delete
Deletion is asynchronous. DELETE returns 202 with an
operation of kind collection_delete; the collection and
everything in it disappear when that operation succeeds.
curl -X DELETE "https://api.zeroset.com/v2/collections/018f3c2a-6b41-7d8e-9a52-4c1e77b0d3aa" \
-H "Authorization: Bearer $NEBULA_ACCESS_TOKEN"