Skip to main content
These endpoints share the usual prefix http://localhost:3333/api/kiwi and authentication rules from API overview.
Returns plain text target path. 404 if the path is missing; 400 if the path is not a symlink.

Lint markdown

Lint an existing file:
Or inline content:
Response: { "issues": [ /* structured lint records */ ] } (always an array, possibly empty).

Peek summary

Returns JSON with title, snippet, frontmatter, links_out, links_in, headings, word_count, and other lightweight fields without returning the full body.

Read one section

or
Returns { "path", "heading", "level", "content", "line_start", "line_end" }.

Activity timeline

  • type filter: write, delete, or omit for both.
  • limit defaults to 50, max 500.
Response: { "events": [...], "total": <number> }total is a hint for pagination (see server implementation).

Feeds

Atom and JSON Feed built from recent timeline events (titles include updated vs deleted paths).

Clip a web page

Fetches the article, converts to markdown, writes through the pipeline using X-Actor (default clipper), and returns { "path", "title", "excerpt" }.

Extended graph APIs

All of the following return 503 when link indexing is unavailable.

Centrality

Returns { "pages": [ { "path", "pagerank", "betweenness", ... } ] } (truncated to limit).

Communities

Louvain communities over wiki-link edges: { "communities": ... }.

Shortest path

Returns { "path": ["concepts/a.md", "..."] }. 404 when no path exists.

Local neighborhood

Returns outbound wiki links, backlinks, and optional same-directory neighbors.

Page templates

Slash-command templates in .kiwi/templates/:
GET /templates lists available template names. GET /template returns the template body for insertion into new pages.

Search evaluation

Benchmark search quality against expected paths:
Returns per-query FTS and semantic ranks plus aggregate hit_rate, mrr, and precision_at_5. MCP: kiwi_eval.

Backup status

When [backup] is configured:
Returns last push time, remote URL, and error state for the background backup goroutine.

Rules file

  • Without format, returns raw .kiwi/rules.md (empty string when missing).
  • format may be cursor, claude, agents, or openclaw to wrap user rules for a specific harness.
  • PUT accepts raw markdown (max 256 KiB) and commits .kiwi/rules.md when git versioning is enabled.

Space metadata

Allowed values: private, unlisted, public. Persists into .kiwi/config.toml and updates the live config.

Audit log

Returns JSON array entries { "ts", "method", "path", "space", "actor", "token_hash", "ip", "status", "duration_ms" }. 501 when audit logging was not enabled for this server. Default since is the last 24 hours; limit defaults to 100 (max 10000).

Public routes

Share tokens

Create links with POST /share. Readers call without API authentication:
Optional password: query password or header X-Share-Password. Wrong or missing passwords return 401 with a WWW-Authenticate challenge when the link is password protected.

Public visibility browsing

These endpoints expose only markdown that declares visibility: public in frontmatter:
Non-public pages return 404 as “not found” to avoid leaking existence.

Raw files

Serves raw bytes for static assets and markdown outside the JSON APIs (used by the web UI). Not a substitute for GET /file when you need ETag semantics.

UI configuration

Returns JSON consumed by the embedded web UI (feature flags, layout hints).

MCP parity

Many of these flows have MCP tools (kiwi_lint, kiwi_peek, kiwi_section, kiwi_timeline, kiwi_feed, kiwi_clip, kiwi_graph_*, and more). See MCP.
Last modified on May 22, 2026