Skip to content

For readers and software

Read-only content API

Spreuke publishes the same approved reading corpus used by its Android companion reader as static JSON under /api/v1/. It is public, unauthenticated, and read-only.

Endpoint families

Catalog
/api/v1/catalog.jsonBooks, Sparks, and daily rotation order.
Book
/api/v1/books/{slug}.jsonDescription, chapter index, Spark index, and cover.
Chapter
/api/v1/books/{slug}/chapters/{number}.jsonComplete chapter text and reading position.
Spark
/api/v1/sparks/{slug}.jsonSpark, walk-through, provenance, source, and share image.
Blog feed
/api/v1/blog.jsonIndex of approved posts.
Blog post
/api/v1/blog/{slug}.jsonComplete approved post text.
Country echo
/api/v1/countryRaw Cloudflare country signal as text/plain; see the exception below.

Contract

Content endpoints return application/json. Version 1 is additive and its published URLs are permanent; a breaking contract would use /api/v2/.

Static content can be cached normally. /api/v1/country is the exception: it returns text/plain with Cache-Control: no-store and echoes Cloudflare's raw country signal. A missing signal produces an empty successful response. Callers must fail closed for advertising when the response is missing, empty, unknown, or an error.

This API has no authentication, accounts, write actions, user state, OAuth, MCP, commerce, or health endpoint.

Machine descriptions

Read the OpenAPI 3.1 document or the RFC 9727 API catalog.