Docs· Status· hello@imgpipeline.dev

Transform images at the edge, not in your stack

Resize, convert, compress, and watermark any image by appending operations to a URL. 14ms median response, 118 edge regions, nothing to deploy.

Get API key Read the docs
Chain fetch/ resize/ format/ optimize/ deliver
Request
GET /v1/transform ?src=product.jpg &w=800&h=600 &fit=cover&f=webp
Response · 200 OK · 14ms
Content-Type: image/webp Content-Length: 48213 X-Cache: HIT (edge-fra) Cache-Control: public, max-age=31536000
Operations

Forty-two operations, one query string

Chain any combination with the pipe operator, or apply a single operation on its own.

resizecropformat webpavifcompress blursharpenwatermark grayscaletintpad borderrotatepipe chains brightnesscontrastsaturate face cropstrip metadata
01

Smart crop

Subject and face detection pick the crop window automatically when you ask for cover fit.

02

Format negotiation

Leave the format off and the Accept header decides: AVIF, then WebP, then JPEG.

03

Pipeline chains

Combine operations with the pipe operator and they run in a single pass, not N requests.

Common transforms, saved as a URL

Starting points for the shapes almost every product needs.

Avatar
square, face-centered
?w=256&h=256&fit=cover&crop=face&f=webp
Hero banner
wide crop, high quality
?w=1600&h=600&fit=cover&q=85&f=webp
Social card
fixed canvas, padded
?w=1200&h=630&pad=40&f=jpeg&q=80
Email thumbnail
small, light payload
?w=320&f=png&q=70&strip=true
Print proof
lossless, no resize
?f=png&strip=false&q=100

No upload step, no job queue

The first request transforms and caches the asset. Every request after that is a cache hit.

Request

Append operations as query parameters to any source URL. Nothing to register in advance.

?w=800&fit=cover

Transform

The pipeline fetches the source once, applies the operation chain in order, and encodes the output format.

resize › format › optimize

Deliver

The result is cached at the edge and streamed back. Repeat requests for the same params are single-digit milliseconds.

X-Cache: HIT
Reference

A small, predictable API

Every response carries the resolved operation chain in a header.

GET/v1/transformTransform a single source image by URL
POST/v1/transform/batchTransform up to 100 sources in one call
POST/v1/assetsUpload a source asset for repeated transforms
GET/v1/assets/{id}Fetch asset metadata and cache stats
POST/v1/presetsSave a named operation chain for reuse
GET/v1/presets/{id}Resolve a saved preset to its parameters

Live in four lines

Install the client, point it at a source, and chain operations. Nothing to deploy.

# pip install imgpipeline from imgpipeline import Client img = Client(api_key="ip_live_...") result = img.transform( src="https://cdn.example.com/product.jpg", w=800, h=600, fit="cover", f="webp", q=85, ) result.save("out.webp")

Pay for delivered images

Transforms are free to run as many times as you like, caching keeps repeat requests off your bill.

Free25,000 unique transforms/mo, 1 custom domain
Start free ›
EnterpriseUnlimited scale, signed URLs, dedicated support
Talk to us ›

Stop running an image service

Point your first URL at the pipeline and get a transformed image back in milliseconds.

Get API key