One image API. Metadata, palette, BlurHash, and transforms.
Stop wiring four image services together. One GET handles metadata, BlurHash, palette, and transforms — on any image you can reach by URL: R2, S3, or any HTTPS source. One call replaces the whole stack.
No card · 7-day trial · One-line bill
If your stack can load a URL, it works.
images processed this month
edge POPs serving you
median latency · 24h
uptime · 30-day rolling
countries served today
cache hits this month
Plays nicely with
Plug in storage. Keep your URLs.
Configure storage once. HTTP behaves like a reverse proxy; R2 stays on Cloudflare’s network; S3 works with anything S3-compatible. Swap providers later without touching a single URL.
HTTP
mycdn/photos/cat.jpgAny HTTPS prefix. Reverse-proxies your CDN — the ?src= key fetches from the URL you registered.
Cloudflare R2
r2/uploads/hero.pngYour bucket and credentials. Cloudflare-native — no egress fees, lowest-latency hop to the edge that serves your images.
AWS S3
s3/products/sku-42.jpgYour bucket, your region, your keys. Works with any S3-compatible storage — AWS, MinIO, Backblaze, Wasabi, DO Spaces.
key/path.png?w=800External URLs work too — through your allowlist.
Stop hot-linking. Stop bills from showing up because someone pointed your API at the open internet. Denied by default; you pick the hosts.
?src=https://example.com/cat.jpgall allowed by default“Give it a name. We pull the bytes. Switch providers later — your URLs don’t change.”
Your hostname. Your callers.
Brand the URL you ship in <img src>. Decide which sites can call it. Both set in the dashboard, enforced at the edge.
Serve images from your domain.
paid plans · TLS includedimgapis.com/r2/hero.png?w=800images.acme.com/r2/hero.png?w=800One CNAME to customers.imgapis.com. Certificates provisioned automatically. Available on any paid plan. Your URLs stay yours — nothing in them advertises a third party.
Decide which sites can call your URLs.
all plans · pattern allowlist*
example.com
*.example.com
https://app.example.comBrowsers from outside the allowlist get a 403 they can read. Server-to-server traffic with no Origin header passes through unconditionally — your backend keeps working.
“Your hostname on the outside. Your callers on the inside.”
One API surface. Nine moves.
Same source forms, same cache model, same JSON-error shape across all nine. Use what you need — query params, no SDK.
Real colors, ranked.
Up to 256 dominant colors per image — each with area %, intensity, and four ready-to-use color pairs. Six-slot Vibrant palette in the same response.
Color pairs, ready to ship.
Bold, muted, pastel and vivid bg/fg pairs for every dominant color — WCAG contrast already computed. Drop into a button or card without a second contrast pass.
Resize and recompress.
Resize, crop, recompress at the edge. AVIF/WebP negotiation, smart gravity with face detection, blur and background removal. 1-year immutable cache.
Remove backgrounds at the edge.
One flag, transparent PNG out. Alpha-channel preserved for compositing on any background. Pair with /grid or marks for ready-to-ship hero assets.
Placeholders shaped like the image.
Encode any image to a 28-character BlurHash. Decode to PNG with adjustable contrast (punch). Zero-dependency client library available for server-side encoding.
2–5 sources. One image out.
Compose 2 to 5 images into a single output. Auto, classic, column or row layouts. Configurable gap. Combine with the mark engine for branded compositions.
Marks the URL can’t strip.
Percentage-based sizing, anchor alignment, x/y/both tiling, opacity and fit modes. Bind a mark to a source and every transform from it ships branded — callers cannot strip it. Same overlay engine on /transform and /grid.
Color placeholders, edge-rendered.
Drop in a solid-color tile sized exactly to your slot. Same dominant color the palette returns, served as a tiny PNG that fills any width × height — perfect for above-the-fold placeholders before the real image lands.
Lighter bytes, same pixels.
Accept-header negotiation auto-serves AVIF or WebP — or pin a format and dial quality 1–100. Same URL, smaller payload, identical CDN cache key.
Every workspace, one live console.
Live usage by endpoint and origin. Origins, sources and marks pinned per workspace. Every endpoint documented next to a URL you can copy straight into your codebase. No CLI, no separate billing portal, no docs site to jump into.

Try it. Without an account.
Paste a public image URL. Pick a tab. Watch the actual response, the rendered output, and the URL or snippet you'd ship — side by side.
Free public demos · No credits charged · Rate-limited per IP
Open in dashboardOne meter. One bill.
Bandwidth ships with the credits. Cache hits, repeats, and errors don’t draw. Out of credits returns a 402 — not a surprise invoice — and you decide whether to scale.
- Bandwidth bundled flat — Cloudflare’s 300+ POPs, no per-GB meter
- Same URL never billed twice within a month — cache hits and errors cost zero
- Unlimited workspaces (each on its own tier + subscription)
- Unlimited users per workspace
- Unlimited custom domains (SSL provisioning handled)
- Unlimited image sources (HTTP / R2 / S3)
- Origin control (CORS allowlist)
- Source control (URL allowlist)
- Mark presets with auto-apply per source
- Real-time usage dashboard
- 0.5 cr per /info or /placeholder
- 1 cr per /transform · 2 cr per /grid image · 5 cr per bg-remove
Pick the bundle. Not the brand.
Look at the billing shape, the bundle, the bandwidth model. Adjectives don’t show up on the invoice.
| // feature | oursimg apis | Cloudinary | imgix | Bunny | ImageKit |
|---|---|---|---|---|---|
| Mid-tier billing model | flat plan, bandwidth bundled | credit pool | credit pool | flat add-on per pull zone | bandwidth + storage bundle |
| Transforms at mid-tier | flat credit allowance | credits shared with bandwidth + storage | credits shared with bandwidth + storage | unlimited optimization, bandwidth on top | bandwidth-coupled |
| Palette + BlurHash + metadata in one /info call | |||||
| Color pairs with WCAG contrast | |||||
| Smart gravity (face + entropy) | |||||
| Background removal | |||||
| BlurHash decode endpoint (renders to PNG/JPEG) | |||||
| 1-year immutable transform cache | |||||
| Edge POPs serving you | 300+ | 60+ | 100+ | 100+ | 200+ |
| Free trial | 200 cr / 7d | 25 cr / mo | 30d capped | 14d capped | free tier |
| Bill is one line (no shared pool with bandwidth & storage) | |||||
| Same URL never billed twice | |||||
| Custom domain on cheapest plan |
*Bunny's Image Optimizer is an add-on per pull zone; CDN bandwidth meters on top. We bundle bandwidth into the plan — no delivery meter, no per-GB overage.
Vendor billing models sourced from each vendor’s public pricing page. Spotted something off? tell us →
Questions you'd ask before signing up.
If you have a different question, email hello@imgapis.com. We answer everything within a business day.
200 free credits.No card. No catch.
No tokens to manage, no migrations to run. Make your first API call before the kettle boils.
7-day trial · No card · No auto-charge · One-line bill