Wiki API
An open, read-only API: articles, history, search and recent changes as JSON. For bots, widgets, apps and whatever else you think of.
Read-onlyWhat a guest sees: live pages and accepted edits. Drafts and edits waiting for review are left out.
No keyNo sign-up. There is a per-minute limit per address, the same as the site's own.
From a browserAny site may call it directly: answers carry Access-Control-Allow-Origin: *.
Base address
https://beta.filian.wiki/api/v1
Every path below starts here. The full description, for client generators: openapi.json
What there is
| Request | What it gives | Parameters |
|---|---|---|
GET / | The wiki and the API's addresses | |
GET /pages | Live pages by address, 50 at a time (up to 200) | ns locale limit after |
GET /pages/{path} | A page: Markdown text, ready HTML, categories, translations, the last edit | locale format=markdown|html|both |
GET /pages/{path}/history | A page's accepted edits, newest first | locale limit before |
GET /revisions/{id} | One accepted edit in full | |
GET /search | Articles by title and text, with passages | q locale all limit offset |
GET /recent | Recent edits across the wiki | locale limit before |
GET /categories/{key} | Pages in a category | limit after |
Try it
The links below open real answers from this wiki:
- /pages/chronology
- /pages/chronology?format=html
- /pages/chronology/history?limit=5
- /search?q=chronology
- /recent?limit=10
curl
curl -s "https://beta.filian.wiki/api/v1/pages/chronology" | jq '.title, .revision.created_at'
JavaScript
const res = await fetch("https://beta.filian.wiki/api/v1/search?q=" + encodeURIComponent("chronology"));
const { items } = await res.json();
for (const hit of items) console.log(hit.title, hit.url);
An answer
Dates are UTC, in RFC 3339. Every link in an answer is absolute, and the HTML has absolute addresses already, so it can go anywhere.
{
"path": "chronology",
"title": "…",
"locale": "en",
"url": "…",
"revision": { "id": "…", "created_at": "…", "author": { "name": "…" } },
"categories": [{ "key": "…", "name": "…", "url": "…" }],
"translations": [{ "locale": "…", "title": "…", "url": "…" }],
"markdown": "…",
"license": "https://beta.filian.wiki/license"
}
Paging
Lists carry a next field. Pass it as after (pages, categories) or before (history, recent changes) for the next part. When next is empty, there is no more.
{ "items": [ … ], "next": "…" }
GET /pages?after=…
GET /pages/{path}/history?before=…
Errors
An error always looks the same:
{ "error": { "code": "not_found", "message": "no such page" } }
| HTTP | When |
|---|---|
400 | A bad parameter: message says which |
404 | No such page, edit or category |
429 | Too often: wait as many seconds as Retry-After says |
Rules
- Texts are under the wiki's license (https://beta.filian.wiki/license): credit the source and link the page; every answer has its url.
- Answers may be cached for a minute, and are marked so. Do not poll more often than you need.
- This is a fan wiki, not Filian and not her ARG. Do not present the data as official.