Pricing
img402 is an image hosting API with three tiers. No accounts, no API keys, no billing dashboard.
| Free | 1 year | Permanent* | |
|---|---|---|---|
| Price | $0 | $0.01 USDC | $1.00 USDC |
| Endpoint | /api/free | /api/upload/token | /api/upload/token/permanent |
| Max file size | 1 MB | 5 MB | 5 MB |
| Retention | 7 days | 1 year | Permanent |
| Auth | None | x402 payment | x402 payment |
| Formats | PNG, JPEG, GIF, WebP | ||
| CDN | Cloudflare (global edge caching) | ||
* Permanent images are retained for the life of the service. If we ever shut down, we will give at least 90 days notice on this site before taking images offline. See the Terms of Service for details.
Why pay?
The free tier is good for trying things out. Paid tiers are for anything you want to keep:
- 5x file size — 5 MB vs 1 MB. Room for full screenshots, diagrams, and high-res images.
- 52x retention at $0.01 — 1 year vs 7 days. Links stay alive in PRs, docs, and READMEs.
- Permanent at $1 — for images that need to outlive their PR: blog posts, public docs, anything you want to link to indefinitely.
- Idempotent — Same payment always returns the same result. Safe to retry on network errors.
At $0.01 per upload, 10 screenshots in a PR costs $0.10. A blog post's hero image hosted forever is $1.
How payment works
img402 uses x402, an open protocol for HTTP-native payments. There are no accounts to create and no API keys to manage. Payment is authentication.
- Request a token from
POST /api/upload/token(or/api/upload/token/permanentfor the $1 tier) — the server responds 402 with payment instructions - Your client pays USDC on Base and retries — the server returns a single-use upload token
- Upload your image to
POST /api/uploadwith the token in theX-Upload-Tokenheader
x402-compatible clients (like the Payments MCP tool) handle steps 1-2 automatically. From your perspective, it's one HTTP call for the token, then a curl to upload the file.
# Step 1: Pay for a token (x402 handles payment)
POST /api/upload/token # $0.01 / 1 year
POST /api/upload/token/permanent # $1 / permanent
# → {"token": "a1b2c3...", "expiresAt": "..."}
# Step 2: Upload with the token
curl -X POST https://img402.dev/api/upload \
-H "X-Upload-Token: a1b2c3..." \
-F [email protected]
# → {"url": "https://i.img402.dev/abc123.png"}Try it now
No wallet needed. Upload an image right now:
curl -F [email protected] https://img402.dev/api/freeSee the API docs for full endpoint reference, error codes, and integration examples.