Documentació de l' API
Integrar la traducció poderosa a les vostres aplicacions amb la nostra senzilla API REST.
Començar
L' TradueixAPI proporciona una interfície REST simple per traduir text entre 180+ llengües. Tots els punts finals de l' API retornen les respostes JSON.
https://api.translateapi.ai/api/v1/
Inici ràpid
Fes la vostra primera petició de traducció:
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!"
}
}
Autenticació
Autenticau les vostres sol· licituds usant una clau API. Podeu crear claus API de la vostra Tauler.
Autenticació de capçalera (recomanat)
Authorization: Bearer ta_your_api_key_here
Paràmetre de consulta
https://api.translateapi.ai/api/v1/translate/?api_key=ta_your_api_key_here
Tradueix el text
Tradueix el text a un únic idioma de destí.
POST https://api.translateapi.ai/api/v1/translate/
Petició del cos
| Paràmetre | Tipus | Requerit | Descripció |
|---|---|---|---|
text |
string | Sí | Text a traduir (màx. 50.000 caràcters) |
target_language |
string | Sí * | Target language code (e.g., "es", "fr", "de") |
source_language |
string | No | Source language code. Default: "auto" (auto-detect) |
* Ús target_language (cadena) per un sol idioma o target_languages (desplegament) per a múltiples. Mireu Traducció a l'ObjectClass.
Resposta
{
"translated_text": "Hola, mundo!",
"source_language": "en",
"target_language": "es",
"translations": {
"es": "Hola, mundo!"
},
"character_count": 13,
"translation_time": 0.45
}
Traducció a l'ObjectClass
Tradueix el text a múltiples idiomes en una sola petició. Usa el mateix punt final que una traducció.
POST https://api.translateapi.ai/api/v1/translate/
Petició del cos
{
"text": "Hello, world!",
"target_languages": ["es", "fr", "de", "ja"],
"source_language": "en"
}
Ús target_languages (desplegament) enlloc de target_language (cadena) per a múltiples objectius.
Resposta
{
"source_language": "en",
"translations": {
"es": "Hola, mundo!",
"fr": "Bonjour, monde!",
"de": "Hallo, Welt!",
"ja": "こんにちは、世界!"
},
"character_count": 52,
"translation_time": 2.31
}
Traducció per lots
Traduïu múltiples textos a la vegada amb un procés de sincronització. Envieu una enquesta per lots i enquesta pels resultats.
POST https://api.translateapi.ai/api/v1/translate/batch/
Pas 1: Envia un lot
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"
}'
Resposta (HTTP 202 acceptada)
{
"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/"
}
Pas 2: Comprova els resultats
GET https://api.translateapi.ai/api/v1/jobs/{job_id}/
Exemple de consulta (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)
Resposta (a la cua de la Freelina, esperant a la GPU)
{
"job_id": "67535b2b-...",
"status": "pending",
"processed_texts": 0,
"total_texts": 3,
"progress_percentage": 0.0,
"queue_position": 3
}
Resposta (si s' està processant)
{
"job_id": "67535b2b-...",
"status": "processing",
"processed_texts": 1,
"total_texts": 3,
"progress_percentage": 33.33,
"queue_position": null
}
Resposta (completa)
{
"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
}
}
Progrés real de la peça
Cada resposta de les enquestes inclou camps de progrés en temps real per a poder controlar exactament el que està passant amb el vostre lot:
| Camp | Descripció |
|---|---|
status |
Estat actual del treball: pending (cuarada, esperant un treballador de la GPU), processing (Expressiblement traduir), completed, failed |
processed_texts |
El nombre de traduccions individuals s' han completat fins ara. Actualitza en temps real com a cada text. |
total_texts |
Nombre total de traduccions en aquest lot (texts × llengües de destí). |
progress_percentage |
Percentatge de compleció (0- 100). Calculat des dels texts processats / total_ texts. |
queue_position |
La vostra posició en la cua quan l' estat és "posat" (1 = següent amunt). Null en processar o completar- la. Useu això per estimar el temps d' espera i mostrar l' estat de la cua als vostres usuaris. |
processing_time |
Temps total de processament en segons (no disponible quan s' ha completat). |
status és "pending"Els treballadors de la GPU estan ocupats amb altres per lots. Comproveu queue_position Per veure quantes feines esteu per davant dels vostres (1 = que sou el següent). La vostra feina començarà automàticament a no emprar- lo, només cal mantenir les enquestes.
Millors exercicis per a les instal·lacions de feina grans
- Envia un idioma de destí per lots. Això manté cada lot ràpid i facilita el seguiment.
- Manté les lots en texts 50- 100. Els grups petits s' han completat més ràpid i us donen actualitzacions més freqüents.
- Executa en la majoria de 2 treballs per lots recurrents. Els processos de la GPU 2 grups en la cua de treballs paral· lel FOL addicionals i no s' iniciïn més ràpidament.
- En temps d' espera, torna a enviar el mateix treball_ id en comptes de enviar un nou lot. El treball original encara pot ser processat a la GPU.
- Comprova cada 3-5 segons, més freqüent les enquestes no s'accelera el procés.
Batch multi- Language
Traduïu múltiples textos a múltiples idiomes alhora:
{
"texts": ["Hello", "Goodbye"],
"target_languages": ["es", "fr"],
"source_language": "en"
}
Resultat completat_ data
{
"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
}
Paràmetres de petició
| Paràmetre | Tipus | Requerit | Descripció |
|---|---|---|---|
texts |
array | Sí | Matriu de cadenes a traduir |
target_language |
string | Sí * | Codi de l' idioma de destí per un sol idioma |
target_languages |
array | Sí * | Matriu dels codis d' idioma de destí per a múltiples idiomes |
source_language |
string | No | Source language code. Default: "auto" |
* Proporciona qualsevol target_language o target_languagesNo tant.
job_id. Comprova GET /api/v1/jobs/{job_id}/ fins status és "completed", després es llegeix result_data per a les traduccions. Useu- ho progress_percentage fins al progrés de la peça.
Traducció al document
Tradueix tots els documents mentre es preserva el formatat. Implementació de múltiples formats de fitxer.
POST https://api.translateapi.ai/api/v1/translate/document/
Sol· licitud (multipart/form- data)
| Paràmetre | Tipus | Requerit | Descripció |
|---|---|---|---|
file |
file | Sí | El document a traduir (màx 10MB) |
target_language |
string | Sí | Target language code (e.g., "es", "fr", "de") |
source_language |
string | No | Source language code. Default: "auto" (auto-detect) |
Tipus de fitxer acceptats
.txt- Fitxers de text pla.docx- Documents de paraules.pdf- Documents PDF (incloent- hi l' escanejat).json- Fitxers JSON (valors de cadena sense traduir).xml- Fitxers XML
.srt- Fitxers de subtítols.po/.pot- Fitxers de traducció de gettext.jpg/.jpeg- Imatges JPEG (OCR).png- Imatges PNG (OCR).tiff/.tif- Imatges TIFF (OCR).bmp- Imatges BMP (OCR).webp- Imatges WebP (OCR)
Exemple (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 Fitxer.
Resposta
{
"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"
}
Valors d' estat
pending |
S' ha pujat el fitxer, esperant que es processin |
processing |
Traducció en progrés |
completed |
S' ha completat la traducció, s' està baixant disponible@ info: status |
failed |
Ha fallat la traducció (comprovació d' error_ missatge) |
GET https://api.translateapi.ai/api/v1/translate/document/{id}/
Comprova l' estat d' una traducció del document o recuperar l' URL de baixada.
Resposta
{
"id": 123,
"original_filename": "document.docx",
"status": "completed",
"translated_file_url": "/media/translated/document_es.docx",
"character_count": 5420
}
Detecció d' idioma
La detecció de l' idioma es construeix en cada petició de traducció. Estableix source_language to "auto" (o ometre-ho) i es retorna l' idioma detectat en la resposta.
POST https://api.translateapi.ai/api/v1/translate/
Petició del cos
{
"text": "Bonjour, comment allez-vous?",
"target_language": "en"
}
Resposta
{
"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
}
La source_language El camp en la resposta mostra l' idioma detectat quan s' usa la detecció automàtica.
Idiomes acceptats
Obtén la llista de tots els idiomes acceptats.
GET https://api.translateapi.ai/api/v1/translate/languages/
Resposta
{
"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"},
...
]
}
Models de traducció
Nosaltres utilitzem models de traducció d' origen obert a l' estat executant- se en la nostra infraestructura de GPU. Tots els models són amb llicència comercial (Apche 2.0).
| Model | Idiomes | Millor per |
|---|---|---|
| Helsinki-NLP/opus-mt | parells d' idioma 50+ | Idioma comuns (EN, ES, FR, DE, IT, RU, ZH, JA, etc.) |
| Google MADLAD-400 | 400+ llengües | Curs llengües, cobertura completa |
L' API selecciona automàticament el millor model per a la vostra parella d' idioma. Podeu especificar opcionalment un engine Paràmetre:
| Motor | Descripció |
|---|---|
"auto" |
Per omissió, intenta Huginar Face primer, torna a MAD-400 |
"huggingface" |
Força a Hubrago Face/MariTTT (màcia més ràpid, 50+) |
"madlad" |
Força MADDDA- 400 (400 llengües) |
Gestió d' errors
L' API usa codis estàndard d' estat HTTP per a indicar l' èxit o el fracàs.
| Codi | Descripció |
|---|---|
200 |
Èxit |
400 |
Petició incorrecta - paràmetres no vàlids |
401 |
No autoritzat - clau de l' API no vàlida o no mancada |
402 |
Pagament requerit - S' ha excedit la quota de caràcters del diari |
429 |
Massa sol· licituds - S' ha excedit el límit de velocitat |
503 |
Servei no disponible - motor de traducció temporalComment |
Format de resposta d' error
{
"error": "daily_limit_exceeded",
"credits_remaining": 0,
"daily_limit": 100000
}
Límits de taxa
Els límits van variar pel pla. Mireu fixació de preus per als detalls sencers:
| Pla | Caràcters/Month | Preu | |
|---|---|---|---|
| Lliure | 250,000 | $0 | Signa lliure |
| Iniciador | 2,500,000 | $9/mounit description in lists | Subscriu |
| Pro | 10,000,000 | $29/mounit description in lists | Subscriu |
| Negocis | 40,000,000 | $79/mounit description in lists | Subscriu |
| Escala | 125,000,000 | $199/mounit description in lists | Subscriu |
Quan superis el teu límit, rebràs un 429 Too Many Requests Resposta fins al mes següent o bé actualitzeu.
Nuvolositat auto- desplaçament
La traducció API s' executa en instàncies de la GPU dedicats a NVIDIA A100 amb escalat horitzontal automàtic. Quan s' incrementa la demanda, les instàncies de la GPU addicionals s' executen en minuts per a mantenir una resposta ràpida. Això vol dir que la nostra API pot gestionar peticions bastant il· limitats sense degradació des d' una sola sol· licitud a milers de minuts.