Skip to main content

Troubleshooting

Authentication fails

Symptoms:

  • CLI prints auth_expired
  • API returns 401 unauthorized
  • opendocs whoami fails

Fix:

opendocs login --key od_live_xxxxx
opendocs whoami --json

If the key was revoked or lost, create a new one in Dashboard -> API Keys. Agents and CI should pass --key or set OPENDOCS_API_KEY; bare opendocs login waits for an interactive prompt.

Publishing goes to the wrong workspace

The CLI stores one active workspace locally. Check it:

opendocs whoami --json
opendocs workspace list --json

Switch if needed:

opendocs workspace use acme-docs --json

The dashboard's active workspace is independent of the CLI's active workspace.

A public URL returns 404

Check these in order:

  1. The post is still published: opendocs get <slug> --json.
  2. The post visibility is public.
  3. The workspace has Allow public documents enabled in Dashboard -> Workspace settings.

To change a post to public:

opendocs visibility launch-note public --confirm-public

If you only meant team sharing, use workspace visibility instead.

Free document limit

Free workspaces can have 10 currently published documents. If a publish fails with document_limit, the fix is one of:

  • unpublish a document you no longer need
  • publish fewer files
  • upgrade to Pro

Unpublish frees a slot:

opendocs list --json
opendocs unpublish old-draft

Updates do not consume additional slots.

Export failures

Symptoms:

  • export_failed
  • converter_timeout
  • a publish succeeded but --export pdf failed

The published post usually still exists. Retry export only:

opendocs export report --format pdf --json

If DOCX export fails on Free, upgrade to Pro or export PDF instead. Free PDF exports include the OpenDocs footer and default branding.

Batch publish partially failed

Batch publish can succeed for some files and fail for others. In --json, read the results array:

{
"total": 10,
"succeeded": 9,
"failed": 1,
"results": [
{ "success": false, "file": "duplicate.md", "error": "publish_failed" }
]
}

Fix the failed files and re-run only those files. Keep the same shared tag so the group stays discoverable.

Local images do not render

The CLI uploads local Markdown images before publish. Check:

  • the image path exists
  • the image is inside the Markdown file's directory
  • the image is JPEG, PNG, WebP, GIF, or SVG
  • the image is 10 MB or smaller

Remote image URLs are left as-is.

Rate limits

If the API returns 429 rate_limited, wait at least a minute before retrying. Do not put agents in tight retry loops.

Common buckets:

Route groupLimit
General API traffic120 requests / minute
Single publish30 requests / minute
Batch publish5 requests / minute
Single export20 requests / minute
Batch export3 requests / minute