media.saveMarkup
Save markup over a photo as a new layer version: arrows, lines, boxes, circles, text and freehand strokes in 0..1 photo coordinates (0,0 is top left). The photo is never changed; earlier versions are kept. An empty list clears the markup.
| Who | Agents can call this |
| REST | POST /v1/media/markup |
| MCP tool | media_saveMarkup |
| Writes | yes, send an Idempotency-Key |
| Area | Shop |
When to use it
Save markup over a photo as a new layer version: arrows, lines, boxes, circles, text and freehand strokes in 0..1 photo coordinates (0,0 is top left). The photo is never changed; earlier versions are kept.
What to tell the owner
Say what you did in plain words and what happens next.
Input
| Field | Type | Required |
|---|---|---|
media_id | string (uuid) | yes |
shapes | array | yes |
shapes[].type | string (one of arrow, line, rect, ellipse, text, freehand) | yes |
shapes[].points | array | yes |
shapes[].color | string | no |
shapes[].width | integer | no |
shapes[].text | string | no |
Example
POST https://doingwork.work/v1/media/markup
content-type: application/json
Idempotency-Key: 3f1c...
{
"media_id": "00000000-0000-4000-8000-000000000000",
"shapes": [
{
"type": "arrow",
"points": [
[
"..."
]
]
}
]
}Output
JSON. The response shape isn't published yet; read the fields you need and ignore the rest. Errors are {code, message, status}.
Errors
| Code | Status | What to do |
|---|---|---|
invalid_input, invalid_token, rate_limited | Can happen on any call. See errors. |