Developer docs
Build on approved documents
VersoDocs exposes the published (Current) version of your organization's documents to code, CI and AI agents. Drafts and proposals in progress never leave VersoDocs. Agents work inside the approval workflow: they propose changes and review proposals (advisory verdicts only), and on Pro can publish a proposal only after people approved it.
Three ways in
All three share one credential system, one per-key rate limit and one plan table, so the same key works everywhere and a limit never differs between surfaces. A machine-readable OpenAPI 3.1 spec describes the REST API.
Quickstart
- Create an API key. In VersoDocs, open Organization settings → Developer (owners and admins) and create a key. It starts with
vsd_and is shown once. - Find your org slug: it is the segment after
/org/in any VersoDocs URL (versodocs.com/org/acme/…→acme). - Call the API:
export VERSODOCS_TOKEN=vsd_…
curl -H "Authorization: Bearer $VERSODOCS_TOKEN" \
"https://versodocs.com/api/v1/orgs/acme/docs?limit=5"Then read one document as Markdown, by the path shown in its URL:
curl -H "Authorization: Bearer $VERSODOCS_TOKEN" \
"https://versodocs.com/api/v1/orgs/acme/docs/by-path?path=eng/apis/payments-api&format=md"Connect an AI agent instead (no key needed: it signs in with OAuth on first use):
claude mcp add --transport http versodocs https://versodocs.com/api/mcpOr pull specs into a repository:
npx -y @versodocs/cli@0 login --org acme
npx -y @versodocs/cli@0 pull --folder eng/specs --out-dir docs/specsAuthentication
Every request carries Authorization: Bearer <token>. Two credential kinds exist, and both count toward the plan's key limit:
| Credential | Prefix | Lifetime | Valid on |
|---|---|---|---|
| API key (Settings → Developer) | vsd_ | Until revoked | REST API, MCP server, CLI (incl. versodocs pr-check) |
| OAuth access token (one-click MCP connect) | vsd_at_ | 1 hour (refresh token vsd_rt_ rotates, 30 days) | MCP server only (/api/mcp); the REST API answers 401 |
Keys are organization-scoped: the org comes from the credential, and a key used against another org's URL gets 404. Revocation is immediate.
Plan access matrix
Every plan includes API access. Limits are per key (or per connected app) and shared across REST, MCP and the CLI.
| Free | Team | Pro | |
|---|---|---|---|
| Active keys + connected apps | 1 | 5 | 20 |
| Rate limit (per key) | 30 req/min | 120 req/min | 600 req/min |
| Burst | 30 requests | 120 requests | 300 requests |
| Scopes (API key) | docs:read | docs:read proposals:review | docs:read docs:propose proposals:review docs:write proposals:publish |
| Scopes (one-click connection) | docs:read | docs:read docs:propose proposals:review | docs:read docs:propose proposals:review docs:write proposals:publish |
| Agent proposals | — | 25 / month, one-click connections only | Unlimited, keys and connections |
| Workspaces visible | The active workspace | All workspaces | All, or one (scoped key) |
| Feature | Free | Team | Pro | Where |
|---|---|---|---|---|
| Read Current docs | ✓ | ✓ | ✓ | RESTGET docsGET docs/{documentId}GET docs/by-pathGET webhooksPOST webhooksDELETE webhooks/{webhookId}GET webhooks/samplesMCPsearch_docslist_docsget_doccheck_referenceCLIloginpullstatuscheck |
| Version history | — | ✓ | ✓ | RESTGET docs/{documentId}/versions?version=N (doc reads)MCPlist_versionsCLIpull --version Npull --frozen |
| Version diffs | — | ✓ | ✓ | RESTGET docs/{documentId}/diffMCPdiff_versionsCLIdiffcheck (change summary) |
| Search | — | ✓ | ✓ | RESTGET searchGET docs?q= |
| Workspace tree | — | ✓ | ✓ | RESTGET treeMCPget_doc_tree |
| Attachments | — | ✓ | ✓ | RESTGET docs/{documentId}/attachmentsGET docs/{documentId}/attachments/{attachmentId}MCPlist_attachmentsget_attachment_url |
| CI spec check | — | ✓ | ✓ | RESTGET docs/{documentId}/currentGET docs/currentCLIpr-check |
| Agent context pack + llms.txt | — | ✓ | ✓ | RESTGET context-packGET llms.txtMCPget_context_pack |
| Jira + Linear issue links | — | ✓ | ✓ | RESTGET docs/{documentId}/issue-linksPOST docs/{documentId}/issue-linksGET proposals/{proposalId}/issue-linksPOST proposals/{proposalId}/issue-linksMCPlist_linkslink_issue |
| Propose changes | — | 25 / month, one-click connections only | ✓ | RESTPOST docs/{documentId}/proposalsPOST docs/{documentId}/attachmentsPOST docs/{documentId}/attachments/{attachmentId}/confirmMCPpropose_changeupload_attachment |
| Review proposals | — | ✓ | ✓ | RESTGET proposalsGET proposals/{proposalId}POST proposals/{proposalId}/commentsPATCH proposals/{proposalId}/comments/{commentId}GET docs/{documentId}/commentsPOST docs/{documentId}/commentsPATCH docs/{documentId}/comments/{commentId}POST proposals/{proposalId}/reviewsMCPlist_proposalsget_proposalcomment_on_proposalresolve_commentsubmit_reviewlist_document_commentscomment_on_documentresolve_document_comment |
| Revise & close agent proposals | — | One-click connections only | ✓ | RESTPATCH proposals/{proposalId}POST proposals/{proposalId}/closeMCPupdate_proposalclose_proposal |
| Manage docs & folders | — | — | ✓ | RESTPOST docsPATCH docs/{documentId}DELETE docs/{documentId}POST foldersPATCH folders/{folderId}DELETE folders/{folderId}MCPcreate_doccreate_folderrename_docmove_docdelete_doc |
| Publish approved proposals | — | — | ✓ | RESTPOST proposals/{proposalId}/publishMCPpublish_proposal |
| API audit log | — | — | ✓ | API calls and MCP tool calls are sampled into the org audit log. |
| Workspace-scoped keys | — | — | ✓ | Bind a key to a single workspace in Settings → Developer. |
A call outside the org's plan returns 403 with code: "plan_feature", the required_plan and an upgrade_url. MCP lists the tools whose scope the credential holds; a plan-locked one returns the same explanation as a tool error. See pricing.
For AI agents
These docs are also published as plain Markdown for LLMs and coding agents, following the llms.txt convention:
- /llms.txt: an index of the developer docs and key product pages, with one line per link.
- /llms-full.txt: every developer docs page concatenated into one Markdown file.
- Each docs page has a Markdown twin at the same URL plus
.md: /docs.md, /docs/api.md, /docs/agents.md, /docs/ai-reviewers.md, /docs/slack.md, /docs/teams.md, /docs/github.md, /docs/mcp.md, /docs/cli.md.
To let an agent read your organization's own approved documents, connect it to the MCP server.