OTA parsers & REST API
Both Nyora SDKs share a single parser engine that updates itself over the air, and both expose the same REST API so other Nyora apps can attach to a running instance. This page documents the OTA feed and the helper-compatible API surface.
The OTA parser feed
Parsers ship out-of-band from the SDK release. Each SDK embeds a copy of the bundle and checks the feed for newer versions, verifying every download with a sha256 hash before swapping it in. The feed is served as static files from https://Hasan72341.github.io/nyora-ota-parsers.
| Endpoint | Description |
|---|---|
GET /manifest.json | Version pointer + hashes for the current bundle and source list. |
GET /parsers.bundle.js | The parser extensions (~450 KB). |
GET /sources.json | The source catalogue (~235 sources). |
manifest.json shape
{
"version": 42,
"bundle": { "url": "...", "sha256": "...", "bytes": 461824 },
"sources": { "url": "...", "sha256": "...", "bytes": 240128 }
} version is a monotonically increasing integer. When the feed's version is
higher than the embedded copy, the SDK fetches the referenced urls,
verifies each against its sha256, and only then promotes the new bundle.
A hash mismatch aborts the update and the existing bundle keeps working.
Self-update
The OtaManager in each SDK performs this check automatically. You can also
force a refresh from the CLI:
nyora-cli update Helper-compatible REST API
Run a local server with nyora-cli serve. It starts NyoraServer
and writes a helper.port file so other Nyora apps can discover and attach to
it. The endpoints below are identical across the Python and JavaScript SDKs.
| Endpoint | Query | Returns |
|---|---|---|
GET /health | — | Liveness check. |
GET /sources | — | The available sources. |
GET /sources/popular | id, page | {entries, hasNextPage} |
GET /sources/latest | id, page | {entries, hasNextPage} |
GET /sources/search | id, q, page | {entries, hasNextPage} |
GET /manga/details | id, url | {manga, chapters} |
GET /manga/pages | id, url | {pages} |
helper.port discovery
On start, NyoraServer binds a port and writes it to a helper.port
file. Companion apps read that file to learn where the server is listening, then make
plain HTTP requests against the endpoints above — no handshake required.
Worked example
Start a server, then attach from another shell:
# terminal 1 — start the helper-compatible server
nyora-cli serve
# terminal 2 — read the port it published and query it
PORT=$(cat helper.port)
curl "http://127.0.0.1:$PORT/health"
curl "http://127.0.0.1:$PORT/sources/popular?id=mangadex&page=1"
curl "http://127.0.0.1:$PORT/manga/details?id=mangadex&url=/title/abc"
Language guides
For end-to-end server setup in each SDK, see the dedicated guides: