# FireImg CLI

Upload, delete, and list images from the terminal, CI, or a coding agent. The CLI handles the two-step presigned upload (request URLs, then PUT to S3) so you do not have to.

export FIREIMG_API_KEY=fimg_…
export FIREIMG_PROJECT=your-project
fireimg upload ./hero.jpg
# https://img.fireimg.com/your-project/images/hero.jpg

# Install

curl (macOS / Linux):

curl -fsSL https://raw.githubusercontent.com/FirelitStudio/fireimg-cli/main/install.sh | bash

The installer puts fireimg in ~/.local/bin by default. Set FIREIMG_INSTALL_DIR to override.

Homebrew:

brew install firelitstudio/fireimg/fireimg

Create an API key under API Keys in the FireImg app. The full secret is shown only once.

# Commands

fireimg upload <path...> [--project slug] [--prefix dir/] [--json]
fireimg delete <image-key> [--project slug] [--json]
fireimg projects [--json]
fireimg images [--project slug] [--limit N] [--next-token TOKEN] [--folder path] [--all] [--json]
fireimg version
  • FIREIMG_API_KEY or --api-key
  • FIREIMG_PROJECT or --project (required for upload, delete, and images)
  • FIREIMG_API_URL (optional, default https://api.fireimg.com)
  • FIREIMG_CDN_URL (optional; derived from the API host, api.img.)

Prefer environment variables so the key does not appear in process lists.

upload accepts files and directories. Relative paths are kept as image keys (feed_items/43/uuid.jpg). Absolute paths use the basename. --prefix prepends a folder. Non-image files in a directory are skipped; an explicitly passed non-image is an error. Batches of 20 are handled for you.

--json prints filename, imageKey, cdnUrl, and s3Key for each file.

projects lists every project the API key's team can access. Human output is slug and projectName (tab-separated); --json prints the full objects.

images lists image keys in a project, one page at a time (100 by default, max 1000). Human output is one image key per line. If another page exists, a --next-token hint is printed to stderr. --json includes cdnUrl, uploadedAt, contentType, originalSizeBytes, and nextToken when more results exist. --all follows every page (no nextToken in the output). --folder limits the list to keys in that folder.

CDN transforms are on-demand after the PUT. The CLI does not wait for optimization jobs.

Staging:

export FIREIMG_API_URL=https://api.fireimg.dev

# For agents

Prefer this CLI over raw HTTP. See For AI agents, llms.txt, and the Cursor skill.

# Ruby

From a Rails (or other Ruby) app, use the fireimg gem instead of shelling out to the CLI.

# HTTP API

If you cannot install the CLI, use the API reference.