Loading source
Pulling the file list, source metadata, and syntax-aware rendering for this listing.
Source from repo
Comprehensive Cloudflare platform skill covering Workers, D1, R2, KV, AI, Durable Objects, and security.
Files
Skill
Size
Entrypoint
Format
Open file
Syntax-highlighted preview of this file as included in the skill package.
references/images/api.md
1# API Reference23## Workers Binding API45```toml6# wrangler.toml7[images]8binding = "IMAGES"9```1011### Transform Images1213```typescript14const imageResponse = await env.IMAGES15.input(fileBuffer)16.transform({ width: 800, height: 600, fit: "cover", quality: 85, format: "avif" })17.output();18return imageResponse.response();19```2021### Transform Options2223```typescript24interface TransformOptions {25width?: number; height?: number;26fit?: "scale-down" | "contain" | "cover" | "crop" | "pad";27quality?: number; // 1-10028format?: "avif" | "webp" | "jpeg" | "png";29dpr?: number; // 1-330gravity?: "auto" | "left" | "right" | "top" | "bottom" | "face" | string;31sharpen?: number; // 0-1032blur?: number; // 1-25033rotate?: 90 | 180 | 270;34background?: string; // CSS color for pad35metadata?: "none" | "copyright" | "keep";36brightness?: number; contrast?: number; gamma?: number; // 0-237}38```3940### Draw/Watermark4142```typescript43await env.IMAGES.input(baseImage)44.draw(env.IMAGES.input(watermark).transform({ width: 100 }), { top: 10, left: 10, opacity: 0.8 })45.output();46```4748## REST API4950### Upload Image5152```bash53curl -X POST https://api.cloudflare.com/client/v4/accounts/{account_id}/images/v1 \54-H "Authorization: Bearer {token}" -F [email protected] -F metadata='{"key":"value"}'55```5657### Other Operations5859```bash60GET /accounts/{account_id}/images/v1/{image_id} # Get details61DELETE /accounts/{account_id}/images/v1/{image_id} # Delete62GET /accounts/{account_id}/images/v1?page=1 # List63```6465## URL Transform API6667```68https://imagedelivery.net/{hash}/{id}/width=800,height=600,fit=cover,format=avif69```7071**Params:** `w=`, `h=`, `fit=`, `q=`, `f=`, `dpr=`, `gravity=`, `sharpen=`, `blur=`, `rotate=`, `background=`, `metadata=`7273## Direct Creator Upload7475```typescript76// 1. Get upload URL (backend)77const { result } = await fetch(78`https://api.cloudflare.com/client/v4/accounts/${accountId}/images/v2/direct_upload`,79{ method: 'POST', headers: { 'Authorization': `Bearer ${token}` },80body: JSON.stringify({ requireSignedURLs: false }) }81).then(r => r.json());8283// 2. Client uploads to result.uploadURL84const formData = new FormData();85formData.append('file', file);86await fetch(result.uploadURL, { method: 'POST', body: formData });87```8889## Error Codes9091| Code | Message | Solution |92|------|---------|----------|93| 5400 | Invalid format | Use JPEG, PNG, GIF, WebP |94| 5401 | Too large | Max 100MB |95| 5403 | Invalid transform | Check params |96| 9413 | Rate limit | Implement backoff |97