Skip to content

Command line

A small CLI for scripts and testing: Node 18 or newer, no dependencies.

Terminal window
npm install -g valjean-cli
# or, with Homebrew
brew install desvon7/tap/valjean
# or, without npm (checks the package's checksum, installs to ~/.local/bin)
curl -fsSL https://api.valjeanspecialty.com/install.sh | sh
Terminal window
valjean login

It 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.

Terminal window
valjean whoami
valjean appetite --lines GL,LL --state SC --description "bar and grill"
valjean submit --body ./file.json --effective 2026-12-15 --idempotency-key AMS-10442
valjean status <submission-id>
valjean flags <submission-id>
valjean answer <submission-id> --set hours="11am-12am" --set capacity=120
valjean answer <submission-id> --message "Seats 120. Payroll is $640K; open 12 years."
valjean upload <submission-id> ./loss-runs.pdf
valjean 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.