Help center
Docs API
Everything on your public documentation site is also available as plain data, for an AI agent, your own app, or a custom docs front end. No API key is needed for a public knowledge base.
Every URL below starts from your docs root:
https://askvoro.com/~/YOUR_WORKSPACE_HANDLE/YOUR_KNOWLEDGE_BASE_SLUG| URL | Returns |
|---|---|
/nav.json | Sections and articles, in order |
/search.json?q=… | Ranked search results |
/<article>.md | One article as raw Markdown |
/llms.txt | An index of every article, for AI assistants |
/sitemap.xml | A sitemap, for search engines |
Responses from a public knowledge base can be fetched from any origin and are cached for five minutes.
Navigation#
GET /nav.json returns your sections in order, each with its articles in
order.
{
"workspace": { "slug": "acme", "name": "Acme" },
"knowledgeBase": {
"slug": "docs",
"name": "Docs",
"visibility": "public",
"url": "https://askvoro.com/~/acme/docs"
},
"sections": [
{
"id": "sec_…",
"title": "Getting started",
"articles": [
{
"slug": "install",
"title": "Install",
"description": "Add one script tag to your site…",
"url": "https://askvoro.com/~/acme/docs/install",
"markdownUrl": "https://askvoro.com/~/acme/docs/install.md",
"updatedAt": "2026-10-22T12:00:00.000Z"
}
]
}
]
}Search#
GET /search.json?q=reset+password&limit=5 searches published articles and
FAQs with the same search your support AI uses. limit defaults to 6 and is
capped at 10.
{
"query": "reset password",
"results": [
{
"type": "article",
"id": "art_…",
"slug": "reset-your-password",
"title": "Reset your password",
"excerpt": "Open **Settings → Security** and …",
"url": "https://askvoro.com/~/acme/docs/reset-your-password",
"markdownUrl": "https://askvoro.com/~/acme/docs/reset-your-password.md"
},
{
"type": "faq",
"id": "faq_…",
"question": "I never got the reset email",
"answer": "Check your spam folder …"
}
]
}Without q, search.json returns the full index the docs site's search box
loads, which is larger and meant for searching in the browser.
Markdown#
Add .md to any article URL to get its source:
curl https://askvoro.com/~/acme/docs/install.mdOr ask for Markdown with the Accept header at the normal URL, which is what
AI coding agents do:
curl -H "Accept: text/markdown" https://askvoro.com/~/acme/docs/installThe docs root with Accept: text/markdown returns llms.txt. Browsers never
ask for Markdown, so they keep getting the normal page.
Internal knowledge bases#
An internal knowledge base answers nav.json, search.json and .md only
to signed-in workspace members with article access, or to a request carrying a
workspace API key with that access. Those
responses are never cached or shared across origins. llms.txt and
sitemap.xml exist only for public knowledge bases. A hidden knowledge base
answers none of them.