cavuno
v0.6.0
Published
Cavuno v1 REST API command-line client
Readme
cavuno
Command-line client for the Cavuno v1 REST API. Manage jobs, companies, blog content, media, board settings, domains, async operations, API keys, audit logs, and taxonomies from a terminal, shell script, or CI pipeline.
Full reference: cavuno.com/docs/cli
Install
npm install -g cavunoOr run it once without installing:
npx cavuno --helpRequires Node.js 18.18 or newer.
Authenticate
Set two environment variables. Mint a key in the Cavuno dashboard under Settings → Developer → API keys — the plaintext secret shows once at creation, copy it to your secrets manager immediately.
export CAVUNO_API_KEY='cavuno_live_...'
export CAVUNO_API_URL='https://api.cavuno.com/v1'
cavuno usage getThe CLI fails fast at startup if CAVUNO_API_KEY is missing or malformed — you don't wait on a 401 round-trip to spot a typo.
Commands
cavuno jobs # Manage jobs (incl. batch)
cavuno usage # Inspect plan usage
cavuno companies # Manage companies (incl. batch)
cavuno blog # Manage blog posts, authors, and tags
cavuno media # Upload and fetch media assets
cavuno settings # Read and update board settings
cavuno domains # Custom domains + DNS verify
cavuno operations # List / poll / cancel async operations
cavuno api-keys # List API keys (mint is dashboard-only)
cavuno audit-logs # Query mutation audit log
cavuno taxonomies # remote helpers + skills/categories/markets CRUDJobs
| Command | Description |
|---|---|
| cavuno jobs list | List jobs with optional filters |
| cavuno jobs get <id> | Fetch a single job (enriched) |
| cavuno jobs create --title <t> [...] | Create a draft job |
| cavuno jobs update <id> [...] | Update fields on an existing job |
| cavuno jobs publish <id> [--expires-at <iso>] | Publish a job (quota-gated) |
| cavuno jobs pause <id> | Pause a published job |
| cavuno jobs expire <id> | Expire a published job immediately |
| cavuno jobs duplicate <id> | Create a draft copy |
| cavuno jobs delete <id> | Hard-delete a job |
| cavuno jobs batch [--file ops.json] | Run a batch of job operations (JSON file or stdin) |
Usage
| Command | Description |
|---|---|
| cavuno usage get | Show active-jobs slot usage and plan limit |
Companies
| Command | Description |
|---|---|
| cavuno companies list | List companies |
| cavuno companies get <id> | Fetch a single company |
| cavuno companies create --name <n> [...] | Create a company |
| cavuno companies update <id> [...] | Update a company |
| cavuno companies delete <id> | Delete a company (cascades to its jobs) |
| cavuno companies upload-logo <id> <file> | Upload or replace a company logo |
| cavuno companies delete-logo <id> | Delete a company logo |
| cavuno companies search <query> | Search companies by name |
| cavuno companies find-by-domain <domain> | Resolve a company by website domain |
| cavuno companies find-or-create --name <n> [...] | Resolve by domain or create |
| cavuno companies list-jobs <id> | List jobs at a company |
| cavuno companies batch [--file ops.json] | Run a batch of company operations |
Blog
| Command | Description |
|---|---|
| cavuno blog posts list | List blog posts with optional filters |
| cavuno blog posts get <id> | Fetch a single post |
| cavuno blog posts create --title <t> [...] | Create a draft post |
| cavuno blog posts update <id> [...] | Update fields on a post |
| cavuno blog posts publish <id> | Publish a post |
| cavuno blog posts unpublish <id> | Return a post to draft |
| cavuno blog posts toggle-featured <id> | Toggle the featured flag |
| cavuno blog posts search <query> | Search posts |
| cavuno blog posts delete <id> | Delete a post |
| cavuno blog posts batch [--file ops.json] | Run a batch of blog post operations |
| cavuno blog authors list\|get\|create\|update\|delete | Manage blog authors |
| cavuno blog tags list\|get\|create\|update\|delete | Manage blog tags |
Media
| Command | Description |
|---|---|
| cavuno media upload <file> --purpose <p> | Upload a media asset |
| cavuno media get <id> | Fetch media metadata |
Settings
| Command | Description |
|---|---|
| cavuno settings get | Show board settings |
| cavuno settings update [...] | Update name, slug, blog/candidates toggles |
| cavuno settings get-adsense / update-adsense | Read / update AdSense config |
| cavuno settings get-paywall / update-paywall | Read / update paywall config |
| cavuno settings delete-hero | Remove the hero image |
| cavuno settings set-password-protection | Set board password (reads secret from stdin) |
| cavuno settings delete-password-protection | Remove board password protection |
Domains
| Command | Description |
|---|---|
| cavuno domains list | List custom domains |
| cavuno domains get <id> | Fetch a domain + verification instructions |
| cavuno domains add <host> | Register a custom domain |
| cavuno domains verify <id> | Start async DNS verification |
| cavuno domains remove <id> | Delete a custom domain |
Operations
| Command | Description |
|---|---|
| cavuno operations list | List async operations |
| cavuno operations get <id> | Fetch one operation |
| cavuno operations cancel <id> | Request cancellation |
| cavuno operations wait <id> | Poll until terminal (--interval-ms, --timeout-ms) |
API keys / audit logs / taxonomies
| Command | Description |
|---|---|
| cavuno api-keys list | List API keys (metadata only) |
| cavuno audit-logs list | List audit entries |
| cavuno audit-logs get <id> | Fetch one audit entry |
| cavuno taxonomies remote-permits | List remote-work permit options |
| cavuno taxonomies remote-timezones | List remote-work timezone options |
| cavuno taxonomies skills\|categories\|markets list\|create\|update\|delete\|add-alias\|remove-alias | Operator taxonomy CRUD (requires taxonomy.manage) |
| cavuno taxonomies categories tree | Nested category tree |
Run cavuno <group> <command> --help for full flag detail, or see the online reference for typed examples.
Global flags
| Flag | Purpose |
|---|---|
| --api-url <url> | Override CAVUNO_API_URL for this invocation |
| --format <json\|table> | Output format. Default json (pipe-friendly) |
| --help | Print help for the command |
| --version | Print the CLI version |
Exit codes
Scripts can branch on the exit code without parsing stderr.
| Code | Reason |
|---|---|
| 0 | Success |
| 1 | Authentication failure (missing or malformed key, 401) |
| 2 | Validation error (400, missing required flag) |
| 3 | Authorization failure (403) |
| 4 | Resource not found (404) |
| 5 | Plan / quota (429 quota_exceeded, 403 plan_cannot_publish) |
| 6 | Rate limited (429); Retry-After printed |
| 7 | State conflict (409 already_published, etc.) |
| 10 | Unknown server error (500) |
| 11 | Network error (DNS, refused, timeout) |
Pipe-friendly
# Expire every published job below $100k
cavuno jobs list --status published --limit 100 \
| jq -r '.data[] | select(.salaryMinUsd < 100000) | .id' \
| xargs -n 1 -I{} cavuno jobs expire {}Links
- Reference docs: https://cavuno.com/docs/cli
- API reference: https://cavuno.com/docs/api
- Issues: https://github.com/wollemiahq/cavuno/issues
- Support: [email protected]
License
MIT
