Files
bookhoard/docs/developer/api/progress/update_progress.md
T
john-okeefe b44e4e4709 docs: remove Phase X placeholders from API documentation
Clean up API documentation files by removing Phase X references:

Remove 'API Explorer will be inserted here in Phase X' placeholders from:
- 70+ API endpoint documentation files
- Authentication endpoints (login, logout, register, refresh)
- User endpoints (profile, settings, password)
- Device endpoints (registration, sync, shelves)
- Library endpoints (CRUD, folders, visibility)
- Media endpoints (items, progress, highlights, notes)
- Admin endpoints (users, analytics)
- Sync endpoints (Kobo, KOReader)
- OPDS endpoints
- Scanner endpoints
- Queue endpoints

These placeholders were from planning documents and have no meaning
to API consumers. The documentation is now clean and ready for use.
2026-02-13 21:50:44 -05:00

1.7 KiB

Update Reading Progress

Update reading progress for a media item. This will sync across all devices via WebSocket.

Endpoint: PUT /api/media-items/{media_id}/progress 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
source string Yes Progress source (e.g., "web", "koreader", "kobo")
location object Yes Location information
location.percentage float No Progress percentage (0-1)
location.epubcfi string No EPUB CFI location
location.character integer No Character offset
location.chapter integer No Chapter number
location.page integer No Current page
location.total_pages integer No Total pages
device_metadata object No Device metadata
device_metadata.device_type string No Device type
device_metadata.user_agent string No User agent string

Example Request

{
  "source": "web",
  "location": {
    "percentage": 0.45678,
    "epubcfi": "epubcfi(/6/4/2:15)",
    "character": 15432,
    "chapter": 3,
    "page": 89,
    "total_pages": 200
  },
  "device_metadata": {
    "device_type": "web",
    "user_agent": "Mozilla/5.0..."
  }
}

Response (200 OK)

{
  "sync_status": "success",
  "progress_updated": true,
  "devices_notified": ["device-1", "device-2"],
  "broadcast": true
}

Error Responses

Code Description
400 Invalid location data
401 Invalid or expired token
404 Media item not found