--- method: PUT path: /api/media-items/:id/highlights/:highlightId auth: jwt area: media-items --- # Update Highlight Update an existing highlight. **Endpoint**: `PUT /api/media-items/:id/highlights/:highlightId` **Auth**: Required **Content-Type**: `application/json` ## Path Parameters | Parameter | Type | Required | Description | | ------------ | ------ | -------- | -------------- | | highlight_id | string | Yes | Highlight UUID | ## Request Body | Field | Type | Required | Description | | -------------- | ------ | -------- | ----------------------------- | | selection_text | string | No | Updated highlighted text | | color | string | No | Updated highlight color (hex) | ### Example Request ```json example-request { "selection_text": "Updated text", "color": "#00ff00" } ``` ## Response (200 OK) ```json example-response { "id": "uuid", "media_item_id": "uuid", "user_id": "uuid", "selection_text": "Updated text", "color": "#00ff00", "updated_at": "2026-01-31T10:00:00Z", "chapter_reference": null, "character_end": null, "character_start": null, "created_at": null, "dedup_key": null, "deleted": null, "deleted_at": null, "device_sync_data": null, "end_position": null, "epubcfi_end": null, "epubcfi_start": null, "last_modified_at": null, "last_modified_source": null, "note_id": null, "note_text": null, "panel_number": null, "paragraph_end": null, "paragraph_start": null, "percentage_end": null, "percentage_start": null, "start_position": null } ``` ## Error Responses | Code | Description | | ---- | -------------------------------- | | 400 | Invalid highlight data | | 401 | Invalid or expired token | | 403 | User does not own this highlight | | 404 | Highlight not found |