# FireImg CLI

Upload, delete, and list images — and create projects — 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 projects create --name NAME [--slug SLUG] [--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.

projects create creates a project for that team. --slug is optional and is derived from --name when omitted. Free-plan teams may have only one project; creating another fails and tells you to upgrade at app.fireimg.com/billing. Paid plans and teams with unlimited usage can create more.

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 and Go

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

# HTTP API

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