Compress an image
Reduce file size while preserving visual quality.
/v1/compress/:task_id/:server_filenameParameters
- compression_level
Enum: low, recommended, extreme
- rotate
(Optional) Degrees to rotate
[
{
"original_filename": "photo.jpg",
"server_filename": "c186eedfbd4...",
"size_before": 629370,
"size": 89310,
"width": 1920,
"height": 1080,
"extension": "jpg",
"link": "/image/task-id/filename"
}
]import axios from 'axios';
import fs from 'fs';
// Create client with auth (once)
const api = axios.create({
baseURL: 'https://api.boost-image.online',
headers: { 'X-Api-Key': 'YOUR_API_KEY' }
});
// 1. Start a compression task
// Response: { id: "uuid", tool: "compress", status: "waiting" }
const { data: task } = await api.get('/v1/start/compress');
console.log('Task started:', task.id);
// 2. Upload your image
// Response: { id, server_filename, task_id, width, height }
const formData = new FormData();
formData.append('file', fs.createReadStream('example.jpg'));
formData.append('task', task.id);
const { data: upload } = await api.post('/v1/upload', formData);
console.log('Uploaded:', upload.server_filename);
// 3. Get compressed result
const { data: results } = await api.post('/v1/process', {
task: task.id,
tool: 'compress',
files: [{ server_filename: upload.server_filename, filename: upload.original_filename }],
compression_level: 'recommended',
})
// 4. Download result
// Option A: ZIP archive (all files)
const { data: zip } = await api.get(`/v1/download/${task.id}`, {
responseType: 'arraybuffer'
});
fs.writeFileSync('compressed.zip', zip);
// Option B: Single file (stream)
const result = results[0];
const writer = fs.createWriteStream('compressed.jpg')
const response = await api.get(result.link, { responseType: 'stream' })
response.data.pipe(writer)