# 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     |
