--json (machine-readable output), --key (use another API key for this command) and --base-url (staging). Destructive commands preview and stop unless you pass --confirm (alias --yes).
Setting any field
Every command that creates or updates something accepts--set field=value - as many times as you like - and --body @file.json for nested objects. Values are parsed: true, false, null, numbers, and @path reads a file. Any field the API accepts works, including ones added after this CLI was released.
--set covers the rest. An unknown field name is rejected by the API, never silently dropped.
Account
Agents
Calls
Campaigns (voice batch)
CSV columns:
phone (required, E.164), prompt_override (optional - replaces the campaign prompt for that person), and every other column becomes a variable the agent receives for that call.
Numbers
Callers (caller context)
What the agent knows about a caller on one of your numbers. First number is yours, second is the caller’s. See Caller context.SMS
Webhooks (per number)
Bring your own
set verifies the connection with a real probe before saving; get never returns secrets.
MCP
Errors and exit codes
Errors print aserror <status> <code>: <message> with a link to the error’s page, and the process exits with code 1. With --json the same information is returned on stdout as { "error": { "code", "status", "message", "doc_url" } }. No key at all exits with 2. A mistyped command exits 1 with a suggestion.
Progress lines (imports, --wait) go to stderr, so stdout stays clean for pipes. All codes are listed on Errors.