API-documentatie

Integreer krachtige vertaling in uw toepassingen met onze eenvoudige REST API.

Starten

De TranslateAPI biedt een eenvoudige REST-interface voor het vertalen van tekst tussen 180+ talen. Alle API-eindpunten geven JSON-responsen terug.

Basis-URL: https://api.translateapi.ai/api/v1/
Snel starten

Maak uw eerste vertaalaanvraag:

curl -X POST https://api.translateapi.ai/api/v1/translate/ \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -d '{
    "text": "Hello, world!",
    "target_language": "es"
  }'
import requests

response = requests.post(
    "https://api.translateapi.ai/api/v1/translate/",
    headers={
        "Authorization": "Bearer YOUR_API_KEY",
        "Content-Type": "application/json"
    },
    json={
        "text": "Hello, world!",
        "target_language": "es"
    }
)

result = response.json()
print(result["translated_text"])  # "Hola, mundo!"
const response = await fetch("https://api.translateapi.ai/api/v1/translate/", {
    method: "POST",
    headers: {
        "Authorization": "Bearer YOUR_API_KEY",
        "Content-Type": "application/json"
    },
    body: JSON.stringify({
        text: "Hello, world!",
        target_language: "es"
    })
});

const result = await response.json();
console.log(result.translated_text);  // "Hola, mundo!"
using System;
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;
using Newtonsoft.Json;

class Program
{
    static async Task Main()
    {
        var client = new HttpClient();
        client.DefaultRequestHeaders.Add(
            "Authorization", "Bearer YOUR_API_KEY"
        );

        var content = new StringContent(
            JsonConvert.SerializeObject(new {
                text = "Hello, world!",
                target_language = "es"
            }),
            Encoding.UTF8,
            "application/json"
        );

        var response = await client.PostAsync(
            "https://api.translateapi.ai/api/v1/translate/",
            content
        );

        var result = await response.Content.ReadAsStringAsync();
        var data = JsonConvert.DeserializeObject<dynamic>(result);
        Console.WriteLine(data.translated_text);  // "Hola, mundo!"
    }
}

Authenticatie

Authenticeer uw verzoeken met behulp van een API-sleutel. U kunt API-sleutels aanmaken vanuit uw dashboard.

Kop-authenticatie (aanbevolen)
Authorization: Bearer ta_your_api_key_here
Zoekparameter
https://api.translateapi.ai/api/v1/translate/?api_key=ta_your_api_key_here
Houd uw API sleutels veilig! Laat ze niet onthullen in client-side code of openbare repositories.

Tekst vertalen

Vertaal tekst naar één doeltaal.

POST https://api.translateapi.ai/api/v1/translate/
Verzoek om een instantie
Parameter Type Vereist Omschrijving
text string Ja. Tekst om te vertalen (max 50.000 tekens)
target_language string Ja* Target language code (e.g., "es", "fr", "de")
source_language string Nee Source language code. Default: "auto" (auto-detect)

* Gebruik target_language (tekenreeks) voor één taal of target_languages (array) voor meerdere. Zie Multi-Target-vertaling.

Respons
{
    "translated_text": "Hola, mundo!",
    "source_language": "en",
    "target_language": "es",
    "translations": {
        "es": "Hola, mundo!"
    },
    "character_count": 13,
    "translation_time": 0.45
}

Multi-Target-vertaling

Vertaal tekst naar meerdere talen in één verzoek. Gebruikt hetzelfde eindpunt als enkele vertaling.

Tip: U kunt vertalen naar maximaal 50 talen in een enkele aanvraag.
POST https://api.translateapi.ai/api/v1/translate/
Verzoek om een instantie
{
    "text": "Hello, world!",
    "target_languages": ["es", "fr", "de", "ja"],
    "source_language": "en"
}

Gebruik target_languages (array) in plaats van target_language (string) voor meerdere doelen.

Respons
{
    "source_language": "en",
    "translations": {
        "es": "Hola, mundo!",
        "fr": "Bonjour, monde!",
        "de": "Hallo, Welt!",
        "ja": "こんにちは、世界!"
    },
    "character_count": 52,
    "translation_time": 2.31
}

Batchvertaling

Vertaal meerdere teksten tegelijk met async verwerking. Stuur een batch en poll voor resultaten.

Limieten: max. 500 teksten per partij, max. 750 items in totaal (teksten × doeltalen). Jobs time out 30 minuten na aanvang van de verwerking (wachttijd wordt niet geteld).
De verwerkingstijd varieert naar taal: gewone talen (Spaans, Frans, Duits, enz.) maken gebruik van snelle modellen (~0.1s per tekst), terwijl minder gangbare talen gebruik maken van ons grote meertalige model (~1-3s per tekst). Een 100-tekst batch is meestal voltooid in 10-30 seconden voor gewone talen, of 2-5 minuten voor minder gangbare talen. Voor het beste resultaat, stuur 1 doeltaal per batch aanvraag en houd batchgroottes onder 50 teksten.
POST https://api.translateapi.ai/api/v1/translate/batch/
Stap 1: Submit Batch
curl -X POST https://api.translateapi.ai/api/v1/translate/batch/ \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "texts": ["Hello", "Goodbye", "Thank you"],
    "target_language": "es",
    "source_language": "en"
}'
Respons (HTTP 202 aanvaard)
{
    "job_id": "67535b2b-c9e3-4f82-9499-e237edbc1dd8",
    "status": "pending",
    "total_texts": 3,
    "queue_position": 1,
    "source_language": "en",
    "target_languages": ["es"],
    "character_count": 22,
    "credits_remaining": -1,
    "poll_url": "https://api.translateapi.ai/api/v1/jobs/67535b2b-c9e3-4f82-9499-e237edbc1dd8/"
}
Stap 2: Bespreking van de resultaten
GET https://api.translateapi.ai/api/v1/jobs/{job_id}/
Polling Example (Python)
import time, requests

job_id = response.json()["job_id"]
total = response.json()["total_texts"]
headers = {"Authorization": "Bearer YOUR_API_KEY"}

print(f"Batch submitted: {total} texts (job {job_id})")

while True:
    result = requests.get(f"https://api.translateapi.ai/api/v1/jobs/{job_id}/", headers=headers).json()
    status = result["status"]
    processed = result.get("processed_texts", 0)
    progress = result.get("progress_percentage", 0)

    if status == "completed":
        print(f"Completed: {processed}/{total} texts in {result.get('processing_time', 0):.1f}s")
        translations = result["result_data"]["translations"]
        break
    elif status == "failed":
        print(f"Failed at {processed}/{total}: {result.get('error_message', 'unknown')}")
        raise Exception(result.get("error_message", "Translation failed"))
    elif status == "pending":
        queue_pos = result.get("queue_position", "?")
        print(f"Queued (position {queue_pos}) — waiting for GPU worker...")
    else:
        print(f"[{status}] {processed}/{total} ({progress:.0f}%)")

    time.sleep(3)
Respons (in de wachtrij, wachtend op GPU)
{
    "job_id": "67535b2b-...",
    "status": "pending",
    "processed_texts": 0,
    "total_texts": 3,
    "progress_percentage": 0.0,
    "queue_position": 3
}
Respons (tijdens verwerking)
{
    "job_id": "67535b2b-...",
    "status": "processing",
    "processed_texts": 1,
    "total_texts": 3,
    "progress_percentage": 33.33,
    "queue_position": null
}
Respons (voltooid)
{
    "job_id": "67535b2b-...",
    "status": "completed",
    "processed_texts": 3,
    "total_texts": 3,
    "progress_percentage": 100.0,
    "processing_time": 10.65,
    "result_data": {
        "translations": ["Hola", "Adiós", "Gracias"],
        "source_language": "en",
        "target_language": "es",
        "character_count": 22,
        "processing_time": 10.65
    }
}
Real-Time Progress Tracking

Elke poll respons omvat real-time voortgangsvelden, zodat u precies kunt controleren wat er gebeurt met uw batch:

Veld Omschrijving
status Huidige werkstatus: pending (wachtend op een GPU werknemer), processing (actief vertalen), completed, failed
processed_texts Aantal individuele vertalingen voltooid tot nu toe. Updates in real time zoals elke tekst wordt vertaald.
total_texts Totaal aantal vertalingen in deze partij (teksten × doeltalen).
progress_percentage Afrondingspercentage (0-100). Berekend vanuit verwerkt_teksten / total_texts.
queue_position Uw positie in de wachtrij wanneer de status "door" (1 = volgende up) is. Null bij het verwerken of voltooien. Gebruik dit om de wachttijd te schatten en de wachtrijstatus aan uw gebruikers te tonen.
processing_time [Error: UNIQUE constraint failed: translations_translation.textbase_id, translations_translation.language_id]
Tip: Wanneer status is "pending", de GPU werknemers zijn druk met andere batches. queue_position om te zien hoeveel jobs er voor je liggen (1 = jij bent de volgende). Jouw job zal automatisch beginnen en er is geen actie nodig, gewoon blijven peilen.
[Error: UNIQUE constraint failed: translations_translation.textbase_id, translations_translation.language_id]
  • Verstuur 1 doeltaal per batch verzoek. Dit houdt elke batch snel en maakt vooruitgang gemakkelijk te volgen.
  • [Error: UNIQUE constraint failed: translations_translation.textbase_id, translations_translation.language_id]
  • Voer ten hoogste 2 gelijktijdige batchtaken uit. De GPU verwerkt 2 batches in parallelle wachtrij voor extra taken en zal niet sneller starten.
  • [Error: UNIQUE constraint failed: translations_translation.textbase_id, translations_translation.language_id]
  • Bekijk elke 3-5 seconden. Meer frequente peiling versnelt de verwerking niet.
Partij met meerdere talen

Vertaal meerdere teksten in meerdere talen tegelijk:

{
    "texts": ["Hello", "Goodbye"],
    "target_languages": ["es", "fr"],
    "source_language": "en"
}
Resultaten_gegevens voltooid
{
    "translations": [
        {"es": "Hola", "fr": "Bonjour"},
        {"es": "Adiós", "fr": "Au revoir"}
    ],
    "source_language": "en",
    "target_languages": ["es", "fr"],
    "character_count": 24,
    "processing_time": 2.45
}
Parameters aanvragen
Parameter Type Vereist Omschrijving
texts array Ja. Array of strings to translate
target_language string Ja* Doeltaalcode voor één taal
target_languages array Ja* Array of target language codes for multiple languages
source_language string Nee Source language code. Default: "auto"

* Zorg ervoor dat ofwel target_language of target_languagesNiet allebei.

Async-verwerking: Batch verzoeken komen onmiddellijk terug met een job_id. Poll GET /api/v1/jobs/{job_id}/ tot status is "completed", lees dan result_data voor vertalingen. progress_percentage om vooruitgang te volgen.

Documentvertaling

Vertaal volledige documenten met behoud van formatteren. Ondersteunt meerdere bestandsformaten.

POST https://api.translateapi.ai/api/v1/translate/document/
Verzoek (multipartiete/vormgegevens)
Parameter Type Vereist Omschrijving
file file Ja. Het te vertalen document (max 10MB)
target_language string Ja. Target language code (e.g., "es", "fr", "de")
source_language string Nee Source language code. Default: "auto" (auto-detect)
Ondersteunde bestandstypen
  • .txt - Platte tekstbestanden
  • .docx - Word-documenten
  • .pdf - PDF-documenten (inclusief gescand)
  • .json - JSON-bestanden (vertaalt tekenreekswaarden)
  • .xml - XML-bestanden
  • .srt - Bestanden met ondertiteling
  • .po / .pot - Tekstvertalingsbestanden ophalen
  • .jpg / .jpeg - JPEG-afbeeldingen (OCR)
  • .png - PNG-afbeeldingen (OCR)
  • .tiff / .tif - TIFF-afbeeldingen (OCR)
  • .bmp - BMP-afbeeldingen (OCR)
  • .webp - WebP-afbeeldingen (OCR)
OCR-ondersteuning: Afbeeldingsbestanden en gescande PDF's worden verwerkt met optische karakterherkenning (OCR) om tekst te extraheren voor vertaling. Voor de beste resultaten, gebruik duidelijke, hoge resolutie beelden.
Voorbeeld (cURL)
# Translate a Word document
curl -X POST https://api.translateapi.ai/api/v1/translate/document/ \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -F "file=@document.docx" \
  -F "target_language=es" \
  -F "source_language=en"

# Translate text from an image (OCR)
curl -X POST https://api.translateapi.ai/api/v1/translate/document/ \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -F "file=@scanned_page.jpg" \
  -F "target_language=es" \
  -F "source_language=en"
Afbeeldingsbestanden worden verwerkt met OCR om tekst te extraheren voor vertaling. De vertaalde uitvoer wordt geretourneerd als een .txt bestand.
Respons
{
    "id": 123,
    "original_filename": "document.docx",
    "file_type": "docx",
    "source_language": "en",
    "target_language": "es",
    "status": "completed",
    "character_count": 5420,
    "translated_file_url": "/media/translated/document_es.docx",
    "created_at": "2024-01-15T10:30:00Z",
    "completed_at": "2024-01-15T10:30:05Z"
}
Statuswaarden
pending Bestand geüpload, wachtend om te worden verwerkt
processing Vertaling in uitvoering
completed Vertaling voltooid, download beschikbaar
failed Vertaling mislukt (check error_message)
GET https://api.translateapi.ai/api/v1/translate/document/{id}/

Controleer de status van een documentvertaling of download de URL.

Respons
{
    "id": 123,
    "original_filename": "document.docx",
    "status": "completed",
    "translated_file_url": "/media/translated/document_es.docx",
    "character_count": 5420
}

Taaldetectie

Taaldetectie is ingebouwd in elke vertaalaanvraag. source_language to "auto" (of weglaten) en de gedetecteerde taal wordt teruggegeven in het antwoord.

POST https://api.translateapi.ai/api/v1/translate/
Verzoek om een instantie
{
    "text": "Bonjour, comment allez-vous?",
    "target_language": "en"
}
Respons
{
    "translated_text": "Hello, how are you?",
    "source_language": "fr",
    "target_language": "en",
    "translations": {
        "en": "Hello, how are you?"
    },
    "character_count": 28,
    "translation_time": 0.52
}

De source_language veld in de reactie toont de gedetecteerde taal wanneer auto-detectie wordt gebruikt.

Ondersteunde talen

Krijg de lijst van alle ondersteunde talen.

GET https://api.translateapi.ai/api/v1/translate/languages/
Respons
{
    "count": 186,
    "results": [
        {"iso": "en", "name": "English", "en_label": "English"},
        {"iso": "es", "name": "Español", "en_label": "Spanish"},
        {"iso": "fr", "name": "Français", "en_label": "French"},
        ...
    ]
}

Vertaalmodellen

We maken gebruik van state-of-the-art open source vertaalmodellen die draaien op onze eigen GPU infrastructuur. Alle modellen zijn commercieel gelicentieerd (Apache 2.0).

Model Talen Beste voor
Helsinki-NLP/opus-mt 50+ taalparen Gemeenschappelijke talen (EN, ES, FR, DE, IT, PT, RU, ZH, JA, enz.)
Google MADLAD-400 400+ talen Zeldzame talen, uitgebreide dekking

De API selecteert automatisch het beste model voor uw taalpaar. U kunt optioneel een engine parameter:

Motor Omschrijving
"auto" Standaard. Probeert HuggingFace eerst, valt terug naar MADLAD-400
"huggingface" Forceer HuggingFace/MarianMT (snelste, 50+ talen)
"madlad" Dwing MADLAD-400 (400+ talen)

Fout bij omgaan

De API gebruikt standaard HTTP-statuscodes om succes of mislukking aan te geven.

Rubriek Omschrijving
200 Succes
400 Ongeldige aanvraag - Ongeldige parameters
401 Ongeautoriseerd - Ongeldige of ontbrekende API-sleutel
402 Vereiste betaling - Dagelijks karakterquotum overschreden
429 Te veel verzoeken - limiet snelheid overschreden
503 Service niet beschikbaar - Vertaalmachine tijdelijk uit
Fout in antwoordformaat
{
    "error": "daily_limit_exceeded",
    "credits_remaining": 0,
    "daily_limit": 100000
}

Tarieflimieten

De grenswaarden variëren per plan. prijsstelling voor nadere bijzonderheden:

Plan Tekens/Maand Prijs
Vrij 250,000 $0 Gratis aanmelden
Starter 2,500,000 $9/munit description in lists Abonneren
Pro 10,000,000 $29/munit description in lists Abonneren
Zaken 40,000,000 $79/munit description in lists Abonneren
Schaal 125,000,000 $199/munit description in lists Abonneren

Wanneer u uw limiet overschrijdt, ontvangt u een 429 Too Many Requests antwoord tot de volgende maand of je upgrade.

Auto-Scaling Cloud Infrastructure

TranslateAPI runs on dedicated NVIDIA A100 GPU instances with automatic horizontal scaling. When demand increases, additional GPU instances are launched within minutes to maintain fast response times. This means our API can handle virtually unlimited concurrent requests without degradation — from a single request to thousands per minute.

Beoordeel deze pagina
Bedankt voor je beoordeling!
/5 gebaseerd op ratings