Skip to main content

wflow CLI

The wflow.com public API from the command line. Every API operation is one command, every command prints JSON (except a download to --output -, which writes the file's raw bytes to stdout), and wflow <command> --help documents what it sends and returns.

Install

pipx install wflow-cli        # or: uv tool install wflow-cli   or: pip install wflow-cli
wflow --version

Python 3.12 or newer. pipx and uv tool keep the CLI in its own environment.

Set up an API client

The CLI signs in as an API client with the client_credentials grant — a machine identity, not a person.

  1. Create an API client with the client_credentials grant in admin.wflow.com.
  2. Allow the client in each workspace it should reach: in the workspace, Settings → Integrations → API accesses.
  3. Give the CLI the credentials:
export WFLOW_CLIENT_ID="your-full-client-id"
export WFLOW_CLIENT_SECRET="your-client-secret"
export WFLOW_ORGANIZATION="your-workspace"   # optional: the default for --organization/-o
Variable Meaning
WFLOW_CLIENT_ID, WFLOW_CLIENT_SECRET required
WFLOW_ENV prod (default) or test
WFLOW_ORGANIZATION default workspace slug for -o
WFLOW_API_BASE, WFLOW_ACCOUNT_BASE override the API and identity hosts

Credentials are read from the environment only; no option takes a secret.

Use it

wflow --help                                              # every command, grouped by area
wflow get-organization -o acme
wflow list-register-partners -o acme --page-size 50 --query 'name = "Acme s.r.o."'
wflow list-documents -o acme --sort "created desc"

A list command that takes --page and --page-size returns one page: {items, totalItems, pageSize, page}. Compare totalItems with what you have before assuming you have everything.

Writing

Options that take a record or a list of records take JSON — inline, from a file with @, or from stdin with - (one option per command can read stdin):

wflow patch-register-partners -o acme --partners @partners.json
cat partners.json | wflow patch-register-partners -o acme --partners -

update-register-* replaces the whole register: every record you leave out is retired. patch-register-* leaves the records you do not send alone. Both replace each record you send as a whole, so send the full record. wflow keeps no version history — read wflow <command> --help before writing.

Files

wflow upload-document-file -o acme --document-id <id> --file ./invoice.pdf
wflow download-document-file -o acme --file-id <id> --output ./invoice.pdf
wflow download-document-file -o acme --file-id <id> --output - > invoice.pdf

An upload is stored under the file's own name unless you pass --filename. A download never overwrites an existing file unless you pass --force.

Exit codes

Code Meaning
0 success; the result is on stdout as JSON, or the file's raw bytes for a download with --output -
1 wflow refused or failed the call, or the input was refused before anything was sent; one line on stderr says why
2 the command line or the environment is wrong; stderr has a usage message or says what to set

For AI agents

Every command prints its result as JSON on stdout and the reason for a failure on stderr, so an agent can run wflow from a shell, check the exit code and parse the result. The one exception is a download with --output -, which writes the file's raw bytes to stdout instead. wflow <command> --help is the documentation for that command.

Python

The commands are generated from the wflow-api package, which you can use directly.

Metadata

Release files for wflow-cli 0.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for wflow-cli 0.1.0
File Size Uploaded Provenance Actions
wflow_cli-0.1.0.tar.gz 11.0 kB Without provenance Details for wflow_cli-0.1.0.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for wflow-cli 0.1.0
File Interpreter ABI Platform Actions
wflow_cli-0.1.0-py3-none-any.whl Python 3 none any Details for wflow_cli-0.1.0-py3-none-any.whl

Total release size: 24.4 kB

Release files / wflow_cli-0.1.0.tar.gz

Download URL wflow_cli-0.1.0.tar.gz
Size 11.0 kB
Tags Source
SHA-256 checksum
How to use checksums
d64e1d7f719ad027d87c69b36b634ea00fdaf039ada103e0665a1ffd8ad0d5e6
BLAKE2b-256 checksum
How to use checksums
3f1febf42f7a024553c9aa9a952fcd29e865ad460e64e6938f55e6a1292dfcae
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.10.6 {"installer":{"name":"uv","version":"0.10.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"26.04","id":"resolute","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / wflow_cli-0.1.0-py3-none-any.whl

Download URL wflow_cli-0.1.0-py3-none-any.whl
Size 13.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
902f5fa4ff93ce29a4bf717bbf45f5ad287047edfb3a05acda1372fe76c3cedc
BLAKE2b-256 checksum
How to use checksums
4fc7aea4b829aaf68f1f45aa9aa4f253258c857cb930aceb13c0d91f39dae610
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.10.6 {"installer":{"name":"uv","version":"0.10.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"26.04","id":"resolute","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Security for wflow-cli 0.1.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 release files No provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page