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