Cavuno CLI
Manage Cavuno from the terminal with pipeable commands and exit codes
A
JInstall
The CLI is published to the npm registry as cavuno. Install it globally with your preferred package manager, or run it once with npx. View the source or report an issue on GitHub.
npm install --global cavuno
npx cavuno --help
Authentication
Set two environment variables. Mint a key in the Cavuno dashboard under Settings → Developer → API keys. The plaintext secret is shown once at creation — copy it to your secrets manager immediately.
export CAVUNO_API_KEY='cavuno_live_xxxxxxxxxxxxxxxx_yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy'export CAVUNO_API_URL='https://api.cavuno.com/v1'cavuno usage get
The CLI fails fast at startup if CAVUNO_API_KEY is missing or doesn’t match the cavuno_live_* format — you don’t wait on a 401 round-trip to see the error.
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 or subcommand |
--version | Print the CLI version |
Output formats
The default json output is the API response body verbatim — pipe it into jq for scripts. The optional table format pretty-prints key fields for terminal viewing.
cavuno jobs list --status published --format table
Exit codes
The CLI exits with a stable code per error class. Scripts can branch on these without parsing stderr.
| Code | Reason |
|---|---|
0 | Success |
1 | Authentication failure — missing or malformed CAVUNO_API_KEY, 401 auth_unauthenticated |
2 | Validation error — 400 validation_bad_request, missing required CLI flag |
3 | Authorization failure — 403 auth_forbidden |
4 | Resource not found — 404 *_not_found |
5 | Plan / quota — 409 jobs_quota_exceeded, 403 jobs_plan_cannot_publish |
6 | Rate limited — 429 rate_limited (Retry-After printed) |
7 | State conflict — 409 jobs_already_published, jobs_not_published, jobs_already_archived |
10 | Unknown server error — 500 or unmapped |
11 | Network error — DNS failure, connection refused, timeout |
Failure messages on stderr include the API code, message, validation issues (when present), Retry-After (on 429), and X-Request-Id (when present). Echo the request ID when filing support tickets.
jobs
Manage jobs in the authenticated account.
cavuno jobs list
List jobs (paginated).
Maps to GET /v1/jobs (POST /v1/jobs/search when --search, --skills, or --categories is set)
Synopsis
cavuno jobs list [options]
Options
| Flag | Required | Description |
|---|---|---|
--status <status> | no | Filter by status (draft|pending_approval|published|expired|archived) |
--company-id <id> | no | Filter by company ID |
--search <query> | no | Free-text search; routes through POST /v1/jobs/search |
--skills <slugs> | no | Comma-separated canonical skill slugs |
--categories <slugs> | no | Comma-separated canonical category slugs |
--limit <n> | no | Page size 1-100 (default 50) |
--cursor <cursor> | no | Pagination cursor from previous response |
Examples
# All jobs (first page)cavuno jobs list
# Published onlycavuno jobs list --status published --limit 100
# Published jobs at a single companycavuno jobs list --status published --company-id k17abc...
# Jobs awaiting your approval (approve with `jobs publish`, reject with `jobs delete`)cavuno jobs list --status pending_approval
cavuno jobs get
Fetch a single job by ID (enriched with description, company, places).
Maps to GET /v1/jobs/:id
Synopsis
cavuno jobs get <id>
Arguments
| Name | Required | Description |
|---|---|---|
id | yes | Job ID |
Examples
cavuno jobs get k17abc...
cavuno jobs get k17abc... | jq -r .title
cavuno jobs create
Create a draft job.
Maps to POST /v1/jobs
Synopsis
cavuno jobs create [options]
Options
| Flag | Required | Description |
|---|---|---|
--title <title> | yes | Job title (required) |
--description <text> | no | Description (markdown/HTML) |
--slug <slug> | no | URL slug; auto-derived from title if omitted |
--company-id <id> | no | Company ID (must belong to your account) |
--application-url <url> | no | Application URL or `mailto:`/email |
--external-id <id> | no | Your own ID for the job (ATS requisition ID or source job URL); set it so reposts are detected |
--allow-shared-application-url | no | Create even if another job already uses this application URL or email (roles sharing one ATS page or inbox) |
--employment-type <type> | no | full_time|part_time|contract|internship|temporary|volunteer|other |
--remote-option <opt> | no | on_site|hybrid|remote |
--seniority <level> | no | entry_level|associate|mid_level|senior|lead|principal|director|executive |
--remote-sponsorship <opt> | no | yes|no|unknown — visa sponsorship for remote candidates |
--remote-permits <json> | no | JSON array, e.g. '[{"type":"country","value":"US"}]' — work-permit scope |
--remote-timezones <json> | no | JSON array, e.g. '[{"type":"all","value":"all"}]' — timezone constraint (auto-derived from --remote-permits when omitted) |
--office-locations <json> | no | JSON array, e.g. '[{"city":"Berlin","country":"DE"}]' — required for on_site/hybrid |
--in-office-period <opt> | no | per_week|per_month|per_year — denominator for --in-office-frequency (hybrid) |
--in-office-frequency <n> | no | In-office count per period (hybrid) |
--salary-min <n> | no | Minimum salary |
--salary-max <n> | no | Maximum salary |
--salary-currency <code> | no | ISO 4217 currency (e.g. USD, EUR, GBP) |
--salary-timeframe <opt> | no | per_year|per_month|per_week|per_day|per_hour |
--education-requirements <list> | no | Comma-separated values: high_school,associate_degree,bachelor_degree,professional_certificate,postgraduate_degree,no_requirements |
--skills <slugs> | no | Comma-separated canonical skill slugs |
--categories <slugs> | no | Comma-separated canonical category slugs |
--experience-months <n> | no | Minimum experience required, in months |
--experience-in-place-of-education | no | Allow equivalent experience to substitute for education |
--is-featured | no | Mark as a featured job on the public board |
--expires-at <iso> | no | Expiry as ISO 8601 datetime (defaults to 30 days from creation when omitted) |
Examples
# Minimalcavuno jobs create --title "Senior Backend Engineer"
# Common remote-only casecavuno jobs create \--title "Senior Platform Engineer" \--description "We’re hiring..." \--employment-type full_time \--remote-option remote \--seniority senior \--company-id k18acme...
# Hybrid role (requires --office-locations)cavuno jobs create \--title "Staff Engineer" \--remote-option hybrid \--in-office-period per_week \--in-office-frequency 2 \--office-locations '[{"city":"Berlin","country":"DE"}]'
# Capture the new IDNEW_ID=$(cavuno jobs create --title "Test" | jq -r .id)
# Second role sharing one application inboxcavuno jobs create \--title "Faculty Position in AI and Analytics" \--application-url recruitment@example.edu \--external-id REQ-2027-14 \--allow-shared-application-url
cavuno jobs update
Update fields on an existing job.
Maps to PATCH /v1/jobs/:id
Synopsis
cavuno jobs update <id> [options]
Arguments
| Name | Required | Description |
|---|---|---|
id | yes | Job ID |
Options
| Flag | Required | Description |
|---|---|---|
--title <title> | no | 1–200 chars |
--description <text> | no | Description (markdown/HTML) |
--slug <slug> | no | |
--company-id <id> | no | Company ID (must belong to your account) |
--application-url <url> | no | Application URL or `mailto:`/email |
--employment-type <type> | no | |
--remote-option <opt> | no | on_site|hybrid|remote |
--seniority <level> | no | |
--remote-sponsorship <opt> | no | yes|no|unknown |
--remote-permits <json> | no | JSON array; pass `[]` to clear |
--remote-timezones <json> | no | JSON array; pass `[]` to clear (PATCH never auto-re-derives) |
--office-locations <json> | no | JSON array; required when --remote-option is on_site/hybrid |
--in-office-period <opt> | no | per_week|per_month|per_year |
--in-office-frequency <n> | no | Hybrid in-office count per period |
--salary-min <n> | no | Minimum salary |
--salary-max <n> | no | Maximum salary |
--salary-currency <code> | no | ISO 4217 currency (e.g. USD, EUR, GBP) |
--salary-timeframe <opt> | no | per_year|per_month|per_week|per_day|per_hour |
--education-requirements <list> | no | Comma-separated list |
--skills <slugs> | no | Comma-separated canonical skill slugs; pass an empty value to clear |
--categories <slugs> | no | Comma-separated canonical category slugs; pass an empty value to clear |
--experience-months <n> | no | Minimum experience required, in months |
--experience-in-place-of-education <bool> | no | true|false (string accepted; PATCH semantics — explicit value required) |
--is-featured <bool> | no | true|false (string accepted; PATCH semantics — explicit value required) |
--expires-at <iso> | no | ISO 8601 datetime (parsed to epoch ms); pass `null` to clear |
Examples
# Renamecavuno jobs update k17abc... --title "Renamed role"
# Re-author the remote-permit set + sponsorshipcavuno jobs update k17abc... \--remote-permits '[{"type":"country","value":"US"}]' \--remote-sponsorship yes
# Clear an existing expirycavuno jobs update k17abc... --expires-at null
# Mark as featuredcavuno jobs update k17abc... --is-featured true
cavuno jobs publish
Publish a job (draft, pending_approval or expired → published). Publishing a pending_approval job approves it.
Maps to POST /v1/jobs/:id/publish
Synopsis
cavuno jobs publish <id> [options]
Arguments
| Name | Required | Description |
|---|---|---|
id | yes | Job ID |
Options
| Flag | Required | Description |
|---|---|---|
--expires-at <iso> | no | Optional ISO 8601 expiry timestamp |
Examples
cavuno jobs publish k17abc...
cavuno jobs publish k17abc... --expires-at 2026-12-31T23:59:59Z
# Approve a job awaiting approvalcavuno jobs publish k17abc...
cavuno jobs pause
Pause a published job (transition to draft).
Maps to POST /v1/jobs/:id/pause
Synopsis
cavuno jobs pause <id>
Arguments
| Name | Required | Description |
|---|---|---|
id | yes | Job ID |
Examples
cavuno jobs pause k17abc...
cavuno jobs expire
Expire a published job immediately (sets expiresAt = now).
Maps to POST /v1/jobs/:id/expire
Synopsis
cavuno jobs expire <id>
Arguments
| Name | Required | Description |
|---|---|---|
id | yes | Job ID |
Examples
cavuno jobs expire k17abc...
cavuno jobs duplicate
Duplicate a job (creates a new draft copy).
Maps to POST /v1/jobs/:id/duplicate
Synopsis
cavuno jobs duplicate <id>
Arguments
| Name | Required | Description |
|---|---|---|
id | yes | Job ID |
Examples
cavuno jobs duplicate k17abc...
NEW_ID=$(cavuno jobs duplicate k17abc... | jq -r .id)
cavuno jobs delete
Hard-delete a job. Irreversible. Deleting a pending_approval job rejects it.
Maps to DELETE /v1/jobs/:id
Synopsis
cavuno jobs delete <id> [options]
Arguments
| Name | Required | Description |
|---|---|---|
id | yes | Job ID |
Options
| Flag | Required | Description |
|---|---|---|
-y, --yes | no | Skip the confirmation prompt |
Examples
cavuno jobs delete k17abc... --yes
# Reject a job awaiting approvalcavuno jobs delete k17abc... --yes
cavuno jobs batch
Run a batch of job operations. Pass JSON via --file or stdin. Exit 0 on HTTP 200 even if some rows fail — inspect the body.
Maps to POST /v1/jobs/batch
Synopsis
cavuno jobs batch [options]
Options
| Flag | Required | Description |
|---|---|---|
--file <path> | no | JSON file body (otherwise read stdin) |
Examples
cavuno jobs batch --file ops.json
echo '{"operations":[]}' | cavuno jobs batch
builder
Work with a Builder draft from a coding agent. Needs CAVUNO_API_KEY with Builder: read, manage, or publish. Run as `npx cavuno@latest builder …`. Guide: https://cavuno.com/docs/ai-website-builder/coding-agents
cavuno builder checkout
Create a draft from live or check out an existing Builder draft. Without a board ID, uses the API key's board.
Maps to GET /v1/builder/boards; POST /v1/builder/boards/:boardId/drafts; GET /v1/builder/boards/:boardId/drafts/:draftId/snapshot
Synopsis
cavuno builder checkout [board-id] [options]
Arguments
| Name | Required | Description |
|---|---|---|
board-id | no | Board ID (default: the API key's board) |
Options
| Flag | Required | Description |
|---|---|---|
--draft <draft-id> | no | Existing draft ID, or the ID at the end of the task's Builder URL (default: create from live) |
--directory <path> | no | Destination directory (default: ./<board-id>-builder or ./<board-id>-<draft-id>) |
Examples
npx cavuno@latest builder checkout
npx cavuno@latest builder checkout <board-id> --draft <draft-id>
cavuno builder submit
Submit local Builder source, including uncommitted edits, for the checked-out draft. Sends the files Git sees (tracked plus untracked, minus .gitignore matches). On stale_base, run builder pull, then submit again.
Maps to POST /v1/builder/boards/:boardId/drafts/:draftId/submissions/staged
Synopsis
cavuno builder submit [options]
Options
| Flag | Required | Description |
|---|---|---|
--directory <path> | no | Builder checkout directory (default: current directory) |
Examples
npx cavuno@latest builder submit
npx cavuno@latest builder submit --directory ./my-checkout
cavuno builder pull
Merge the draft's current version into committed local work, like git pull. After a publish elsewhere, pull then submit (even unchanged) to make the caught-up version publishable.
Maps to GET /v1/builder/boards/:boardId/drafts/:draftId/snapshot
Synopsis
cavuno builder pull [options]
Options
| Flag | Required | Description |
|---|---|---|
--directory <path> | no | Builder checkout directory (default: current directory) |
Examples
npx cavuno@latest builder pull
npx cavuno@latest builder pull --directory ./my-checkout
cavuno builder status
Read the current submitted version, check, and publish status. With --wait, poll until checks finish: exit 0 when the version is verified and cleared to publish, 7 with the reason when it failed or was flagged.
Maps to GET /v1/builder/boards/:boardId/drafts/:draftId/versions/:versionId/status
Synopsis
cavuno builder status [options]
Options
| Flag | Required | Description |
|---|---|---|
--directory <path> | no | Builder checkout directory (default: current directory) |
--wait | no | Poll until the checks reach a final state |
--interval-ms <n> | no | Poll interval in milliseconds with --wait (default 10000) |
--timeout-ms <n> | no | Give up waiting after this many milliseconds (default 1200000) |
Examples
npx cavuno@latest builder status
npx cavuno@latest builder status --wait
cavuno builder preview
Mint a one-use private preview URL for the current version.
Maps to GET /v1/builder/boards/:boardId/drafts/:draftId/versions/:versionId/preview
Synopsis
cavuno builder preview [options]
Options
| Flag | Required | Description |
|---|---|---|
--directory <path> | no | Builder checkout directory (default: current directory) |
Examples
npx cavuno@latest builder preview
cavuno builder publish
Queue the current submitted version through the full Go Live gate.
Maps to POST /v1/builder/boards/:boardId/drafts/:draftId/versions/:versionId/publish
Synopsis
cavuno builder publish [options]
Options
| Flag | Required | Description |
|---|---|---|
--directory <path> | no | Builder checkout directory (default: current directory) |
Examples
npx cavuno@latest builder publish
usage
Inspect actionable product capacity (jobs, subscribers, seats).
cavuno usage get
Show used, limit, and remaining capacity for active jobs, confirmed subscribers, and team seats.
Maps to GET /v1/usage
Synopsis
cavuno usage get
Examples
cavuno usage get
me
Show the authenticated operator identity (Board, role, permissions, scopes).
cavuno me get
Retrieve the current Board, actor type, live role/permissions, and credential scopes.
Maps to GET /v1/me
Synopsis
cavuno me get
Examples
cavuno me get
companies
Manage companies in the authenticated account.
cavuno companies list
List companies (paginated).
Maps to GET /v1/companies
Synopsis
cavuno companies list [options]
Options
| Flag | Required | Description |
|---|---|---|
--search <query> | no | Substring search on name |
--markets <slugs> | no | Comma-separated canonical market slugs |
--limit <n> | no | Page size 1-100 (default 50) |
--cursor <cursor> | no | Pagination cursor |
Examples
cavuno companies list
cavuno companies list --search acme --limit 10
cavuno companies get
Fetch a single company by ID.
Maps to GET /v1/companies/:id
Synopsis
cavuno companies get <id>
Arguments
| Name | Required | Description |
|---|---|---|
id | yes | Company ID |
Examples
cavuno companies get k18acme...
cavuno companies create
Create a company.
Maps to POST /v1/companies
Synopsis
cavuno companies create [options]
Options
| Flag | Required | Description |
|---|---|---|
--name <name> | yes | Company name (required) |
--slug <slug> | no | URL slug; auto-derived from --name if omitted |
--website <url> | no | Website URL |
--summary <text> | no | Short summary (≤280 chars) |
--description <text> | no | Long-form description (≤25,000 chars) |
--x-url <handle-or-url> | no | X (Twitter) handle or profile URL |
--linkedin-url <url-or-path> | no | LinkedIn company page URL or path |
--facebook-url <url-or-path> | no | Facebook company page URL or path |
--markets <slugs> | no | Comma-separated canonical market slugs |
Examples
cavuno companies create --name "Acme Corp"
cavuno companies create \--name "Acme Corp" \--website https://acme.com \--summary "World-class widgets"
cavuno companies update
Update a company (partial).
Maps to PATCH /v1/companies/:id
Synopsis
cavuno companies update <id> [options]
Arguments
| Name | Required | Description |
|---|---|---|
id | yes | Company ID |
Options
| Flag | Required | Description |
|---|---|---|
--name <name> | no | New name |
--slug <slug> | no | New URL slug |
--website <url> | no | New website URL |
--summary <text> | no | New summary |
--description <text> | no | New long-form description |
--x-url <handle-or-url> | no | New X handle or profile URL |
--linkedin-url <url-or-path> | no | New LinkedIn URL or path |
--facebook-url <url-or-path> | no | New Facebook URL or path |
--markets <slugs> | no | Comma-separated canonical market slugs; pass an empty string to clear |
Examples
cavuno companies update k18acme... --name "Acme, Inc."
cavuno companies update k18acme... --website https://acme.io
cavuno companies delete
Delete a company and cascade-delete its jobs.
Maps to DELETE /v1/companies/:id
Synopsis
cavuno companies delete <id> [options]
Arguments
| Name | Required | Description |
|---|---|---|
id | yes | Company ID |
Options
| Flag | Required | Description |
|---|---|---|
--block | no | Delete and block: keep the company blocked so backfill, imports and the API cannot add it back until it is unblocked. |
-y, --yes | no | Skip the confirmation prompt |
Examples
cavuno companies delete k18acme... --yes
cavuno companies delete k18acme... --block --yes
cavuno companies upload-logo
Upload or replace a company logo.
Maps to POST /v1/companies/:id/logo
Synopsis
cavuno companies upload-logo <id> <file>
Arguments
| Name | Required | Description |
|---|---|---|
id | yes | Company ID |
file | yes | Path to a PNG, JPEG, WebP, or GIF logo file |
Examples
cavuno companies upload-logo k18acme... ./acme-logo.png
cavuno companies delete-logo
Delete a company logo.
Maps to DELETE /v1/companies/:id/logo
Synopsis
cavuno companies delete-logo <id> [options]
Arguments
| Name | Required | Description |
|---|---|---|
id | yes | Company ID |
Options
| Flag | Required | Description |
|---|---|---|
-y, --yes | no | Skip the confirmation prompt |
Examples
cavuno companies delete-logo k18acme... --yes
cavuno companies find-by-domain
Resolve a company by website domain (uses search endpoint).
Maps to POST /v1/companies/search
Synopsis
cavuno companies find-by-domain <domain>
Arguments
| Name | Required | Description |
|---|---|---|
domain | yes | Website domain (e.g. acme.com) |
Examples
cavuno companies find-by-domain acme.com
cavuno companies find-or-create
Resolve to an existing company by domain or create one.
Maps to POST /v1/companies/find-or-create
Synopsis
cavuno companies find-or-create [options]
Options
| Flag | Required | Description |
|---|---|---|
--name <name> | yes | Company name |
--website <url> | no | Website URL (used for dedup) |
Examples
cavuno companies find-or-create --name "Acme Corp" --website acme.com
cavuno companies search
Search companies by name and market.
Maps to POST /v1/companies/search
Synopsis
cavuno companies search [query] [options]
Arguments
| Name | Required | Description |
|---|---|---|
query | no | Free-text query |
Options
| Flag | Required | Description |
|---|---|---|
--markets <slugs> | no | Comma-separated canonical market slugs |
--limit <n> | no | Page size 1-100 (default 25) |
Examples
cavuno companies search "acme" --limit 10
cavuno companies block
Block a company: stop automated re-import (backfill, import, API bulk). By default live jobs are archived and the profile stays; pass --remove to also remove the profile and its jobs from the board.
Maps to POST /v1/companies/:id/block
Synopsis
cavuno companies block <id> [options]
Arguments
| Name | Required | Description |
|---|---|---|
id | yes | Company ID |
Options
| Flag | Required | Description |
|---|---|---|
--reason <text> | no | Optional free-text reason |
--remove | no | Also remove the company profile and its jobs from the board. The company stays blocked so nothing can add it back. |
-y, --yes | no | Skip the confirmation prompt |
Examples
cavuno companies block k18acme... --yes
cavuno companies block k18acme... --reason "legal request" --yes
cavuno companies block k18acme... --remove --yes
cavuno companies unblock
Unblock a company so automated sourcing can add jobs again. Does not republish archived jobs.
Maps to POST /v1/companies/:id/unblock
Synopsis
cavuno companies unblock <id> [options]
Arguments
| Name | Required | Description |
|---|---|---|
id | yes | Company ID |
Options
| Flag | Required | Description |
|---|---|---|
-y, --yes | no | Skip the confirmation prompt |
Examples
cavuno companies unblock k18acme... --yes
cavuno companies list-jobs
List jobs at a company (any status, optional filter).
Maps to GET /v1/companies/:id/jobs
Synopsis
cavuno companies list-jobs <id> [options]
Arguments
| Name | Required | Description |
|---|---|---|
id | yes | Company ID |
Options
| Flag | Required | Description |
|---|---|---|
--status <status> | no | Filter by status (draft|pending_approval|published|expired|archived) |
--limit <n> | no | Page size 1-100 (default 50) |
Examples
cavuno companies list-jobs k18acme... --status published
cavuno companies list-plan-assignments
List the plans assigned to a company (active first, then expired and revoked).
Maps to GET /v1/companies/:id/plan-assignments
Synopsis
cavuno companies list-plan-assignments <id> [options]
Arguments
| Name | Required | Description |
|---|---|---|
id | yes | Company ID |
Options
| Flag | Required | Description |
|---|---|---|
--status <status> | no | Filter by status (active|expired|revoked) |
--limit <n> | no | Page size 1-100 (default 50) |
--cursor <cursor> | no | Cursor from a previous page |
Examples
cavuno companies list-plan-assignments k18acme... --status active
cavuno companies assign-plan
Assign a membership plan to a company at no charge. One membership per company; revoke the current one first.
Maps to POST /v1/companies/:id/plan-assignments
Synopsis
cavuno companies assign-plan <id> [options]
Arguments
| Name | Required | Description |
|---|---|---|
id | yes | Company ID |
Options
| Flag | Required | Description |
|---|---|---|
--plan <planId> | yes | Active membership plan ID |
--expires-at <iso> | no | ISO-8601 time the assignment ends (default: no end) |
--idempotency-key <key> | no | Reuse this key when retrying the same logical mutation |
Examples
cavuno companies assign-plan k18acme... --plan k22gold...
cavuno companies assign-plan k18acme... --plan k22gold... --expires-at 2027-01-01T00:00:00Z
cavuno companies revoke-plan
Revoke a company's plan assignment now. Does not cancel a recurring plan invoice.
Maps to POST /v1/companies/:id/plan-assignments/:assignmentId/revoke
Synopsis
cavuno companies revoke-plan <id> <assignmentId> [options]
Arguments
| Name | Required | Description |
|---|---|---|
id | yes | Company ID |
assignmentId | yes | Plan assignment ID |
Options
| Flag | Required | Description |
|---|---|---|
--idempotency-key <key> | no | Reuse this key when retrying the same logical mutation |
-y, --yes | no | Skip the confirmation prompt |
Examples
cavuno companies revoke-plan k18acme... k33assign... --yes
cavuno companies list-plan-invoices
List plan invoices issued to a company, newest first. A paid invoice names the assignment it created.
Maps to GET /v1/companies/:id/plan-invoices
Synopsis
cavuno companies list-plan-invoices <id> [options]
Arguments
| Name | Required | Description |
|---|---|---|
id | yes | Company ID |
Options
| Flag | Required | Description |
|---|---|---|
--limit <n> | no | Page size 1-100 (default 50) |
--cursor <cursor> | no | Cursor from a previous page |
Examples
cavuno companies list-plan-invoices k18acme...
cavuno companies invoice-plan
Invoice a company for a membership plan through Stripe (due in 30 days). Prints the invoice link to share with the employer; the plan is assigned when it is paid.
Maps to POST /v1/companies/:id/plan-invoices
Synopsis
cavuno companies invoice-plan <id> [options]
Arguments
| Name | Required | Description |
|---|---|---|
id | yes | Company ID |
Options
| Flag | Required | Description |
|---|---|---|
--plan <planId> | yes | Active membership plan ID |
--email <email> | yes | Employer's billing email |
--amount-cents <n> | no | Amount per invoice in minor units (only for a plan without a price) |
--currency <code> | no | ISO 4217 currency, with --amount-cents (e.g. usd) |
--interval <interval> | no | Make it recur: month|year (not for a subscription plan with its own interval) |
--interval-count <n> | no | Intervals between invoices, 1-12 (month + 3 = quarterly) |
--idempotency-key <key> | no | Reuse this key when retrying the same logical mutation |
Examples
cavuno companies invoice-plan k18acme... --plan k22gold... --email billing@acme.com
cavuno companies invoice-plan k18acme... --plan k22silver... --email billing@acme.com --amount-cents 49900 --currency usd --interval month --interval-count 3
cavuno companies cancel-plan-invoice
Cancel a plan invoice awaiting payment: a recurring invoice stops, and the Stripe invoice is voided.
Maps to POST /v1/companies/:id/plan-invoices/:invoiceId/cancel
Synopsis
cavuno companies cancel-plan-invoice <id> <invoiceId> [options]
Arguments
| Name | Required | Description |
|---|---|---|
id | yes | Company ID |
invoiceId | yes | Plan invoice ID |
Options
| Flag | Required | Description |
|---|---|---|
--idempotency-key <key> | no | Reuse this key when retrying the same logical mutation |
-y, --yes | no | Skip the confirmation prompt |
Examples
cavuno companies cancel-plan-invoice k18acme... k44invoice... --yes
cavuno companies batch
Run a batch of company operations. Pass JSON via --file or stdin. Exit 0 on HTTP 200 even if some rows fail — inspect the body.
Maps to POST /v1/companies/batch
Synopsis
cavuno companies batch [options]
Options
| Flag | Required | Description |
|---|---|---|
--file <path> | no | JSON file body (otherwise read stdin) |
Examples
cavuno companies batch --file ops.json
blog
Manage blog posts, authors, and tags.
cavuno blog posts list
List posts (paginated).
Maps to GET /v1/blog/posts
Synopsis
cavuno blog posts list [options]
Options
| Flag | Required | Description |
|---|---|---|
--status <status> | no | Filter by status (draft|scheduled|published) |
--limit <n> | no | Page size 1-100 |
--cursor <cursor> | no | Pagination cursor |
Examples
cavuno blog posts list --status draft
cavuno blog posts get
Fetch a post by ID (includes html).
Maps to GET /v1/blog/posts/:id
Synopsis
cavuno blog posts get <id>
Arguments
| Name | Required | Description |
|---|---|---|
id | yes | Post ID |
Examples
cavuno blog posts get k97...
cavuno blog posts create
Create a post (defaults to draft).
Maps to POST /v1/blog/posts
Synopsis
cavuno blog posts create [options]
Options
| Flag | Required | Description |
|---|---|---|
--title <title> | yes | Post title (required) |
--slug <slug> | no | URL slug; auto-derived from --title |
--html <html> | no | Rich-text HTML body (sanitized server-side) |
--custom-excerpt <text> | no | Excerpt |
--status <status> | no | draft|scheduled|published |
--published-at <iso> | no | ISO datetime (required for scheduled) |
--featured | no | Mark as featured |
--author-ids <ids> | no | Comma-separated author IDs |
--tag-ids <ids> | no | Comma-separated tag IDs |
--cover-media-id <id> | no | Cover image media id from `cavuno media upload --purpose blog_image` |
--og-image-media-id <id> | no | OG image media id from `cavuno media upload --purpose blog_image` |
--feature-image-alt <text> | no | Feature image alt text |
--feature-image-caption <text> | no | Feature image caption |
--seo-title <text> | no | SEO meta title |
--seo-description <text> | no | SEO meta description |
--canonical-url <url> | no | Canonical URL |
Examples
cavuno blog posts create --title "Hiring trends"
cavuno blog posts update
Update a post (partial). Status changes use publish/unpublish.
Maps to PATCH /v1/blog/posts/:id
Synopsis
cavuno blog posts update <id> [options]
Arguments
| Name | Required | Description |
|---|---|---|
id | yes | Post ID |
Options
| Flag | Required | Description |
|---|---|---|
--title <title> | no | |
--slug <slug> | no | |
--html <html> | no | |
--custom-excerpt <text> | no | |
--featured | no | |
--author-ids <ids> | no | Comma-separated author IDs |
--tag-ids <ids> | no | Comma-separated tag IDs |
--feature-image-alt <text> | no | Feature image alt text |
--feature-image-caption <text> | no | Feature image caption |
--seo-title <text> | no | SEO meta title |
--seo-description <text> | no | SEO meta description |
--canonical-url <url> | no | Canonical URL |
Examples
cavuno blog posts update k97... --title "New"
cavuno blog posts publish
Publish a post.
Maps to POST /v1/blog/posts/:id/publish
Synopsis
cavuno blog posts publish <id>
Arguments
| Name | Required | Description |
|---|---|---|
id | yes | Post ID |
Examples
cavuno blog posts publish k97...
cavuno blog posts unpublish
Unpublish a post.
Maps to POST /v1/blog/posts/:id/unpublish
Synopsis
cavuno blog posts unpublish <id>
Arguments
| Name | Required | Description |
|---|---|---|
id | yes | Post ID |
Examples
cavuno blog posts unpublish k97...
cavuno blog posts toggle-featured
Toggle featured on a post.
Maps to POST /v1/blog/posts/:id/toggle-featured
Synopsis
cavuno blog posts toggle-featured <id>
Arguments
| Name | Required | Description |
|---|---|---|
id | yes | Post ID |
Examples
cavuno blog posts toggle-featured k97...
cavuno blog posts search
Title search across all statuses (includes drafts).
Maps to POST /v1/blog/posts/search
Synopsis
cavuno blog posts search <query> [options]
Arguments
| Name | Required | Description |
|---|---|---|
query | yes | Search query |
Options
| Flag | Required | Description |
|---|---|---|
--status <status> | no | Narrow to one status |
--limit <n> | no | Page size 1-100 |
Examples
cavuno blog posts search "hiring"
cavuno blog posts batch
Run a batch of blog post operations. Pass JSON via --file or stdin. Exit 0 on HTTP 200 even if some rows fail — inspect the body.
Maps to POST /v1/blog/posts/batch
Synopsis
cavuno blog posts batch [options]
Options
| Flag | Required | Description |
|---|---|---|
--file <path> | no | JSON file body (otherwise read stdin) |
Examples
cavuno blog posts batch --file ops.json
cavuno blog posts delete
Delete a post.
Maps to DELETE /v1/blog/posts/:id
Synopsis
cavuno blog posts delete <id> [options]
Arguments
| Name | Required | Description |
|---|---|---|
id | yes | Post ID |
Options
| Flag | Required | Description |
|---|---|---|
-y, --yes | no | Skip the confirmation prompt |
Examples
cavuno blog posts delete k97... --yes
settings
Manage singleton board settings.
cavuno settings get
Fetch the singleton board settings.
Synopsis
cavuno settings get
cavuno settings update
Update fields on the singleton board settings.
Synopsis
cavuno settings update [options]
Options
| Flag | Required | Description |
|---|---|---|
--name <name> | no | Board name |
--slug <slug> | no | Board slug (cascades to account slug) |
--blog-enabled <bool> | no | Toggle blog feature flag (true/false) |
--job-recommendations-enabled <bool> | no | Toggle candidate job recommendations (true/false) |
--recommended-talent-enabled <bool> | no | Toggle employer recommended talent (true/false) |
--candidates-enabled <bool> | no | Toggle candidate-area flag (true/false) |
--country-gating-mode <mode> | no | Apply country gating: sponsored_only | all_jobs |
--require-cookie-consent <bool> | no | Toggle cookie consent banner (true/false) |
--talent-directory-visibility <mode> | no | Talent directory mode: off | public | employers_only |
--talent-directory-enabled <bool> | no | Legacy shorthand for talent directory (true→public, false→off) |
--cookie-banner-title <text> | no | Cookie banner title |
--cookie-banner-description <text> | no | Cookie banner description |
--cookie-banner-reject-label <text> | no | Cookie banner reject button label |
--cookie-banner-accept-label <text> | no | Cookie banner accept button label |
--cookie-banner-manage-label <text> | no | Cookie banner manage/preferences label |
--ga4-measurement-id <id> | no | Google Analytics 4 measurement ID (pass "" to clear) |
--gtm-container-id <id> | no | Google Tag Manager container ID (pass "" to clear) |
--meta-pixel-id <id> | no | Meta Pixel ID (pass "" to clear) |
--linkedin-partner-id <id> | no | LinkedIn Insight Tag partner ID (pass "" to clear) |
--linkedin-conversion-sign-up-id <id> | no | LinkedIn conversion ID for sign-ups (pass "" to clear) |
--linkedin-conversion-login-id <id> | no | LinkedIn conversion ID for sign-ins (pass "" to clear) |
--linkedin-conversion-apply-click-id <id> | no | LinkedIn conversion ID for Apply clicks (pass "" to clear) |
--linkedin-conversion-apply-submit-id <id> | no | LinkedIn conversion ID for submitted applications (pass "" to clear) |
--linkedin-conversion-job-alert-subscribe-id <id> | no | LinkedIn conversion ID for job alert sign-ups (pass "" to clear) |
cavuno settings get-adsense
Fetch the AdSense configuration.
Synopsis
cavuno settings get-adsense
cavuno settings delete-hero
Remove the hero image (storage object + reference).
Maps to DELETE /v1/settings/hero
Synopsis
cavuno settings delete-hero [options]
Options
| Flag | Required | Description |
|---|---|---|
-y, --yes | no | Skip the confirmation prompt |
Examples
cavuno settings delete-hero --yes
cavuno settings update-adsense
Update the AdSense configuration.
Synopsis
cavuno settings update-adsense [options]
Options
| Flag | Required | Description |
|---|---|---|
--enabled <bool> | no | Toggle AdSense (true/false) |
--client-id <id> | no | AdSense publisher id (ca-pub-…); pass empty string to clear |
--ads-txt <text> | no | Inline ads.txt content; pass empty string to clear |
--slots-json <json> | no | AdSense slots as JSON: '{"slot_a":{"enabled":true,"slotId":"123"}}' |
--google-consent-message <bool> | no | Use Google's consent message for EEA/UK/CH visitors (true/false; default true) |
cavuno settings set-password-protection
Enable board password protection. Reads the password from stdin to avoid leaking it via shell history. Pipe a password: echo "pw" | cavuno settings set-password-protection
Synopsis
cavuno settings set-password-protection
cavuno settings delete-password-protection
Disable board password protection (clears the stored hash).
Maps to DELETE /v1/settings/password-protection
Synopsis
cavuno settings delete-password-protection [options]
Options
| Flag | Required | Description |
|---|---|---|
-y, --yes | no | Skip the confirmation prompt |
Examples
cavuno settings delete-password-protection --yes
cavuno settings job-form-set-custom-fields
Replace the board custom job field definitions (whole-array PUT). Pass JSON via --file or stdin: { "customFields": [...] }. Empty array removes all. Changing type on an existing key is rejected.
Maps to PUT /v1/settings/job-form/custom-fields
Synopsis
cavuno settings job-form-set-custom-fields [options]
Options
| Flag | Required | Description |
|---|---|---|
--file <path> | no | JSON file body (otherwise read stdin) |
Examples
cavuno settings job-form-set-custom-fields --file custom-fields.json
media
Upload + fetch media (images) via the v1 dispatcher.
cavuno media upload
Upload a file. Purpose must be one of: board_logo, board_hero, account_avatar, company_logo, blog_image.
Synopsis
cavuno media upload <file> [options]
Arguments
| Name | Required | Description |
|---|---|---|
file | yes | Path to the local file to upload |
Options
| Flag | Required | Description |
|---|---|---|
--purpose <purpose> | yes | Upload purpose (see help) |
--resource-id <id> | no | Optional resource ID for purpose-bound uploads |
--account-id <id> | no | Tenant account ID (defaults to api key tenant) |
cavuno media get
Fetch media metadata + a fresh signed URL by storage ID.
Synopsis
cavuno media get <id> [options]
Arguments
| Name | Required | Description |
|---|---|---|
id | yes | Storage ID |
Options
| Flag | Required | Description |
|---|---|---|
--account-id <id> | no | Tenant account ID (defaults to api key tenant) |
domains
Manage custom domains for the authenticated account.
cavuno domains list
List custom domains.
Maps to GET /v1/domains
Synopsis
cavuno domains list [options]
Options
| Flag | Required | Description |
|---|---|---|
--limit <n> | no | Page size 1-50 (default 50) |
--cursor <cursor> | no | Pagination cursor |
Examples
cavuno domains list
cavuno domains get
Fetch a custom domain by ID.
Maps to GET /v1/domains/:id
Synopsis
cavuno domains get <id>
Arguments
| Name | Required | Description |
|---|---|---|
id | yes | Domain ID |
Examples
cavuno domains get domain_123
cavuno domains add
Add a custom domain and print verification instructions.
Maps to POST /v1/domains
Synopsis
cavuno domains add <host>
Arguments
| Name | Required | Description |
|---|---|---|
host | yes | Hostname, for example jobs.example.com |
Examples
cavuno domains add jobs.example.com
cavuno domains verify
Start custom-domain verification.
Maps to POST /v1/domains/:id/verify
Synopsis
cavuno domains verify <id> [options]
Arguments
| Name | Required | Description |
|---|---|---|
id | yes | Domain ID |
Options
| Flag | Required | Description |
|---|---|---|
--wait | no | Poll the returned operation until it reaches a terminal state |
--interval-ms <n> | no | Poll interval in milliseconds (default 2000) |
--timeout-ms <n> | no | Give up after this many milliseconds (default 3600000) |
Examples
cavuno domains verify domain_123
cavuno domains verify domain_123 --wait
cavuno domains remove
Delete a custom domain.
Maps to DELETE /v1/domains/:id
Synopsis
cavuno domains remove <id> [options]
Arguments
| Name | Required | Description |
|---|---|---|
id | yes | Domain ID |
Options
| Flag | Required | Description |
|---|---|---|
-y, --yes | no | Skip the confirmation prompt |
Examples
cavuno domains remove domain_123 --yes
email-domains
Manage the custom email sender domain for the authenticated account.
cavuno email-domains list
List the email sender domain (a board has at most one).
Maps to GET /v1/email-domains
Synopsis
cavuno email-domains list
Examples
cavuno email-domains list
cavuno email-domains get
Fetch an email sender domain with its status and DNS records.
Maps to GET /v1/email-domains/:id
Synopsis
cavuno email-domains get <id>
Arguments
| Name | Required | Description |
|---|---|---|
id | yes | Email domain ID |
Examples
cavuno email-domains get ed_123
cavuno email-domains add
Add an email sender domain and print the DNS records to publish.
Maps to POST /v1/email-domains
Synopsis
cavuno email-domains add <host> [options]
Arguments
| Name | Required | Description |
|---|---|---|
host | yes | Hostname, for example notifications.example.com |
Options
| Flag | Required | Description |
|---|---|---|
--sender-name <name> | no | From display name (defaults to the board name) |
--sender-local-part <mailbox> | no | Mailbox before the @ (defaults to info) |
Examples
cavuno email-domains add notifications.example.com
cavuno email-domains add notifications.example.com --sender-name "Acme Jobs" --sender-local-part hello
cavuno email-domains update
Change the sender name or mailbox of a verified domain.
Maps to PATCH /v1/email-domains/:id
Synopsis
cavuno email-domains update <id> [options]
Arguments
| Name | Required | Description |
|---|---|---|
id | yes | Email domain ID |
Options
| Flag | Required | Description |
|---|---|---|
--sender-name <name> | no | From display name |
--sender-local-part <mailbox> | no | Mailbox before the @ |
Examples
cavuno email-domains update ed_123 --sender-name "Acme Jobs"
cavuno email-domains verify
Check the DNS records now and print the updated domain.
Maps to POST /v1/email-domains/:id/verify
Synopsis
cavuno email-domains verify <id>
Arguments
| Name | Required | Description |
|---|---|---|
id | yes | Email domain ID |
Examples
cavuno email-domains verify ed_123
cavuno email-domains remove
Delete the email sender domain.
Maps to DELETE /v1/email-domains/:id
Synopsis
cavuno email-domains remove <id> [options]
Arguments
| Name | Required | Description |
|---|---|---|
id | yes | Email domain ID |
Options
| Flag | Required | Description |
|---|---|---|
-y, --yes | no | Skip the confirmation prompt |
Examples
cavuno email-domains remove ed_123 --yes
operations
Poll and cancel async operations by ID.
cavuno operations get
Fetch a single operation by ID.
Maps to GET /v1/operations/:id
Synopsis
cavuno operations get <id>
Arguments
| Name | Required | Description |
|---|---|---|
id | yes | Operation ID |
Examples
cavuno operations get op_123
cavuno operations cancel
Request cancellation of an operation.
Maps to POST /v1/operations/:id/cancel
Synopsis
cavuno operations cancel <id>
Arguments
| Name | Required | Description |
|---|---|---|
id | yes | Operation ID |
Examples
cavuno operations cancel op_123
cavuno operations wait
Poll an operation until it reaches a terminal state (succeeded/failed/cancelled).
Maps to GET /v1/operations/:id (poll)
Synopsis
cavuno operations wait <id> [options]
Arguments
| Name | Required | Description |
|---|---|---|
id | yes | Operation ID |
Options
| Flag | Required | Description |
|---|---|---|
--interval-ms <n> | no | Poll interval in milliseconds (default 2000) |
--timeout-ms <n> | no | Give up after this many milliseconds (default 3600000) |
Examples
cavuno operations wait op_123
cavuno operations wait op_123 --interval-ms 500 --timeout-ms 60000
taxonomies
Manage taxonomy skills, categories, and markets; list remote permits/timezones.
cavuno taxonomies remote-permits
List remote-work permit options.
Maps to GET /v1/taxonomies/remote-permits
Synopsis
cavuno taxonomies remote-permits
Examples
cavuno taxonomies remote-permits
cavuno taxonomies remote-timezones
List remote-work timezone options.
Maps to GET /v1/taxonomies/remote-timezones
Synopsis
cavuno taxonomies remote-timezones
Examples
cavuno taxonomies remote-timezones
cavuno taxonomies skills list
List skills.
Maps to GET /v1/taxonomies/skills
Synopsis
cavuno taxonomies skills list [options]
Options
| Flag | Required | Description |
|---|---|---|
--limit <n> | no | Page size 1-100 |
--cursor <cursor> | no | Pagination cursor |
--search <q> | no | Search name/slug |
Examples
cavuno taxonomies skills list
cavuno taxonomies skills get
Get a skill by id.
Maps to GET /v1/taxonomies/skills/:id
Synopsis
cavuno taxonomies skills get <id>
Arguments
| Name | Required | Description |
|---|---|---|
id | yes | Opaque object id |
Examples
cavuno taxonomies skills get <id>
cavuno taxonomies skills create
Create a skill.
Maps to POST /v1/taxonomies/skills
Synopsis
cavuno taxonomies skills create [options]
Options
| Flag | Required | Description |
|---|---|---|
--name <name> | yes | Display name |
--slug <slug> | no | Canonical slug (default: from name) |
--source-locale <locale> | no | Source locale |
--alias-slugs <slugs> | no | Comma-separated initial aliases |
Examples
cavuno taxonomies skills create --name "Example" --slug example
cavuno taxonomies skills update
Update a skill.
Maps to PATCH /v1/taxonomies/skills/:id
Synopsis
cavuno taxonomies skills update <id> [options]
Arguments
| Name | Required | Description |
|---|---|---|
id | yes | Opaque object id |
Options
| Flag | Required | Description |
|---|---|---|
--name <name> | no | Display name |
--slug <slug> | no | Canonical slug |
--source-locale <locale> | no | Source locale |
Examples
cavuno taxonomies skills update <id> --name "New name"
cavuno taxonomies skills delete
Delete a skill.
Maps to DELETE /v1/taxonomies/skills/:id
Synopsis
cavuno taxonomies skills delete <id>
Arguments
| Name | Required | Description |
|---|---|---|
id | yes | Opaque object id |
Examples
cavuno taxonomies skills delete <id>
cavuno taxonomies skills add-alias
Add aliases to a skill (dual-write).
Maps to POST /v1/taxonomies/skills/:id/aliases
Synopsis
cavuno taxonomies skills add-alias <id> [options]
Arguments
| Name | Required | Description |
|---|---|---|
id | yes | Opaque object id |
Options
| Flag | Required | Description |
|---|---|---|
--alias <aliases> | yes | Alias slug or comma-separated list |
Examples
cavuno taxonomies skills add-alias <id> --alias other-slug
cavuno taxonomies skills remove-alias
Remove an alias from a skill.
Maps to DELETE /v1/taxonomies/skills/:id/aliases/:alias
Synopsis
cavuno taxonomies skills remove-alias <id> <alias>
Arguments
| Name | Required | Description |
|---|---|---|
id | yes | Opaque object id |
alias | yes | Alias slug to remove |
Examples
cavuno taxonomies skills remove-alias <id> other-slug
cavuno taxonomies categories tree
List categories as a nested tree.
Maps to GET /v1/taxonomies/categories/tree
Synopsis
cavuno taxonomies categories tree
Examples
cavuno taxonomies categories tree
cavuno taxonomies categories list
List categories.
Maps to GET /v1/taxonomies/categories
Synopsis
cavuno taxonomies categories list [options]
Options
| Flag | Required | Description |
|---|---|---|
--limit <n> | no | Page size 1-100 |
--cursor <cursor> | no | Pagination cursor |
--search <q> | no | Search name/slug |
Examples
cavuno taxonomies categories list
cavuno taxonomies categories get
Get a categorie by id.
Maps to GET /v1/taxonomies/categories/:id
Synopsis
cavuno taxonomies categories get <id>
Arguments
| Name | Required | Description |
|---|---|---|
id | yes | Opaque object id |
Examples
cavuno taxonomies categories get <id>
cavuno taxonomies categories create
Create a categorie.
Maps to POST /v1/taxonomies/categories
Synopsis
cavuno taxonomies categories create [options]
Options
| Flag | Required | Description |
|---|---|---|
--name <name> | yes | Display name |
--slug <slug> | no | Canonical slug (default: from name) |
--source-locale <locale> | no | Source locale |
--alias-slugs <slugs> | no | Comma-separated initial aliases |
--parent-id <id> | no | Parent category id |
Examples
cavuno taxonomies categories create --name "Example" --slug example
cavuno taxonomies categories update
Update a categorie.
Maps to PATCH /v1/taxonomies/categories/:id
Synopsis
cavuno taxonomies categories update <id> [options]
Arguments
| Name | Required | Description |
|---|---|---|
id | yes | Opaque object id |
Options
| Flag | Required | Description |
|---|---|---|
--name <name> | no | Display name |
--slug <slug> | no | Canonical slug |
--source-locale <locale> | no | Source locale |
--parent-id <id> | no | Parent category id |
--clear-parent | no | Clear parent (root) |
Examples
cavuno taxonomies categories update <id> --name "New name"
cavuno taxonomies categories delete
Delete a categorie.
Maps to DELETE /v1/taxonomies/categories/:id
Synopsis
cavuno taxonomies categories delete <id>
Arguments
| Name | Required | Description |
|---|---|---|
id | yes | Opaque object id |
Examples
cavuno taxonomies categories delete <id>
cavuno taxonomies categories add-alias
Add aliases to a categorie (dual-write).
Maps to POST /v1/taxonomies/categories/:id/aliases
Synopsis
cavuno taxonomies categories add-alias <id> [options]
Arguments
| Name | Required | Description |
|---|---|---|
id | yes | Opaque object id |
Options
| Flag | Required | Description |
|---|---|---|
--alias <aliases> | yes | Alias slug or comma-separated list |
Examples
cavuno taxonomies categories add-alias <id> --alias other-slug
cavuno taxonomies categories remove-alias
Remove an alias from a categorie.
Maps to DELETE /v1/taxonomies/categories/:id/aliases/:alias
Synopsis
cavuno taxonomies categories remove-alias <id> <alias>
Arguments
| Name | Required | Description |
|---|---|---|
id | yes | Opaque object id |
alias | yes | Alias slug to remove |
Examples
cavuno taxonomies categories remove-alias <id> other-slug
cavuno taxonomies markets list
List markets.
Maps to GET /v1/taxonomies/markets
Synopsis
cavuno taxonomies markets list [options]
Options
| Flag | Required | Description |
|---|---|---|
--limit <n> | no | Page size 1-100 |
--cursor <cursor> | no | Pagination cursor |
--search <q> | no | Search name/slug |
Examples
cavuno taxonomies markets list
cavuno taxonomies markets get
Get a market by id.
Maps to GET /v1/taxonomies/markets/:id
Synopsis
cavuno taxonomies markets get <id>
Arguments
| Name | Required | Description |
|---|---|---|
id | yes | Opaque object id |
Examples
cavuno taxonomies markets get <id>
cavuno taxonomies markets create
Create a market.
Maps to POST /v1/taxonomies/markets
Synopsis
cavuno taxonomies markets create [options]
Options
| Flag | Required | Description |
|---|---|---|
--name <name> | yes | Display name |
--slug <slug> | no | Canonical slug (default: from name) |
--source-locale <locale> | no | Source locale |
--alias-slugs <slugs> | no | Comma-separated initial aliases |
Examples
cavuno taxonomies markets create --name "Example" --slug example
cavuno taxonomies markets update
Update a market.
Maps to PATCH /v1/taxonomies/markets/:id
Synopsis
cavuno taxonomies markets update <id> [options]
Arguments
| Name | Required | Description |
|---|---|---|
id | yes | Opaque object id |
Options
| Flag | Required | Description |
|---|---|---|
--name <name> | no | Display name |
--slug <slug> | no | Canonical slug |
--source-locale <locale> | no | Source locale |
Examples
cavuno taxonomies markets update <id> --name "New name"
cavuno taxonomies markets delete
Delete a market.
Maps to DELETE /v1/taxonomies/markets/:id
Synopsis
cavuno taxonomies markets delete <id>
Arguments
| Name | Required | Description |
|---|---|---|
id | yes | Opaque object id |
Examples
cavuno taxonomies markets delete <id>
cavuno taxonomies markets add-alias
Add aliases to a market (dual-write).
Maps to POST /v1/taxonomies/markets/:id/aliases
Synopsis
cavuno taxonomies markets add-alias <id> [options]
Arguments
| Name | Required | Description |
|---|---|---|
id | yes | Opaque object id |
Options
| Flag | Required | Description |
|---|---|---|
--alias <aliases> | yes | Alias slug or comma-separated list |
Examples
cavuno taxonomies markets add-alias <id> --alias other-slug
cavuno taxonomies markets remove-alias
Remove an alias from a market.
Maps to DELETE /v1/taxonomies/markets/:id/aliases/:alias
Synopsis
cavuno taxonomies markets remove-alias <id> <alias>
Arguments
| Name | Required | Description |
|---|---|---|
id | yes | Opaque object id |
alias | yes | Alias slug to remove |
Examples
cavuno taxonomies markets remove-alias <id> other-slug
candidates
Manage candidates in the authenticated account.
cavuno candidates list
List candidates (paginated).
Maps to GET /v1/candidates
Synopsis
cavuno candidates list [options]
Options
| Flag | Required | Description |
|---|---|---|
--search <query> | no | Substring search on email / display name |
--handle <handle> | no | Exact profile handle lookup |
--has-resume | no | Only candidates with a resume on file |
--created-from <iso> | no | Filter to candidates created on/after |
--created-to <iso> | no | Filter to candidates created on/before |
--limit <n> | no | Page size 1-100 (default 50) |
--cursor <cursor> | no | Pagination cursor |
Examples
cavuno candidates list
cavuno candidates list --search alice --has-resume --limit 10
cavuno candidates resume
Download a candidate resume through the protected API.
Maps to GET /v1/candidates/:id/resume
Synopsis
cavuno candidates resume <id> [options]
Arguments
| Name | Required | Description |
|---|---|---|
id | yes | Candidate ID |
Options
| Flag | Required | Description |
|---|---|---|
--output <path> | yes | File path to write |
Examples
cavuno candidates resume nh7abc... --output ./candidate-resume.pdf
cavuno candidates get
Fetch a single candidate by ID (with profile + counts).
Maps to GET /v1/candidates/:id
Synopsis
cavuno candidates get <id>
Arguments
| Name | Required | Description |
|---|---|---|
id | yes | Candidate ID |
Examples
cavuno candidates get nh7abc...
cavuno candidates delete
Permanently erase a candidate and all associated data (GDPR cascade). Returns a candidates.remove operation to poll.
Maps to DELETE /v1/candidates/:id
Synopsis
cavuno candidates delete <id> [options]
Arguments
| Name | Required | Description |
|---|---|---|
id | yes | Candidate ID |
Options
| Flag | Required | Description |
|---|---|---|
--idempotency-key <key> | no | Reuse this key when retrying the same logical mutation |
-y, --yes | no | Skip the confirmation prompt |
--wait | no | Poll the returned operation until it reaches a terminal state |
--interval-ms <n> | no | Poll interval in milliseconds (default 2000) |
--timeout-ms <n> | no | Give up after this many milliseconds (default 3600000) |
Examples
cavuno candidates delete nh7abc... --yes
cavuno candidates delete nh7abc... --yes --wait
employers
Manage employers, memberships, and company claims.
cavuno employers list
List employers (paginated).
Maps to GET /v1/employers
Synopsis
cavuno employers list [options]
Options
| Flag | Required | Description |
|---|---|---|
--search <query> | no | Substring search on email / display name |
--limit <n> | no | Page size 1-100 (default 50) |
--cursor <cursor> | no | Pagination cursor |
Examples
cavuno employers list
cavuno employers list --search acme
cavuno employers get
Fetch a single employer by ID (with memberships + claims).
Maps to GET /v1/employers/:id
Synopsis
cavuno employers get <id>
Arguments
| Name | Required | Description |
|---|---|---|
id | yes | Employer ID |
Examples
cavuno employers get nh7abc...
cavuno employers delete
Permanently erase an employer and all associated data, including memberships/claims (GDPR cascade). Returns an employers.remove operation to poll.
Maps to DELETE /v1/employers/:id
Synopsis
cavuno employers delete <id> [options]
Arguments
| Name | Required | Description |
|---|---|---|
id | yes | Employer ID |
Options
| Flag | Required | Description |
|---|---|---|
--idempotency-key <key> | no | Reuse this key when retrying the same logical mutation |
-y, --yes | no | Skip the confirmation prompt |
--wait | no | Poll the returned operation until it reaches a terminal state |
--interval-ms <n> | no | Poll interval in milliseconds (default 2000) |
--timeout-ms <n> | no | Give up after this many milliseconds (default 3600000) |
Examples
cavuno employers delete nh7abc... --yes
cavuno employers delete nh7abc... --yes --wait
cavuno employers memberships
List employer↔company memberships (paginated).
Maps to GET /v1/employers/memberships
Synopsis
cavuno employers memberships [options]
Options
| Flag | Required | Description |
|---|---|---|
--status <status> | no | Filter by status (pending|approved|rejected) |
--company-id <id> | no | Filter to a single company |
--limit <n> | no | Page size 1-100 (default 50) |
--cursor <cursor> | no | Pagination cursor |
Examples
cavuno employers memberships --status approved
cavuno employers membership
Fetch a single employer↔company membership by ID.
Maps to GET /v1/employers/memberships/:id
Synopsis
cavuno employers membership <id>
Arguments
| Name | Required | Description |
|---|---|---|
id | yes | Membership ID |
Examples
cavuno employers membership pd7abc...
cavuno employers claims
List company claims (defaults to pending).
Maps to GET /v1/employers/claims
Synopsis
cavuno employers claims [options]
Options
| Flag | Required | Description |
|---|---|---|
--status <status> | no | Filter by status (pending|approved|rejected) |
--company-id <id> | no | Filter to a single company |
--limit <n> | no | Page size 1-100 (default 50) |
--cursor <cursor> | no | Pagination cursor |
Examples
cavuno employers claims
cavuno employers claims --status approved
cavuno employers approve-claim
Approve a pending company claim (idempotent).
Maps to POST /v1/employers/claims/:id/approve
Synopsis
cavuno employers approve-claim <id> [options]
Arguments
| Name | Required | Description |
|---|---|---|
id | yes | Claim ID |
Options
| Flag | Required | Description |
|---|---|---|
--idempotency-key <key> | no | Reuse this key when retrying the same logical mutation |
Examples
cavuno employers approve-claim pd7abc...
cavuno employers reject-claim
Reject a pending company claim (idempotent).
Maps to POST /v1/employers/claims/:id/reject
Synopsis
cavuno employers reject-claim <id> [options]
Arguments
| Name | Required | Description |
|---|---|---|
id | yes | Claim ID |
Options
| Flag | Required | Description |
|---|---|---|
--idempotency-key <key> | no | Reuse this key when retrying the same logical mutation |
Examples
cavuno employers reject-claim pd7abc...
employer-subscriptions
Read employer subscriptions on the tenant board (billing.read).
cavuno employer-subscriptions list
List employer subscriptions.
Maps to GET /v1/employer-subscriptions
Synopsis
cavuno employer-subscriptions list [options]
Options
| Flag | Required | Description |
|---|---|---|
--limit <n> | no | Page size 1-100 (default 50) |
--cursor <cursor> | no | Pagination cursor |
--status <status> | no | Filter by status (active, canceled, …) |
--company-id <id> | no | Filter by company id |
Examples
cavuno employer-subscriptions list
cavuno employer-subscriptions list --status active
cavuno employer-subscriptions get
Get one employer subscription by id.
Maps to GET /v1/employer-subscriptions/:id
Synopsis
cavuno employer-subscriptions get <id>
Arguments
| Name | Required | Description |
|---|---|---|
id | yes | Employer subscription id |
Examples
cavuno employer-subscriptions get es_…
coupons
Manage Board coupons and promotion codes (billing.read / billing.manage).
cavuno coupons list
List Board coupons.
Maps to GET /v1/coupons
Synopsis
cavuno coupons list
Examples
cavuno coupons list
cavuno coupons get
Get a coupon by id.
Maps to GET /v1/coupons/:id
Synopsis
cavuno coupons get <id>
Arguments
| Name | Required | Description |
|---|---|---|
id | yes | Coupon id |
Examples
cavuno coupons get coupon_xxx
cavuno coupons create
Create a Board coupon.
Maps to POST /v1/coupons
Synopsis
cavuno coupons create [options]
Options
| Flag | Required | Description |
|---|---|---|
--name <name> | yes | Coupon name |
--percent-off <n> | no | Percent off (0-100) |
--amount-off <n> | no | Fixed discount in the currency major unit (e.g. 10 for $10, 1000 for ¥1000) |
--currency <code> | no | Currency for fixed amount (e.g. usd) |
--duration <duration> | yes | once | forever | repeating |
--duration-in-months <n> | no | Required when duration=repeating |
--max-redemptions <n> | no | Max redemptions |
Examples
cavuno coupons create --name "Spring sale" --percent-off 20 --duration once
cavuno coupons rename
Rename a coupon.
Maps to PATCH /v1/coupons/:id
Synopsis
cavuno coupons rename <id> [options]
Arguments
| Name | Required | Description |
|---|---|---|
id | yes | Coupon id |
Options
| Flag | Required | Description |
|---|---|---|
--name <name> | yes | New name |
Examples
cavuno coupons rename coupon_xxx --name "Fall sale"
cavuno coupons delete
Delete a coupon (destructive).
Maps to DELETE /v1/coupons/:id
Synopsis
cavuno coupons delete <id> [options]
Arguments
| Name | Required | Description |
|---|---|---|
id | yes | Coupon id |
Options
| Flag | Required | Description |
|---|---|---|
-y, --yes | no | Skip the confirmation prompt |
Examples
cavuno coupons delete coupon_xxx --yes
cavuno coupons promotion-code-create
Create a promotion code for a coupon.
Maps to POST /v1/coupons/:id/promotion-codes
Synopsis
cavuno coupons promotion-code-create <couponId> [options]
Arguments
| Name | Required | Description |
|---|---|---|
couponId | yes | Coupon id |
Options
| Flag | Required | Description |
|---|---|---|
--code <code> | yes | Promotion code string |
--max-redemptions <n> | no | Max redemptions |
--expires-at <iso> | no | ISO-8601 expiry |
Examples
cavuno coupons promotion-code-create coupon_xxx --code SPRING20
cavuno coupons promotion-code-archive
Archive (deactivate) a promotion code.
Maps to POST /v1/coupons/promotion-codes/:id/archive
Synopsis
cavuno coupons promotion-code-archive <id>
Arguments
| Name | Required | Description |
|---|---|---|
id | yes | Promotion code id |
Examples
cavuno coupons promotion-code-archive promotion_xxx
reporting
Manage reporting integrations.
cavuno reporting integrations
List the reporting integrations for the account.
Maps to GET /v1/integrations/reporting
Synopsis
cavuno reporting integrations
Examples
cavuno reporting integrations
cavuno reporting get
Fetch one reporting integration by provider.
Maps to GET /v1/integrations/reporting/:provider
Synopsis
cavuno reporting get <provider>
Arguments
| Name | Required | Description |
|---|---|---|
provider | yes | search_console | adsense | tinybird | stripe |
Examples
cavuno reporting get search_console
cavuno reporting connect
Start the connect flow for a provider (returns an OAuth URL / redirect).
Maps to POST /v1/integrations/reporting/:provider/connect
Synopsis
cavuno reporting connect <provider> [options]
Arguments
| Name | Required | Description |
|---|---|---|
provider | yes | search_console | adsense | tinybird | stripe |
Options
| Flag | Required | Description |
|---|---|---|
--idempotency-key <key> | no | Reuse this key when retrying the same logical mutation |
Examples
cavuno reporting connect search_console
cavuno reporting enable
Enable collection for an existing integration.
Maps to PATCH /v1/integrations/reporting/:provider
Synopsis
cavuno reporting enable <provider> [options]
Arguments
| Name | Required | Description |
|---|---|---|
provider | yes | The provider to enable |
Options
| Flag | Required | Description |
|---|---|---|
--idempotency-key <key> | no | Reuse this key when retrying the same logical mutation |
Examples
cavuno reporting enable adsense
cavuno reporting disable
Pause collection for an existing integration.
Maps to PATCH /v1/integrations/reporting/:provider
Synopsis
cavuno reporting disable <provider> [options]
Arguments
| Name | Required | Description |
|---|---|---|
provider | yes | The provider to disable |
Options
| Flag | Required | Description |
|---|---|---|
--idempotency-key <key> | no | Reuse this key when retrying the same logical mutation |
Examples
cavuno reporting disable adsense
cavuno reporting disconnect
Disconnect an integration (delete the row).
Maps to DELETE /v1/integrations/reporting/:provider
Synopsis
cavuno reporting disconnect <provider> [options]
Arguments
| Name | Required | Description |
|---|---|---|
provider | yes | The provider to disconnect |
Options
| Flag | Required | Description |
|---|---|---|
--idempotency-key <key> | no | Reuse this key when retrying the same logical mutation |
-y, --yes | no | Skip the confirmation prompt |
Examples
cavuno reporting disconnect adsense --yes
billing
Read account billing status and manage the platform subscription.
cavuno billing subscription
Show the account's platform subscription.
Maps to GET /v1/billing/subscription
Synopsis
cavuno billing subscription
Examples
cavuno billing subscription
cavuno billing connect
Show the Board's payment connection readiness.
Maps to GET /v1/billing/connect
Synopsis
cavuno billing connect
Examples
cavuno billing connect
cavuno billing connect-link
Create a single-use Stripe onboarding URL for a human to connect payments (expires within minutes).
Maps to POST /v1/billing/connect/onboarding-link
Synopsis
cavuno billing connect-link
Examples
cavuno billing connect-link
cavuno billing checkout
Create a hosted checkout URL for a target plan.
Maps to POST /v1/billing/checkout
Synopsis
cavuno billing checkout [options]
Options
| Flag | Required | Description |
|---|---|---|
--plan <key> | yes | Plan key (starter|basic|grow|advanced|enterprise) |
--interval <interval> | no | Billing interval (monthly|annual; default monthly) |
Examples
cavuno billing checkout --plan starter
cavuno billing checkout --plan basic --interval annual
cavuno billing upgrade
Create a hosted human-confirmation URL for a plan change.
Maps to POST /v1/billing/upgrade
Synopsis
cavuno billing upgrade [options]
Options
| Flag | Required | Description |
|---|---|---|
--plan <key> | yes | Target plan key (starter|basic|grow|advanced|enterprise) |
--interval <interval> | no | Billing interval (monthly|annual; default monthly) |
--idempotency-key <key> | no | Reuse this key when retrying the same logical mutation |
Examples
cavuno billing upgrade --plan basic
cavuno billing upgrade --plan grow --interval annual
plans
Manage employer plans the account sells (pricing, features). Distinct from `billing` (your platform subscription).
cavuno plans list
List employer plans for the authenticated account.
Maps to GET /v1/plans
Synopsis
cavuno plans list
Examples
cavuno plans list
cavuno plans get
Get one employer plan by id.
Maps to GET /v1/plans/:id
Synopsis
cavuno plans get <id>
Arguments
| Name | Required | Description |
|---|---|---|
id | yes | Plan id |
Examples
cavuno plans get plans_xxx
cavuno plans create
Create an employer plan (metadata only; set price separately).
Maps to POST /v1/plans
Synopsis
cavuno plans create [options]
Options
| Flag | Required | Description |
|---|---|---|
--name <name> | yes | Plan display name |
--kind <kind> | yes | Plan kind: free | one_time | bundle | subscription |
--description <text> | no | Plan description |
--billing-interval <interval> | no | month | year (subscription) |
--purpose <purpose> | no | job_posting | talent_access |
--public | no | List the plan publicly |
--recommended | no | Mark as recommended |
--display-order <n> | no | Display order integer |
Examples
cavuno plans create --name "Pro" --kind subscription --billing-interval month --public
cavuno plans update
Update plan metadata (archive with --archived).
Maps to PATCH /v1/plans/:id
Synopsis
cavuno plans update <id> [options]
Arguments
| Name | Required | Description |
|---|---|---|
id | yes | Plan id |
Options
| Flag | Required | Description |
|---|---|---|
--name <name> | no | New display name |
--description <text> | no | New description |
--public | no | Publish the plan |
--private | no | Unpublish the plan |
--recommended | no | Mark recommended |
--not-recommended | no | Clear recommended |
--archived | no | Archive the plan |
--unarchived | no | Unarchive the plan |
--display-order <n> | no | Display order integer |
Examples
cavuno plans update plans_xxx --name "Pro+"
cavuno plans update plans_xxx --archived
cavuno plans set-price
Set the single checkout price (requires a ready payment connection).
Maps to PUT /v1/plans/:id/price
Synopsis
cavuno plans set-price <id> [options]
Arguments
| Name | Required | Description |
|---|---|---|
id | yes | Plan id |
Options
| Flag | Required | Description |
|---|---|---|
--currency <code> | yes | ISO 4217 currency, e.g. usd |
--amount-cents <n> | yes | Amount in smallest currency unit |
Examples
cavuno plans set-price plans_xxx --currency usd --amount-cents 9900
cavuno plans get-features
List feature key/value pairs for a plan.
Maps to GET /v1/plans/:id/features
Synopsis
cavuno plans get-features <id>
Arguments
| Name | Required | Description |
|---|---|---|
id | yes | Plan id |
Examples
cavuno plans get-features plans_xxx
cavuno plans set-features
Replace plan feature values. Pass JSON: '[{"key":"jobs.max_active","value":"10"}]'.
Maps to PUT /v1/plans/:id/features
Synopsis
cavuno plans set-features <id> <featuresJson>
Arguments
| Name | Required | Description |
|---|---|---|
id | yes | Plan id |
featuresJson | yes | JSON array of {key, value} |
Examples
cavuno plans set-features plans_xxx '[{"key":"jobs.max_active","value":"10"}]'
transactions
Read the board transactions ledger (billing.read). List + get only.
cavuno transactions list
List transactions (date-desc, or relevance when --search).
Maps to GET /v1/transactions
Synopsis
cavuno transactions list [options]
Options
| Flag | Required | Description |
|---|---|---|
--limit <n> | no | Page size 1-100 (default 50) |
--cursor <cursor> | no | Pagination cursor |
--status <status> | no | Filter: paid | open | void | uncollectible |
--kind <kind> | no | Filter: card_post | invoice | subscription |
--search <q> | no | Full-text search (mutually exclusive with --order-id / --subscription-id) |
--order-id <id> | no | Filter by jobOrders id (mutually exclusive with --search / --subscription-id) |
--subscription-id <id> | no | Filter by employerSubscriptions id (mutually exclusive with --search / --order-id) |
Examples
cavuno transactions list
cavuno transactions list --status paid --kind invoice
cavuno transactions list --search "Acme"
cavuno transactions get
Get one transaction by id.
Maps to GET /v1/transactions/:id
Synopsis
cavuno transactions get <id>
Arguments
| Name | Required | Description |
|---|---|---|
id | yes | Transaction id |
Examples
cavuno transactions get tx_…
indexing
Google Indexing configuration and the IndexNow toggle.
cavuno indexing config
Show the indexing + IndexNow configuration.
Maps to GET /v1/integrations/indexing
Synopsis
cavuno indexing config
Examples
cavuno indexing config
cavuno indexing enable-indexnow
Enable IndexNow (Bing/Yandex instant indexing).
Maps to POST /v1/integrations/indexing/toggle-indexnow
Synopsis
cavuno indexing enable-indexnow [options]
Options
| Flag | Required | Description |
|---|---|---|
--idempotency-key <key> | no | Reuse this key when retrying the same logical mutation |
Examples
cavuno indexing enable-indexnow
cavuno indexing disable-indexnow
Disable IndexNow.
Maps to POST /v1/integrations/indexing/toggle-indexnow
Synopsis
cavuno indexing disable-indexnow [options]
Options
| Flag | Required | Description |
|---|---|---|
--idempotency-key <key> | no | Reuse this key when retrying the same logical mutation |
Examples
cavuno indexing disable-indexnow
imports
Bulk-load jobs from CSV files (upload → confirm → execute).
cavuno imports list
List import batches (paginated, most recent first).
Maps to GET /v1/imports
Synopsis
cavuno imports list [options]
Options
| Flag | Required | Description |
|---|---|---|
--status <status> | no | Filter by status (pending|processing|completed|partial|failed) |
--from <iso> | no | Only batches created at or after this ISO date |
--to <iso> | no | Only batches created at or before this ISO date |
--limit <n> | no | Page size 1-50 (default 50) |
--cursor <cursor> | no | Pagination cursor |
Examples
cavuno imports list
cavuno imports list --status completed --limit 10
cavuno imports get
Fetch one import batch (status, errors, proposed mapping).
Maps to GET /v1/imports/:id
Synopsis
cavuno imports get <id>
Arguments
| Name | Required | Description |
|---|---|---|
id | yes | Import batch ID |
Examples
cavuno imports get imports_k25abc
cavuno imports create
Upload a CSV and start discovery. Returns an imports.parse operation to poll.
Maps to POST /v1/imports
Synopsis
cavuno imports create <file> [options]
Arguments
| Name | Required | Description |
|---|---|---|
file | yes | Path to the local .csv file to upload |
Options
| Flag | Required | Description |
|---|---|---|
--idempotency-key <key> | no | Reuse this key when retrying the same logical mutation |
--wait | no | Poll the returned operation until it reaches a terminal state |
--interval-ms <n> | no | Poll interval in milliseconds (default 2000) |
--timeout-ms <n> | no | Give up after this many milliseconds (default 3600000) |
Examples
cavuno imports create ./jobs.csv
cavuno imports create ./jobs.csv --wait
cavuno imports confirm
Confirm the mapping and start execution. Returns an imports.confirm operation to poll.
Maps to POST /v1/imports/:id/confirm
Synopsis
cavuno imports confirm <id> [options]
Arguments
| Name | Required | Description |
|---|---|---|
id | yes | Import batch ID |
Options
| Flag | Required | Description |
|---|---|---|
--inline-mapping <json> | no | A first-time or revised mapping as a JSON string. Omit to use the batch-attached mapping. |
--idempotency-key <key> | no | Reuse this key when retrying the same logical mutation |
--wait | no | Poll the returned operation until it reaches a terminal state |
--interval-ms <n> | no | Poll interval in milliseconds (default 2000) |
--timeout-ms <n> | no | Give up after this many milliseconds (default 3600000) |
Examples
cavuno imports confirm imports_k25abc
cavuno imports confirm imports_k25abc --wait
cavuno imports cancel
Cancel a pending or running import batch (cooperative — rows already written remain).
Maps to POST /v1/imports/:id/cancel
Synopsis
cavuno imports cancel <id> [options]
Arguments
| Name | Required | Description |
|---|---|---|
id | yes | Import batch ID |
Options
| Flag | Required | Description |
|---|---|---|
--idempotency-key <key> | no | Reuse this key when retrying the same logical mutation |
Examples
cavuno imports cancel imports_k25abc
cavuno imports quota
Show the account's daily import usage and reset boundary.
Maps to GET /v1/imports/quota
Synopsis
cavuno imports quota
Examples
cavuno imports quota
job-feeds
Recurring XML job feeds pulled from a URL on a schedule (connect, map, re-detect, runs).
cavuno job-feeds list
List job feeds (paginated, oldest first).
Maps to GET /v1/job-feeds
Synopsis
cavuno job-feeds list [options]
Options
| Flag | Required | Description |
|---|---|---|
--limit <n> | no | Page size 1-50 (default 50) |
--cursor <cursor> | no | Pagination cursor |
Examples
cavuno job-feeds list
cavuno job-feeds get
Fetch one job feed (schedule, last run, mapping review state).
Maps to GET /v1/job-feeds/:id
Synopsis
cavuno job-feeds get <id>
Arguments
| Name | Required | Description |
|---|---|---|
id | yes | Job feed ID |
Examples
cavuno job-feeds get k17feed
cavuno job-feeds create
Connect an XML feed URL. The URL is checked before it is saved; the first run detects the mapping.
Maps to POST /v1/job-feeds
Synopsis
cavuno job-feeds create [options]
Options
| Flag | Required | Description |
|---|---|---|
--url <url> | yes | The XML feed URL |
--name <name> | no | Display name (defaults from the URL host) |
--interval-hours <hours> | no | Hours between pulls: 1, 3, 6, 12 or 24 (default 6) |
--expire-missing <bool> | no | Expire jobs missing from two runs in a row (default true) |
--job-limit <n|none> | no | Most jobs this feed may publish at once |
--idempotency-key <key> | no | Reuse this key when retrying the same logical mutation |
Examples
cavuno job-feeds create --url https://ats.example.com/jobs.xml
cavuno job-feeds create --url https://ats.example.com/jobs.xml --interval-hours 12 --job-limit 500
cavuno job-feeds update
Change the URL, name, schedule, enabled state, job limit, attribution or mapping.
Maps to PATCH /v1/job-feeds/:id
Synopsis
cavuno job-feeds update <id> [options]
Arguments
| Name | Required | Description |
|---|---|---|
id | yes | Job feed ID |
Options
| Flag | Required | Description |
|---|---|---|
--url <url> | no | New feed URL (checked before it is saved) |
--name <name> | no | Display name |
--interval-hours <hours> | no | Hours between pulls: 1, 3, 6, 12 or 24 |
--enabled <bool> | no | Pull on schedule (true) or pause the feed (false) |
--expire-missing <bool> | no | Expire jobs missing from two runs in a row |
--job-limit <n|none> | no | Most jobs this feed may publish at once; none clears it |
--apply-url-attribution <json> | no | e.g. {"mode":"inherit"}, {"mode":"off"} or {"mode":"append","params":[...]} |
--mapping <json> | no | Replacement mapping: {"fieldMappings":[...],"valueTransforms":[...]} |
--idempotency-key <key> | no | Reuse this key when retrying the same logical mutation |
Examples
cavuno job-feeds update k17feed --enabled false
cavuno job-feeds update k17feed --url https://ats.example.com/v2.xml --interval-hours 24
cavuno job-feeds delete
Delete a job feed. Jobs it already published stay published.
Maps to DELETE /v1/job-feeds/:id
Synopsis
cavuno job-feeds delete <id> [options]
Arguments
| Name | Required | Description |
|---|---|---|
id | yes | Job feed ID |
Options
| Flag | Required | Description |
|---|---|---|
-y, --yes | no | Skip the confirmation prompt |
Examples
cavuno job-feeds delete k17feed --yes
cavuno job-feeds redetect-mapping
Discard the mapping and detect a fresh one on the next run, which starts now.
Maps to POST /v1/job-feeds/:id/redetect-mapping
Synopsis
cavuno job-feeds redetect-mapping <id> [options]
Arguments
| Name | Required | Description |
|---|---|---|
id | yes | Job feed ID |
Options
| Flag | Required | Description |
|---|---|---|
--idempotency-key <key> | no | Reuse this key when retrying the same logical mutation |
Examples
cavuno job-feeds redetect-mapping k17feed
cavuno job-feeds runs
List a job feed's runs (most recent first).
Maps to GET /v1/job-feeds/:id/runs
Synopsis
cavuno job-feeds runs <id> [options]
Arguments
| Name | Required | Description |
|---|---|---|
id | yes | Job feed ID |
Options
| Flag | Required | Description |
|---|---|---|
--limit <n> | no | Page size 1-50 (default 20) |
--cursor <cursor> | no | Pagination cursor |
Examples
cavuno job-feeds runs k17feed --limit 5
backfill
Manage Backfill rules, company sources, Board-wide settings, and aggregate progress (dashboard-shaped Operator surface).
cavuno backfill settings get
Show the Board-wide Backfill settings.
Maps to GET /v1/backfill/settings
Synopsis
cavuno backfill settings get
Examples
cavuno backfill settings get
cavuno backfill settings update
Change one or more Board-wide Backfill settings. Omitted settings are unchanged.
Maps to PATCH /v1/backfill/settings
Synopsis
cavuno backfill settings update [options]
Options
| Flag | Required | Description |
|---|---|---|
--job-limit <n> | no | Most Backfill jobs live at once (1-100000); pass an empty string to clear |
--max-job-age-days <n> | no | Skip jobs posted more than N days ago (1-365); pass an empty string to clear |
--exclude-worldwide-remote | no | Skip remote jobs open worldwide (expires those already live) |
--no-exclude-worldwide-remote | no | Stop skipping remote jobs open worldwide |
--sponsored-jobs | no | Include sponsored (pay-per-click) jobs |
--no-sponsored-jobs | no | Stop including sponsored jobs |
--idempotency-key <key> | no | Reuse this key when retrying the same logical mutation |
Examples
cavuno backfill settings update --job-limit 2000 --max-job-age-days 30
cavuno backfill settings update --job-limit ''
cavuno backfill settings update --exclude-worldwide-remote --no-sponsored-jobs
cavuno backfill blocked-jobs unblock-all
Let Backfill import removed jobs again. Unblocks the first 200 now and the rest in the background.
Maps to POST /v1/backfill/blocked-jobs/unblock-all
Synopsis
cavuno backfill blocked-jobs unblock-all [options]
Options
| Flag | Required | Description |
|---|---|---|
--idempotency-key <key> | no | Reuse this key when retrying the same logical mutation |
-y, --yes | no | Skip the confirmation prompt |
Examples
cavuno backfill blocked-jobs unblock-all --yes
cavuno backfill progress
Show aggregate Backfill progress for the Board (onboarding-shaped).
Maps to GET /v1/backfill/progress
Synopsis
cavuno backfill progress
Examples
cavuno backfill progress
cavuno backfill rules list
List named Backfill rules for the Board.
Maps to GET /v1/backfill/rules
Synopsis
cavuno backfill rules list
Examples
cavuno backfill rules list
cavuno backfill rules get
Retrieve a Backfill rule by Cavuno ID.
Maps to GET /v1/backfill/rules/{id}
Synopsis
cavuno backfill rules get <id>
Arguments
| Name | Required | Description |
|---|---|---|
id | yes | Backfill rule ID |
Examples
cavuno backfill rules get <id>
cavuno backfill rules create
Create a named Backfill rule. Pass --rules as a JSON array of rule cards.
Maps to POST /v1/backfill/rules
Synopsis
cavuno backfill rules create [options]
Options
| Flag | Required | Description |
|---|---|---|
--name <name> | yes | Rule display name |
--rules <json> | yes | JSON array of { match, conditions[] } rule cards |
--filters <json> | no | JSON object of filters (countries, subdivisions, seniorities, employmentTypes, workplaceTypes) |
--idempotency-key <key> | no | Reuse this key when retrying the same logical mutation |
Examples
cavuno backfill rules create --name Engineering --rules '[{"match":"any","conditions":[{"field":"title","operator":"contains_any","terms":["engineer"]}]}]'
cavuno backfill rules update
Partially update a Backfill rule (name, rules, and/or filters).
Maps to PATCH /v1/backfill/rules/{id}
Synopsis
cavuno backfill rules update <id> [options]
Arguments
| Name | Required | Description |
|---|---|---|
id | yes | Backfill rule ID |
Options
| Flag | Required | Description |
|---|---|---|
--name <name> | no | New display name |
--rules <json> | no | JSON array of rule cards replacing the current rules |
--filters <json> | no | JSON object of filters replacing the current filters |
--idempotency-key <key> | no | Reuse this key when retrying the same logical mutation |
Examples
cavuno backfill rules update <id> --name "Platform eng"
cavuno backfill rules remove
Delete a named Backfill rule.
Maps to DELETE /v1/backfill/rules/{id}
Synopsis
cavuno backfill rules remove <id> [options]
Arguments
| Name | Required | Description |
|---|---|---|
id | yes | Backfill rule ID |
Options
| Flag | Required | Description |
|---|---|---|
--idempotency-key <key> | no | Reuse this key when retrying the same logical mutation |
-y, --yes | no | Skip the confirmation prompt |
Examples
cavuno backfill rules remove <id> --yes
cavuno backfill companies list
List companies for one Backfill tab state (backfilling | available | needs_match | not_backfilling).
Maps to GET /v1/backfill/companies
Synopsis
cavuno backfill companies list [options]
Options
| Flag | Required | Description |
|---|---|---|
--state <state> | yes | Tab state: backfilling | available | needs_match | not_backfilling |
--search <text> | no | Case-insensitive name filter |
--limit <n> | no | Page size (1-100) |
--cursor <cursor> | no | Opaque pagination cursor |
Examples
cavuno backfill companies list --state available
cavuno backfill companies list --state needs_match --search Acme
cavuno backfill companies start
Start Backfill for a Cavuno company.
Maps to POST /v1/backfill/companies/{companyId}/start
Synopsis
cavuno backfill companies start <companyId> [options]
Arguments
| Name | Required | Description |
|---|---|---|
companyId | yes | Cavuno company ID |
Options
| Flag | Required | Description |
|---|---|---|
--idempotency-key <key> | no | Reuse this key when retrying the same logical mutation |
Examples
cavuno backfill companies start <companyId>
cavuno backfill companies stop
Stop Backfill for a Cavuno company.
Maps to POST /v1/backfill/companies/{companyId}/stop
Synopsis
cavuno backfill companies stop <companyId> [options]
Arguments
| Name | Required | Description |
|---|---|---|
companyId | yes | Cavuno company ID |
Options
| Flag | Required | Description |
|---|---|---|
--idempotency-key <key> | no | Reuse this key when retrying the same logical mutation |
Examples
cavuno backfill companies stop <companyId>
cavuno backfill companies bulk-start
Start Backfill for up to 100 Cavuno company IDs (ordered partial success).
Maps to POST /v1/backfill/companies/bulk-start
Synopsis
cavuno backfill companies bulk-start [options]
Options
| Flag | Required | Description |
|---|---|---|
--company-ids <ids> | yes | Comma-separated Cavuno company IDs |
--idempotency-key <key> | no | Reuse this key when retrying the same logical mutation |
Examples
cavuno backfill companies bulk-start --company-ids co1,co2
cavuno backfill companies bulk-stop
Stop Backfill for up to 100 Cavuno company IDs (ordered partial success).
Maps to POST /v1/backfill/companies/bulk-stop
Synopsis
cavuno backfill companies bulk-stop [options]
Options
| Flag | Required | Description |
|---|---|---|
--company-ids <ids> | yes | Comma-separated Cavuno company IDs |
--idempotency-key <key> | no | Reuse this key when retrying the same logical mutation |
Examples
cavuno backfill companies bulk-stop --company-ids co1,co2
cavuno backfill companies match
Confirm a needs_match candidate by list index. Optionally start backfill.
Maps to POST /v1/backfill/companies/{companyId}/match
Synopsis
cavuno backfill companies match <companyId> [options]
Arguments
| Name | Required | Description |
|---|---|---|
companyId | yes | Cavuno company ID |
Options
| Flag | Required | Description |
|---|---|---|
--candidate-index <n> | yes | Zero-based candidate index from list |
--start | no | Start backfill after linking the match (default false) (default: false) |
--idempotency-key <key> | no | Reuse this key when retrying the same logical mutation |
Examples
cavuno backfill companies match <companyId> --candidate-index 0 --start
cavuno backfill companies mark-no-match
Mark a needs_match company as no match.
Maps to POST /v1/backfill/companies/{companyId}/mark-no-match
Synopsis
cavuno backfill companies mark-no-match <companyId> [options]
Arguments
| Name | Required | Description |
|---|---|---|
companyId | yes | Cavuno company ID |
Options
| Flag | Required | Description |
|---|---|---|
--idempotency-key <key> | no | Reuse this key when retrying the same logical mutation |
Examples
cavuno backfill companies mark-no-match <companyId>
analytics
Typed Board analytics (overview, traffic, apply-clicks, job-visitors).
cavuno analytics overview
Show homepage-shaped analytics overview metrics for the Board.
Maps to GET /v1/analytics/overview
Synopsis
cavuno analytics overview [options]
Options
| Flag | Required | Description |
|---|---|---|
--start <date> | no | Inclusive range start (YYYY-MM-DD, UTC) |
--end <date> | no | Inclusive range end (YYYY-MM-DD, UTC) |
Examples
cavuno analytics overview
cavuno analytics overview --start 2026-01-01 --end 2026-01-30
cavuno analytics traffic
Show homepage-shaped traffic tables (pages, sources, locations, devices).
Maps to GET /v1/analytics/traffic
Synopsis
cavuno analytics traffic [options]
Options
| Flag | Required | Description |
|---|---|---|
--start <date> | no | Inclusive range start (YYYY-MM-DD, UTC) |
--end <date> | no | Inclusive range end (YYYY-MM-DD, UTC) |
--limit <n> | no | Max rows per table (1–10) |
Examples
cavuno analytics traffic
cavuno analytics traffic --start 2026-01-01 --end 2026-01-30 --limit 5
cavuno analytics apply-clicks
List apply clicks by job and first-touch channel (join jobs export on id).
Maps to GET /v1/analytics/apply-clicks
Synopsis
cavuno analytics apply-clicks [options]
Options
| Flag | Required | Description |
|---|---|---|
--start <date> | no | Inclusive range start (YYYY-MM-DD, UTC) |
--end <date> | no | Inclusive range end (YYYY-MM-DD, UTC) |
--limit <n> | no | Page size (1–1000, default 100) |
--cursor <cursor> | no | Pagination cursor from a previous response |
Examples
cavuno analytics apply-clicks
cavuno analytics apply-clicks --start 2026-01-01 --end 2026-01-30 --limit 100
cavuno analytics job-visitors
List unique job-detail visitors by first-touch channel (join export on company_slug + slug).
Maps to GET /v1/analytics/job-visitors
Synopsis
cavuno analytics job-visitors [options]
Options
| Flag | Required | Description |
|---|---|---|
--start <date> | no | Inclusive range start (YYYY-MM-DD, UTC) |
--end <date> | no | Inclusive range end (YYYY-MM-DD, UTC) |
--limit <n> | no | Page size (1–1000, default 100) |
--cursor <cursor> | no | Pagination cursor from a previous response |
Examples
cavuno analytics job-visitors
cavuno analytics job-visitors --start 2026-01-01 --end 2026-01-30
paywall
Manage the candidate-access paywall (atomic configuration + six offers) and list subscriptions.
cavuno paywall get
Show the atomic candidate paywall configuration and six fixed offers.
Maps to GET /v1/paywall
Synopsis
cavuno paywall get
Examples
cavuno paywall get
cavuno paywall replace
Atomically replace the candidate paywall configuration and all six offers. Requires --idempotency-key (or CAVUNO_IDEMPOTENCY_KEY).
Maps to PUT /v1/paywall
Synopsis
cavuno paywall replace [options]
Options
| Flag | Required | Description |
|---|---|---|
--body <json> | yes | Full candidate_paywall JSON body (complete resource replace) |
--idempotency-key <key> | no | Reuse this key when retrying the same logical mutation |
Examples
cavuno paywall replace --body '{"enabled":false,"previewCount":5,...}' --idempotency-key $(uuidgen)
cavuno paywall subscriptions
List candidate paywall subscriptions (read-only grants).
Maps to GET /v1/paywall/subscriptions
Synopsis
cavuno paywall subscriptions [options]
Options
| Flag | Required | Description |
|---|---|---|
--status <status> | no | Filter by subscription status |
--kind <kind> | no | Filter by kind: recurring | lifetime |
--limit <n> | no | Page size 1–100 |
--cursor <cursor> | no | Pagination cursor from a previous response |
Examples
cavuno paywall subscriptions
cavuno paywall subscriptions --status active --kind recurring
sales-led-plans
Manage contact-led employer pricing cards (CRUD, reorder, publish, hide, archive).
cavuno sales-led-plans list
List active sales-led plans for the Board.
Maps to GET /v1/sales-led-plans
Synopsis
cavuno sales-led-plans list
Examples
cavuno sales-led-plans list
cavuno sales-led-plans get
Retrieve one sales-led plan by ID.
Maps to GET /v1/sales-led-plans/{id}
Synopsis
cavuno sales-led-plans get <id>
Arguments
| Name | Required | Description |
|---|---|---|
id | yes | Sales-led plan ID |
Examples
cavuno sales-led-plans get <id>
cavuno sales-led-plans create
Create a sales-led plan. Requires --idempotency-key (or CAVUNO_IDEMPOTENCY_KEY).
Maps to POST /v1/sales-led-plans
Synopsis
cavuno sales-led-plans create [options]
Options
| Flag | Required | Description |
|---|---|---|
--body <json> | yes | CreateSalesLedPlanBody JSON |
--idempotency-key <key> | no | Reuse this key when retrying the same logical mutation |
Examples
cavuno sales-led-plans create --body '{"name":"Full search",...}' --idempotency-key $(uuidgen)
cavuno sales-led-plans update
Update a sales-led plan (full field replace). Requires --idempotency-key.
Maps to PATCH /v1/sales-led-plans/{id}
Synopsis
cavuno sales-led-plans update <id> [options]
Arguments
| Name | Required | Description |
|---|---|---|
id | yes | Sales-led plan ID |
Options
| Flag | Required | Description |
|---|---|---|
--body <json> | yes | UpdateSalesLedPlanBody JSON |
--idempotency-key <key> | no | Reuse this key when retrying the same logical mutation |
Examples
cavuno sales-led-plans update <id> --body '{"name":"…",...}' --idempotency-key $(uuidgen)
cavuno sales-led-plans reorder
Atomically reorder the complete active set. Requires --idempotency-key.
Maps to POST /v1/sales-led-plans/reorder
Synopsis
cavuno sales-led-plans reorder [options]
Options
| Flag | Required | Description |
|---|---|---|
--body <json> | yes | ReorderSalesLedPlansBody JSON ({"orders":[{"id":"…","displayOrder":0},…]}) |
--idempotency-key <key> | no | Reuse this key when retrying the same logical mutation |
Examples
cavuno sales-led-plans reorder --body '{"orders":[...]}' --idempotency-key $(uuidgen)
cavuno sales-led-plans publish
Publish a sales-led plan. Requires --idempotency-key.
Maps to POST /v1/sales-led-plans/{id}/publish
Synopsis
cavuno sales-led-plans publish <id> [options]
Arguments
| Name | Required | Description |
|---|---|---|
id | yes | Sales-led plan ID |
Options
| Flag | Required | Description |
|---|---|---|
--idempotency-key <key> | no | Reuse this key when retrying the same logical mutation |
Examples
cavuno sales-led-plans publish <id> --idempotency-key $(uuidgen)
cavuno sales-led-plans hide
Hide a sales-led plan. Requires --idempotency-key.
Maps to POST /v1/sales-led-plans/{id}/hide
Synopsis
cavuno sales-led-plans hide <id> [options]
Arguments
| Name | Required | Description |
|---|---|---|
id | yes | Sales-led plan ID |
Options
| Flag | Required | Description |
|---|---|---|
--idempotency-key <key> | no | Reuse this key when retrying the same logical mutation |
Examples
cavuno sales-led-plans hide <id> --idempotency-key $(uuidgen)
cavuno sales-led-plans archive
Irreversibly archive a sales-led plan. Requires --idempotency-key.
Maps to POST /v1/sales-led-plans/{id}/archive
Synopsis
cavuno sales-led-plans archive <id> [options]
Arguments
| Name | Required | Description |
|---|---|---|
id | yes | Sales-led plan ID |
Options
| Flag | Required | Description |
|---|---|---|
--idempotency-key <key> | no | Reuse this key when retrying the same logical mutation |
Examples
cavuno sales-led-plans archive <id> --idempotency-key $(uuidgen)
members
Manage the members of the authenticated account.
cavuno members list
List account members.
Maps to GET /v1/members
Synopsis
cavuno members list [options]
Options
| Flag | Required | Description |
|---|---|---|
--role <role> | no | Filter by role (owner|admin|member) |
--suspended <bool> | no | Filter by suspension state (true|false) |
Examples
cavuno members list
cavuno members list --role admin --suspended false
cavuno members get
Fetch a single member by user ID.
Maps to GET /v1/members/:userId
Synopsis
cavuno members get <userId>
Arguments
| Name | Required | Description |
|---|---|---|
userId | yes | The user ID of the member |
Examples
cavuno members get users_k800abc
cavuno members update
Change a member's role. Only an owner may set `owner`; the primary owner's role is immutable (use transfer-ownership).
Maps to PATCH /v1/members/:userId
Synopsis
cavuno members update <userId> [options]
Arguments
| Name | Required | Description |
|---|---|---|
userId | yes | The user ID of the member |
Options
| Flag | Required | Description |
|---|---|---|
--role <role> | yes | The new role (owner|admin|member) |
--idempotency-key <key> | no | Reuse this key when retrying the same logical mutation |
Examples
cavuno members update users_k800abc --role admin
cavuno members remove
Remove a member from the account. The account owner cannot be removed — transfer ownership first.
Maps to DELETE /v1/members/:userId
Synopsis
cavuno members remove <userId> [options]
Arguments
| Name | Required | Description |
|---|---|---|
userId | yes | The user ID of the member |
Options
| Flag | Required | Description |
|---|---|---|
--idempotency-key <key> | no | Reuse this key when retrying the same logical mutation |
-y, --yes | no | Skip the confirmation prompt |
Examples
cavuno members remove users_k800abc --yes
cavuno members suspend
Suspend a member: they keep their role but lose all permission evaluations. The primary owner cannot be suspended.
Maps to POST /v1/members/:userId/suspend
Synopsis
cavuno members suspend <userId> [options]
Arguments
| Name | Required | Description |
|---|---|---|
userId | yes | The user ID of the member |
Options
| Flag | Required | Description |
|---|---|---|
--idempotency-key <key> | no | Reuse this key when retrying the same logical mutation |
Examples
cavuno members suspend users_k800abc
cavuno members unsuspend
Reinstate a suspended member.
Maps to POST /v1/members/:userId/unsuspend
Synopsis
cavuno members unsuspend <userId> [options]
Arguments
| Name | Required | Description |
|---|---|---|
userId | yes | The user ID of the member |
Options
| Flag | Required | Description |
|---|---|---|
--idempotency-key <key> | no | Reuse this key when retrying the same logical mutation |
Examples
cavuno members unsuspend users_k800abc
cavuno members transfer-ownership
Transfer the primary-owner role to another member. Only the current primary owner may do this — you will be demoted to admin and the transfer cannot be undone without the new owner transferring it back.
Maps to POST /v1/members/transfer-ownership
Synopsis
cavuno members transfer-ownership <newOwnerUserId> [options]
Arguments
| Name | Required | Description |
|---|---|---|
newOwnerUserId | yes | The user ID of the member who will become the primary owner |
Options
| Flag | Required | Description |
|---|---|---|
--idempotency-key <key> | no | Reuse this key when retrying the same logical mutation |
-y, --yes | no | Skip the confirmation prompt |
Examples
cavuno members transfer-ownership users_k900abc --yes
invitations
Manage pending invitations for the authenticated account.
cavuno invitations list
List invitations (paginated). Accept tokens are redacted.
Maps to GET /v1/invitations
Synopsis
cavuno invitations list [options]
Options
| Flag | Required | Description |
|---|---|---|
--status <status> | no | Filter by status (pending|expired|accepted|declined) |
--limit <n> | no | Page size 1-100 (default 50) |
--cursor <cursor> | no | Pagination cursor |
Examples
cavuno invitations list
cavuno invitations list --status pending
cavuno invitations create
Invite a new member by email. The response includes the accept token and URL (returned only here and on renew).
Maps to POST /v1/invitations
Synopsis
cavuno invitations create [options]
Options
| Flag | Required | Description |
|---|---|---|
--email <email> | yes | The email address to invite |
--role <role> | yes | The role on accept (admin|member) |
--idempotency-key <key> | no | Reuse this key when retrying the same logical mutation |
Examples
cavuno invitations create --email new@acme.com --role member
cavuno invitations update
Change a pending invitation's role.
Maps to PATCH /v1/invitations/:id
Synopsis
cavuno invitations update <id> [options]
Arguments
| Name | Required | Description |
|---|---|---|
id | yes | The invitation ID |
Options
| Flag | Required | Description |
|---|---|---|
--role <role> | yes | The new role (admin|member) |
--idempotency-key <key> | no | Reuse this key when retrying the same logical mutation |
Examples
cavuno invitations update invitations_k900abc --role admin
cavuno invitations renew
Rotate the accept token and extend the expiry by 7 days. This INVALIDATES the previous accept link and resends the email; the response includes the new token and URL.
Maps to POST /v1/invitations/:id/renew
Synopsis
cavuno invitations renew <id> [options]
Arguments
| Name | Required | Description |
|---|---|---|
id | yes | The invitation ID |
Options
| Flag | Required | Description |
|---|---|---|
--idempotency-key <key> | no | Reuse this key when retrying the same logical mutation |
Examples
cavuno invitations renew invitations_k900abc
cavuno invitations revoke
Cancel a pending invitation.
Maps to DELETE /v1/invitations/:id
Synopsis
cavuno invitations revoke <id> [options]
Arguments
| Name | Required | Description |
|---|---|---|
id | yes | The invitation ID |
Options
| Flag | Required | Description |
|---|---|---|
--idempotency-key <key> | no | Reuse this key when retrying the same logical mutation |
-y, --yes | no | Skip the confirmation prompt |
Examples
cavuno invitations revoke invitations_k900abc --yes
subscribers
Manage alert subscribers for the authenticated account.
cavuno subscribers list
List subscribers (paginated).
Maps to GET /v1/subscribers
Synopsis
cavuno subscribers list [options]
Options
| Flag | Required | Description |
|---|---|---|
--search <query> | no | Case-insensitive substring match on email |
--status <status> | no | Filter by lifecycle status: confirmed | unconfirmed | unsubscribed | waitlisted |
--limit <n> | no | Page size 1-100 (default 50) |
--cursor <cursor> | no | Pagination cursor |
Examples
cavuno subscribers list
cavuno subscribers list --status confirmed --search alice --limit 20
cavuno subscribers get
Fetch a single subscriber by ID (with alerts inline).
Maps to GET /v1/subscribers/:id
Synopsis
cavuno subscribers get <id>
Arguments
| Name | Required | Description |
|---|---|---|
id | yes | Subscriber ID |
Examples
cavuno subscribers get sub_123
cavuno subscribers count
Count confirmed subscribers for the account.
Maps to GET /v1/subscribers/count
Synopsis
cavuno subscribers count
Examples
cavuno subscribers count
cavuno subscribers alerts
List a subscriber's alerts.
Maps to GET /v1/subscribers/:id/alerts
Synopsis
cavuno subscribers alerts <id>
Arguments
| Name | Required | Description |
|---|---|---|
id | yes | Subscriber ID |
Examples
cavuno subscribers alerts sub_123
cavuno subscribers unsubscribe
Admin-unsubscribe a subscriber (sets unsubscribedAt, deactivates alerts). Reversible with resubscribe.
Maps to POST /v1/subscribers/:id/unsubscribe
Synopsis
cavuno subscribers unsubscribe <id> [options]
Arguments
| Name | Required | Description |
|---|---|---|
id | yes | Subscriber ID |
Options
| Flag | Required | Description |
|---|---|---|
--idempotency-key <key> | no | Reuse this key when retrying the same logical mutation |
Examples
cavuno subscribers unsubscribe sub_123
cavuno subscribers resubscribe
Admin-resubscribe a previously unsubscribed subscriber (clears unsubscribedAt, reactivates alerts).
Maps to POST /v1/subscribers/:id/resubscribe
Synopsis
cavuno subscribers resubscribe <id> [options]
Arguments
| Name | Required | Description |
|---|---|---|
id | yes | Subscriber ID |
Options
| Flag | Required | Description |
|---|---|---|
--idempotency-key <key> | no | Reuse this key when retrying the same logical mutation |
Examples
cavuno subscribers resubscribe sub_123
cavuno subscribers export
Export subscribers. csv (default) starts an async operation whose result carries a downloadUrl; json returns an inline list capped at 10,000 rows.
Maps to GET /v1/subscribers/export
Synopsis
cavuno subscribers export [options]
Options
| Flag | Required | Description |
|---|---|---|
--export-format <format> | no | Export format: csv (async, default) or json (inline, max 10,000 rows) (default: csv) |
--wait | no | Poll the returned operation until it reaches a terminal state |
--interval-ms <n> | no | Poll interval in milliseconds (default 2000) |
--timeout-ms <n> | no | Give up after this many milliseconds (default 3600000) |
Examples
cavuno subscribers export --export-format csv --wait
cavuno subscribers export --export-format json
cavuno subscribers import
Bulk-import subscribers from a CSV file (async). Imported subscribers stay unconfirmed until they complete opt-in.
Maps to POST /v1/subscribers/import
Synopsis
cavuno subscribers import <file> [options]
Arguments
| Name | Required | Description |
|---|---|---|
file | yes | Path to the CSV file (header row with an email column) |
Options
| Flag | Required | Description |
|---|---|---|
--no-send-confirmation | no | Skip the double-opt-in confirmation email |
--idempotency-key <key> | no | Reuse this key when retrying the same logical mutation |
--wait | no | Poll the returned operation until it reaches a terminal state |
--interval-ms <n> | no | Poll interval in milliseconds (default 2000) |
--timeout-ms <n> | no | Give up after this many milliseconds (default 3600000) |
Examples
cavuno subscribers import ./subscribers.csv --wait
cavuno subscribers import ./subscribers.csv --no-send-confirmation
redirects
Manage board redirect rules for the authenticated account.
cavuno redirects list
List redirect rules.
Maps to GET /v1/redirects
Synopsis
cavuno redirects list [options]
Options
| Flag | Required | Description |
|---|---|---|
--search <prefix> | no | Prefix match on fromPath |
--limit <n> | no | Page size 1-100 (default 50) |
--cursor <cursor> | no | Pagination cursor |
Examples
cavuno redirects list
cavuno redirects list --search /old
cavuno redirects create
Create a redirect rule.
Maps to POST /v1/redirects
Synopsis
cavuno redirects create <fromPath> <toPath> [options]
Arguments
| Name | Required | Description |
|---|---|---|
fromPath | yes | Source path, for example /old-careers |
toPath | yes | Destination path, for example /jobs |
Options
| Flag | Required | Description |
|---|---|---|
--status-code <code> | no | HTTP status code: 301 or 302 (default 301) |
Examples
cavuno redirects create /old-careers /jobs
cavuno redirects create /old /new --status-code 302
cavuno redirects update
Update a redirect rule.
Maps to PATCH /v1/redirects/:id
Synopsis
cavuno redirects update <id> [options]
Arguments
| Name | Required | Description |
|---|---|---|
id | yes | Redirect ID |
Options
| Flag | Required | Description |
|---|---|---|
--from-path <path> | no | New source path |
--to-path <path> | no | New destination path |
--status-code <code> | no | HTTP status code: 301 or 302 |
Examples
cavuno redirects update k200abc --to-path /jobs
cavuno redirects update k200abc --from-path /old --status-code 302
cavuno redirects remove
Delete a redirect rule.
Maps to DELETE /v1/redirects/:id
Synopsis
cavuno redirects remove <id> [options]
Arguments
| Name | Required | Description |
|---|---|---|
id | yes | Redirect ID |
Options
| Flag | Required | Description |
|---|---|---|
-y, --yes | no | Skip the confirmation prompt |
Examples
cavuno redirects remove k200abc --yes
cavuno redirects batch
Run a batch of redirect operations. Pass JSON via --file or stdin. Exit 0 on HTTP 200 even if some rows fail — inspect the body.
Maps to POST /v1/redirects/batch
Synopsis
cavuno redirects batch [options]
Options
| Flag | Required | Description |
|---|---|---|
--file <path> | no | JSON file body (otherwise read stdin) |
Examples
cavuno redirects batch --file ops.json
distribution
Publish jobs to job aggregators with XML feeds, and manage the Cavuno distribution opt-in.
cavuno distribution feeds list
List XML feeds: one prebuilt feed per aggregator, then custom feeds.
Maps to GET /v1/distribution/feeds
Synopsis
cavuno distribution feeds list
Examples
cavuno distribution feeds list --format table
cavuno distribution feeds get
Show one XML feed.
Maps to GET /v1/distribution/feeds/:id
Synopsis
cavuno distribution feeds get <id>
Arguments
| Name | Required | Description |
|---|---|---|
id | yes | Feed ID |
Examples
cavuno distribution feeds get k17abc
cavuno distribution feeds create
Create a custom XML feed.
Maps to POST /v1/distribution/feeds
Synopsis
cavuno distribution feeds create <name> [options]
Arguments
| Name | Required | Description |
|---|---|---|
name | yes | Feed name; its URL slug is derived from it |
Options
| Flag | Required | Description |
|---|---|---|
--template <template> | yes | XML format: indeed, jooble, careerjet, jora, jobrapido, custom |
--source-rule <rule> | no | own (board jobs only) or all (Backfill included) |
--filter <json> | no | Job filter, e.g. '{"remoteOptions":["remote"],"featuredOnly":true}' |
--custom-field-names <json> | no | custom template only: element renames, e.g. '{"title":"jobtitle"}' |
--contact-email <email> | no | indeed template only: <email> value |
Examples
cavuno distribution feeds create "Remote jobs" --template jooble --filter '{"remoteOptions":["remote"]}'
cavuno distribution feeds create "Partner feed" --template custom --custom-field-names '{"title":"jobtitle"}'
cavuno distribution feeds update
Update an XML feed. Omitted options are unchanged; pass null to --filter or --custom-field-names to clear.
Maps to PATCH /v1/distribution/feeds/:id
Synopsis
cavuno distribution feeds update <id> [options]
Arguments
| Name | Required | Description |
|---|---|---|
id | yes | Feed ID |
Options
| Flag | Required | Description |
|---|---|---|
--name <name> | no | New name (the URL never changes) |
--template <template> | no | XML format: indeed, jooble, careerjet, jora, jobrapido, custom |
--source-rule <rule> | no | own (board jobs only) or all (Backfill included) |
--filter <json> | no | Job filter, e.g. '{"remoteOptions":["remote"],"featuredOnly":true}' |
--custom-field-names <json> | no | custom template only: element renames, e.g. '{"title":"jobtitle"}' |
--contact-email <email> | no | indeed template only: <email> value |
--clear-contact-email | no | Remove the indeed contact email |
Examples
cavuno distribution feeds update k17abc --contact-email jobs@example.com
cavuno distribution feeds update k17abc --filter null
cavuno distribution feeds remove
Delete a custom XML feed; its URL stops working.
Maps to DELETE /v1/distribution/feeds/:id
Synopsis
cavuno distribution feeds remove <id> [options]
Arguments
| Name | Required | Description |
|---|---|---|
id | yes | Feed ID |
Options
| Flag | Required | Description |
|---|---|---|
-y, --yes | no | Skip the confirmation prompt |
Examples
cavuno distribution feeds remove k17abc --yes
cavuno distribution origin get
Show the feed origin and any moved origins.
Maps to GET /v1/distribution/feed-origin
Synopsis
cavuno distribution origin get
Examples
cavuno distribution origin get
cavuno distribution origin acknowledge
Mark moved feed URLs as resubmitted to the aggregators.
Maps to POST /v1/distribution/feed-origin/acknowledge
Synopsis
cavuno distribution origin acknowledge
Examples
cavuno distribution origin acknowledge
cavuno distribution settings get
Show distribution settings.
Maps to GET /v1/distribution/settings
Synopsis
cavuno distribution settings get
Examples
cavuno distribution settings get
cavuno distribution settings update
Switch Cavuno distribution on or off.
Maps to PATCH /v1/distribution/settings
Synopsis
cavuno distribution settings update [options]
Options
| Flag | Required | Description |
|---|---|---|
--cavuno-distribution <on|off> | yes | on or off |
Examples
cavuno distribution settings update --cavuno-distribution off
webhooks
Manage Board-owned webhook endpoints and inspect delivery history.
cavuno webhooks endpoints list
List webhook endpoints.
Maps to GET /v1/webhook-endpoints
Synopsis
cavuno webhooks endpoints list [options]
Options
| Flag | Required | Description |
|---|---|---|
--limit <n> | no | Page size 1-100 (default 50) |
--cursor <cursor> | no | Pagination cursor |
Examples
cavuno webhooks endpoints list
cavuno webhooks endpoints get
Fetch a webhook endpoint by ID.
Maps to GET /v1/webhook-endpoints/:id
Synopsis
cavuno webhooks endpoints get <id>
Arguments
| Name | Required | Description |
|---|---|---|
id | yes | Endpoint ID |
Examples
cavuno webhooks endpoints get whe_123
cavuno webhooks endpoints create
Create a webhook endpoint. Prints the one-time signing secret once.
Maps to POST /v1/webhook-endpoints
Synopsis
cavuno webhooks endpoints create [options]
Options
| Flag | Required | Description |
|---|---|---|
--url <url> | yes | Public HTTPS URL that will receive deliveries |
--event-types <types> | yes | Comma-separated V1 event types (e.g. job.created,company.updated) |
--idempotency-key <key> | no | Reuse this key when retrying the same logical mutation |
Examples
cavuno webhooks endpoints create --url https://hooks.example.com/cavuno --event-types job.created,job.updated
cavuno webhooks endpoints update
Update a webhook endpoint (URL, event types, or status).
Maps to PATCH /v1/webhook-endpoints/:id
Synopsis
cavuno webhooks endpoints update <id> [options]
Arguments
| Name | Required | Description |
|---|---|---|
id | yes | Endpoint ID |
Options
| Flag | Required | Description |
|---|---|---|
--url <url> | no | New HTTPS destination URL |
--event-types <types> | no | Comma-separated V1 event types replacing the current selection |
--status <status> | no | enabled or paused |
--idempotency-key <key> | no | Reuse this key when retrying the same logical mutation |
Examples
cavuno webhooks endpoints update whe_123 --status paused
cavuno webhooks endpoints update whe_123 --url https://hooks.example.com/v2
cavuno webhooks endpoints delete
Retire a webhook endpoint (stops future delivery; keeps config for replay).
Maps to DELETE /v1/webhook-endpoints/:id
Synopsis
cavuno webhooks endpoints delete <id> [options]
Arguments
| Name | Required | Description |
|---|---|---|
id | yes | Endpoint ID |
Options
| Flag | Required | Description |
|---|---|---|
-y, --yes | no | Skip the confirmation prompt |
--idempotency-key <key> | no | Reuse this key when retrying the same logical mutation |
Examples
cavuno webhooks endpoints delete whe_123 --yes
cavuno webhooks endpoints rotate-secret
Rotate the signing secret. Prints the new secret once.
Maps to POST /v1/webhook-endpoints/:id/rotate-secret
Synopsis
cavuno webhooks endpoints rotate-secret <id> [options]
Arguments
| Name | Required | Description |
|---|---|---|
id | yes | Endpoint ID |
Options
| Flag | Required | Description |
|---|---|---|
-y, --yes | no | Skip the confirmation prompt |
--idempotency-key <key> | no | Reuse this key when retrying the same logical mutation |
Examples
cavuno webhooks endpoints rotate-secret whe_123 --yes
cavuno webhooks endpoints test
Send one synthetic signed test delivery to the endpoint URL.
Maps to POST /v1/webhook-endpoints/:id/test
Synopsis
cavuno webhooks endpoints test <id> [options]
Arguments
| Name | Required | Description |
|---|---|---|
id | yes | Endpoint ID |
Options
| Flag | Required | Description |
|---|---|---|
-y, --yes | no | Skip the confirmation prompt |
--idempotency-key <key> | no | Reuse this key when retrying the same logical mutation |
Examples
cavuno webhooks endpoints test whe_123 --yes
cavuno webhooks deliveries list
List webhook deliveries (newest first).
Maps to GET /v1/webhook-deliveries
Synopsis
cavuno webhooks deliveries list [options]
Options
| Flag | Required | Description |
|---|---|---|
--endpoint <id> | no | Filter to a single endpoint ID |
--status <status> | no | Filter by status (pending|retrying|delivered|terminal|exhausted) |
--limit <n> | no | Page size 1-100 (default 50) |
--cursor <cursor> | no | Pagination cursor |
Examples
cavuno webhooks deliveries list
cavuno webhooks deliveries list --endpoint whe_123 --status delivered
cavuno webhooks deliveries get
Fetch a webhook delivery by ID (includes attempt history).
Maps to GET /v1/webhook-deliveries/:id
Synopsis
cavuno webhooks deliveries get <id>
Arguments
| Name | Required | Description |
|---|---|---|
id | yes | Delivery ID |
Examples
cavuno webhooks deliveries get wdl_123
cavuno webhooks deliveries replay
Replay a completed delivery (delivered/terminal/exhausted). Reuses frozen event bytes with a fresh signature. Exhausted deliveries get one fresh attempt, not a fresh retry budget. Open (pending/retrying) deliveries return 409.
Maps to POST /v1/webhook-deliveries/:id/replay
Synopsis
cavuno webhooks deliveries replay <id> [options]
Arguments
| Name | Required | Description |
|---|---|---|
id | yes | Delivery ID |
Options
| Flag | Required | Description |
|---|---|---|
-y, --yes | no | Skip the confirmation prompt |
--idempotency-key <key> | no | Reuse this key when retrying the same logical mutation |
Examples
cavuno webhooks deliveries replay wdl_123 --yes
marketing-permissions
Read marketing-email consent decisions off the board user records, and withdraw on request. Grants exist only on Board-user surfaces.
cavuno marketing-permissions list
List recorded consent decisions. People who never decided are absent — absence means no consent, never a default.
Maps to GET /v1/marketing-permissions
Synopsis
cavuno marketing-permissions list [options]
Options
| Flag | Required | Description |
|---|---|---|
--status <status> | no | granted or withdrawn |
--email <email> | no | Exact-match lookup; returns at most one item |
--limit <n> | no | Page size (1-100) |
--cursor <cursor> | no | Opaque pagination cursor |
Examples
cavuno marketing-permissions list
cavuno marketing-permissions list --status granted
cavuno marketing-permissions list --email person@example.com
cavuno marketing-permissions withdraw
Withdraw a board user's marketing consent (reason: operator_request) — the right move when someone asks you directly to be removed. Idempotent. Cannot grant or restore.
Maps to POST /v1/marketing-permissions/{id}/withdraw
Synopsis
cavuno marketing-permissions withdraw <boardUserId> [options]
Arguments
| Name | Required | Description |
|---|---|---|
boardUserId | yes | The board user ID |
Options
| Flag | Required | Description |
|---|---|---|
-y, --yes | no | Skip the confirmation prompt |
--idempotency-key <key> | no | Reuse this key when retrying the same logical mutation |
Examples
cavuno marketing-permissions withdraw boardUsers_01EXAMPLE --yes
feedback
Report a problem with Cavuno (API, CLI, MCP or SDK) to its engineers, as an AI agent or a person.
cavuno feedback send
Send an Agent Feedback Protocol report. Works without CAVUNO_API_KEY; a valid key attributes it to your board. Never include credentials or personal data. 20 reports per 5 minutes.
Maps to POST /v1/feedback
Synopsis
cavuno feedback send [options]
Options
| Flag | Required | Description |
|---|---|---|
--type <type> | no | Kind of problem (required unless --json) |
--goal <text> | no | What you were trying to accomplish, in plain language (required unless --json) |
--message <text> | no | What prevented or complicated the task (required unless --json) |
--endpoint <path> | no | API path, CLI command or MCP tool involved, e.g. /jobs |
--method <method> | no | HTTP method of the endpoint |
--outcome <outcome> | no | blocked (task failed), degraded (worse or slower), completed (suggestion only) |
--expected <text> | no | What you expected to find or happen |
--suggestion <text> | no | A concrete change that would have let you succeed |
--workaround [description] | no | You found a workaround; optionally describe it |
--session-id <id> | no | Reuse one value per task; a retry with the same content returns the original report |
--request-id <id> | no | X-Request-Id of the failing call |
--agent-name <name> | no | Agent or product name |
--agent-model <model> | no | Model name |
--json | no | Read the full report as JSON from --file or stdin; flags override its fields |
--file <path> | no | JSON report file for --json (otherwise stdin) |
Examples
cavuno feedback --type missing_capability --goal "What you were trying to do" --message "What got in the way" --agent-name my-agent --agent-model model-name
cavuno feedback --json --file report.json
CLI version 1.19.1 · Generated 2026-10-19