Cheqq Docs
Developers

Quickstart

Create an API key, check it works, and read the records in one of your Wapps.

This takes a few minutes and a terminal. You'll create a key, ask Cheqq who the key is, find a collection and read its records.

1. Create a key

In Cheqq, open Settings → Developer and select Create key.
Give it a Name you'll recognise later, such as "My laptop".
Leave What it can do as it is. A new key can see everything, add and change records, and run automations.
Select Create key, then Copy key. This is the only time Cheqq shows it.

The key starts with cqk_. Keep it in an environment variable rather than in your code:

export CHEQQ_API_KEY="cqk_your_key_here"

2. Check it works

curl https://cheqq.ai/api/platform/v1/me \
  -H "Authorization: Bearer $CHEQQ_API_KEY"
{
  "credential": { "kind": "api_key", "id": "5f0c…", "name": "My laptop" },
  "userId": "2b9e…",
  "workspace": { "id": "8d41…", "name": "Acme Studio", "role": "owner" },
  "scopes": [
    "records:read",
    "records:write",
    "structure:read",
    "workflows:read",
    "workflows:run",
    "documents:read",
    "apps:read"
  ],
  "rateLimit": { "requestsPerMinute": 1000 }
}

scopes is what this key may do, and rateLimit is how many requests a minute your plan gives it.

3. Find a collection

List your Wapps, then the collections in one of them by its slug:

curl https://cheqq.ai/api/platform/v1/wapps \
  -H "Authorization: Bearer $CHEQQ_API_KEY"

curl "https://cheqq.ai/api/platform/v1/collections?wapp=content-studio" \
  -H "Authorization: Bearer $CHEQQ_API_KEY"

Each collection comes with its id and its fields. A field's slug is its key: you use it to read, filter and write values, and it stays the same when someone renames the field.

4. Read records

curl "https://cheqq.ai/api/platform/v1/collections/COLLECTION_ID/records?limit=20" \
  -H "Authorization: Bearer $CHEQQ_API_KEY"
{
  "records": [
    {
      "id": "a3f1…",
      "collectionId": "COLLECTION_ID",
      "data": { "title": "Launch post", "publish_on": "2026-10-20" },
      "createdAt": "2026-10-14T09:12:44.000Z",
      "updatedAt": "2026-10-14T09:30:02.000Z"
    }
  ],
  "nextCursor": "a3f1…",
  "hasMore": true
}

data is keyed by field key, and a select value reads as { "id": "…", "label": "Draft" }. Pass nextCursor back as cursor for the next page, and add filter.<field key>=value to keep only records whose field equals a value (a select matches its label, and a multi-select any record that has that option).

5. Add a record

curl -X POST https://cheqq.ai/api/platform/v1/collections/COLLECTION_ID/records \
  -H "Authorization: Bearer $CHEQQ_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "data": { "title": "Behind the scenes", "status": "Draft" } }'

Name fields by key or by the label people see. A select field takes the option's label. A name no field answers to is refused with a list of the fields it could have meant, so a typo never quietly drops a value.

The record appears in the Wapp straight away, and any automation that runs on new records runs for it.

Next

Was this page helpful?