# Get Progress History

Get historical reading progress data for a media item.

**Endpoint**: `GET /api/progress/:id/history`
**Auth**: Required

## Path Parameters

| Parameter | Type          | Required | Description     |
| --------- | ------------- | -------- | --------------- |
| id        | string (UUID) | Yes      | Media item UUID |

## Query Parameters

| Parameter | Type    | Required | Description                                      |
| --------- | ------- | -------- | ------------------------------------------------ |
| limit     | integer | No       | Maximum number of history entries (default: 100) |
| offset    | integer | No       | Number of entries to skip (default: 0)           |

## Request Headers

| Header        | Type   | Required | Description  |
| ------------- | ------ | -------- | ------------ |
| Authorization | string | Yes      | Bearer token |

### Example Request

```http
GET /api/progress/550e8400-e29b-41d4-a716-446655440000/history?limit=20
Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...
```

## Response (200 OK)

```json
{
  "history": [
    {
      "media_item_id": "uuid",
      "percentage": 75.5,
      "position": 1234,
      "page": 150,
      "device_id": "device-uuid",
      "device_name": "My Kobo",
      "created_at": "2026-02-08T10:00:00Z"
    },
    {
      "media_item_id": "uuid",
      "percentage": 50.0,
      "position": 800,
      "page": 100,
      "device_id": "device-uuid",
      "device_name": "My Kobo",
      "created_at": "2026-02-07T15:00:00Z"
    }
  ],
  "total": 45,
  "limit": 20,
  "offset": 0
}
```

## Error Responses

| Code | Description              |
| ---- | ------------------------ |
| 401  | Invalid or expired token |
| 404  | Media item not found     |
