Getting Started

Quick Start Core Concepts Your Account

Storage Providers

Amazon S3 Cloudflare R2 Google Cloud Storage Azure Blob Storage DigitalOcean Spaces Wasabi Backblaze B2 Akamai / Linode Web Proxy (HTTP)

Image URLs

URL Structure Custom Domains

Transformations

Resize Crop & Focal Point Format & Quality Filters & Effects Overlays & Text Auto Optimizations

Platform

Custom Domains Cache Purge Usage & Analytics Signed URLs CDN & Caching

More

Migration Guide Error Codes

Compare

vs Imgix vs ImageBoss

Documentation

Everything you need to transform and deliver images with Image Foundry.

Quick Start

Get started in under 2 minutes:

  1. Sign up from the dashboard and create a project
  2. Add a storage source — connect your S3 bucket, R2, GCS, Azure, or any supported provider
  3. Choose your URL style: ImageBoss (path-based) or Imgix (query params)
  4. Start serving optimized images instantly:
https://img./my-source/width/800/format:auto/photo.jpg
https://my-source./photo.jpg?w=800&auto=format
Tip: Paste your bucket URL into the Quick Setup field when creating a source — Image Foundry auto-detects provider, bucket, region, and endpoint.

Core Concepts

Sources

A source connects to a storage provider where your original images live. Each source has its own slug, URL mode (ImageBoss or Imgix), configuration, and usage tracking. You can have multiple sources per project.

Master Images

Master images are unique original images discovered by Image Foundry. When you request /photo.jpg?w=400 and /photo.jpg?w=800, that counts as 1 master image and 2 transformations. Master image counts help you understand the actual size of your image library vs. the number of URL variants being served.

URL Modes

Each source runs in one of two compatibility modes:

Your Account

Sign Up & Log In

Create your account from the dashboard. Once logged in, you can create projects, add sources, configure custom domains, and view usage analytics — all from the dashboard.

Projects

A project groups your sources, domains, and usage together. You can create multiple projects to separate different applications or environments (e.g. production vs. staging).

API Keys

Each project has an API key for programmatic access (e.g. purging cache from your CI/CD pipeline). Find your API key in the project settings on the dashboard. You can rotate it at any time — the old key is immediately invalidated.

Storage Providers

Connect your image storage. Click a provider below for setup instructions.

Amazon S3

Connect to any S3 bucket. Your IAM credentials need s3:GetObject permission.

Setup

  1. In the dashboard, click Add Source and select Amazon S3
  2. Enter your Bucket name and Region
  3. Add your Access Key ID and Secret Access Key
  4. Optionally set a Prefix to scope to a subfolder (e.g. images/)
Quick Setup: Paste s3://my-bucket/prefix or https://my-bucket.s3.us-east-1.amazonaws.com and all fields are auto-filled.

S3-Compatible Endpoint

For MinIO or other S3-compatible services, enter the Endpoint URL and enable Force path-style. Force path-style uses endpoint/bucket/key addressing instead of bucket.endpoint/key — required by services that don't support virtual-hosted style DNS.

IAM Policy

Minimal permissions needed:

s3:GetObject    — on arn:aws:s3:::my-bucket/*
s3:ListBucket   — on arn:aws:s3:::my-bucket  (optional, for health checks)

Cloudflare R2

R2 is S3-compatible with zero egress fees.

Setup

  1. Select Cloudflare R2 as the source type
  2. Enter your Bucket name
  3. Enter your Cloudflare Account ID (found in Cloudflare dashboard under R2 > Overview)
  4. Add your R2 Access Key and Secret (create under R2 > Manage R2 API Tokens)
Quick Setup: Paste https://ACCOUNT_ID.r2.cloudflarestorage.com/bucket to auto-detect.

Google Cloud Storage

Connect using a GCP service account with storage.objects.get permission.

Setup

  1. Select Google Cloud Storage as the source type
  2. Enter your Bucket name and optional Project ID
  3. Paste your Service Account JSON key (the full JSON from your GCP key file)
Quick Setup: Paste gs://my-bucket/prefix to auto-detect bucket and prefix.

Azure Blob Storage

Connect using your Azure storage account credentials.

Setup

  1. Select Azure Blob as the source type
  2. Enter your Account Name and Container name
  3. Add your Account Key (found in Azure Portal > Storage Account > Access Keys)
  4. Optionally set a Prefix for blob name scoping
Quick Setup: Paste https://myaccount.blob.core.windows.net/container to auto-detect.

DigitalOcean Spaces

Spaces is S3-compatible. The endpoint is auto-configured from your region.

Setup

  1. Select DigitalOcean Spaces as the source type
  2. Enter your Bucket (Space name) and Region (e.g. nyc3, sfo3, ams3)
  3. Add your Spaces Access Key and Secret (from DigitalOcean API panel)

Wasabi

Wasabi offers S3-compatible hot storage. The endpoint is auto-configured from your region.

Setup

  1. Select Wasabi as the source type
  2. Enter your Bucket name and Region (e.g. us-east-1, eu-central-1)
  3. Add your Wasabi Access Key and Secret

Backblaze B2

B2 provides low-cost S3-compatible storage. The endpoint is auto-configured from your region.

Setup

  1. Select Backblaze B2 as the source type
  2. Enter your Bucket name and Region (find it in B2 dashboard under Buckets > Bucket Details, e.g. us-west-004)
  3. Add your B2 Application Key ID and Application Key

Akamai / Linode Object Storage

Linode Object Storage is S3-compatible. The endpoint is auto-configured from your region.

Setup

  1. Select Akamai / Linode as the source type
  2. Enter your Bucket name and Region (e.g. us-east-1, eu-central-1)
  3. Add your Linode Access Key and Secret Key

Web Proxy (HTTP)

Proxy and transform images from any public HTTP(S) URL. Great for existing CDNs or image servers.

Setup

  1. Select Web Proxy (HTTP) as the source type
  2. Enter the Base URL (e.g. https://cdn.example.com/images)

Image Foundry fetches originals from baseUrl + /path/to/image.jpg, applies transformations, and caches the result.

Image URLs

Image Foundry transforms images on-the-fly via URL. The format depends on which mode you chose when creating your source.

ImageBoss URL Structure

Operations are embedded in the path: /:source/:operation/:dimensions/:options/*path

https://img./my-source/width/800/format:auto/photo.jpg
Source Operation Dimensions Options Image path
/my-source/cover/300x300/photo.jpg                      # Smart crop to 300x300
/my-source/width/800/format:auto,quality:75/photo.jpg    # Resize + auto format
/my-source/height/600/grayscale:true/photo.jpg           # Resize + grayscale
/my-source/cdn/photo.jpg                                 # No resize, optimize only
/my-source/cover/400x300/fp-x:0.3,fp-y:0.7/portrait.jpg # Focal point crop

Subroute (recommended): https://img./my-source/width/800/photo.jpg

Subdomain: https://my-source./width/800/photo.jpg

Imgix URL Structure

Parameters are passed as query strings: /path/to/image.jpg?w=WIDTH&h=HEIGHT&...

https://my-source./photo.jpg?w=800&auto=format
Source Image path Parameters
/photo.jpg?w=800&h=600&fit=crop&auto=format              # Crop + auto format
/photo.jpg?w=400&blur=50&mono=44768B                     # Blur + grayscale tint
/photo.jpg?w=800&sharp=30&q=80                           # Sharpen + quality
/photo.jpg?w=600&h=400&fit=crop&fp-x=0.3&fp-y=0.7       # Focal point crop
/photo.jpg?w=500&dpr=2&auto=format,compress              # Retina + optimize

Subdomain (recommended): https://my-source./photo.jpg?w=400

Subroute: https://img./my-source/photo.jpg?w=400

Custom Domains

Serve images from your own domain with full SSL:

  1. Go to your project in the dashboard and click Add Domain
  2. Enter your domain (e.g. img.yourdomain.com) and select the source to attach it to
  3. Set a CNAME record with your DNS provider: img.yourdomain.com → proxy.
  4. Click Verify in the dashboard once DNS has propagated
  5. Start using it: https://img.yourdomain.com/width/800/photo.jpg
Note: DNS propagation can take up to 48 hours. You can click Verify again at any time to check the status.

Resize Operations

OperationImageBossImgixDescription
Width/width/400/img.jpg/img.jpg?w=400Resize to width, maintain aspect ratio
Height/height/300/img.jpg/img.jpg?h=300Resize to height, maintain aspect ratio
Cover (Crop)/cover/400x300/img.jpg/img.jpg?w=400&h=300&fit=cropCrop to exact dimensions
Contain (Fit)/cover:contain/400x300/img.jpg/img.jpg?w=400&h=300&fit=fillFit within dimensions, pad if needed
Inside/cover:inside/400x300/img.jpg/img.jpg?w=400&h=300&fit=clipFit within without padding
CDN (Passthrough)/cdn/img.jpg/img.jpgNo resize, just optimize

Crop & Focal Point

ModeImageBossImgixDescription
Smart (default)/cover/WxH/?fit=cropSharp's default attention-based crop
Attention/cover:attention/WxH/?fit=crop&crop=edgesFocus on dominant areas
Entropy/cover:entropy/WxH/?fit=crop&crop=entropyFocus on areas of detail
Center/cover:center/WxH/?fit=crop&crop=centerCenter crop
Directional/cover:north/WxH/?fit=crop&crop=topnorth, south, east, west, and combinations
Focal Pointfp-x:0.3,fp-y:0.7?crop=focalpoint&fp-x=0.3&fp-y=0.70.0–1.0 coordinates for crop center

Format & Quality

ParameterImageBossImgixValues
Formatformat:webpfm=webpjpg, png, webp, avif, auto
Auto Formatformat:autoauto=formatBest format for client (Accept header negotiation)
Qualityquality:75q=751–100 (default: 80)
DPRdpr:2dpr=21–3 (device pixel ratio multiplier)
Auto Compressauto=compressAutomatic quality optimization
Auto format checks the client's Accept header and serves AVIF > WebP > original format, choosing the smallest file size.

Filters & Effects

FilterImageBossImgixDescription
Blurblur:5blur=100Gaussian blur (IB: 0.3–100 sigma, Imgix: 0–2000 radius)
Sharpensharpen:2sharp=20Unsharp mask sharpening
Grayscalegrayscale:truemono=44768BConvert to grayscale (Imgix: with tint color)
Trimtrim:10trim=autoTrim whitespace/borders
Gammagamma:2.2gam=220Gamma correction
Brightnessbrightness:20bri=20Brightness adjustment
Contrastcontrast:15con=15Contrast adjustment
Rotationrotate:90rot=90Rotate 0/90/180/270 degrees
Flipflip:hflip=hh (horizontal), v (vertical), hv (both)
Backgroundbg:ff0000bg=ff0000Background fill color (for transparent images or padding)

Overlays & Text

Watermark Overlay

# ImageBoss:
/width/700/wmk-path:%2Flogo.png,wmk-position:southeast,wmk-opacity:80/photo.jpg

# Imgix-style:
/photo.jpg?w=700&wmk-path=%2Flogo.png&wmk-position=southeast&wmk-opacity=80
ParameterValuesDescription
wmk-pathURL-encoded pathPath to watermark image (from same source)
wmk-positioncenter, north, south, east, west, northeast, northwest, southeast, southwestPosition of watermark
wmk-opacity0–100Watermark opacity
wmk-scale0.0–1.0Scale relative to main image

Text Overlay

# ImageBoss:
/width/700/txt:Hello%20World,txt-size:60,txt-color:ffffff,txt-position:south/photo.jpg

Auto Optimizations

Automatic optimizations that require no manual configuration:

Cache Purge

Image Foundry caches transformed images for fast delivery. When you update an original image, you can purge the cache to serve the new version immediately.

From the Dashboard

  1. Open your project and go to the source
  2. Click Purge Cache
  3. Choose to purge a specific image path, a prefix, or everything

What Gets Purged

Purging an image path removes all variants of that image — every size, format, and quality combination. For example, purging /photos/hero.jpg clears the 400px webp version, the 800px avif version, and every other cached variant.

Usage & Analytics

Track your image delivery performance from the dashboard. Each project shows real-time usage metrics:

MetricWhat it means
RequestsTotal HTTP requests for images (includes cache hits)
TransformationsImages that needed processing (cache misses)
Master ImagesUnique original images discovered — /photo.jpg?w=400 and /photo.jpg?w=800 count as 1 master image
BandwidthTotal bytes served to clients
Cache Hit RatePercentage of requests served from cache — higher is better

Usage is shown per source and per day, so you can spot trends and identify which sources drive the most traffic.

Signed URLs

Prevent unauthorized image transformations with HMAC SHA-256 signed URLs. Set a signing secret per source in the dashboard under source settings.

const crypto = require('crypto');

function signUrl(secret, path) {
  return crypto
    .createHmac('sha256', secret)
    .update(path)
    .digest('hex');
}

// ImageBoss style:
const path = '/width/400/photo.jpg';
const sig = signUrl('your-signing-secret', path);
const url = \`https://my-source.\${path}?s=\${sig}\`;

// Imgix style:
const imgixPath = '/photo.jpg?w=400';
const sig2 = signUrl('your-signing-secret', imgixPath);
const url2 = \`https://my-source.\${imgixPath}&s=\${sig2}\`;
Warning: When signing is enabled, all requests without a valid signature will receive a 403 Forbidden response. Test thoroughly before enabling in production.

CDN & Caching

Image Foundry is designed to sit behind Cloudflare or any CDN. All image responses include cache-friendly headers:

Cache-Control: public, max-age=2592000, s-maxage=2592000
CDN-Cache-Control: max-age=2592000
ETag: "sha256hash"
Vary: Accept

The Vary: Accept header ensures CDNs cache different formats (WebP, AVIF, JPEG) separately when auto-format is enabled.

304 Not Modified

Image Foundry supports conditional requests. Clients sending If-None-Match with a cached ETag receive 304 Not Modified with zero body, saving bandwidth.

Rate Limiting

Image delivery has no rate limit — images are served from cache and designed for high-traffic production use. Dashboard and account actions are rate-limited to prevent abuse (10 requests/minute for login, 100 requests/minute for other actions).

Migration Guide

Migrating from Imgix

  1. Add a source and choose Imgix as the URL style
  2. Point it to the same S3/GCS/Azure bucket that Imgix is using
  3. Update your DNS or image URLs:
    my-site.imgix.netmy-source.
  4. All Imgix query parameters (?w=, ?h=, ?fit=, ?auto=, etc.) work as-is
Zero downtime: Set up a custom domain, keep your old CNAME while testing, then switch DNS to Image Foundry when ready.

Migrating from ImageBoss

  1. Add a source and choose ImageBoss as the URL style
  2. Connect it to your storage provider
  3. Replace img.imageboss.me/your-source/ with img./your-source/
  4. All ImageBoss path-based URLs work as-is

Migrating from Cloudinary

  1. Export your images to S3, GCS, or any supported storage
  2. Add a source in Image Foundry pointing to your storage
  3. Map Cloudinary transformations to ImageBoss/Imgix equivalents
  4. Common mappings: c_fillfit=crop, c_fitfit=clip, w_400w=400, f_autoauto=format

Error Codes

StatusCodeDescription
400BAD_REQUESTInvalid parameters or missing required fields
401UNAUTHORIZEDMissing or invalid authentication
403FORBIDDENInvalid signature or insufficient permissions
404NOT_FOUNDSource, image, or resource not found
409CONFLICTResource already exists (duplicate slug, domain)
413PAYLOAD_TOO_LARGESource image exceeds size limit
429TOO_MANY_REQUESTSRate limit exceeded
500INTERNAL_ERRORServer error during processing
502BAD_GATEWAYFailed to fetch from upstream source

Error responses return JSON:

{
  "error": "NOT_FOUND",
  "message": "Image not found in source: photos/nonexistent.jpg"
}