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.
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
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.
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.
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] |
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.
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)
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"
.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.