@getzulu/cli
v0.2.0
Published
getzulu — terminal CLI for the Zulu API v1
Readme
getzulu CLI
A terminal CLI for the Zulu API v1. Read and manage your clients, suppliers, products, invoices, purchase orders, job cards, opportunities, notes, stock, forms, and more — straight from the shell.
The command is getzulu, with zulu installed as a shorthand alias — both run
the same binary. Zero runtime dependencies.
The full API is available: list/get commands read, and create/update/
add/remove commands write. getzulu list marks writes with ✎.
For the same tools inside Claude, see the companion MCP server,
@getzulu/mcp.
Install
npm install -g @getzulu/cliRequires Node.js 18+.
Configure
All you need is an API token — get one from your Zulu dashboard under
Settings → API. Run setup once and the token is saved securely
(~/.config/zulu/config.json, owner-only permissions):
getzulu setup # prompts for your API token (hidden input)
getzulu config # show current settings
getzulu logout # remove the saved configRe-run getzulu setup any time to update the token — leaving it blank keeps
the existing one. Non-interactive: getzulu setup --api-token zulu_….
Everything is scoped to the token's account.
Usage
Commands read as getzulu <resource> <action>:
getzulu list # list every command
getzulu client # list a resource's actions
getzulu client list --help # show a command's parameters
# Read — flags or a JSON object:
getzulu tenant info
getzulu client list --limit 5 --search acme
getzulu client get --token abc123
getzulu product list '{"limit":2}'
getzulu product taxonomy
# Write — simple fields as flags, nested data as JSON:
getzulu note create --object client --token <client-token> --title "Called re: quote"
getzulu client create '{"company":"Acme","email":"[email protected]","addresses":[{"line1":"1 Main St","city":"Auckland"}]}'
getzulu invoice line_add --token <invoice-token> --product <product-token> --quantity 2Arguments are --key value flags (numeric strings coerce to numbers) or a
single JSON object as the last argument. Use the JSON form for writes with
nested data (addresses, contacts, invoice/PO lines). Output is the raw API
JSON, so it pipes straight into jq:
getzulu client list --limit 50 | jq '.data.clients[].company'File uploads take a local path via --file:
getzulu file upload --file ./contract.pdf --object client --object_id <client-token>
getzulu product image_upload --token <product-token> --url https://example.com/photo.jpgParameters & filtering
Every parameter is a --flag, named exactly as in the command's schema —
run getzulu <command> --help to see them all with descriptions.
Resources are addressed by token, not id. A
listcommand returns each item's token; pass that to the matchingget:getzulu product list --search gouda # → find the product's token getzulu inventory stock --product <product-token> # → stock for that productlistcommands filter server-side — combine any of their flags:getzulu invoice list --status paid --client <client-token> getzulu submission list --form <form-token> --date_from 2026-06-01All
listcommands paginate with--limitand--offset.
Commands
The command set mirrors the Zulu API exactly, so it grows with the API. Run
getzulu list for the authoritative, always-current catalogue (writes marked
✎), and getzulu <command> --help for a command's parameters.
| Resource | Actions | About |
|---|---|---|
| tenant | info | The connected account — company, plan, modules |
| client | list get create update | Customers, with addresses & contacts |
| supplier | list get create update | Suppliers |
| product | list get create update taxonomy price_update category_* tag_* image_upload | Products, prices, categories, tags, images |
| category | get create update | Product categories |
| invoice | list get create update line_add line_update line_remove | Invoices/sales and their line items |
| porder | list get create update line_add line_update line_remove | Purchase orders and their line items |
| opportunity | list get create stage_list stage_set | Pipeline opportunities |
| jobcard | list get create update | Job cards / projects |
| post | list get create update | Website posts (blog, page, …) |
| note | list create | Notes on clients, sales, products, opportunities |
| inventory | stock stock_adjust | Stock totals and adjustments |
| form | list get | Forms and field definitions |
| submission | list get | Form submissions and answers |
| file | upload | Upload a file, optionally attached to an entity |
| account | modules signup verify | Module keys; agent account signup/verify |
Required parameters are marked * in each command's --help; every list
command also takes --limit / --offset. Resources are addressed by token
(returned by the matching list), never by numeric id.
License
MIT
