Uploadcare CLI

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.

$ uploadcare file upload hero.jpg
UUID SIZE FILENAME STORED a1b2c3d4-e5f6-7890-abcd-ef1234567890 245891 hero.jpg true

$ uploadcare file info a1b2c3d4 --json uuid,size,mime_type
{"uuid":"a1b2c3d4-e5f6-7890-abcd-ef1234567890","size":245891,"mime_type":"image/jpeg"}

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 list
AI-agent ready

Purpose-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-stdin

Compose 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"
done

Preview 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-run

Structured 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 --help
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.