Production Board
Command line (CLI)
A native command-line client for Production Board. One install line.
The Production Board CLI is auto-generated from the same models the HTTP API exposes - every endpoint you can hit with curl is also a subcommand here. The script is one self-contained Python file (no pip install), checks for updates once a day, and authenticates with the same Bearer tokens the rest of the API accepts.
Install
One line, one file. The script lands under your home directory - no pip install, no system-wide changes. Pick your OS in the tabs below.
curl -fsSL https://qtssystem.com/xapi2/cli/install.sh | bash
1.2.7·Command: prodcli·checksum: 6f85840b86…Sign in
Every command except login / version / update requires a valid token. Two ways in: a personal access token (PAT) from the Integrations menu (recommended for scripts + CI), or interactive email + password (saved as a session token under ~/.prodcli/credentials.json, mode 0600).
prodcli login --token pat_…
Commands
Each data model is a subgroup. Click a model name to jump to its detail page; the available ops mirror the HTTP API one-to-one.
| Model | Commands |
|---|---|
| board | prodcli board listprodcli board getprodcli board createprodcli board updateprodcli board deleteprodcli board upsert |
| card | prodcli card listprodcli card getprodcli card createprodcli card updateprodcli card deleteprodcli card upsert |
--filter name=Foo (repeatable), --all (auto-paginate), --fields id,name (project response), --cache N (local cache, N s), --file p.json / --csv p.csv / --stdin (bulk input; arrays + CSV rows), --continue-on-error (don't stop on bulk failure; exit 1 if any failed), --dry-run (preview the request), --idempotency-key K / --auto-idempotency (safe retries), --retry N + --backoff exp (auto-retry 429/5xx), --format json|ndjson|table (output shape), --stderr-json (machine-readable errors), --profile NAME (switch credentials).Use with an AI assistant
Models like Claude, ChatGPT, or Gemini will write scripts that drive this CLI for you - they only need the context below. Copy the block into your chat, then describe what you want to do.
Help me write scripts using `prodcli`, the CLI for the Production Board app.Install:macOS/Linux: curl -fsSL https://qtssystem.com/xapi2/cli/install.sh | bashWindows PS: irm https://qtssystem.com/xapi2/cli/install.ps1 | iexSign in (required before any data command):prodcli login --token pat_… # personal access tokenprodcli login # interactive (token or email + password)Commands per model:prodcli board { list | get | create | update | delete | upsert }fields: --name --description --accent --settings --tags --columnsprodcli card { list | get | create | update | delete | upsert }fields: --title --description --status --position --priority --tags --assignee --due-date --board-idOutput + flags:- stdout is JSON (one object, or {data:[...], meta:{...}} on list).- errors go to stderr; non-zero exit (3=auth, 5=not found, 6=validation, 7=conflict, 8=rate-limited).- --filter name=Foo (friendly key, repeatable) on `list`.- --all auto-paginates; --fields id,name projects; --cache N caches list/get for N s.- writes accept --json '{...}', --file path.json (arrays = bulk), --stdin, or --csv path [--map k=COL,…].- upsert needs --unique <field>; --dry-run previews any write.- --retry N --backoff exp survives 429/5xx; --stderr-json gives machine-readable errors.Field schemas + constraints per model: https://qtssystem.com/docs/types/<model>Full CLI reference: https://qtssystem.com/docs/cliTask: <describe what you want to do>
Examples
prodcli login --token pat_…prodcli whoami
Recipes
End-to-end snippets for the workflows people actually run. Pick a tab.
# items.csv has columns: name,Full Name,status# --map renames CSV headers to API field names; missing cells skipped.prodcli board create \--csv items.csv \--map name=Full Name \--continue-on-error \--retry 3 --backoff exp
Environment variables
| Variable | Purpose |
|---|---|
| XCLI_NO_AUTOUPDATE | Skip the once-per-day version check + self-replace. |
| XCLI_NO_TELEMETRY | Skip the anonymous CLI usage analytics. |
| XCLI_BASE_URL | Override the baked-in server URL (testing only). |
| XCLI_TOKEN | Use this PAT for the current invocation without saving it. |
Telemetry + auto-update
The CLI sends one anonymous analytics event per command (command name, version, OS - no request bodies, no field values) so the team running this app can see how it's used in the same dashboard as the web UI. The data is processed securely; an audit log of every event tied to you can be requested at any time from the company operating the app. We strongly encourage leaving telemetry on - it's how reliability issues surface and how the team prioritises improvements that affect you. It can be turned off with XCLI_NO_TELEMETRY=1. Separately, the CLI checks for a newer version at most once every 24 hours and updates itself in place; XCLI_NO_AUTOUPDATE=1 disables that.