A specialized layer, not a platform. No upload step, no SDK, no add-ons.
Cloudinary is the heavyweight of media — DAM, video, AI tags, every SDK and integration on the map. img apis is a specialized layer underneath: paste a source from your bucket, get a transform, a /info bundle with palette + BlurHash + metadata, /grid composition for 2–5 sources, an account-level default mark that auto-applies across every endpoint on Pro+ — and background removal at a disclosed credit cost. No upload pipeline, no SDK, no separate AI add-on invoice.
You like Cloudinary but you keep paying for DAM features you do not use, an SDK per runtime, and AI add-ons that arrive as separate invoice lines. You want intelligence (BlurHash, palette, metadata) in one call, composition without templates, brand marks that travel with every asset, and one predictable monthly invoice.
Pick img apis when no upload step and one predictable bill matter.
- You want to point at an existing R2 or S3 bucket — no upload pipeline, no Cloudinary public-ID indirection.
- You need palette + BlurHash + metadata in a single /info call, with WCAG-paired contrast on every swatch.
- First-class /grid composition for 2–5 sources, plus /placeholder endpoints that render BlurHash or color tiles to real PNG.
- Account-level default mark (Pro+) auto-applies across every endpoint — set the brand once, every URL ships marked.
- Background removal at a disclosed credit cost, idempotent credits (same URL never billed twice), and one predictable monthly invoice.
Pick Cloudinary when you want a media platform.
- You need a full DAM — tags, folders, approvals, AI-assisted moderation.
- Video transformations, adaptive streaming and analytics are first-class for your roadmap.
- You want established procurement, certifications and an enterprise sales contact.
- A first-party SDK per runtime and an admin UI for non-engineers are non-negotiable.
- AI tagging / AI editing as bundled features matter more than BlurHash and palette.
img apis vs Cloudinary
Compared on billing shape and feature coverage — line by line, claim by claim.
| // feature | oursimg apis | Cloudinary |
|---|---|---|
| Mid-tier billing model | flat plan, bandwidth bundled | credit pool |
| Transforms at mid-tier | flat credit allowance | credits shared with bandwidth + storage |
| 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+ |
| Free trial | 200 cr / 7d | 25 cr / mo |
| Bill is one line (no shared pool with bandwidth & storage) | ||
| Same URL never billed twice | ||
| Custom domain on cheapest plan |
Spotted something off? tell us →
Same negotiation. Without the DSL.
Three trips, collapsed into one.
Your bucket. Your URL.
import { v2 as cloudinary } from 'cloudinary';
cloudinary.config({
cloud_name: process.env.CLD_NAME,
api_key: process.env.CLD_KEY,
api_secret: process.env.CLD_SECRET
});
// First upload (or pre-upload through their pipeline)…
await cloudinary.uploader.upload('products/runner.jpg');
// …then build a delivery URL.
const url = cloudinary.url('products/runner', {
width: 480, height: 360, crop: 'fill', gravity: 'face'
});<!-- Point at your own bucket — no upload step. -->
<img src="https://imgapis.com/transform/your-bucket/runner.jpg
?w=480&h=360&fit=cover&gravity=face" />
<!-- Same URL, every browser, every framework.
Cache hits are free. No upload pipeline. -->Ship faster than Cloudinary.
200 credits free for 7 days. No card, no SDK to pin — paste a URL, watch it work.