Store and transform images with Cloudflare Images API and transformations. Use when: uploading images, implementing direct creator uploads, creating variants, generating signed URLs, optimizing formats (WebP/AVIF), transforming via Workers, or debugging CORS, multipart, AVIF limits, metadata stripping, cache issues, or error codes 9401-9413.
View on GitHubSelect agents to install to:
npx add-skill https://github.com/jezweb/claude-skills/blob/main/skills/cloudflare-images/SKILL.md -a claude-code --skill cloudflare-imagesInstallation paths:
.claude/skills/cloudflare-images/# Cloudflare Images **Status**: Production Ready ✅ **Last Updated**: 2026-01-21 **Dependencies**: Cloudflare account with Images enabled **Latest Versions**: Cloudflare Images API v2, @cloudflare/workers-types@4.20260108.0 **Recent Updates (2025)**: - **February 2025**: Content Credentials support (C2PA standard) - preserve image provenance chains, automatic cryptographic signing of transformations - **August 2025**: AI Face Cropping GA (`gravity=face` with `zoom` control, GPU-based RetinaFace, 99.4% precision) - **May 2025**: Media Transformations origin restrictions (default: same-domain only, configurable via dashboard) - **Upcoming**: Background removal, generative upscale (planned features) **Deprecation Notice**: Mirage deprecated September 15, 2025. Migrate to Cloudflare Images for storage/transformations or use native `<img loading="lazy">` for lazy loading. --- ## Overview Two features: **Images API** (upload/store with variants) and **Image Transformations** (resize any image via URL or Workers). --- ## Quick Start **1. Enable**: Dashboard → Images → Get Account ID + API token (Cloudflare Images: Edit permission) **2. Upload**: ```bash curl -X POST https://api.cloudflare.com/client/v4/accounts/<ACCOUNT_ID>/images/v1 \ -H 'Authorization: Bearer <API_TOKEN>' \ -H 'Content-Type: multipart/form-data' \ -F 'file=@./image.jpg' ``` **3. Serve**: `https://imagedelivery.net/<ACCOUNT_HASH>/<IMAGE_ID>/public` **4. Transform** (optional): Dashboard → Images → Transformations → Enable for zone ```html <img src="/cdn-cgi/image/width=800,quality=85/uploads/photo.jpg" /> ``` --- ## Upload Methods **1. File Upload**: POST to `/images/v1` with `file` (multipart/form-data), optional `id`, `requireSignedURLs`, `metadata` **2. Upload via URL**: POST with `url=https://example.com/image.jpg` (supports HTTP basic auth) **3. Direct Creator Upload** (one-time URLs, no API key exposure): Backend: POST to `/images/v2/direct_upload` → returns `uploadURL` Fronte