Skip to content

dokuwiki

dokuwiki

contains code

DokuWiki JSON-RPC API — wiki pages, media files, search, ACL management, and user administration

Source: DokuWiki Remote API

Credits: Dunkel Cloud GmbH Updated: 2026-03-29

Coverage

94% (31 of ~33 endpoints)

Focus: pages, media, search, ACL, user management, wiki metadata

Missing: plugin-specific methods beyond acl and usermanager

Last reviewed: 2026-03-29

Setup

  1. Ensure the Remote API is enabled in DokuWiki: Admin → Configuration → Authentication → enable 'remote' option
  2. Optionally restrict remote access: set 'remoteuser' to limit which users/groups can use the API
  3. Use an existing DokuWiki user account with appropriate permissions
  4. The API uses HTTP Basic Authentication with your DokuWiki username and password

Environment variable: CREDENTIAL_DOKUWIKI_USERNAME and CREDENTIAL_DOKUWIKI_PASSWORD

Authentication docs ↗

DokuWiki is self-hosted. Replace the URL with your instance address. The JSON-RPC endpoint is at /lib/exe/jsonrpc.php. All API methods use POST. Page IDs use colon-separated namespaces (e.g. 'wiki:syntax', 'namespace:page').

Install

Add to your backends.yaml:

- name: dokuwiki
  transport: rest
  dadl: /app/dadl/dokuwiki.dadl
  url: "https://your-wiki.example.com/lib/exe/jsonrpc.php"
  credentials:
    dokuwiki_username: "${CREDENTIAL_DOKUWIKI_USERNAME}"
    dokuwiki_password: "${CREDENTIAL_DOKUWIKI_PASSWORD}"

Set the credential:

CREDENTIAL_DOKUWIKI_USERNAME and CREDENTIAL_DOKUWIKI_PASSWORD=your-token-here

Tools (30)

POST get_api_version Get the DokuWiki JSON-RPC API version number
POST get_wiki_version Get the DokuWiki software version string
POST get_wiki_title Get the wiki title
POST get_wiki_time Get the current server Unix timestamp
POST who_am_i Get details about the currently authenticated user (login, name, email, groups, admin/manager status)
POST acl_check Check ACL permissions for a page or media file. Returns permission level (0=none, 1=read, 2=edit, 4=create, 8=upload, 16=delete, 255=admin)
POST list_pages List all pages in a namespace. Returns page ID, revision, modification time, and size for each page.
POST search_pages Full-text search across all wiki pages. Returns matching pages with snippets.
POST get_recent_page_changes Get recently changed pages. Returns page ID, revision timestamp, author, and summary for each change.
POST get_page Get the raw wiki syntax content of a page. Use getPageHTML for rendered HTML instead.
POST get_page_html Get the rendered HTML of a page
POST get_page_info Get metadata about a page (last modified, author, locked status)
POST get_page_history Get the revision history of a page. Returns list of revisions with timestamp, author, summary, and size.
POST get_page_links Get all links contained in a page (internal and external)
POST get_page_backlinks Get all pages that link to the specified page
POST save_page Create or update a page. Replaces the entire page content with the provided text.
POST append_page Append text to an existing page without replacing existing content
POST lock_pages Lock pages to prevent concurrent editing
POST unlock_pages Unlock previously locked pages
POST list_media List media files in a namespace. Returns file ID, size, modification time, and permissions.
POST get_recent_media_changes Get recently changed media files
POST get_media Download a media file as base64-encoded content
POST get_media_info Get metadata about a media file (size, modification time, permissions)
POST save_media Upload a media file (base64-encoded)
POST delete_media Permanently delete a media file
POST list_acls List all ACL rules. Requires admin permissions.
POST add_acl Add an ACL rule. Permission levels: 0=none, 1=read, 2=edit, 4=create, 8=upload, 16=delete, 255=admin
POST delete_acl Remove an ACL rule
POST create_user Create a new DokuWiki user account. Requires admin permissions.
POST delete_user Permanently delete user accounts. Requires admin permissions.

Composites (3) ⚠ contains code

FN page_search_and_replace Replace all occurrences of a literal substring in a wiki page and save it. Internally: get_page → string replace → save_page. The full page content never leaves the ToolMesh server; only { success, replacements } is returned. The search is a literal match (no regex).
FN page_append_section Insert content at the end of an existing section, before the next heading of equal or higher level. Useful for adding material between e.g. section 6.2 and 7 — which append_page cannot do because it only appends to EOF. Internally: get_page → parse headings → splice → save_page. The full page content never leaves the ToolMesh server.
FN chunked_save_page Stateful chunked save: buffers text chunks server-side in a hidden draft page and writes the assembled content to the target page in a single revision when finalized. Workflow: 1. First chunk: chunk_index=0 (resets the buffer for this session_id). 2. Middle chunks: chunk_index=1..N-2 (each appended to the buffer). 3. Final chunk: chunk_index=N-1, finalize=true — assembles buffer, writes target page in ONE revision, deletes draft. Use this when the per-call payload of execute_code is too small to fit the full page text in a single save_page call (e.g. when the calling transport limits the size of tool-call arguments). Each call carries only one chunk so the per-call payload stays small, while the target page receives one clean revision. All intermediate buffer operations (draft create, chunk appends, draft delete) are flagged as DokuWiki minor edits, so they are hidden from the default Recent Changes view. Only the final write to the target page surfaces — the noise stays out of the wiki's change history. Caveats: - session_id must be unique per upload — collisions corrupt the buffer. - Abandoned sessions leave a draft at _chunked_uploads:<session_id>; re-using the same session_id with chunk_index=0 cleans it up. - Chunks must arrive in order; the composite does not reorder them.