Single-Endpoint Image Optimizer
Compress and optimize images with intelligent format conversion, smart resizing, and EXIF metadata stripping. Supports JPEG, PNG, and WebP.
/api/optimize-image
What makes this API special?
A single endpoint that handles all your image optimization needs. Upload any image format (JPEG, PNG, WebP) and get back a perfectly optimized version with detailed compression statistics. Convert between formats or let the API auto-select WebP for maximum web performance.
How It Works
The Image Optimizer API uses SkiaSharp for high-performance image processing, delivering lightning-fast optimization with sub-500ms response times for typical images. The API intelligently analyzes each image and applies the most appropriate optimization techniques.
Key Features
- Multi-format support: Accepts JPEG, PNG, and WebP input formats
-
Smart format conversion: Convert between JPEG, PNG, and WebP, or use
autoto let the API choose the best format - Intelligent resizing: Specify target dimensions with automatic aspect ratio preservation
- EXIF stripping: Remove metadata to reduce file size and protect privacy
- Compression stats: Get detailed before/after metrics including savings percentage
Code Examples
curl -X POST https://api.atomicapis.dev/api/optimize-image \
-H "X-RapidAPI-Proxy-Secret: YOUR_SECRET" \
-H "Content-Type: application/json" \
-d '{
"image": "iVBORw0KGgo...",
"outputFormat": "webp",
"quality": 80,
"maxWidth": 800,
"maxHeight": 600,
"stripMetadata": true
}'
const response = await fetch('https://api.atomicapis.dev/api/optimize-image', {
method: 'POST',
headers: {
'X-RapidAPI-Proxy-Secret': 'YOUR_SECRET',
'Content-Type': 'application/json'
},
body: JSON.stringify({
image: base64ImageData,
outputFormat: 'webp',
quality: 80,
maxWidth: 800,
maxHeight: 600,
stripMetadata: true
})
});
const result = await response.json();
console.log(`Compressed: ${result.originalSizeBytes} → ${result.optimizedSizeBytes} (ratio: ${result.compressionRatio})`);
import requests
import base64
# Read and encode image
with open('photo.jpg', 'rb') as f:
image_data = base64.b64encode(f.read()).decode('utf-8')
response = requests.post(
'https://api.atomicapis.dev/api/optimize-image',
headers={
'X-RapidAPI-Proxy-Secret': 'YOUR_SECRET',
'Content-Type': 'application/json'
},
json={
'image': image_data,
'outputFormat': 'webp',
'quality': 80,
'maxWidth': 800,
'maxHeight': 600,
'stripMetadata': True
}
)
result = response.json()
print(f"Compressed: {result['originalSizeBytes']} → {result['optimizedSizeBytes']} "
f"(ratio: {result['compressionRatio']})")
using System;
using System.Net.Http;
using System.Net.Http.Json;
using System.Threading.Tasks;
var client = new HttpClient();
client.DefaultRequestHeaders.Add("X-RapidAPI-Proxy-Secret", "YOUR_SECRET");
var request = new
{
image = Convert.ToBase64String(File.ReadAllBytes("photo.jpg")),
outputFormat = "webp",
quality = 80,
maxWidth = 800,
maxHeight = 600,
stripMetadata = true
};
var response = await client.PostAsJsonAsync(
"https://api.atomicapis.dev/api/optimize-image",
request
);
var result = await response.Content.ReadFromJsonAsync<OptimizeResponse>();
Console.WriteLine($"Compressed: {result.OriginalSizeBytes} → {result.OptimizedSizeBytes} (ratio: {result.CompressionRatio})");
Request Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
image |
string | Yes | Base64 image data. |
outputFormat |
string | No | Output format: jpeg, png, webp, or auto. Default: auto (prefers WebP; keeps PNG for transparent images). |
quality |
integer | No | Compression quality (1-100). Higher = better quality, larger file. Default: 80. |
maxWidth |
integer | No | Maximum output width in pixels. Aspect ratio preserved. |
maxHeight |
integer | No | Maximum output height in pixels. Aspect ratio preserved. |
stripMetadata |
boolean | No | Remove EXIF/metadata (GPS, camera info, etc.). Default: true. |
Response Format
{
"base64Image": "UklGR...",
"outputFormat": "webp",
"originalSizeBytes": 245000,
"optimizedSizeBytes": 48200,
"compressionRatio": 0.8033,
"originalWidth": 1920,
"originalHeight": 1080,
"outputWidth": 800,
"outputHeight": 450
}
| Field | Type | Description |
|---|---|---|
base64Image |
string | Base64-encoded optimized image data. |
outputFormat |
string | Output format of the optimized image. |
originalSizeBytes |
integer | Original file size in bytes. |
optimizedSizeBytes |
integer | Optimized file size in bytes. |
compressionRatio |
number | Compression savings as a fraction (1 - optimized/original). Higher means more savings. |
originalWidth |
integer | Original image width in pixels. |
originalHeight |
integer | Original image height in pixels. |
outputWidth |
integer | Output image width in pixels. |
outputHeight |
integer | Output image height in pixels. |
Use Cases
Web Optimization
Automatically convert uploaded images to WebP for faster page loads. Reduce bandwidth costs and improve Core Web Vitals scores.
Mobile Apps
Resize and compress images before upload to save user data and reduce server storage. Perfect for social apps and photo sharing platforms.
Storage Reduction
Batch process existing image libraries to reclaim storage space. Strip EXIF data for privacy compliance while reducing file sizes by 70-90%.
Build Constraints
Technical Implementation
- Built on SkiaSharp for high-performance image processing
- Sub-500ms processing time for typical images (<5MB)
- Shared infrastructure with OG Image Gen API for efficiency
Format Support
- Input: JPEG, PNG, WebP
- Output: JPEG, PNG, WebP
- Max size: 10MB per image
Error Codes
| Code | Status | Description |
|---|---|---|
400 |
Bad Request | Invalid image data or malformed request. |
401 |
Unauthorized | Missing or invalid API key. |
413 |
Payload Too Large | Image exceeds 10MB size limit. |
415 |
Unsupported Media Type | Image format not supported. |
422 |
Unprocessable Entity | Invalid parameters (e.g., quality > 100). |
429 |
Too Many Requests | Rate limit exceeded. |
500 |
Internal Server Error | Processing error. Retry with exponential backoff. |
Ready to optimize your images?
Start compressing and converting images with a single API call. Get your API key and start building today.