Browse the docs

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.

GET/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
ParameterInTypeDescription
id requiredpathstring (uuid)
  • 200Success. application/json · ComicSeriesIssues
  • 401UNAUTHENTICATED: no session, or the access token expired. application/json · ErrorEnvelope
  • 403FORBIDDEN: the account lacks library:view, or the library, label, age or schedule scope refuses it. application/json · ErrorEnvelope
  • 404NOT_FOUND: no such thing, or not one the caller may see. application/json · ErrorEnvelope
GET/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
ParameterInTypeDescription
id requiredpathstring (uuid)
  • 200Success. application/json · Comic
  • 401UNAUTHENTICATED: no session, or the access token expired. application/json · ErrorEnvelope
  • 403FORBIDDEN: the account lacks library:view, or the library, label, age or schedule scope refuses it. application/json · ErrorEnvelope
  • 404NOT_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 it application/json · ErrorEnvelope
  • 413PAYLOAD_TOO_LARGE: an archive larger than the reader will unpack application/json · ErrorEnvelope
  • 415MEDIA_NOT_PLAYABLE: an EPUB of text, not page images: it reads as a book application/json · ErrorEnvelope
  • 503COMIC_UNPACK_BUSY: too many comics are being unpacked at once; try again after Retry-After application/json · ErrorEnvelope
GET/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
ParameterInTypeDescription
id requiredpathstring (uuid)
number requiredpathinteger
wqueryinteger
  • 200Success. image/* ·
  • 400VALIDATION_FAILED: the request did not match the schema; details.issues lists what. application/json · ErrorEnvelope
  • 401UNAUTHENTICATED: no session, or the access token expired. application/json · ErrorEnvelope
  • 403FORBIDDEN: the account lacks library:view, or the library, label, age or schedule scope refuses it. application/json · ErrorEnvelope
  • 404NOT_FOUND: no such thing, or not one the caller may see. application/json · ErrorEnvelope
  • 413PAYLOAD_TOO_LARGE: the page is larger, or has more pixels, than the reader takes application/json · ErrorEnvelope
  • 415MEDIA_UNSUPPORTED_CODEC: the page is not an image the reader shows (an SVG) application/json · ErrorEnvelope
  • 503COMIC_UNPACK_BUSY: too many comics are being unpacked at once; try again after Retry-After application/json · ErrorEnvelope