--- name: labradoc-cli description: Use the Labradoc CLI to authenticate and call Labradoc API endpoints (tasks, files, users, API keys, email, Google/Microsoft integrations, billing) from OpenClaw. Trigger when the user wants to perform Labradoc operations, manage documents/tasks, or interact with the Labradoc API via command line. --- # Labradoc CLI Labradoc is an AI document intelligence platform that unifies emails, documents, and photos into one searchable system. It provides natural-language search and contextual answers over your own data, supports Gmail and Google Drive integrations, email forwarding, and manual uploads, and emphasizes GDPR-aligned hosting in Germany with strong privacy controls. Use this skill to operate the `labradoc-cli` CLI with API token authentication. It covers configuration and every available command. ## Install Get the latest prebuilt binary from the GitHub Releases page, then place it on your PATH: https://github.com/zamedic/labradoc-cli/releases ## Configuration The CLI sends the API token as the `X-API-Key` header. **Preferred authentication method:** API Token from your Labradoc profile at https://labradoc.eu/profile Set the token using one of the following (highest wins): ```text --api-token flag LABRADOC_API_TOKEN env var labrador.yaml (api_token) ``` Optional base URL override: ```text --api-url flag LABRADOC_API_URL env var labrador.yaml (api_url) ``` Config file precedence: ```text labrador.yaml labrador..yaml ENV vars (dots become underscores) ``` ## Global Flags ```text --api-url API base URL (default https://labradoc.eu) --api-token API token (X-API-Key) --timeout HTTP timeout (default 30s) ``` ## Authentication (OAuth) API token auth is preferred, but OAuth is available: ```bash # Login via browser eval labradoc-cli auth login --api-url https://api.labradoc.eu # Check auth status labradoc-cli auth status --api-url https://labradoc.eu # Get current token labradoc-cli auth token # Refresh token labradoc-cli auth refresh # Logout labradoc-cli auth logout ``` When using OAuth, pass `--use-auth-token` to API commands instead of `--api-token`. ## Raw Request ```bash labradoc-cli api request /api/tasks --method GET labradoc-cli api request /api/tasks --method POST --body '{"name":"Example"}' labradoc-cli api request /api/tasks --method POST --body-file ./payload.json ``` ## Tasks ```bash labradoc-cli api tasks list labradoc-cli api tasks close --id labradoc-cli api tasks close --ids --ids ``` ## Files ```bash labradoc-cli api files list --status New --status completed --page-size 50 labradoc-cli api files upload --file ./document.pdf labradoc-cli api files get --id labradoc-cli api files content --id --out content.txt labradoc-cli api files ocr --id --out ocr.txt labradoc-cli api files download --id --out original.pdf labradoc-cli api files fields --id labradoc-cli api files related --id labradoc-cli api files reprocess --id labradoc-cli api files tasks --id labradoc-cli api files image --id --page 1 --out page-1.png labradoc-cli api files preview --id --page 1 --out page-1-preview.png labradoc-cli api files archive --id labradoc-cli api files archive --ids --ids labradoc-cli api files question --id --body '{"question":"What is the due date?"}' labradoc-cli api files search --body '{"question":"Find all invoices from Acme"}' ``` Valid `--status` values: `New`, `multipart`, `googleDocument`, `Check_Duplicate`, `detectFileType`, `htmlToPdf`, `preview`, `ocr`, `process_image`, `embedding`, `name_predictor`, `document_type`, `extraction`, `task`, `completed`, `ignored`, `error`, `not_supported`, `on_hold`, `duplicated`. Note: `files search` returns a Server-Sent Events (SSE) stream. ## API Keys ```bash labradoc-cli api apikeys list labradoc-cli api apikeys create --name "CI token" --expires-at 2026-06-01T00:00:00Z labradoc-cli api apikeys revoke --id ``` ## User ```bash labradoc-cli api user credits labradoc-cli api user stats labradoc-cli api user language get labradoc-cli api user language set --language en ``` ## Email ```bash labradoc-cli api email addresses labradoc-cli api email request --description "Inbound invoices" labradoc-cli api email list labradoc-cli api email body --id --index 1 --out body.eml ``` ## Integrations See [references/integrations.md](references/integrations.md) for Google Drive, Gmail, and Microsoft Outlook commands. ## Billing (Stripe) ```bash labradoc-cli api stripe checkout labradoc-cli api stripe pages-checkout labradoc-cli api stripe webhook --body-file ./stripe-event.json ``` ## Wrapper Script A convenience wrapper is provided at `scripts/run-labradoc.sh`. It checks that the `labradoc-cli` binary is on PATH and forwards all arguments: ```bash ./scripts/run-labradoc.sh api tasks list ``` ## Output Behaviour | Condition | stdout | stderr | Exit code | |-----------|--------|--------|-----------| | Success | Response body (JSON or binary) | — | 0 | | HTTP 4xx / 5xx | — | Response body (error JSON) | 1 | | CLI error (missing flag, etc.) | — | Error message | 1 | **Parsing rules for agents:** - Parse stdout only on exit code 0. - On exit code 1, read stderr for the error detail (may include the server's JSON error body). - `files image`, `files preview`, `files download`, `files content`, `files ocr` return binary data; always use `--out ` for these commands. - `files search` returns a **Server-Sent Events (SSE)** stream on stdout; parse it as SSE, not plain JSON. ## Troubleshooting ```text Missing token: provide --api-token, LABRADOC_API_TOKEN, or api_token in labrador.yaml 401/403: confirm API token and --api-url ```