---
title: "Delete a note"
method: DELETE
path: "/public-api/v1/notes/{id}"
tags: ["Notes"]
---

# Delete a note

`DELETE /public-api/v1/notes/{id}`

## Request

- Base URL: `https://app.hellobonsai.com`
- URL: `https://app.hellobonsai.com/public-api/v1/notes/{id}`
- Auth: one of:
  - OAuth 2
    - Authorization code: `https://app.hellobonsai.com/oauth/authorize`
    - Token URL: `https://app.hellobonsai.com/oauth/token`
  - HTTP bearer

Deletes a note. It stops appearing in every subsequent read, and the
response hands back its final state — body included, along with the
records it was attached to — so you can log what went.

Anyone can delete a note they wrote; deleting someone else's needs
permission to delete notes. A note the token cannot see returns `404`,
and one it can see but may not delete returns `403`.

## Path parameters

- `id` string, uuid, required

## Response `200`

The note was deleted. Its final state is in `data`.

- object
  - `data` object, required: The body of the note, returned when you write or retrieve a single note but never in a list.
    - `id` string, uuid, required: Unique identifier for the note.
    - `title` string, required: Note title. Empty when the note was written without one.
    - `date` string, date, nullable, required: The day the note is about, which is what the app sorts and groups notes by. Defaults to today in your account timezone.
    - `visibility` 'everyone' | 'author_only', required: `everyone` for a note the whole account can read, `author_only` for one only its author can. Defaults to `everyone`, and only the member who wrote the note can change it.
    - `created_by_member_id` integer, nullable, required: Team member id of the author, or `null` when they are no longer a member of your account.
    - `created_at` string, date-time, required: When the note was written.
    - `updated_at` string, date-time, required: When the note was last edited.
    - `note_links` NoteLink[], required: The records this note is attached to, leaving out any your token cannot reach. Empty for a workspace note that stands on its own.
      - `id` integer, required: Unique identifier for the attachment between the note and the record.
      - `record_id` integer, required: Id of the attached record, in the resource named by `record_type`.
      - `record_type` 'company' | 'project' | 'contact' | 'deal' | 'null', nullable, required: Which kind of record the note is attached to.
    - `content_html` string, nullable, required: The note body in the HTML the Bonsai editor renders, scrubbed of script-execution vectors. This is the field to send back to `PATCH /public-api/v1/notes/{id}`: read it, change what you need and return it, and everything you left alone is preserved. `null` only when the note has no body at all. Returned on single-note responses only, never in a list.
    - `content_plain_text` string, nullable, required: The same body with the markup removed, for when you only need to read what the note says. It cannot be sent back — the update endpoint takes `content_html`. `null` here means the body holds no text, not that the note is empty: a note containing only an image or a table returns `null` while `content_html` returns the body. Returned on single-note responses only, never in a list.
  - `meta` Meta, required: Metadata returned alongside every single-resource response.
    - `request_id` string, required: Identifier for this request. Quote it when contacting support about a specific call.

## Other responses

- `401`: The access token is missing, expired or invalid.
- `403`: This token can see the note but is not allowed to delete it.
- `404`: No note with that `id` that this token can see. An already deleted note returns `404` too.
- `429`: Rate limit exceeded. Wait at least `Retry-After` seconds before trying again.

---

[API](https://skmtc.dev/hellobonsai/apis/bonsai-api.md) - [All operations](https://skmtc.dev/hellobonsai/apis/bonsai-api/llms.txt) - [OpenAPI document](https://skmtc.dev/hellobonsai/apis/bonsai-api/revisions/abf12ed6a8d3?raw)
