API reference
Comics
Comics libraries (2026-10-13): a comic as the reader opens it — CBZ, CBR, CB7, CBT, PDF, an EPUB of page images or a folder of them — its pages one at a time, and a series’ comics in number order. Where a reader is goes through PUT /items/:id/reading (page:<n>), as a book’s does.
Paths are relative to /api/v1 on your server.
/comic-series/{id}/issues#A series’ comics in number order
The comics of the series the caller can see, by number — 12.5 between 12 and 13, a run’s issues after the run before it, annuals after the issues, the unnumbered last — each with where the caller is in it; and continueWith, what “Continue” opens: the comic part read, else the first unread one after the one finished last. Null before any is opened and once every one is read.
- Authorisation
- Bearer token or API key · Session cookie
| Parameter | In | Type | Description |
|---|---|---|---|
id required | path | string (uuid) |
- 200Success.
application/json·ComicSeriesIssues - 401
UNAUTHENTICATED: no session, or the access token expired.application/json·ErrorEnvelope - 403
FORBIDDEN: the account lackslibrary:view, or the library, label, age or schedule scope refuses it.application/json·ErrorEnvelope - 404
NOT_FOUND: no such thing, or not one the caller may see.application/json·ErrorEnvelope
/comics/{id}#Open a comic
Everything the reader needs before it turns a page: every page in reading order with its size and whether it is a spread, the way it reads (rtl from ComicInfo.xml’s Manga), its neighbours by number in its series, and where the caller is in it. The pages are read from the comic the first time it opens — the sizes from ComicInfo.xml’s <Pages> where it gives them — and again once its file has changed. A PDF has no pages: its pdfUrl is for the browser’s PDF engine. A CBR, CB7 or CBT is unpacked once for the reader on its first opening.
- Authorisation
- Bearer token or API key · Session cookie
| Parameter | In | Type | Description |
|---|---|---|---|
id required | path | string (uuid) |
- 200Success.
application/json·Comic - 401
UNAUTHENTICATED: no session, or the access token expired.application/json·ErrorEnvelope - 403
FORBIDDEN: the account lackslibrary:view, or the library, label, age or schedule scope refuses it.application/json·ErrorEnvelope - 404
NOT_FOUND: no such thing, or not one the caller may see.MEDIA_FILE_MISSING: the comic’s file is not where the library last saw itapplication/json·ErrorEnvelope - 413
PAYLOAD_TOO_LARGE: an archive larger than the reader will unpackapplication/json·ErrorEnvelope - 415
MEDIA_NOT_PLAYABLE: an EPUB of text, not page images: it reads as a bookapplication/json·ErrorEnvelope - 503
COMIC_UNPACK_BUSY: too many comics are being unpacked at once; try again afterRetry-Afterapplication/json·ErrorEnvelope
/comics/{id}/pages/{number}#Serve a page of a comic
The page, from 1, as it is — a JPEG, PNG, WebP, GIF or AVIF, sent as the type its bytes are, never anything else — or with w a WebP copy that many pixels wide, never enlarged. Kept a day by the browser and keyed by an ETag that changes with the comic’s file; answers 304 to a matching If-None-Match. Refused outside the profile’s viewing hours.
- Authorisation
- Bearer token or API key · Session cookie
| Parameter | In | Type | Description |
|---|---|---|---|
id required | path | string (uuid) | |
number required | path | integer | |
w | query | integer |
- 200Success.
image/*· - 400
VALIDATION_FAILED: the request did not match the schema;details.issueslists what.application/json·ErrorEnvelope - 401
UNAUTHENTICATED: no session, or the access token expired.application/json·ErrorEnvelope - 403
FORBIDDEN: the account lackslibrary:view, or the library, label, age or schedule scope refuses it.application/json·ErrorEnvelope - 404
NOT_FOUND: no such thing, or not one the caller may see.application/json·ErrorEnvelope - 413
PAYLOAD_TOO_LARGE: the page is larger, or has more pixels, than the reader takesapplication/json·ErrorEnvelope - 415
MEDIA_UNSUPPORTED_CODEC: the page is not an image the reader shows (an SVG)application/json·ErrorEnvelope - 503
COMIC_UNPACK_BUSY: too many comics are being unpacked at once; try again afterRetry-Afterapplication/json·ErrorEnvelope
No endpoint here matches. Try another word, or look in another area.