init.Tasks openapi.json inittasks.com

where a note lives, and the three things it can be connected to

Notes, folders and links

A note is a page of Markdown you keep and read. It has no checkbox, no dates, no tags and no priority, so it never appears in a date view. It needs a title or a body, or both: a note that is only a title is fine.

Three things can connect to a note. They are independent of each other:

connection field how many
its folder folderId, a note folder none or one
its attachment parentId, an area, a project or a subproject none or one
its linked to-dos links, made with POST /v1/notes/{id}/links any number

A to-do never owns a note. It is only ever linked to one, and the same note can be linked to many to-dos.

A note can also be pinned (pinned: true), and it can hold attachments of its own: POST /v1/attachments with "parentType": "note".

Where a note shows

The apps decide where to show a note from those three fields. Nothing about its place is stored, so you only ever set the fields. GET /v1/notes?placement= asks the same question:

Some places show a note as well as its home:

Lists of notes put pinned notes first, then the rest, each by editedAt, newest first. GET /v1/notes?order=edited returns that order.

Writing notes

bash
curl -s https://api.inittasks.com/v1/notes \
  -X POST \
  -H "Authorization: Bearer $INITTASKS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"title": "Packing list", "body": "- passport\n- charger", "pinned": true}'
json
{
  "id": "8E4F2A1B-7C3D-4E5F-9A0B-1C2D3E4F5A6B",
  "parentId": null,
  "folderId": null,
  "pinned": true,
  "pinnedAt": "2026-10-01T21:40:12.031Z",
  "editedAt": "2026-10-01T21:40:12.031Z",
  "links": [],
  "title": "Packing list",
  "body": "- passport\n- charger",
  "sortKey": "a0",
  "trashedAt": null,
  "createdAt": "2026-10-01T21:40:12.448+00:00",
  "updatedAt": "2026-10-01T21:40:12.448+00:00"
}

PATCH /v1/notes/{id} changes title, body, folderId and pinned. The note must keep a title or a body, so clearing both is validation_failed at /body. Changing the attachment is POST /v1/notes/{id}/move with a parentId, because it also places the note among that container's rows.

Folders

A note folder has a name, an optional colorHex and an optional symbol (an SF Symbol name, folder when it is null). Folders nest one level: a top-level folder can hold folders, and those hold only notes.

bash
curl -s https://api.inittasks.com/v1/note-folders \
  -X POST \
  -H "Authorization: Bearer $INITTASKS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"name": "Recipes", "colorHex": "#33AA66", "symbol": "fork.knife"}'

Then put a note in it:

bash
curl -s "https://api.inittasks.com/v1/notes/$NOTE_ID" \
  -X PATCH \
  -H "Authorization: Bearer $INITTASKS_TOKEN" \
  -H "Content-Type: application/json" \
  -d "{\"folderId\": \"$FOLDER_ID\"}"
bash
curl -s "https://api.inittasks.com/v1/notes/$NOTE_ID/links" \
  -X POST \
  -H "Authorization: Bearer $INITTASKS_TOKEN" \
  -H "Content-Type: application/json" \
  -d "{\"todoId\": \"$TODO_ID\"}"
json
{
  "id": "C1D2E3F4-0A1B-4C2D-8E3F-405162738495",
  "noteId": "8E4F2A1B-7C3D-4E5F-9A0B-1C2D3E4F5A6B",
  "todoId": "5B6C7D8E-9F0A-4B1C-8D2E-3F4A5B6C7D8E",
  "createdAt": "2026-10-01T21:41:03.512Z"
}

Linking a pair that is already linked returns the existing link with 200 instead of 201, so it is safe to retry. Unlinking is DELETE /v1/notes/{id}/links/{todoId}; it changes neither the note nor the to-do.

The notes linked to a to-do:

bash
curl -s "https://api.inittasks.com/v1/todos/$TODO_ID/notes" \
  -H "Authorization: Bearer $INITTASKS_TOKEN"

A link to a to-do or a note in the trash is hidden, not deleted: it comes back when the row is restored. Deleting a note or a to-do for good deletes its links. Deleting a note never deletes a to-do.

Two devices that link the same pair while offline make two links. Every app and the API keep the older one (by createdAt, then by id) and delete the other, so the pair ends up with one.

Finding notes

GET /v1/notes takes these filters, combined with AND:

parameter keeps
folder_id notes in that folder; null for notes in no folder
parent_id notes attached to that container; null for notes attached to nothing
linked_todo_id notes linked to that to-do
pinned true or false
placement folder, attached or orphan (see where a note shows)
q text in the title, the body or the folder's name
bash
curl -s "https://api.inittasks.com/v1/notes?placement=attached&order=edited" \
  -H "Authorization: Bearer $INITTASKS_TOKEN"

Trash

See trash.

Events

A folder sends note_folder.created, note_folder.updated and note_folder.deleted. Making a link sends note.linked and removing one sends note.unlinked; the event's data.id is the link id, which GET /v1/note-links/{id} resolves while it exists. There is no restored event: restoring is an updated, because the server cannot read trashedAt. See webhooks.

Scopes

Folders and links need nothing new: notes:read reads them and notes:write writes them. GET /v1/todos/{id}/notes also needs todos:read. See scopes.

In MCP

list_notes (with the same filters), list_note_folders, create_note_folder, update_note_folder, trash_note_folder, link_note_task and unlink_note_task; create_note and update_note take folder and pinned, and create_note takes link_todo_ids. See the tools.