Image infrastructure
for modern SaaS
Upload, transform, and deliver images, PDFs, and binary files from a global edge network.
$ npm install @imgbt/core
$ npx imgbt upload ./hero.png --vault my-vault
✓ https://assets.myapp.com/hero.png?w=800&format=webp
# Delivered in < 50ms from 300+ edge nodes
Everything you need to ship media
Built on Cloudflare's edge stack. No servers to manage, no egress to pay.
Image Transforms
Resize, crop, format-convert, and adjust quality on the fly via URL parameters. WebP, AVIF, JPEG, PNG — serve the right format automatically.
PDF-Native
First-class PDF manipulation: page-to-image rendering, merge, split, and form-fill. Treat PDFs like images — transform them at the edge.
3-Level Key System
Organize assets with partition → collection → channel hierarchy. Scope API keys to any level. Perfect for multi-tenant SaaS architectures.
Signed URLs & Access Control
HMAC-SHA256 signed URLs with configurable expiry. Password-protected links. Revoke individual assets without rotating keys.
Custom Domains & Auto SSL
Bring your own domain with one DNS record. SSL provisioned automatically via Cloudflare for SaaS. No certificate management.
Edge Delivery
Zero egress fees on R2. Assets cached at 300+ Cloudflare edge nodes worldwide. Sub-50ms delivery, globally. No CDN configuration required.
How it works
From upload to global delivery in three steps.
Upload
Upload any file via SDK, REST API, or CLI. Files go directly to R2 — no intermediate hops. Metadata indexed instantly.
Buffer · Blob · ReadableStream · URL
Transform
Request transformations via URL query parameters. imgbt applies them at the edge on first request and caches the result globally.
Resize · Crop · Format · Quality · Rotate
Deliver
Assets served from the Cloudflare edge node closest to your user. Cache-first delivery with zero egress fees.
300+ edge nodes · < 50ms p95 · zero egress
One SDK.
Every platform.
Hand-written TypeScript SDK with full type safety, auto-pagination, retry logic, and large-file support out of the box. Works in Node.js and the browser.
- ✓Zero-config start with env var fallbacks
- ✓Typed errors with .status and .code
- ✓Auto-detects files >100MB, uses presigned URLs
- ✓React, Next.js, Vue, Svelte adapters
import Imgbt from '@imgbt/core'
// Initialize with your API key
const imgbt = new Imgbt({
apiKey: 'pk_live_xxx',
vault: 'my-vault',
})
// Upload a file
const asset = await imgbt.upload({
file: fileBuffer,
partition: 'acme-corp',
collection: 'avatars',
filename: 'jane.png',
})
// Generate a transformed URL
const url = imgbt.url('acme-corp/avatars/jane.png', {
width: 200,
height: 200,
fit: 'cover',
format: 'webp',
quality: 80,
})
// → https://assets.myapp.com/acme-corp/avatars/jane.png
// ?w=200&h=200&fit=cover&format=webp&q=80Simple, transparent pricing
Start free. Scale as you grow. No egress fees ever.
Free
For side projects and evaluation.
- ✓1 vault
- ✓1 GB storage
- ✓10K requests/month
- ✓Community support
Pro
For growing SaaS products.
- ✓5 vaults
- ✓50 GB storage
- ✓1M requests/month
- ✓Custom domains
- ✓Email support
Scale
For high-volume products.
- ✓Unlimited vaults
- ✓500 GB storage
- ✓10M requests/month
- ✓Custom domains
- ✓Priority support