Skip to main content

Reducto CLI

The Reducto document platform in your shell: parse, extract, split, classify and edit documents from the command line, in scripts, and inside agent workflows.

One static binary. No runtime. Every field of the Reducto API is reachable without waiting for a CLI release.

curl -fsSL https://reducto.ai/cli | sh
reducto login
reducto parse report.pdf

Table of Contents

Why Reducto

Reducto is the agentic document platform for leading AI teams who demand enterprise performance at scale. We provide a comprehensive toolkit for working with documents the way a human would, combining custom in-house and leading frontier models to power efficient and accurate document workflows.

The CLI brings that platform directly into your shell, scripts, and agent workflows.

Performance for you

Zero-shot accuracy on complex documents where other solutions aren't production-ready. Reducto orchestrates multiple models under the hood — routing, probes, and agentic VLM multipasses — and continuously updates them so you don't have to chase the frontier. Handles the long tail: tables, charts, figures, handwriting, scans.

Enterprise ready

Hosted, VPC, on-premises, and air-gapped deployments to meet any data residency or security requirement. SOC 2 and HIPAA compliant with zero data retention by default.

Complete toolkit

One platform for every document task — parse, classify, split, extract, edit. 30+ filetypes, not just PDFs. Agent-ready tooling (CLI, MCP, plugins, integrations).


Installation

Method Command
Shell (macOS, Linux) curl -fsSL https://reducto.ai/cli | sh
PowerShell (Windows) irm https://reducto.ai/cli.ps1 | iex
npm npm install -g @reductoai/cli
pip / pipx / uv pip install reducto-cli · pipx install reducto-cli · uv tool install reducto-cli
Go go install github.com/reductoai/cli/cmd/reducto@latest
Binaries GitHub Releases (darwin, linux, windows · amd64, arm64)

The npm and PyPI packages carry the same binary as the release; they do not download anything at install time. The shell installer writes to ~/.local/bin, the PowerShell installer to %LOCALAPPDATA%\Programs\reducto (set REDUCTO_INSTALL_DIR to change either); both verify the release checksum.

Check the install:

reducto version

Authentication

reducto login

This opens a browser for a device-code sign in and saves the key to ~/.reducto/config.yaml (mode 0600). Without a browser, pass the key in: reducto login --api-key <key> or echo $KEY | reducto login --api-key -.

The key is resolved in this order: --api-key, $REDUCTO_API_KEY, ~/.reducto/config.yaml.

Quick Start

# Parse a PDF into Markdown
reducto parse report.pdf

# Parse a folder, one output file per input
reducto parse ./invoices --out-dir parsed/

# Extract structured data with a JSON Schema
reducto extract invoice.pdf -s schema.json

# Or with a quick inline schema
reducto extract invoice.pdf -f vendor,total:number,due_date

# Edit a document with natural language
reducto edit w9.pdf -i "Name: Jane Doe. Check the Individual box." --save w9.filled.pdf

# Chain: parse once, reuse the job for extract
reducto parse contract.pdf -o id | reducto extract - -s terms.json

Commands

Command What it does
parse Document → markdown, chunks, tables, figures
extract Document → JSON that matches your schema
split Find sections or sub-documents by description
classify Assign one of your categories to each document
edit Fill forms and change text with instructions; returns a PDF
upload Upload a file and print its reducto:// handle
job, jobs, cancel Inspect, list, and cancel async jobs
studio Open a job in Reducto Studio
search, schema, docs Find and inspect API fields; open the docs
login, version Sign in; print CLI, SDK and API versions

reducto <command> --help lists the flags and examples for each command.

Common flags on every API command:

-o <fmt>        auto | pretty | md | json | payload | id
-p <pages>      page selection, e.g. 1-5,8
--save <path>   write the output to a file (edit: download the PDF)
--out-dir <dir> with many inputs, one file per input
--async         submit and print the job id; do not wait
-j <n>          parallel requests for many inputs (default 4)
--dry-run       print the request body and exit; no network call
-q / -v         quiet / verbose

Any API field

Named flags cover the common options. Everything else in the API is reachable too:

reducto search "merge tables"                 # find the field and its docs page
reducto schema parse formatting               # types and defaults for a section
reducto parse doc.pdf -S formatting.merge_tables=true -S retrieval.chunking.chunk_mode=section
reducto parse doc.pdf -c body.json            # a whole request body; flags layer on top
reducto parse doc.pdf --dry-run               # see exactly what would be sent

-S path=value takes a dotted path and a JSON value (bare words are strings). Before anything is uploaded, the body is checked against the CLI's copy of the API spec: unknown paths, values outside an enum and wrong primitive types are errors with a hint, so a typo never costs a request. Fields newer than the CLI's spec go through with --force.

Inputs and outputs

Inputs can be local files, directories (recursed, supported types only), https:// URLs, reducto:// upload handles, jobid:// handles from a previous command, or - for stdin.

Output goes to stdout. -o picks the shape: md for text, json for the full response, payload for just the result, id for a handle you can pipe into the next command. Status lines go to stderr, so reducto parse a.pdf > a.md is clean.

Supported File Types

PDF, images (PNG, JPG, TIFF, WEBP), Word (DOC, DOCX), PowerPoint (PPT, PPTX), Excel (XLS, XLSX, CSV), Apple Numbers, and more. See the docs for the full list.

Use Cases

Invoice and Receipt Processing

reducto parse ./invoices --out-dir parsed/
reducto extract ./invoices -s schemas/invoice.json --out-dir extracted/
reducto parse contract.pdf --agentic -S formatting.include='["change_tracking","comments"]'
reducto extract contract.pdf -s schemas/contract_terms.json --citations

Form Processing and Auto-Fill

reducto edit onboarding.pdf -i "Employee: Alex Chen. Start date: 2025-04-01. Select Full-time." --save onboarding.filled.pdf

Financial Statement Analysis

reducto extract quarterly_report.pdf -s schemas/financial_statement.json --deep

Feeding Agents and LLM Pipelines

reducto parse spec.pdf --chunk section > spec.md
reducto parse spec.pdf -o json | jq '.result.chunks[].content'

Configuration

Setting Source
API key --api-key, $REDUCTO_API_KEY, ~/.reducto/config.yaml
Base URL --base-url, $REDUCTO_BASE_URL (default https://platform.reducto.ai)
Color --color auto|always|never, $NO_COLOR
Telemetry headers DO_NOT_TRACK=1 or REDUCTO_TELEMETRY=0 turns off the X-Reducto-* request headers

The CLI only talks to the Reducto API (and to Reducto Studio during login). Nothing is sent anywhere else.

Upgrading from 0.1.x

Version 0.2.0 replaces the Python CLI with a single Go binary. The package names are the same (pip install reducto-cli), the config file is the same, and login, parse, extract and edit still exist. What changed:

  • Output goes to stdout instead of a <file>.parse.md next to the input. Use --save for one file or --out-dir for a folder.
  • parse --change-tracking/--highlights/--hyperlinks/--comments became -S formatting.include='["change_tracking",...]'.
  • edit writes the PDF where --save points instead of <file>.edited.pdf.
  • New: split, classify, upload, job, jobs, cancel, studio, search, schema, docs, and -S for any API field.

Development

make build          # bin/reducto
make test           # gofmt, vet, tests
make spec           # refresh the embedded OpenAPI document (cmd/reducto/openapi.json)
make packages       # snapshot release + npm packages + wheels, for local checks

Releases: push a vX.Y.Z tag. The Publish workflow builds the binaries with GoReleaser, creates the GitHub release, and publishes the PyPI wheels and npm packages from those same binaries. See CHANGELOG.md.

Project Description
Reducto Python SDK Python client for the Reducto API (pip install reductoai)
Reducto Node.js SDK Node.js client for the Reducto API (npm install reductoai)
Reducto Go SDK Go client for the Reducto API; the CLI is built on it
Reducto Claude Code Plugins Official Reducto plugins for Claude Code
Reducto Studio No-code web interface for document processing

Resources

Metadata

Release files for reducto-cli 0.2.0

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

Built distributions (wheels)

Table of built distributions (wheels) for reducto-cli 0.2.0
File
reducto_cli-0.2.0-py3-none-win_arm64.whl Python 3 none Windows ARM64 Details
reducto_cli-0.2.0-py3-none-win_amd64.whl Python 3 none Windows x86-64 Details
reducto_cli-0.2.0-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.musllinux_1_1_x86_64.whl Python 3 none Linux musl 1.1+ x86-64, Linux glibc 2.17+ x86-64 Details
reducto_cli-0.2.0-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.musllinux_1_1_aarch64.whl Python 3 none Linux glibc 2.17+ ARM64, Linux musl 1.1+ ARM64 Details
reducto_cli-0.2.0-py3-none-macosx_11_0_arm64.whl Python 3 none macOS 11.0+ ARM64 Details
reducto_cli-0.2.0-py3-none-macosx_10_12_x86_64.whl Python 3 none macOS 10.12+ x86-64 Details

Total release size: 16.1 MB

Release files / reducto_cli-0.2.0-py3-none-win_arm64.whl

Download URL reducto_cli-0.2.0-py3-none-win_arm64.whl
Size 2.6 MB
Tags Python 3 Windows ARM64
SHA-256 checksum
How to use checksums
0554368c95a1fedbf5483be8c6f7abe32183e191f04d43ed4c81f364fc713af0
BLAKE2b-256 checksum
How to use checksums
13ae7dbdc5ca1d3577be0bf917ab2d2aae83b32e710a0bdd2a13ca35497eebe9
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.13

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.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 11, 2026.

Transparency log

Release files / reducto_cli-0.2.0-py3-none-win_amd64.whl

Download URL reducto_cli-0.2.0-py3-none-win_amd64.whl
Size 2.8 MB
Tags Python 3 Windows x86-64
SHA-256 checksum
How to use checksums
dd80b516fa3ea74a872899fe024b197a05a42c7f32a38a3a0727a97831c85b8a
BLAKE2b-256 checksum
How to use checksums
48440bf1c7a0c928ffc5dc21079e80ef91838a60aa426816016630c68ecc88e4
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.13

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.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 11, 2026.

Transparency log

Release files / reducto_cli-0.2.0-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.musllinux_1_1_x86_64.whl

Download URL reducto_cli-0.2.0-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.musllinux_1_1_x86_64.whl
Size 2.8 MB
Tags Linux glibc 2.17+ x86-64 Linux musl 1.1+ x86-64 Python 3
SHA-256 checksum
How to use checksums
ea5e66910e3385c3573dee862b48e46d25bf5cb7bc15752c906b9e8e0810a712
BLAKE2b-256 checksum
How to use checksums
b4c73d632a56b94538326effed7ef4ecfc0cf714836559113f37274de9792a09
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.13

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.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 11, 2026.

Transparency log

Release files / reducto_cli-0.2.0-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.musllinux_1_1_aarch64.whl

Download URL reducto_cli-0.2.0-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.musllinux_1_1_aarch64.whl
Size 2.5 MB
Tags Linux glibc 2.17+ ARM64 Linux musl 1.1+ ARM64 Python 3
SHA-256 checksum
How to use checksums
10d34b016e916e3365e6d4dd61678f08b86d74b39ca12651d2854f7cd0b1ebc8
BLAKE2b-256 checksum
How to use checksums
d0efb039399e52c869cca49cd7efe7bdc79b9bb555d27dacd63b5ac78fbec388
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.13

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.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 11, 2026.

Transparency log

Release files / reducto_cli-0.2.0-py3-none-macosx_11_0_arm64.whl

Download URL reducto_cli-0.2.0-py3-none-macosx_11_0_arm64.whl
Size 2.6 MB
Tags Python 3 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
38c6e9d62fc1a3b2d1e847eb714e70155359e586579be7f61016964850ed6e39
BLAKE2b-256 checksum
How to use checksums
32f63466c403e8a101a46305effe087f18cb41b2dfee0dfafa45aa0e02c35667
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.13

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.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 11, 2026.

Transparency log

Release files / reducto_cli-0.2.0-py3-none-macosx_10_12_x86_64.whl

Download URL reducto_cli-0.2.0-py3-none-macosx_10_12_x86_64.whl
Size 2.8 MB
Tags Python 3 macOS 10.12+ x86-64
SHA-256 checksum
How to use checksums
87661d87b4a976532850b44c2c2b885765707b51912470102b3d6bdf005ef8dc
BLAKE2b-256 checksum
How to use checksums
2f25efa266960c844462f8868bfcd5b5de8d6075946b9751e207657d86c4e4f3
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.13

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.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 11, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.2.0 This release

6 release files

0.1.6

2 release files

0.1.5

2 release files

0.1.4

2 release files

0.1.3

2 release files

0.1.2

2 release files

0.1.1

2 release files

0.1.0

2 release files

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