Appearance
Bulk library sync feed
GET
/api/library/sync
Single paginated endpoint optimised for full-vault mirror clients (Obsidian plugin, CLIs). Returns BookSyncRecord[] bundling each organised book's metadata + a per-book progress aggregate (max % across devices + derived reading status). Optional ?since=
Parameters
Query Parameters
page
Page number
Type
integer
Minimum
1Default
1limit
Items per page
Type
integer
Minimum
1Maximum
100Default
20since
ISO 8601 timestamp. When set, only return books whose metadata or progress changed after this time. Pass serverTime from the previous successful response.
Type
string
Format
"date-time"Responses
Paginated sync records
application/json
JSON "data": [ { "id": "string", "status": "string", "title": "string", "author": "string", "isbn10": "string", "isbn13": "string", "publisher": "string", "publishedYear": 0, "language": "string", "description": "string", "coverUrl": "string", "coverPath": "string", "pageCount": 0, "series": "string", "seriesIndex": 0, "genres": [ "string" ], "tags": [ "string" ], "hardcoverBookId": 0, "hardcoverEditionId": 0, "createdBy": "string", "possibleDuplicateOf": "string", "approvedAt": "string", "createdAt": "string", "updatedAt": "string", "files": [ { "id": "string", "format": "string", "originalName": "string", "fileSize": "string" } ], "uploader": { "id": "string", "label": "string" }, "progress": { "percentage": 0, "status": "string", "lastDevice": "string", "lastTimestamp": 0, "startedAt": "string", "finishedAt": "string", "pausedAt": "string", "manuallySet": true, "externallySet": true } } ], "pagination": { "page": 0, "limit": 0, "total": 0, "totalPages": 0 }, "serverTime": "string"
{
}
GET
/api/library/sync