Skip to content

Bulk library sync feed​

GET
/api/library/sync

Single paginated endpoint optimised for full-vault mirror clients and CLIs. Returns BookSyncRecord[] bundling each organised book's metadata + a per-book progress aggregate (max % across devices + derived reading status). Optional ?since= filters to books whose metadata or progress changed after that time. uploader.id is an opaque per-install reference, never the uploader's user id.

Parameters​

Query Parameters

page

Page number

Type
integer
Minimum
1
Default
1
limit

Items per page

Type
integer
Minimum
1
Maximum
100
Default
20
since

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",
  
  
  
"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"
}

Samples​