Internal Notes API
Create customer internal notes programmatically—single and bulk.
Create internal notes on a customer record. Notes created here appear in the customer's Internal Notes section in the dashboard, and stay editable and deletable there.
POST /v1/internal-notes— create a single note.POST /v1/internal-notes/bulk— create up to 1000 notes in one request.
The full, always-current request/response schema and status codes are
published at /docs on the API host — use that as the source of truth; this
page intentionally doesn't duplicate it, since a second hand-maintained copy
drifts out of date.
Authentication
Header x-api-key: <key>. Each key is scoped to one publication — a note can
only be written on that publication's customers — so there is no
publicationId in the body.
The bulk endpoint requires the same write permission as the single-note one.
Identifying the customer
Every request identifies the customer with exactly one of email,
subscriptionId (Stripe subscription id), or customerId (the customer's
public uuid, as shown in the CRM UI) — zero or multiple returns 422.
agentEmail (required) is a CRM agent's own email, used to attribute the
note to them — there is no default account, so every note must name a real
person. You only need your own email — there is no separate id to look up.
Examples
Single note:
curl -i -X POST "https://v1.api.coeditor.io/v1/internal-notes" \
-H "x-api-key: {API_KEY}" \
-H "Content-Type: application/json" \
-d '{"customerId": "91a333ec-7ee2-4c55-a1ee-1f0b4eda4a38", "subject": "Refund issued", "details": "£20 refunded via Stripe.", "agentEmail": "agent@example.com"}'Bulk — 1 to 1000 items per request, each resolved and created independently so one bad item never fails the batch:
curl -i -X POST "https://v1.api.coeditor.io/v1/internal-notes/bulk" \
-H "x-api-key: {API_KEY}" \
-H "Content-Type: application/json" \
-d '{
"agentEmail": "agent@example.com",
"notes": [
{ "customerId": "91a333ec-7ee2-4c55-a1ee-1f0b4eda4a38", "subject": "Refund", "details": "…" },
{ "email": "reader@example.com", "subject": "Note", "details": "…" }
]
}'The bulk response reports a per-item status (created / not_found /
rejected) correlated to the input by index — partial success is normal, not
an error. See /docs for the exact response shape and status codes.