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.json— Books, Sparks, and daily rotation order.- Book
/api/v1/books/{slug}.json— Description, chapter index, Spark index, and cover.- Chapter
/api/v1/books/{slug}/chapters/{number}.json— Complete chapter text and reading position.- Spark
/api/v1/sparks/{slug}.json— Spark, walk-through, provenance, source, and share image.- Blog feed
/api/v1/blog.json— Index of approved posts.- Blog post
/api/v1/blog/{slug}.json— Complete approved post text.- Country echo
/api/v1/country— Raw 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.