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.


GET/api/v1/apps/:app/customers/:installation/notes

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

GET
/api/v1/apps/:app/customers/:installation/notes
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"
    }
  ]
}

POST/api/v1/apps/:app/customers/:installation/notes

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

POST
/api/v1/apps/:app/customers/:installation/notes
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"
  }
}

PUT/api/v1/apps/:app/customers/:installation/notes/:note

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

PUT
/api/v1/apps/:app/customers/:installation/notes/:note
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/api/v1/apps/:app/customers/:installation/notes/:note

Delete a note

Permanently deletes the note. Requires crm:write. Returns 204 No Content with an empty body.

Request

DELETE
/api/v1/apps/:app/customers/:installation/notes/:note
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.

Was this page helpful?