SnozeDevelopers

Quickstart

From an API key to a record you created, in five requests.

Everything below is one curl at a time against the platform surface, the flat /v1/... routes an API key is made for. Replace $SNOZE_API_KEY with a key from Workspace settings → API keys (how to create one).

1. Check the key

curl "https://api.snoze.dev/v1/items?limit=1" \
  -H "Authorization: Bearer $SNOZE_API_KEY"

A 200 with a data.items array means the key works and is pinned to a workspace. A 401 means the key is wrong or revoked; a 403 means it lacks a scope. See Errors.

2. Find a database

Items are everything in the sidebar: pages, databases, dashboards, canvases, folders. Filter by kind.

curl "https://api.snoze.dev/v1/items?kind=database" \
  -H "Authorization: Bearer $SNOZE_API_KEY"
{
  "data": {
    "items": [
      {
        "id": "9f2c1e7a-3b58-4d0c-8e27-6a1f9d4b3c85",
        "kind": "database",
        "title": "Production board"
      }
    ],
    "cursor": null
  }
}

Keep the id. When cursor is not null, pass it back as ?cursor= to get the next page.

3. Read its records

curl "https://api.snoze.dev/v1/databases/9f2c1e7a-3b58-4d0c-8e27-6a1f9d4b3c85/records?limit=20" \
  -H "Authorization: Bearer $SNOZE_API_KEY"

Two useful filters: viewId returns the records a saved view shows, with that view's filters and sort applied, and search matches against titles. Each record carries title and a data object keyed by the database's field keys. The shape of data is in Database records.

4. Create a record

curl -X POST "https://api.snoze.dev/v1/databases/9f2c1e7a-3b58-4d0c-8e27-6a1f9d4b3c85/records" \
  -H "Authorization: Bearer $SNOZE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "title": "Localisation pass", "data": { "status": "todo", "priority": "medium" } }'

The response is the full record, including its new id. Field keys and option keys are the database's own; read one existing record first to see them.

5. Update it

curl -X PATCH "https://api.snoze.dev/v1/records/1d8a44e0-7c93-4f21-b60a-3e8d2f5a9c14" \
  -H "Authorization: Bearer $SNOZE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "data": { "status": "doing" } }'

PATCH merges: send only the fields that changed. Set "archived": true to archive instead of deleting.

Where next

  • Push instead of poll: Webhooks deliver signed events for record and item changes.
  • Give an agent the workspace: the MCP server exposes the same operations to Claude, Cursor and other clients, with the same permissions and approval rules the in-app assistant has.
  • Files: upload and attach with the files endpoints.
  • Limits: rate limits and how to back off.

Keys carry your permissions

A key can never do more than the member who created it. Scopes narrow a key; they never widen it.

On this page