Command line
A small CLI for scripts and testing: Node 18 or newer, no dependencies.
Install
Section titled “Install”npm install -g valjean-cli# or, with Homebrewbrew install desvon7/tap/valjean# or, without npm (checks the package's checksum, installs to ~/.local/bin)curl -fsSL https://api.valjeanspecialty.com/install.sh | shSign in
Section titled “Sign in”valjean loginIt prints a short code and a link. Open the link, check the code matches, and approve with your portal link or an API key, choosing read or read-and-submit. The CLI saves the sign-in to ~/.config/valjean/credentials.json (readable only by you) and refreshes it on its own. valjean logout signs out and revokes it.
On a server or in CI, use a key instead: set VALJEAN_KEY, or save one with valjean login --key - (reads it from stdin, so it stays out of your shell history). VALJEAN_KEY wins over a saved sign-in.
valjean whoamivaljean appetite --lines GL,LL --state SC --description "bar and grill"valjean submit --body ./file.json --effective 2026-12-15 --idempotency-key AMS-10442valjean status <submission-id>valjean flags <submission-id>valjean answer <submission-id> --set hours="11am-12am" --set capacity=120valjean answer <submission-id> --message "Seats 120. Payroll is $640K; open 12 years."valjean upload <submission-id> ./loss-runs.pdfvaljean quotes <submission-id>valjean events --follow| Command | What it does |
|---|---|
login / login --key - / logout |
Sign in with a browser code, save a key, or sign out |
whoami |
Agency and key |
appetite --lines --state [--naics] [--description] |
Will Valjean likely place it |
requirements --lines --state [--description] |
What the class needs, with keys and answer types |
submit [--body file.json] [--insured --state --lines --effective] [--ref] [--idempotency-key] |
Send a file. Flags override the same fields in --body (--body - reads stdin) |
intake --narrative "…" [--idempotency-key] [files…] |
Send documents and a description |
list [--status] [--search] |
Your files |
status <id> |
Status and what’s still needed |
answer <id> --set key=value … |
Answer by key |
answer <id> --message "…" |
Answer in plain sentences |
flags <id> |
What underwriters will likely ask about |
upload <id> <file> |
Upload a document (uses an upload link over 4 MB) |
documents <id> / download <id> <doc-id> [--o file] |
List and download documents |
quotes <id> |
Presented quotes |
bind <id> <quote-id> --instruction "…" --contact "Your Name" |
Ask to bind |
instant-quotes <id> [--note] |
Ask for instant quotes |
policies / invoices |
Policies and invoices |
events [--after N] [--follow] |
The events feed |
Add --json to any command for the raw API response. --idempotency-key sends the Idempotency-Key header, so a retried create returns the first file. VALJEAN_URL points it at another base address; valjean --version prints the version.

