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_KEY

Base URL

https://api.ocr-translate.app

All 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_completedfailedcancelled
POST
/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

Englishen
Germande
Frenchfr
Spanishes
Italianit
Portuguesept
Dutchnl
Swedishsv
Danishda
Norwegianno
Finnishfi

Limits

Max file size10 MB
Max images per batch20
Max languages per batch10
Max concurrent batches3

Get started

Create an API key to begin

Go to Settings to generate your first API key.