Getting Started
Build a compliant Open Web Comics registry with six required endpoints.
Required endpoints
1. Registry identity — GET /openwebcomics/api/v1/version
Returns the registry name, description, and API version. Clients use this to confirm they're talking to a valid registry before adding it.
{
"version": "1",
"name": "My Comic Archive",
"description": "A personal webcomic registry."
}
See the RegistryVersion schema for field details.
2. Comic list — GET /openwebcomics/api/v1/comics
Returns an array of all comics in the registry.
[
{
"id": "my-comic",
"name": "My Webcomic",
"url": "https://example.com/my-comic",
"description": "An ongoing adventure series.",
"thumbnail_url": "https://example.com/my-comic/thumb.jpg",
"total_pages": 120
}
]
Each item follows the Comic schema.
3. Single comic — GET /openwebcomics/api/v1/comics/:id
Returns the full Comic object for a single comic by its ID. Returns 404 if the comic does not exist.
4. All pages — GET /openwebcomics/api/v1/comics/:id/pages
Returns all pages for a comic in a single response. The entire archive is returned at once — there is no pagination.
{
"pages": [
{
"id": 1,
"comic_id": "my-comic",
"page_number": 1,
"title": "Page 1",
"url": "https://example.com/my-comic/page/1",
"image_url": "https://example.com/my-comic/img/001.jpg"
}
],
"total": 120
}
See the PagesResponse and ComicPage schemas.
5. Groups — GET /openwebcomics/api/v1/comics/:id/groups
Returns all groups (chapters, acts, arcs, etc.) for a comic as an array of ComicGroup objects. Returns an empty array if the comic has no groups.
6. Single page — GET /openwebcomics/api/v1/comics/:id/pages/:pageNumber
Returns a single ComicPage by page number, including prev_page and next_page navigation hints. Returns 404 if the page does not exist.
Error responses
On error, return a JSON object with an error string and the appropriate HTTP status code:
{ "error": "Comic not found" }
See the Error schema.
Static file deployment
The API is designed to work as static JSON files. Mirror the URL structure as files on disk, then use server rewrite rules to strip the .json extension. This means no live server is required for read-only access — any static file host can serve a compliant registry.