> For the complete documentation index, see [llms.txt](https://docs.monolithforensics.com/monolith/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.monolithforensics.com/monolith/monolith-api/notes-api/create-note.md).

# Create Note

Create a note or folder in a case. Authorship (`created_by`) is taken from the user your API key belongs to. If `note_data` is provided, the first version is recorded in the note's version history automatically.

```http
POST /v1/notes
Content-Type: application/json
```

## Request body

| Field         | Type          | Required | Description                                                                                 |
| ------------- | ------------- | -------- | ------------------------------------------------------------------------------------------- |
| `case_uuid`   | string        | **yes**  | UUID of the case the note belongs to. Must reference an existing case.                      |
| `note_tag`    | string        | no       | The note's title. Strongly recommended — untitled notes are hard to find later.             |
| `note_data`   | string (HTML) | no       | The note body. The server validates and normalizes the HTML through the rich-text renderer. |
| `uuid`        | string        | no       | Supply your own UUID for the note; one is generated when omitted.                           |
| `parent_id`   | string        | no       | UUID of a parent folder note. Must be a folder (`is_folder: true`) in the same case.        |
| `is_folder`   | boolean       | no       | `true` creates a folder instead of a regular note.                                          |
| `object_id`   | string        | no       | UUID of a Monolith object to link the note to. Requires `object_type`.                      |
| `object_type` | string        | no       | One of `timeline_event`, `task`, `case`, `evidence`, `acquisition`.                         |

### Example request

```json
{
  "case_uuid": "9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d",
  "note_tag": "Initial Triage",
  "note_data": "<h2>Intake</h2><p>Device received and photographed.</p>",
  "parent_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7"
}
```

## Response — `201 Created`

Returns the created note (same shape as [get-notes.md](broken://pages/12ad796747edec1897569c385a42baf8c9738cd4), with content included):

```json
{
  "data": {
    "case_note_id": 119,
    "uuid": "0f8fad5b-d9cb-469f-a165-70867728950e",
    "note_tag": "Initial Triage",
    "note_data": "<h2>Intake</h2><p>Device received and photographed.</p>",
    "path": "/Triage/Initial Triage",
    "parent_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
    "is_folder": false,
    "created_on": "2026-08-03T14:21:09.000Z",
    "updated_on": null,
    "attachments": [],
    "linked_case": {
      "case_id": 42,
      "uuid": "9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d"
    },
    "linked_object": null,
    "created_by": {
      "user_id": 12,
      "email": "api-user@example.com",
      "first_name": "API",
      "last_name": "User",
      "full_name": "API User",
      "title": "Integration"
    },
    "updated_by": null
  }
}
```

## Examples

{% stepper %}
{% step %}

### Create a simple note

```python
response = session.post(f"{BASE_URL}/notes", json={
    "case_uuid": "9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d",
    "note_tag": "Initial Triage",
    "note_data": "<p>Device received and photographed.</p>",
})
response.raise_for_status()
note = response.json()["data"]
print(f"Created note {note['uuid']} ({note['note_tag']})")
```

{% endstep %}

{% step %}

### Create a folder, then a note inside it

```python
folder = session.post(f"{BASE_URL}/notes", json={
    "case_uuid": "9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d",
    "note_tag": "Triage",
    "is_folder": True,
}).json()["data"]

note = session.post(f"{BASE_URL}/notes", json={
    "case_uuid": "9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d",
    "parent_id": folder["uuid"],
    "note_tag": "Day 1",
    "note_data": "<p>Imaging started.</p>",
}).json()["data"]
```

{% endstep %}

{% step %}

### Create a note linked to an evidence item

```python
note = session.post(f"{BASE_URL}/notes", json={
    "case_uuid": "9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d",
    "note_tag": "EV-001 Examination Notes",
    "note_data": "<p>Write blocker verified before imaging.</p>",
    "object_id": "e7c40f6e-2f19-4b52-9d7a-52a5a24c3f10",
    "object_type": "evidence",
}).json()["data"]
print(note["linked_object"])
# {"type": "evidence", "uuid": "e7c40f6e-...", "name": "EV-2026-0042-001"}
```

{% endstep %}
{% endstepper %}

## Errors

| Status | Body                                                                   | Cause                                                             |
| ------ | ---------------------------------------------------------------------- | ----------------------------------------------------------------- |
| `400`  | `{"message": "Invalid request body", "errors": [...]}`                 | Missing `case_uuid`, empty `note_tag`, invalid `object_type`, ... |
| `400`  | `{"message": "Case with UUID ... not found"}`                          | `case_uuid` doesn't reference an existing case.                   |
| `400`  | `{"message": "Parent note with UUID ... not found"}`                   | `parent_id` doesn't exist.                                        |
| `400`  | `{"message": "Parent note with UUID ... is not a folder"}`             | `parent_id` references a regular note.                            |
| `400`  | `{"message": "Parent note with UUID ... belongs to a different case"}` | Parent folder is in another case.                                 |
| `401`  | `Unauthorized`                                                         | Missing or invalid API key.                                       |
