API reference

Read, search and publish your documents from your own tools. The same API the Workover CLI and MCP server use.

Authentication

Create a personal access token in Settings, then send it as a bearer token. Tokens start with wk_.

curl https://api.workover.io/search?q=onboarding \
  -H "Authorization: Bearer wk_your_token"

A token reaches only the endpoints listed on this page. Account security, billing and token management are session-only and no token can reach them, whatever scopes it holds. Some endpoints additionally require a scope you granted the token when you created it; those are marked below.

Endpoints

ai

  • POST/ai/checkneeds the draft scope
  • POST/ai/doc-set/draftneeds the draft scope
  • POST/ai/doc-set/planneeds the draft scope
  • POST/ai/draftneeds the draft scope
  • GET/ai/draft/job/{id}needs the draft scope
  • GET/ai/draft/jobsneeds the draft scope
  • POST/ai/evaluateneeds the draft scope
  • GET/ai/rules
  • POST/ai/rulesneeds the rules scope
  • DELETE/ai/rules/{id}needs the rules scope
  • PUT/ai/rules/{id}needs the rules scope

mcp

  • POST/mcp/telemetry

project

  • GET/project
  • GET/project/{id}/documents
  • POST/project/{id}/documents
  • PATCH/project/{id}/documents/{docId}needs the write scope
  • PATCH/project/comments/{commentId}
  • GET/project/doc/{docId}
  • GET/project/doc/{docId}/activity
  • GET/project/doc/{docId}/comments
  • POST/project/doc/{docId}/comments
  • GET/project/doc/{docId}/content
  • POST/project/doc/{docId}/contentneeds the write scope
  • PATCH/project/doc/{docId}/medianeeds the write scope
  • POST/project/doc/{docId}/media
  • GET/project/doc/{docId}/media/meta
  • POST/project/doc/{docId}/propose
  • GET/project/doc/{docId}/tabs
  • POST/project/doc/{docId}/tabsneeds the write scope
  • PATCH/project/doc/{docId}/tabs/{tabId}needs the write scope
  • POST/project/doc/{docId}/tabs/{tabId}/duplicateneeds the write scope
  • PATCH/project/doc/{docId}/tabs/{tabId}/emojineeds the write scope
  • PATCH/project/doc/{docId}/tabs/{tabId}/parentneeds the write scope
  • PATCH/project/doc/{docId}/tabs/reorderneeds the write scope
  • GET/project/doc/{docId}/wp
  • PATCH/project/doc/{docId}/wpneeds the publish scope
  • POST/project/doc/{docId}/wp/connect-postneeds the publish scope
  • POST/project/doc/{docId}/wp/medianeeds the publish scope
  • POST/project/doc/{docId}/wp/publishneeds the publish scope
  • POST/project/doc/{docId}/wp/pullneeds the publish scope
  • POST/project/doc/{docId}/wp/pushneeds the publish scope
  • DELETE/project/doc/{docId}/wp/scheduleneeds the publish scope
  • GET/project/doc/{docId}/wp/schedule
  • POST/project/doc/{docId}/wp/scheduleneeds the publish scope
  • GET/project/doc/{documentId}/translations
  • POST/project/doc/{projectId}/wp-importneeds the publish scope
  • POST/project/doc/{projectId}/wp/termsneeds the publish scope
  • GET/project/doc/by-handle/{publicId}
  • GET/project/doc/link-preview/{publicId}
  • GET/project/doc/translations/languages

search

  • GET/search/documents
  • GET/search/recent

OpenAPI specification

This page is generated from the specification below, so it cannot describe an endpoint that does not exist. Point a client generator at it directly.

https://api.workover.io/openapi.json