---
title: "Delete a markup"
method: DELETE
path: "/v1/blueprints/{blueprint_id}/markups/{markup_id}"
tags: ["Blueprints / Markups"]
---

# Delete a markup

`DELETE /v1/blueprints/{blueprint_id}/markups/{markup_id}`

## Request

- Base URL: `https://api.kamai.io` (the document declares no server; this is the origin it was published from)
- URL: `https://api.kamai.io/v1/blueprints/{blueprint_id}/markups/{markup_id}`
- Auth: HTTP bearer

Delete a markup. Answers the deleted markup (`deleted: true`); it no longer appears in
the list. Only its author or the project owner can (403), and `version` must be the
one last read (409 with `current` otherwise). A cloud's Δ number is not reused.

## Path parameters

- `blueprint_id` string, required
- `markup_id` string, required

## Query parameters

- `version` integer, required: The markup's version as last read.

## Response `200`

Successful Response

- MarkupRecord
  - `id` string, required: The markup's id.
  - `kind` 'cloud' | 'highlight' | 'note', required: `cloud`: a revision cloud; `highlight`: a marker stroke; `note`: a text box, optionally with an arrow.
  - `blueprint_id` string, required: The sheet it is drawn on.
  - `box` number[], nullable: Its bounding box, [x0, y0, x1, y1] in fractions (0..1) of the page from the top-left corner.
  - `points` array[], nullable: A highlight's stroke, or a cloud's outline when it is not a plain box, as [[x, y], ...] page fractions.
    - number[]
  - `pointer` number[], nullable: A note's arrow tip, [x, y] page fractions.
  - `text` string, nullable: The note's text.
  - `style` object: `color` (#RRGGBB), `width` and `font_size` in PDF points, `opacity` 0..1; defaults filled in.
  - `version` integer, required: Increases on every change; send it back on an update or a delete.
  - `can_edit` boolean: Whether you may change or delete it (its author or the project owner).
  - `author` string, nullable: The author's display name, or `null` when the account has none.
  - `source` 'app' | 'chat' | 'mcp', nullable: Where it was made: `app` (the Kamai app), `chat` (its assistant) or `mcp` (this API or an MCP client).
  - `created_at` string, nullable: When it was made (ISO 8601, UTC).
  - `updated_at` string, nullable: When it last changed (ISO 8601, UTC).
  - `delta` integer, nullable: A cloud's revision number, shown as Δ1, Δ2… per sheet; never reused after a delete.
  - `room` string, nullable: The room a note's arrow points at, by name.
  - `room_id` string, nullable: That room's id as `{blueprint_id}::{room id}`; the part after `::` is the room's feature `id`. Re-resolved on a list read when a room still covers the arrow tip; create/patch/delete responses carry the id from creation time.
  - `element` string, nullable: The element a note was pinned to in the app, by name (instead of `room`).
  - `element_id` string, nullable: That element's id, as the app recorded it.
  - `deleted` boolean, nullable: `true` on the record a delete returns.

## Other responses

- `403`: You are neither the markup's author nor the project owner.
- `404`: The sheet is not in one of your projects, or the markup is not on this sheet.
- `409`: `version` is not the markup's current one, or the markup was deleted (`current` holds the markup as it is now: read it again and retry), or the sheet has no page size yet (still processing).
- `422`: Validation Error
- `503`: Markups are not available on this server yet.

---

[API](https://skmtc.dev/kamai/apis/kamai-api.md) · [All operations](https://skmtc.dev/kamai/apis/kamai-api/llms.txt) · [OpenAPI document](https://skmtc.dev/kamai/apis/kamai-api/revisions/78f938546270?raw)
