E-commerce marketplaces process millions of seller images daily. Filtrate handles metadata removal, optimization, and AI compliance in a single API request. Sub-200ms. Fraction of a cent.
POST /v1/process
{
"image_url": "https://seller-uploads.example.com/img_4821.jpg",
"strip_exif": true,
"compress": { "quality": 85, "format": "webp" },
"compliance": ["nsfw", "fraud", "banned_logos"]
}
// 143ms later
{
"status": "clean",
"optimized_url": "https://cdn.filtrate.io/processed/a8f2..webp",
"size_reduction": "67%",
"compliance": { "safe": true, "flags": [] }
}
Marketplaces currently stitch together separate tools for metadata stripping, image optimization, and content moderation. Filtrate replaces the patchwork.
Remove GPS coordinates, device info, timestamps, and all dangerous metadata that exposes seller or buyer identity.
Compress, transcode to modern formats (WebP, AVIF), resize to platform specs. Average 60-70% size reduction.
Scan for explicit content, counterfeit goods, banned brand logos, and policy violations. Verdict in milliseconds.
Serverless infrastructure scales from 10 requests to 10 million. No servers to manage, no capacity planning, no 3am pages.
Pay per image processed. No monthly minimums, no credit packs. Start at fractions of a cent, volume discounts at scale.
API key in 30 seconds. Sandbox environment to test against real images. Full SDK support for Node, Python, Go, and Ruby.
Processing nodes in NA, EU, and APAC. Images processed closest to your users. Sub-200ms p95 latency worldwide.
From indie sellers to enterprise platforms handling millions of daily uploads.
Paste a URL or upload a file. See the real API response in under a second.
Takes 30 seconds. No credit card. No signup form. Just a key.
One endpoint. Three services. Full compliance in a single call.
All /v1/process requests require an X-API-Key header. Get a free key instantly — no credit card required.
POST to /v1/keys with an optional label. The raw key is returned once and never retrievable again — store it securely.
Include X-API-Key: flt_your_key_here on every request to /v1/process.
# Step 1 — issue a key
curl -X POST https://filtrate.polsia.app/v1/keys \
-H "Content-Type: application/json" \
-d '{"label": "my-project"}'
# Response:
# {
# "api_key": "flt_abc123...",
# "id": "uuid",
# "message": "Store this key securely — it cannot be retrieved again."
# }
# Step 2 — use the key
curl -X POST https://filtrate.polsia.app/v1/process \
-H "X-API-Key: flt_abc123..." \
-H "Content-Type: application/json" \
-d '{"image_url": "https://example.com/photo.jpg"}'
// Step 1 — issue a key (run once)
const keyRes = await fetch('https://filtrate.polsia.app/v1/keys', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ label: 'my-project' }),
});
const { api_key } = await keyRes.json();
// Store api_key in an env var — it won't be shown again
// Step 2 — process an image
const res = await fetch('https://filtrate.polsia.app/v1/process', {
method: 'POST',
headers: {
'X-API-Key': process.env.FILTRATE_API_KEY,
'Content-Type': 'application/json',
},
body: JSON.stringify({
image_url: 'https://example.com/photo.jpg',
compress: { quality: 85, format: 'webp' },
}),
});
const result = await res.json();
import requests, os
# Step 1 — issue a key (run once)
r = requests.post(
"https://filtrate.polsia.app/v1/keys",
json={"label": "my-project"}
)
api_key = r.json()["api_key"]
# Store api_key in an env var — it won't be shown again
# Step 2 — process an image
headers = {"X-API-Key": os.environ["FILTRATE_API_KEY"]}
result = requests.post(
"https://filtrate.polsia.app/v1/process",
headers=headers,
json={
"image_url": "https://example.com/photo.jpg",
"compress": {"quality": 85, "format": "webp"},
},
)
data = result.json()
The core endpoint. Strips EXIF, compresses to WebP, runs AI content moderation. Returns a CDN URL and compliance verdict.
Accepts JSON body with image_url or multipart form-data with an image file field.
image_url
string
one of
URL of a remote image. Accepted: jpeg, png, webp, gif, avif.
image
file
one of
Multipart file upload. Max 20 MB. Same accepted formats.
compress.quality
integer
optional
WebP quality 1–100. Default: 85.
strip_exif
boolean
optional
Strip all metadata. Default: true (always on — cannot be disabled).
status
string
Top-level compliance verdict. One of: safe explicit fraud banned_logo unknown
optimized_url
string
CDN URL of the processed WebP. Ready to serve.
size_reduction
string
Percentage size reduction vs. original (e.g. "67%").
original_size_bytes
integer
Input file size in bytes.
output_size_bytes
integer
Processed file size in bytes.
processing_ms
integer
Total wall-clock time in milliseconds.
compliance.verdict
string
Same as top-level status.
compliance.categories.explicit
object
{ flagged: boolean, confidence: number } — nudity / adult content.
compliance.categories.fraud
object
{ flagged: boolean, confidence: number } — counterfeits / misleading claims.
compliance.categories.banned_logo
object
{ flagged: boolean, confidence: number } — major brand logos / copyrighted marks.
400
Missing image / invalid URL / unsupported format.
401
Missing X-API-Key header.
403
Invalid or revoked API key.
429
Rate limit exceeded (playground only). Get a key for unlimited access.
500
Processing error. Image may be corrupt or too large to decode.
curl -X POST https://filtrate.polsia.app/v1/process \
-H "X-API-Key: flt_abc123..." \
-H "Content-Type: application/json" \
-d '{
"image_url": "https://example.com/product.jpg",
"compress": { "quality": 85, "format": "webp" }
}'
# File upload
curl -X POST https://filtrate.polsia.app/v1/process \
-H "X-API-Key: flt_abc123..." \
-F "image=@/path/to/photo.jpg" \
-F 'compress={"quality":85}'
const res = await fetch('https://filtrate.polsia.app/v1/process', {
method: 'POST',
headers: {
'X-API-Key': process.env.FILTRATE_API_KEY,
'Content-Type': 'application/json',
},
body: JSON.stringify({
image_url: 'https://example.com/product.jpg',
compress: { quality: 85 },
}),
});
const data = await res.json();
// {
// status: 'safe',
// optimized_url: 'https://cdn.example.com/filtrate_1234.webp',
// size_reduction: '67%',
// processing_ms: 143,
// compliance: {
// verdict: 'safe',
// categories: {
// explicit: { flagged: false, confidence: 0 },
// fraud: { flagged: false, confidence: 0 },
// banned_logo: { flagged: false, confidence: 0 },
// }
// }
// }
if (data.status !== 'safe') {
console.warn('Image flagged:', data.compliance.verdict);
}
import requests, os
headers = {"X-API-Key": os.environ["FILTRATE_API_KEY"]}
# URL input
r = requests.post(
"https://filtrate.polsia.app/v1/process",
headers=headers,
json={
"image_url": "https://example.com/product.jpg",
"compress": {"quality": 85},
},
)
data = r.json()
# File upload
with open("/path/to/photo.jpg", "rb") as f:
r = requests.post(
"https://filtrate.polsia.app/v1/process",
headers=headers,
files={"image": f},
data={"compress": '{"quality": 85}'},
)
data = r.json()
print(f"Verdict: {data['status']}, Reduction: {data['size_reduction']}")
Self-serve API key issuance. No auth required. Returns a raw key shown once — store it immediately.
label
string
optional
Human-readable tag for this key (e.g. "staging", "prod").
{
"api_key": "flt_abc123xyz...",
"id": "01234567-89ab-cdef-...",
"message": "Store this key securely — it cannot be retrieved again."
}
Every image that goes live on a marketplace should be safe, fast, and clean. Filtrate makes that automatic. One line of code. Every image. Every time.