Skip to content
Pile
Esc
↑↓navigate↵open⌘Jpreview
On this page

CLI

The pile CLI — typed commands for every API operation, plus `request` for anything not generated.

CLI

@vortex-api/pile ships the pile binary — generated commands for every OpenAPI operation plus auth/config helpers.

Setup

pnpm add -g @vortex-api/pile   # or run via pnpm dlx

pile config set --base-url https://<host>
pile config set --api-key <workspace-key>

Or use env vars — they override stored config:

export PILE_BASE_URL=https://<host>
export PILE_API_KEY=<workspace-key>

Config lives in ~/.pile/config.json.

Everyday commands

pile issues list --workspace org_...
pile issues create --workspace org_... --title "Fix login redirect" --team VTX
pile issues update ISS-12 --status in_progress
pile documents create --workspace org_... --title "Q4 plan" --content-format markdown --project <project-id>
pile support tickets list --workspace org_...

pile request — the escape hatch

Any route the generated commands don’t cover:

pile request GET "/workspaces/org_.../activity?limit=20"
pile request POST "/workspaces/org_.../documents" -d '{"title":"note","content":"..."}'
pile request PATCH "/workspaces/org_.../issues/<uuid>" -d '{"status":"in_progress"}'

Body flags: -d, --data, --body, --body-json — all take a JSON string. Content-Type: application/json is set automatically when a body is present. Extra positional arguments are rejected — a typo fails loudly instead of sending a bodiless request.

Scripting

  • Output is pretty-printed JSON on success; non-2xx prints the error body and exits 1.
  • Pipe to jq for fields: pile issues list --workspace org_... | jq '.issues[].identifier'

Was this page helpful?