# Create Highlight Create a new highlight for a media item. **Endpoint**: `POST /api/media-items/{media_id}/highlights` **Auth**: Required **Content-Type**: `application/json` ## Path Parameters | Parameter | Type | Required | Description | |-----------|------|-----------|-------------| | media_id | string | Yes | Media item UUID | ## Request Body | Field | Type | Required | Description | |--------|------|-----------|-------------| | selection_text | string | Yes | Highlighted text | | start_position | string | No | Start position (e.g., epubcfi) | | end_position | string | No | End position (e.g., epubcfi) | | color | string | No | Highlight color (hex, default: "#ffff00") | | percentage_start | float | No | Start percentage (0-1) | | percentage_end | float | No | End percentage (0-1) | ### Example Request ```json { "selection_text": "Highlighted text...", "start_position": "epubcfi(/6/4/2:15)", "end_position": "epubcfi(/6/4/2:20)", "color": "#ffff00", "percentage_start": 0.45, "percentage_end": 0.47 } ``` ## Response (201 Created) ```json { "id": "uuid", "media_item_id": "uuid", "user_id": "uuid", "selection_text": "Highlighted text...", "start_position": "epubcfi(/6/4/2:15)", "end_position": "epubcfi(/6/4/2:20)", "color": "#ffff00", "percentage_start": 0.45, "percentage_end": 0.47, "created_at": "2026-01-31T10:00:00Z" } ``` ## Error Responses | Code | Description | |------|-------------| | 400 | Invalid highlight data | | 401 | Invalid or expired token | | 404 | Media item not found |