Notes
Attach free-text notes to a customer. Notes support Markdown and an optional reminder. Each note belongs to one customer (installation), so you need the customer's ID from the Customers endpoints.
Notes are the write resource in the Customers section. Listing uses the crm:read scope; creating, updating, and deleting use crm:write. The :installation in the path is the customer's ID.
List notes
Returns a customer's notes, newest first. Requires crm:read.
Path parameters
- Name
app- Type
- string
- Description
The team app's ULID, e.g.
01JN4HKQX0000000000000000.
- Name
installation- Type
- integer
- Description
The customer's ID, from the Customers endpoints.
Request
curl https://ranksyapp.com/api/v1/apps/01JN4HKQX0000000000000000/customers/4210/notes \
-H "Authorization: Bearer rk_live_..."
Response
{
"data": [
{
"id": 42,
"title": "Follow-up call",
"body": "Discussed pricing. Interested in the Pro plan.",
"author": "John Doe",
"remind_at": null,
"remind_user_id": null,
"created_at": "2026-08-03T14:30:00Z",
"updated_at": "2026-08-03T14:30:00Z"
}
]
}
Create a note
Creates a note on the customer. title is required. Requires crm:write. Returns 201 Created.
Request body
- Name
title- Type
- string
- Description
Note title, max 255 characters.
- Name
body- Type
- string
- Description
Note content in Markdown, max 10,000 characters.
- Name
remind_at- Type
- string
- Description
ISO-8601 time to send a reminder email. Omit for no reminder.
- Name
remind_user_id- Type
- integer
- Description
The user to remind. Defaults to the note's author.
- Name
remind_email- Type
- string
- Description
An email to remind, instead of
remind_user_id.
Request
curl -X POST https://ranksyapp.com/api/v1/apps/01JN4HKQX0000000000000000/customers/4210/notes \
-H "Authorization: Bearer rk_live_..." \
-H "Content-Type: application/json" \
-d '{
"title": "Follow-up call",
"body": "Discussed pricing. Interested in the Pro plan.",
"remind_at": "2026-08-10T09:00:00Z",
"remind_email": "[email protected]"
}'
201 — Created
{
"data": {
"id": 43,
"title": "Follow-up call",
"body": "Discussed pricing. Interested in the Pro plan.",
"author": "John Doe",
"remind_at": "2026-08-10T09:00:00Z",
"remind_user_id": 7,
"created_at": "2026-08-09T18:02:00Z",
"updated_at": "2026-08-09T18:02:00Z"
}
}
Update a note
Updates a note. Same fields as create — send only the ones you change. Requires crm:write.
Path parameter
- Name
note- Type
- integer
- Description
The note's ID.
Request
curl -X PUT https://ranksyapp.com/api/v1/apps/01JN4HKQX0000000000000000/customers/4210/notes/43 \
-H "Authorization: Bearer rk_live_..." \
-H "Content-Type: application/json" \
-d '{ "body": "Signed up for the Pro plan." }'
200 — Updated
{
"data": {
"id": 43,
"title": "Follow-up call",
"body": "Signed up for the Pro plan.",
"author": "John Doe",
"remind_at": "2026-08-10T09:00:00Z",
"remind_user_id": 7,
"created_at": "2026-08-09T18:02:00Z",
"updated_at": "2026-08-09T19:14:00Z"
}
}
Delete a note
Permanently deletes the note. Requires crm:write. Returns 204 No Content with an empty body.
Request
curl -X DELETE https://ranksyapp.com/api/v1/apps/01JN4HKQX0000000000000000/customers/4210/notes/43 \
-H "Authorization: Bearer rk_live_..."
Errors
Beyond the universal 401 / 403 / 422 / 429 (see Errors): a missing or foreign note ID returns 404 resource_not_found, and a create, update, or delete without the crm:write scope returns 403 insufficient_permissions.