#
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_KEYor--api-keyFIREIMG_PROJECTor--project(required forupload,delete, andimages)FIREIMG_API_URL(optional, defaulthttps://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.