Automate File Workflows from the Terminal
Uploadcare CLI is a lightweight, dependency-free binary for managing files, transformations, and webhooks from your terminal. Built for developers, CI/CD pipelines, and AI coding agents – install in one command on Linux, macOS, and Windows.
Get started in seconds
Install with a single command. No dependencies. Runs as a lightweight binary on Linux, macOS, and Windows.
Ideal for local use, CI/CD, and automation.
# Install
curl -fsSL https://raw.githubusercontent.com/uploadcare/uploadcare-cli/main/scripts/install.sh | sh
# Set your credentials
export UPLOADCARE_PUBLIC_KEY="your-public-key"
export UPLOADCARE_SECRET_KEY="your-secret-key"
# You're ready
uploadcare file listPurpose-built for AI agents and developers
Designed to be reliably invoked by Claude Code, Cursor, Copilot, and any LLM-driven workflow. No hacks, prompts, or brittle parsing required.
Machine-readable schema
One command exposes the full CLI surface. Commands, flags, arguments, examples, and JSON fields are all available so agents can learn and operate without trial and error.
Structured output with field filtering
Use --json to return clean, machine-readable output. Select only the fields you need to reduce payloads from about 2KB to about 50 bytes per file.
Composable piping for agent workflows
Commands accept --from-stdin for batch operations. Input is auto-detected as plain text or NDJSON — no format negotiation needed.
# Discover all commands (no auth needed)
uploadcare api-schema | jq '.commands[].path'
# Get only the fields you need (~50 bytes vs ~2KB)
uploadcare file info <uuid> --json uuid,size
# Pipe structured output between commands
uploadcare file list --json uuid \
| uploadcare file store --from-stdinCompose powerful Uploadcare workflows from the CLI
Chain commands together to automate complex operations without writing or maintaining scripts.
Batch operations in one line
List, filter, and act on thousands of files using simple pipelines instead of paginated API scripts.
# Delete all unstored files
uploadcare file list --page-all --stored false --json uuid \
| uploadcare file delete --from-stdin
# Upload all images from a directory
for f in ./images/*.jpg; do
uploadcare file upload "$f"
donePreview before you commit
Use dry-run mode to validate changes before execution. This is especially useful for destructive or large-scale operations.
# See what would be deleted without actually deleting
uploadcare file list --page-all --stored false --json uuid \
| uploadcare file delete --from-stdin --dry-run
# Preview a conversion job
uploadcare convert document <uuid> \
--target-format pdf --dry-runStructured output by default
Every command returns predictable JSON or NDJSON. This makes it easy to integrate with CI/CD pipelines, scripts, or agent workflows.
# Get only UUIDs and filenames
uploadcare file list --json uuid,filename
# Full JSON output
uploadcare file info <uuid> --json all
# Apply jq expressions directly
uploadcare file list --jq '.[].uuid'A command for every Uploadcare operation
From file uploads to video conversion, manage your entire Uploadcare setup from the terminal.
uploadcare ├── file │ ├── list List files in project │ ├── info Get file details │ ├── upload Upload local file(s) │ ├── upload-from-url Upload file from URL │ ├── store Store file(s) │ ├── delete Delete file(s) │ ├── local-copy Copy within Uploadcare │ └── remote-copy Copy to remote storage ├── metadata │ ├── list List all metadata keys │ ├── get Get a metadata value │ ├── set Set a key-value pair │ └── delete Delete a metadata key ├── group │ ├── list List file groups │ ├── info Get group details │ ├── create Create a file group │ └── delete Delete a file group ├── project │ ├── info Get project details │ ├── list List all projects │ ├── create Create a new project │ ├── update Update project settings │ ├── delete Delete a project │ ├── use Switch active project │ ├── secret │ │ ├── list List API secrets │ │ ├── create Create a new API secret │ │ └── delete Delete an API secret │ └── usage Get usage metrics ├── convert │ ├── document Convert a document │ └── video Convert a video ├── addon │ ├── execute Execute an add-on on a file │ └── status Check add-on execution status ├── webhook │ ├── list List webhooks │ ├── create Create a webhook │ ├── update Update a webhook │ └── delete Delete a webhook ├── url-api URL API reference ├── api-schema Machine-readable schema ├── version Print CLI version └── completion Shell completions
- fileUpload, list, copy, store, and delete files.
- metadataRead and write custom key-value metadata on any file.
- groupOrganize files into logical groups.
- projectCreate, list, and manage projects, secrets, and usage.
- convertConvert documents and videos with full format control.
- webhookManage event webhooks for your project.
Built for real-world automation
Uploadcare CLI is designed to drop into any production stack without friction. Every detail – from output format to authentication – is built with automation in mind, not bolted on after the fact.
- Reliable output – with JSON and NDJSON output formats every command integrates cleanly with scripts, pipelines, and agents
- Performance-aware – field filtering cuts response payloads from ~2 KB to ~50 bytes per file, reducing cost and processing overhead
- Safe – dry-run mode lets you validate destructive or large-scale operations before anything executes
- Multi-project ready – switch between Uploadcare projects using named configuration profiles, no manual credential swapping
- Zero dependencies – ships as a single cross-platform binary on Linux, macOS, and Windows
- CI/CD native – fully non-interactive with deterministic exit codes, so it behaves predictably in any pipeline
Get started with Uploadcare CLI today
Automate your Uploadcare workflows in minutes instead of hours of scripting.