Everything your app needs for media
Upload images and videos via API. Get back optimized files delivered from a global CDN. No infrastructure to build or maintain.
Automatic image optimization
Upload JPEG, PNG, HEIC, or GIF. We convert to WebP and generate thumbnails automatically. Reduce file sizes by up to 80% without visible quality loss.
- WebP conversion with configurable quality
- Thumbnails at 150px and 300px widths
- EXIF metadata preserved or stripped
- Original file always preserved
"original": "/abc123/photo.png",
"webp": "/abc123/photo.webp",
"thumb_150": "/abc123/thumb_150.webp",
"thumb_300": "/abc123/thumb_300.webp"
"original": "/xyz789/video.mp4",
"480p": "/xyz789/video_480p.mp4",
"720p": "/xyz789/video_720p.mp4",
"1080p": "/xyz789/video_1080p.mp4",
"poster": "/xyz789/poster.jpg"
Video transcoding built-in
Upload MP4, MOV, or WebM. We transcode to H.264 at multiple resolutions and extract poster frames. No FFmpeg setup required.
- H.264 transcoding at 480p, 720p, 1080p
- Automatic poster frame extraction
- Web-optimized fast start (moov atom)
- Duration and dimension metadata
Global CDN delivery
All files served from Cloudflare's edge network. Sub-100ms response times from 300+ locations worldwide.
Presigned upload URLs
Generate secure upload URLs server-side. Clients upload directly to our infrastructure without exposing API keys. URLs expire after 15 minutes.
- No API keys exposed to clients
- Direct browser-to-CDN uploads
- No file proxying through your servers
- Configurable file size limits
# 1. Request presigned URL (server-side)
curl -X POST \
-H "Authorization: Bearer $KEY" \
/api/v1/upload/presign # 2. Upload file (client-side, no auth)
curl -X PUT \
--data-binary @photo.jpg \
"$upload_url"
"event": "file.ready",
"file_uuid": "abc-123...",
"status": "ready",
"variants": [
"original", "webp",
"thumb_150", "thumb_300"
],
"timestamp": "2024-..."
Real-time notifications
Receive HTTP POST notifications when file processing completes. All webhooks are HMAC-SHA256 signed for verification.
- HMAC-SHA256 signature verification
- Automatic retries with exponential backoff
- Configurable per API key
- Delivery logs in dashboard
API key management
Create multiple API keys with custom settings. Track usage per key, configure webhooks, set limits. Revoke anytime.
Multiple keys
Separate keys for dev, staging, production
Usage tracking
Monitor uploads, storage, bandwidth
Custom limits
Set max file size, storage quotas
Instant revoke
Disable compromised keys immediately
Ready to get started?
Sign in with GitHub and upload your first file in under 5 minutes.