For: Admins
Add notes to cases with a hub key
Create internal notes on a case from your own software, give them a document and files, and choose which roles can see them.
In this article7 sections
Before you start
This page covers adding and reading a case's notesNotes Internal notes on a case that only people whose role allows it can see; clients can't see them unless the firm changes that. with a hub key. Paths are under https://prd-api-app.caseactive.com/v1/<hub id>/<case id>.
Calls
| Call | What it does |
|---|---|
GET /notes/templates | Lists your note templates |
POST /notes | Creates a note |
GET /notes | Lists the case's notes, newest first |
GET /notes/<note_id> | Reads one note |
PUT /notes/<note_id> | Changes a note's title or who sees it |
DELETE /notes/<note_id> | Deletes a note, with its files |
A note is a document kept on a case for your team, with any files that go with it. Its content is the document: start from a template, or upload a PDF or Word file once the note exists. There's no text field. Nobody is told when a note is added or changed, and notes send no webhooks.
Creating a note
| Field | What it does | Required | Default |
|---|---|---|---|
name | The note's title. Letters, numbers, spaces and & ' - _ ( ) . /; no commas, colons, question marks or quotes. | Yes | — |
permissions | The rolesRole A set of permissions that decides what someone can see and do on a case, such as staff or clients. that may see it, such as ["role::staff"]. Only roles that can read notes. | No | The template's roles, or every role that can read notes |
template | {"owner": "host", "template_id": "<asset_id>"} from GET /notes/templates, to bring a template's document and files, or {"owner": "case", "template_id": "<note_id>"} to copy a note on this case | No | None |
curl -X POST https://prd-api-app.caseactive.com/v1/ca-7e6d5c4b3a2f10/cc-1a2b3c4d5e6f70/notes \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"name": "Case representation letter", "permissions": ["role::staff"], "template": {"owner": "host", "template_id": "note::20260915101500_5e4d3c2b1a0f90"}}'
It answers 201 with the note_id.
- From a template, the note gets the template's document, files and roles; its codes, such as the client's name, are filled in once, when the note is made. Codes about whoever made it, such as their name, take the Virtual Assistant's details, which carry your firm's name. Its title isn't copied: send
name. - A copy of a note on this case also keeps what was typed or drawn on it, unless you send
schemato replace that. Its codes are filled in again, as of when the copy is made. - Without a template, upload its document next: ask for an address with
media_group=schemas, upload a PDF or Word file, and attach it withPUT /notes/<note_id>/schema/media. A Word file is converted to PDF. A note holds one document. See Upload and attach files with a hub key. - Other files, such as photos or a recording, attach with
PUT /notes/<note_id>/media.
Who sees it
People in the note's roles can open it. Staff, whose role moderates notes by default, see every note whatever its roles. Clients see no notes unless an Admin has given the clients role access to them; see Change what a role can do.
Reading notes
GET /notes takes limit (default 20, up to 1000) and start_key, and pages as every list does. A key reads every note on the case. Each note holds:
| Field | What it holds |
|---|---|
note_id, case_id | Its IDs |
name | Its title |
user_id | Who made it; the Virtual Assistant's ID for notes a key or an automation made |
permissions | The roles that may see it |
schema_media | The media_id of its document |
media, media_ct | Its document and files, by kind, and how many. Download them as in Upload and attach files with a hub key. |
schema | What people typed or drew on the document, in Instant JSON |
template_id | The template it was made from |
created_on, updated_on | When it was made and last changed, in UTC |
GET /notes/templates lists your published note templatesTemplate A reusable feed post, form, e-sign, note or task kept in the Library and copied onto cases., oldest first, with each one's asset_id, title, description and permissions.
Changing and deleting
PUT /notes/<note_id> takes name and permissions, and changes only the ones you send. A key can change any note on the case. An empty permissions list is refused: send the roles that should see it. A body with neither is refused.
DELETE /notes/<note_id> deletes any note, with its document and files. Nobody is told.
If a call is refused
| Status | message | Why |
|---|---|---|
| 400 | SchemaFieldsException | A field is missing or invalid, such as a comma in name, an empty permissions list or a role your hub doesn't have; errors names it |
| 400 | SchemaFieldsException, with ItemCopyNotAllowedException at template | The template isn't published, isn't open to the Bots role, or its files are still being processed |
| 400 | SchemaFieldsException, with NoteRoleCannotReadNotesException at permissions | A role in permissions can't read notes |
| 403 | HostModuleDisabledException | Notes are switched off for your hub, or hidden on this case |
| 403 | CaseClosedException | The case is closed |
| 404 | ItemNotFoundException | The note doesn't exist |
For the error body and the rest of the codes, see Handle API errors and status codes.