Skip to content

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= filters to books whose metadata or progress changed after that time.

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

Samples