API Reference
Manage your documentation, trigger AI generation, and integrate AlgoQuill into your CI/CD pipeline via REST API.
Base URL
https://algoquill.ai/api
Authentication
All API requests require a Bearer token. Get your API key from Dashboard → Settings → API Keys.
# Include in every request
Authorization: Bearer aq_live_xxxxxxxxxxxxxxxxxxxx
Never expose your API key in client-side code. Use environment variables or a backend proxy.
Projects
GET
/projectsList all projectsReturns all projects in your workspace.
// Response
{
"projects": [
{
"id": "b726a15f-ab23-4e9b-a3f1-bb65c0194abc",
"name": "My API Docs",
"subdomain": "my-api",
"status": "published",
"created_at": "2026-01-15T10:00:00Z"
}
]
}
GET
/projects/:idGet a projectReturns a single project by ID, including page count and analytics summary.
Pages
GET
/projects/:id/pagesList pagesReturns all pages in a project. Add ?status=published to filter.
{
"pages": [
{
"id": "ca3ab121-f179-4437-a328-5aff5ea37458",
"title": "Authentication",
"slug": "authentication",
"status": "published",
"updated_at": "2026-04-19T23:11:07Z"
}
]
}
POST
/projects/:id/pagesCreate a pagetitlerequiredstringPage title, shown in the sidebar and browser tab.slugrequiredstringURL slug. Must be unique within the project. Example: getting-startedcontentrequiredstringPage content in Markdown/MDX format.status"draft" | "published"Default: draft. Set to published to make the page visible on the public site.positionnumberSort order in the sidebar. Lower numbers appear first.PATCH
/projects/:id/pages/:pageIdUpdate a pagePartial update — send only the fields you want to change. Useful for publishing: {"status": "published"}
DELETE
/projects/:id/pages/:pageIdDelete a pagePermanently deletes a page. Returns 204 No Content on success.
Error codes
| Code | Meaning |
|---|---|
400 | Bad request — check your request body for missing or invalid fields |
401 | Unauthorized — your API key is missing or invalid |
403 | Forbidden — you don't have access to this resource |
404 | Not found — the project or page doesn't exist |
429 | Rate limited — slow down. Limit is 100 requests per minute |
500 | Server error — something went wrong on our end. Try again |