Skip to content
LogoLogo

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"