Bible Image Library API

99 packs · 455 images · read-only, public, CORS enabled.

GET /api/healthservice status
GET /api/statscounts, tiers, top theme tags
GET /api/packslist packs — ?tier=scene&limit=50&offset=0
GET /api/packs/{pack_id}one pack with all images + captions
GET /api/search?q=search titles, tags, captions
GET /api/verse?book=Luke&chapter=15&verse=11packs covering a verse
GET /api/images/{pack_id}/{file}PNG image (1360×768)
— text → image —
POST /api/generategenerate from a prompt → JSON with an image URL
GET /i/{id}.pngthe generated image (random id, add ?download=1)
GET /api/generate/statusis the GPU worker ready?
GET /createweb page: type a prompt, generate, download

Generate an image

curl -X POST https://spark-9f46.tail1917c3.ts.net/api/generate \
  -H 'Content-Type: application/json' \
  -d '{"prompt":"Moses parting the Red Sea"}'

Returns JSON with a random-id URL (your prompt never appears in the link):

{
  "id": "9f2c7a1b4e8d3506",
  "url": "https://spark-9f46.tail1917c3.ts.net/i/9f2c7a1b4e8d3506.png",
  "download_url": "https://spark-9f46.tail1917c3.ts.net/i/9f2c7a1b4e8d3506.png?download=1",
  "seed": 1332545595, "steps": 28,
  "render_seconds": 78.4, "width": 1360, "height": 768, "bytes": 1797421
}

Body: prompt (required), styled (default true — applies the library oil-painting style), width/height (aspect ratio only), steps (4-40, the speed control), seed, format (set to png to stream raw bytes instead of JSON).

Steps drive the time: roughly 23s + 2s per step. Images are kept for the most recent 1000 generations.

Rate limits: 240 requests / 60s per IP. Generation is unlimited; images render one at a time (~1 GPU-minute each), so concurrent requests queue.

Try: /api/packs?limit=5 · /api/search?q=prodigal · /api/stats