// IMAGE API · ONE URL

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

Resize01 / 08
/unsplash/photo-1493612276216-ee3925520721?w=400
Fetching live data
1 request · 47 ms
4 tools → 1 URLCache hits & repeats: $0Bring your R2, S3, or HTTPSAuto AVIF → WebP → original
// JUST A URL

If your stack can load a URL, it works.

2.4M

images processed this month

300+

edge POPs serving you

47 ms

median latency · 24h

99.98%

uptime · 30-day rolling

12

countries served today

94.2%

cache hits this month

Plays nicely with

GitHubVercelCloudflareStripeLinearViteBunAstroNext.jsRemixSupabasePlanetScaleGitHubVercelCloudflareStripeLinearViteBunAstroNext.jsRemixSupabasePlanetScale
// YOUR BYTES, YOUR BUCKET

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.

public · prefix
HTTP SOURCE

HTTP

mycdn/photos/cat.jpg

Any HTTPS prefix. Reverse-proxies your CDN — the ?src= key fetches from the URL you registered.

access key + secret
CLOUDFLARE R2

Cloudflare R2

r2/uploads/hero.png

Your bucket and credentials. Cloudflare-native — no egress fees, lowest-latency hop to the edge that serves your images.

access key + secret
AWS S3 (S3-COMPATIBLE)

AWS S3

s3/products/sku-42.jpg

Your bucket, your region, your keys. Works with any S3-compatible storage — AWS, MinIO, Backblaze, Wasabi, DO Spaces.

key/path.png?w=800
one signature
many sources in · one URL out
// AD-HOC URLs

External 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.”

// DELIVERY SURFACE

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.

// YOUR HOSTNAME

Serve images from your domain.

paid plans · TLS included
imgapis.com/r2/hero.png?w=800images.acme.com/r2/hero.png?w=800

One CNAME to customers.imgapis.com. Certificates provisioned automatically. Available on any paid plan. Your URLs stay yours — nothing in them advertises a third party.

// CORS GATE

Decide which sites can call your URLs.

all plans · pattern allowlist
* example.com *.example.com https://app.example.com

Browsers 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.”

// THE TOOLKIT

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.

/info
Fetching live data

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.

/info/colors?pairs
Fetching live data

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.

/transform
Fetching live data

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.

/transform?bg-remove=…
Original portraitsource
Background removedbg-remove=true
one flag · transparent PNG · alpha preserved

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.

/info/blurhash
Fetching live data

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.

/grid
Source 1a.jpg
Source 2b.jpg
Source 3c.jpg
Source 4d.jpg
Composed grid

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.

/transform?mark=…
Originalwithout mark
With mark appliedauto-applied
source: paid-customers · can't strip via URL

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.

/placeholder/color
Fetching live data

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.

/transform?format=…
Fetching live data

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.

// CONSOLE

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.

dash.imgapis.com/usage
img apis console — usage analytics dashboard with per-endpoint and per-origin breakdown
// NO SIGNUP, NO KEYS

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 dashboard
// PRICING

One 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.

Start free·200 credits · 7 days · no card required
// subscription quote1 month term
Hobby
$9/ mo
Choose
6,000 credits / moSide projects. AI included.Community support
Starter
$19/ mo
Choose
15,000 credits / moFirst product, first users.Email support
Most popular
Pro
$79/ mo
Choose
70,000 credits / moProduction at growth.Priority support · next-business-day
Scale
$249/ mo
Choose
245,000 credits / moTraffic that hurts elsewhere.Dedicated support · same-day response
// every plan includes
  • 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
// VERSUS

Pick the bundle. Not the brand.

Look at the billing shape, the bundle, the bandwidth model. Adjectives don’t show up on the invoice.

// comparison matrix5 vendors
// feature
oursimg apis
Cloudinary
imgix
Bunny
ImageKit
Mid-tier billing modelflat plan, bandwidth bundledcredit poolcredit poolflat add-on per pull zonebandwidth + storage bundle
Transforms at mid-tierflat credit allowancecredits shared with bandwidth + storagecredits shared with bandwidth + storageunlimited optimization, bandwidth on topbandwidth-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 you300+60+100+100+200+
Free trial200 cr / 7d25 cr / mo30d capped14d cappedfree tier
Bill is one line (no shared pool with bandwidth & storage)
Same URL never billed twice
Custom domain on cheapest plan
// fine print

*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 →

// COMMONLY ASKED

Questions you'd ask before signing up.

If you have a different question, email hello@imgapis.com. We answer everything within a business day.

No API keys, no auth headers. Each workspace gets a unique namespace baked into the URL — drop it into an <img src> or a fetch() and you’re authenticated. Browser-side traffic is gated by a per-workspace CORS allowlist; server-to-server calls with no Origin header pass through unconditionally.

Nowhere on our side. You configure a named source once — an HTTP URL prefix, your Cloudflare R2 bucket, or your S3 bucket — and we fetch live, transform at the edge, and discard the original. Only the transformed output is cached. Switch storage providers later without touching a URL.

Yes — bandwidth is in the plan. No separate GB meter, no per-byte overage. Your namespace serves from Cloudflare’s 300+ POPs, and only the first unique transform of the month draws against your quota — cache hits, repeat URLs and errors cost zero credits. ImageKit and Cloudinary bill every delivered byte, cache hit included; we don’t.

// 60 SECONDS TO YOUR FIRST IMAGE

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