API Reference
Integrate OCR Translate into your pipeline using the REST API.
Authentication
All API requests require an API key. Create one in Settings → API Keys. Pass it in the Authorization header:
Authorization: Bearer YOUR_API_KEYBase URL
https://api.ocr-translate.appAll endpoints are versioned under /api/v1.
Endpoints
POST
/api/v1/translate-image
Translate text in a single image. Returns the translated image, a text-removed image, and a region-by-region breakdown.
Request (multipart/form-data)
imageFilerequiredImage file (JPEG, PNG, WebP). Max 10 MB.target_langstringrequiredTarget language code (e.g., "en", "de").source_langstringoptionalSource language code. Omit for auto-detect.exclude_textstringoptionalComma-separated patterns to skip (e.g., "BRAND,@handle").Example (curl)
curl -X POST https://api.ocr-translate.app/api/v1/translate-image \
-H "Authorization: Bearer YOUR_API_KEY" \
-F "image=@photo.jpg" \
-F "target_lang=en" \
-F "source_lang=de"Response (200)
{
"original_image_url": "https://...",
"translated_image_url": "https://...",
"clean_image_url": "https://...",
"regions": [
{
"id": "region_1",
"original_text": "Willkommen",
"translated_text": "Welcome",
"confidence": 0.97,
"bounding_box": { "x": 10, "y": 20, "width": 80, "height": 30 }
}
]
}POST
/api/v1/batch/translate
Create a batch translation job for up to 20 images and 10 target languages. The job runs asynchronously — poll the status endpoint or use a webhook.
Request (multipart/form-data)
images[]File[]requiredUp to 20 image files.target_languages[]string[]requiredOne or more language codes.source_langstringoptionalSource language. Omit for auto-detect.exclude_textstringoptionalComma-separated patterns to skip.webhook_urlstringoptionalURL to POST when the batch completes.Response (201)
{
"batch_id": "batch_abc123",
"status": "pending",
"total_images": 3,
"target_languages": ["en", "de"],
"created_at": "2026-02-22T10:00:00Z"
}GET
/api/v1/batch/{batch_id}
Get the current status and results of a batch job.
Example (curl)
curl https://api.ocr-translate.app/api/v1/batch/batch_abc123 \
-H "Authorization: Bearer YOUR_API_KEY"Response (200)
{
"batch_id": "batch_abc123",
"status": "completed",
"total_images": 3,
"completed_count": 3,
"failed_count": 0,
"images": [
{
"image_id": "img_1",
"original_filename": "photo.jpg",
"status": "completed",
"outputs": {
"en": {
"translated_image_url": "https://...",
"original_image_url": "https://...",
"clean_image_url": "https://..."
}
}
}
]
}Batch status values
pendingprocessingcompletedpartially_completedfailedcancelledPOST
/api/v1/batch/{batch_id}/cancel
Cancel a running batch job.
curl -X POST https://api.ocr-translate.app/api/v1/batch/batch_abc123/cancel \
-H "Authorization: Bearer YOUR_API_KEY"GET
/api/v1/batch
List all batch jobs for your account.
Query parameters
pageintoptionalPage number (default: 1).limitintoptionalResults per page (default: 20, max: 100).Supported Languages
English
enGerman
deFrench
frSpanish
esItalian
itPortuguese
ptDutch
nlSwedish
svDanish
daNorwegian
noFinnish
fiLimits
Max file size10 MB
Max images per batch20
Max languages per batch10
Max concurrent batches3