Process thousands of AI-generated images automatically. Batch watermarking at scale with custom text, logos, and concurrent processing. Built for high-volume applications.
Manual watermarking: 5 minutes per image
Our API: 0.05 seconds per image
Process 1,000 images in under a minute. Save 83+ hours of manual work. Scale your AI content workflow without hiring more staff.
Our REST API is designed for high-throughput watermarking. Make concurrent requests to process thousands of images simultaneously.
# Python: Batch watermark 1000 images with concurrent requests
import requests
from concurrent.futures import ThreadPoolExecutor
import os
API_URL = "https://aigc-compliance-api-production.up.railway.app/comply"
API_KEY = "YOUR_API_KEY"
headers = {"Authorization": f"Bearer {API_KEY}"}
def watermark_image(image_path):
"""Watermark a single image"""
with open(image_path, "rb") as f:
files = {"file": f}
data = {
"region": "EU",
"watermark_text": "AI Generated",
"watermark_position": "bottom-right"
}
response = requests.post(API_URL, headers=headers, files=files, data=data)
return response.json()
# Get all images in directory
image_files = [f for f in os.listdir("ai_images/") if f.endswith((".jpg", ".png"))]
# Process 20 images concurrently (adjust based on your plan)
with ThreadPoolExecutor(max_workers=20) as executor:
results = list(executor.map(watermark_image, image_files))
print(f"Processed {len(results)} images")
# Total time for 1000 images: ~50 seconds
Process up to 20 images simultaneously. No queuing, instant results.
Built-in retry logic for failed requests. Never lose an image.
Monitor processing status in real-time. Know exactly what's done.
Get all processed images via download URLs. Automatic cleanup after 24h.
Apply same watermark to all images. Custom text and logos supported.
Rate limiting, file validation, secure storage. GDPR compliant.
ROI: Save 99.99% of processing time
const axios = require('axios');
const FormData = require('form-data');
const fs = require('fs').promises;
const path = require('path');
async function bulkWatermark(imageDir) {
const API_URL = 'https://aigc-compliance-api-production.up.railway.app/comply';
const API_KEY = 'YOUR_API_KEY';
// Get all images
const files = await fs.readdir(imageDir);
const imageFiles = files.filter(f => /\.(jpg|jpeg|png)$/i.test(f));
// Process in batches of 20
const batchSize = 20;
const results = [];
for (let i = 0; i < imageFiles.length; i += batchSize) {
const batch = imageFiles.slice(i, i + batchSize);
const promises = batch.map(async (filename) => {
const form = new FormData();
const filePath = path.join(imageDir, filename);
form.append('file', await fs.readFile(filePath), filename);
form.append('region', 'EU');
form.append('watermark_text', 'AI Generated');
const response = await axios.post(API_URL, form, {
headers: {
'Authorization': `Bearer ${API_KEY}`,
...form.getHeaders()
}
});
return { filename, url: response.data.download_url };
});
const batchResults = await Promise.all(promises);
results.push(...batchResults);
console.log(`Processed ${results.length}/${imageFiles.length} images`);
}
return results;
}
// Usage
bulkWatermark('./ai_images').then(results => {
console.log(`✅ Watermarked ${results.length} images`);
console.log(results);
});
<?php
function bulkWatermark($imageDir) {
$apiUrl = 'https://aigc-compliance-api-production.up.railway.app/comply';
$apiKey = 'YOUR_API_KEY';
$files = glob($imageDir . '/*.{jpg,jpeg,png}', GLOB_BRACE);
$results = [];
// Process in batches
$batchSize = 20;
$batches = array_chunk($files, $batchSize);
foreach ($batches as $batch) {
$multiCurl = curl_multi_init();
$curlHandles = [];
foreach ($batch as $file) {
$ch = curl_init();
$cfile = new CURLFile($file);
curl_setopt_array($ch, [
CURLOPT_URL => $apiUrl,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POST => true,
CURLOPT_HTTPHEADER => ["Authorization: Bearer $apiKey"],
CURLOPT_POSTFIELDS => [
'file' => $cfile,
'region' => 'EU',
'watermark_text' => 'AI Generated'
]
]);
curl_multi_add_handle($multiCurl, $ch);
$curlHandles[] = $ch;
}
// Execute all requests simultaneously
$running = null;
do {
curl_multi_exec($multiCurl, $running);
} while ($running);
// Collect results
foreach ($curlHandles as $ch) {
$response = curl_multi_getcontent($ch);
$results[] = json_decode($response);
curl_multi_remove_handle($multiCurl, $ch);
}
curl_multi_close($multiCurl);
echo "Processed " . count($results) . "/" . count($files) . " images\n";
}
return $results;
}
$results = bulkWatermark('./ai_images');
echo "✅ Watermarked " . count($results) . " images\n";
?>
Process hundreds of AI-generated campaign images for multiple clients. Custom watermarks with client logos. Bulk processing saves 40+ hours per campaign.
Watermark product images at scale. Process entire catalogs (1000+ images) in minutes. Integrate with your product upload workflow.
Batch watermark AI-generated news images. Process daily uploads automatically. Comply with EU and China transparency regulations.
Watermark client projects in bulk. Custom text and logos per client. Professional branding at scale.
Process thousands of user uploads automatically. Mark all AI content with visible watermarks. Regulatory compliance at scale.
Free plan includes 100 API calls. Upgrade to process 10,000+ images per month.
Get Your Free API KeyUp to 20 concurrent requests recommended for optimal performance. Higher concurrency may trigger rate limits.
The API returns detailed error messages. Implement retry logic in your application for failed requests.
Yes! Enterprise plan ($499/month) includes 500,000 calls. Contact us for custom pricing above 500k/month.
Yes, download images from your storage and send to our API. We don't currently support direct cloud storage URLs.
24 hours. Download processed images immediately. After 24h, images are automatically deleted (GDPR compliant).
Yes! Each API request can specify different watermark text, position, and logo. Full flexibility per image.
💡 Pro Tip: Use async endpoints (Professional+) for bulk processing - 90% faster than sync processing. Process thousands of images without blocking your application.
Process thousands of images in minutes, not hours
Start Bulk Watermarking