Developer API
Generate wikis from your own scripts, CMS or CI: send a topic or a document's text, get back the structured wiki as JSON, Markdown and HTML — and a public link if you want one.
The API is part of Pro. Calls use your pass: each wiki counts like one made on the site (40 on the 24-hour pass, 300 on the 30-day pass). Failed calls are not counted.
Authentication
Send your license key as a bearer token. Keep it on your server — the API does not allow calls from browsers (no CORS).
Authorization: Bearer FWG-XXXX-XXXX-XXXX-XXXXThe API counts as one of the 5 browsers a key can be used in.
POST /api/v1/generate
Body (JSON):
| Field | Type | What |
|---|---|---|
topic | string | A topic, 3–600 characters ("Kubernetes basics for developers"). Use this or text. |
text | string | Source material to organize: notes, a transcript, a document's text — 40 to 100,000 characters. Facts come from the text only. |
depth | string | quick (~1,000 words), standard (~2,500 words, default) or deep (5,000+ words; up to ~90 seconds). |
language | string | auto (default: the input's language) or one of English, Simplified Chinese, Traditional Chinese, Spanish, French, German, Portuguese, Japanese, Korean, Italian, Dutch. |
file_name | string | Optional: the source file's name, as a hint for the AI. |
publish | boolean | true = also publish it at https://fastwikigen.com/w/… (no badge) and return the link and a private edit token. |
Example
curl -s https://fastwikigen.com/api/v1/generate \
-H "Authorization: Bearer $FWG_KEY" \
-H "Content-Type: application/json" \
-d '{"topic": "Incident response runbook for a small SaaS", "depth": "standard", "publish": true}'A wiki takes 10–60 seconds. Set your HTTP timeout to at least 5 minutes. While it is being written the server sends a space every 10 seconds to keep the connection open (JSON parsers ignore leading whitespace).
Response
{
"ok": true,
"wiki": {
"wiki_title": "Incident Response Runbook for a Small SaaS",
"summary": "…",
"table_of_contents": ["Overview", "Severity Levels", …],
"language": "en",
"sections": [
{ "heading": "Overview", "level": 2, "content": "Markdown with [[Severity Levels]] links…",
"tags": ["incident", "on-call"], "related_topics": ["Severity Levels"] }
]
},
"markdown": "# Incident Response Runbook…",
"html": "<article class=\"wiki\">…</article>",
"toc_html": "<nav class=\"wtoc\">…</nav>",
"words": 1840,
"truncated": false,
"left": 37,
"id": "k3m9xq2p",
"url": "https://fastwikigen.com/w/k3m9xq2p/",
"edit_token": "…",
"edit_url": "https://fastwikigen.com/?edit=k3m9xq2p#t=…"
}level 3 marks a sub-section of the level-2 section above it. In content, [[Heading]] links to another section; the html field already has those links resolved, plus backlinks and tags. id, url, edit_token and edit_url are null unless publish was true. Open edit_url in a browser to edit or unpublish the wiki on the site.
GET /api/v1/usage
What is left on your pass:
curl -s https://fastwikigen.com/api/v1/usage -H "Authorization: Bearer $FWG_KEY"
{"ok":true,"kind":"month","expires":"2026-12-07T10:00:00.0000000Z","wikis_left":296,"wikis_limit":300,"edits_left":1500,"edits_limit":1500,"max_chars":100000}Errors
Errors return {"ok": false, "error": "…", "message": "…"}.
| Status | error | Meaning |
|---|---|---|
| 400 | json, topic, short, topiclong, toolong, depth, language | Fix the request body. |
| 401 / 403 | key, unknown, expired, revoked, devices | The key is missing or can't be used. |
| 429 | passlimit, rate | The pass has used all its wikis, or too many calls in an hour (300 per IP). |
| 502 / 503 | upstream, empty, busy, off | The AI didn't finish — retry later. Not counted. |
If an error happens after the keep-alive spaces have started, the status is already 200: always check ok.
Python
import os, requests
r = requests.post("https://fastwikigen.com/api/v1/generate",
headers={"Authorization": "Bearer " + os.environ["FWG_KEY"]},
json={"text": open("meeting-notes.txt", encoding="utf-8").read(), "depth": "quick"},
timeout=300)
d = r.json()
if not d["ok"]:
raise SystemExit(d["message"])
open("wiki.md", "w", encoding="utf-8").write(d["markdown"])Fair use
Don't share your key or resell the API. Content rules are the same as on the site (terms). Questions or higher volumes: contact us.