Endpoints
Method | Path | Description |
|---|---|---|
POST |
| Create a new note |
GET |
| Get a note by ID |
GET |
| List notes |
PATCH |
| Update a note |
DELETE |
| Delete a note |
POST |
| Search notes by title |
Create a Note
Required Fields
Field | Type | Description |
|---|---|---|
| string | Note title |
Optional Fields
Field | Type | Description |
|---|---|---|
| string | Body content as Markdown |
| string | Body content as blocknote JSON (stringified) |
Shortcut: Instead of providing
bodyV2, you can send plain text in abodyfield and the API will auto-convert it to the correctbodyV2format:
Request Example — Plain Body (Simplest)
Request Example — Rich Body (bodyV2)
Understanding the Blocknote Format
When providing bodyV2 directly (rather than using the plain body shortcut), both markdown and blocknote are required.
The blocknote value is a JSON-stringified array of paragraph blocks. Each paragraph is one block:
Rules:
Each block needs a unique UUID-format
id— UUIDs don't need to be real database UUIDs, just unique strings in that formatSplit multi-paragraph content into one block per paragraph (split on
\n)The entire
blocknotefield value is a JSON string (not an object) — stringify the array before sending
Get a Note
Parameter | Type | Default | Description |
|---|---|---|---|
| UUID (path) | — | Note ID |
| number | 0 |
|
List Notes
Parameter | Type | Default | Description |
|---|---|---|---|
| number | 60 | Records per page |
| UUID | — | Pagination cursor (last record's ID) |
| string | — | Sort field and direction |
| string | — | Filter conditions |
| number | 0 | Related objects depth |
Update a Note
Send only the fields you want to change.
Updatable fields: title, bodyV2
Delete a Note
Note: Deleting a note also removes any associated Note Relations. The linked records (person, company, opportunity) are not affected.
Search Notes
Notes are searched by title only using GraphQL. Body content is not searchable.
By Title — GraphQL + REST (Two Steps)
Step 1: GraphQL search → get IDs
GraphQL caveats:
searchInputis a plainString!variable
limitmust be hardcoded in the query stringReturns IDs only
Step 2: Fetch full records
Linking Notes to Records
Notes must be explicitly linked to CRM records using the Note Relation endpoint. A single note can be linked to multiple records.
Workflow: Create a Note and Link It
Find All Notes for a Person
The response includes the full note object when depth >= 1.
Filter Examples
Common Gotchas
Notes are standalone. They are not directly attached to people or companies — a separate Note Relation (
/rest/noteTargets) is required to create the link.Body uses blocknote JSON format. The
bodyV2field requires bothmarkdownandblocknote. Use the plainbodyshortcut to avoid constructing blocknote JSON manually.Blocknote IDs must be unique. Each block in the blocknote array needs a unique UUID-format
id. Duplicate IDs cause rendering issues.Search is title-only. GraphQL search does not index note body content — only the title.
id[in]requires bracket syntax. Useid[in]:[uuid1,uuid2]— brackets are required.URL-encode filter parameters. Use
curl -G --data-urlencode "filter=...".