Skip to content

The Fanio API

Read the catalogue, check a licence and download files, in JSON.

  • Free to readPacks, scenes and search, rate limited.
  • Check a licenceOne call confirms a licence key.
  • Signed downloadsPaid files through short-lived links.

A public, read-only JSON API over the Fanio catalogue, plus licence verification and signed downloads. OpenAPI 3.1: https://fanio.net/v1/openapi.json

No key is needed to read. Requests are rate limited per IP. Every scene id has the form fanio:<pack>/<scene>.

Read

  • GET /v1/packs?page=1: 24 packs per page, each with up to six preview scenes, full counts and prices
  • GET /v1/packs/{pack}?page=1: one pack with 24 scenes per page and full counts
  • GET /v1/scenes/{pack}/{scene}: one scene, with credit line, licence and links
  • GET /v1/scenes/{pack}/{scene}.svg: the SVG of a free scene (402 for paid scenes)
  • GET /v1/scenes/{pack}/{scene}.png: a 480 px preview of any scene
  • GET /v1/scenes/{pack}/{scene}/provenance: how the scene was made
  • GET /v1/search?q=reading: search in English or Arabic. Use limit (1 to 50) and offset for pages. Repeat pack, character, style, activity, setting or season to select several values within one facet. Add free=true or free=false, sort=title, and lang=ar if needed. The response includes total and facet counts. smart=true optionally re-ranks eligible first-page results when enabled on the server, with local fallback.
  • GET /v1/licences and /v1/licences/{tier}

Paid scenes

  1. POST /v1/licences/verify with {"key": "fanio_lk_..."} returns the licensed pack and tier.
  2. POST /v1/licences/download with {"key": "...", "scene": "fanio:<pack>/<scene>"} returns a download URL valid for five minutes.

Keep licence keys secret; they are bearer credentials. Revealing the key again on the order page rotates it.