Go Scribi

The API

Checklist rows

The rows of a checklist: their text, their own notes, what is ticked, and where each one sits in the tree.

Every call here carries Authorization: Bearer <key> and answers JSON. What is true of every call, and what every refusal means.

GET /api/v1/w/:workspace_id/notes/:note_id/items

The rows of a checklist, as a tree.

needs
read on the thing it touches
answers
items, each with its children.
refusals
unauthorized, not_found
Parameters for GET /api/v1/w/:workspace_id/notes/:note_id/items
Parameter In Type Description
text query boolean
An example
curl -X GET https://goscribi.com/api/v1/w/1188/notes/1271/items \
  -H "Authorization: Bearer $GO_SCRIBI_KEY"

Answers 200:

{
  "items": [
    {
      "id": 216,
      "content": "Bags",
      "note": null,
      "checked": false,
      "checked_at": null,
      "repeats": null,
      "position": 1,
      "children": []
    }
  ]
}

POST /api/v1/w/:workspace_id/notes/:note_id/items

Add a row.

needs
write on the thing it touches
answers
**201**, and the whole note.
refusals
unauthorized, not_found, forbidden, read_only_key, workspace_locked, invalid
Parameters for POST /api/v1/w/:workspace_id/notes/:note_id/items
Parameter In Type Description
content body string The row's own line.
annotation body string The row's note, in Markdown.
parent_id body integer Whose child it is.
after_id body integer Put it below that row. Beats parent_id when both are sent.
checked body boolean Ticked as it is made, recorded with who and when.
An example
curl -X POST https://goscribi.com/api/v1/w/1072/notes/954/items \
  -H "Authorization: Bearer $GO_SCRIBI_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "content": "Bags"
}'

Answers 201:

{
  "note": {
    "id": 954,
    "title": "Packing",
    "type": "checklist",
    "folder": null,
    "diary_date": null,
    "subject": null,
    "created_at": "2026-09-23T00:30:15Z",
    "updated_at": "2026-09-23T00:30:16Z",
    "lock_version": 1,
    "url": "https://goscribi.com/w/1072/notes/954"
  },
  "items": [
    {
      "id": 271,
      "content": "Bags",
      "note": null,
      "checked": false,
      "checked_at": null,
      "repeats": null,
      "position": 1,
      "children": []
    }
  ]
}

PATCH PUT /api/v1/w/:workspace_id/notes/:note_id/items/:id

Change a row, tick it, or move it.

needs
write on the thing it touches
answers
The whole note.
refusals
unauthorized, not_found, forbidden, read_only_key, workspace_locked, invalid
Parameters for PATCH /api/v1/w/:workspace_id/notes/:note_id/items/:id
Parameter In Type Description
content body string The row's own line.
annotation body string The row's note, in Markdown.
parent_id body integer Whose child it is.
after_id body integer Put it below that row. Beats parent_id when both are sent.
checked body boolean The state you want, never an inversion — so it is safe to send twice.
position body integer Where among its siblings, counting from nought.
An example
curl -X PATCH https://goscribi.com/api/v1/w/1081/notes/970/items/273 \
  -H "Authorization: Bearer $GO_SCRIBI_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "checked": true
}'

Answers 200:

{
  "note": {
    "id": 970,
    "title": "Packing",
    "type": "checklist",
    "folder": null,
    "diary_date": null,
    "subject": null,
    "created_at": "2026-09-23T00:30:16Z",
    "updated_at": "2026-09-23T00:30:16Z",
    "lock_version": 1,
    "url": "https://goscribi.com/w/1081/notes/970"
  },
  "items": [
    {
      "id": 273,
      "content": "Bags",
      "note": null,
      "checked": true,
      "checked_at": "2026-09-23T00:30:16Z",
      "repeats": null,
      "position": 1,
      "children": []
    }
  ]
}

DELETE /api/v1/w/:workspace_id/notes/:note_id/items/:id

Remove a row, and everything under it.

needs
write on the thing it touches
answers
The whole note.
refusals
unauthorized, not_found, forbidden, read_only_key, workspace_locked

Removing a row is an ordinary write, not a destroy: it needs write, not create, and it answers with the note rather than with nothing.

An example
curl -X DELETE https://goscribi.com/api/v1/w/779/notes/1445/items/189 \
  -H "Authorization: Bearer $GO_SCRIBI_KEY"

Answers 200:

{
  "note": {
    "id": 1445,
    "title": "Packing",
    "type": "checklist",
    "folder": null,
    "diary_date": null,
    "subject": null,
    "created_at": "2026-09-23T00:30:16Z",
    "updated_at": "2026-09-23T00:30:16Z",
    "lock_version": 4,
    "url": "https://goscribi.com/w/779/notes/1445"
  },
  "items": []
}