@swiftimg/cli
v0.1.0
Published
CLI and zero-dependency client for swiftimg — fast image & GIF hosting and an image CDN/API on Cloudflare.
Downloads
27
Maintainers
Readme
@swiftimg/cli
The command-line tool and zero-dependency JavaScript client for swiftimg — fast image & GIF hosting and an image CDN/API on Cloudflare.
- Zero dependencies. Pure ESM, uses the built-in
fetch. Node ≥ 18. - Upload from your terminal, scripts, or CI; or call the API programmatically.
Install
npm install -g @swiftimg/cli # global `swiftimg` command
# or run without installing:
npx @swiftimg/cli upload shot.pngCLI
# Save your API key (create one at https://swiftimg.com/account)
swiftimg login sk_live_xxx
# Upload — prints the direct link, ready to paste
swiftimg upload screenshot.png
# → https://i.swiftimg.com/originals/9fK2.png
swiftimg upload cat.gif --title "my cat" --tags funny,cat --json
swiftimg upload shot.png --page # print the share-page URL instead
swiftimg get 9fK2 # metadata, tags & variants (JSON)
swiftimg list # your uploads (needs a key)
swiftimg search sunset
swiftimg trending
swiftimg delete 9fK2Configuration is read in this order: command flags (--key, --api), then the
SWIFTIMG_KEY / SWIFTIMG_API environment variables, then the saved login at
~/.config/swiftimg/config.json.
A handy shell alias
# upload the most recent screenshot and copy the link (macOS)
shot() { swiftimg upload "$(ls -t ~/Desktop/Screenshot* | head -1)" | pbcopy; }Programmatic use
import { createClient } from "@swiftimg/cli";
import { readFile } from "node:fs/promises";
const swift = createClient({ apiKey: process.env.SWIFTIMG_KEY });
const data = await readFile("photo.jpg");
const res = await swift.upload(
{ data, filename: "photo.jpg" },
{ title: "Sunset", tags: ["travel", "sunset"] }
);
console.log(res.directUrl, res.pageUrl);
// In the browser you can pass a File/Blob directly:
// await swift.upload(fileInput.files[0], { title: "Avatar" });API
createClient({ apiKey?, baseUrl?, fetch? }) returns a client with:
| Method | Description |
| --- | --- |
| upload(input, meta?) | Upload a Blob/File or { data, filename, type } |
| get(id) | Metadata, tags & variants |
| mine() | Your uploads (requires apiKey) |
| search(query) | Full-text search public images |
| trending() / recent() | Discovery feeds |
| delete(id, deleteToken?) | Delete by API key or delete token |
Errors throw SwiftimgError with .status and .code.
License
MIT
