Notes
Read, add, edit and delete notes on prospect contacts.
Notes are free-text entries on a prospect contact, shown on the prospect contact's page in Signal. A prospect contact can have any number of notes.
You can also add a note while creating or updating a prospect contact by sending notes to POST /prospects or PATCH /prospects/{id}.
The note object#
| Field | Type | Notes |
|---|---|---|
id |
string | 25-character ID. |
prospect_id |
string | The prospect contact the note is on. |
content |
string | |
created_by |
string or null | User ID of the author. null when the note was added through the API without an author. |
created_at |
string | ISO 8601 timestamp. |
updated_at |
string | ISO 8601 timestamp. |
JSON
{
"id": "cm3ka2b7t0005ab7cx1y2z3w4",
"prospect_id": "e4b7c1d9-2f6a-4b3e-9c8d-5a1f7e2b4c63",
"content": "Requested a demo from the pricing page.",
"created_by": null,
"created_at": "2026-11-12T09:30:00.000Z",
"updated_at": "2026-11-12T09:30:00.000Z"
}
List notes#
GET /notes · Scope: notes:read
Returns notes newest first.
Query parameters#
| Parameter | Type | Required | Notes |
|---|---|---|---|
prospect_id |
string | No | Only notes on this prospect contact. |
limit |
integer | No | 1 to 100. Default 20. |
cursor |
string | No | meta.cursor from the previous page. |
Example#
curl "https://crm.empiraa.app/api/v1/notes?prospect_id=e4b7c1d9-2f6a-4b3e-9c8d-5a1f7e2b4c63" \
-H "Authorization: Bearer YOUR_API_KEY"
const url = new URL("https://crm.empiraa.app/api/v1/notes");
url.searchParams.set("prospect_id", "e4b7c1d9-2f6a-4b3e-9c8d-5a1f7e2b4c63");
const res = await fetch(url, { headers: { Authorization: "Bearer YOUR_API_KEY" } });
Response 200#
An array of note objects in data; meta has cursor and hasMore.
Add a note#
POST /notes · Scope: notes:write
Request body#
| Field | Type | Required | Notes |
|---|---|---|---|
prospect_id |
string | Yes | A prospect contact in this workspace. |
content |
string | Yes | |
created_by |
string or null | No | User ID to credit as the author: an active member of the workspace, or 404 NOT_FOUND. |
Example#
curl -X POST https://crm.empiraa.app/api/v1/notes \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"prospect_id": "e4b7c1d9-2f6a-4b3e-9c8d-5a1f7e2b4c63", "content": "Asked for a case study in logistics."}'
await fetch("https://crm.empiraa.app/api/v1/notes", {
method: "POST",
headers: { Authorization: "Bearer YOUR_API_KEY", "Content-Type": "application/json" },
body: JSON.stringify({
prospect_id: "e4b7c1d9-2f6a-4b3e-9c8d-5a1f7e2b4c63",
content: "Asked for a case study in logistics.",
}),
});
Response 201#
The new note object in data.
Errors#
| Status | Code | When |
|---|---|---|
| 400 | INVALID_REQUEST |
prospect_id or content is missing. |
| 404 | NOT_FOUND |
No prospect contact with that ID in this workspace, or created_by isn't an active member of it. |
Webhook events: none.
Get a note#
GET /notes/{id} · Scope: notes:read
Example#
curl https://crm.empiraa.app/api/v1/notes/cm3ka2b7t0005ab7cx1y2z3w4 \
-H "Authorization: Bearer YOUR_API_KEY"
await fetch("https://crm.empiraa.app/api/v1/notes/cm3ka2b7t0005ab7cx1y2z3w4", {
headers: { Authorization: "Bearer YOUR_API_KEY" },
});
Response 200#
The note object in data.
Errors#
| Status | Code | When |
|---|---|---|
| 404 | NOT_FOUND |
No note with that ID in this workspace. |
Edit a note#
PATCH /notes/{id} · Scope: notes:write
Request body#
| Field | Type | Notes |
|---|---|---|
content |
string | The new text. |
Example#
curl -X PATCH https://crm.empiraa.app/api/v1/notes/cm3ka2b7t0005ab7cx1y2z3w4 \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"content": "Asked for a case study in cold-chain logistics."}'
await fetch("https://crm.empiraa.app/api/v1/notes/cm3ka2b7t0005ab7cx1y2z3w4", {
method: "PATCH",
headers: { Authorization: "Bearer YOUR_API_KEY", "Content-Type": "application/json" },
body: JSON.stringify({ content: "Asked for a case study in cold-chain logistics." }),
});
Response 200#
The updated note object in data.
Errors#
| Status | Code | When |
|---|---|---|
| 404 | NOT_FOUND |
No note with that ID in this workspace. |
Delete a note#
DELETE /notes/{id} · Scope: notes:write
Deletes the note permanently.
Example#
curl -X DELETE https://crm.empiraa.app/api/v1/notes/cm3ka2b7t0005ab7cx1y2z3w4 \
-H "Authorization: Bearer YOUR_API_KEY"
await fetch("https://crm.empiraa.app/api/v1/notes/cm3ka2b7t0005ab7cx1y2z3w4", {
method: "DELETE",
headers: { Authorization: "Bearer YOUR_API_KEY" },
});
Response 204#
No body.
Errors#
| Status | Code | When |
|---|---|---|
| 404 | NOT_FOUND |
No note with that ID in this workspace. |

