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.
Screenshot
shot:https://stripe.comPoint at any allowlisted URL and we render the page in a real browser — the screenshot becomes a src that flows through the whole pipeline.
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.”
Screenshot a site. Keep its colors.
A screenshot is just a src. Point shot: at any URL and the rendered page flows through the whole pipeline — resize it, extract its palette with /info/colors, compose it, watermark it. One URL.
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.
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.
Resize and recompress.
Resize, crop, recompress at the edge. AVIF/WebP negotiation, smart gravity with face detection, blur and background removal. SVG in, raster out — rasterized automatically unless you pass raw=true to serve the original untouched. 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.
Upscale with AI at the edge.
Enlarge small or legacy images with AI (ESRGAN) instead of blurry bicubic — one query param, sharper detail. 5 cr per call.
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 · 5 cr per AI upscale
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 | |||||
| Live page screenshots (URL → image, composes with the pipeline) | |||||
| 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