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.

URL base: 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
Mantingueu les vostres claus API segures! No els exposis al codi client o als repositoris públics.

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 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ó.

Pista: Podeu traduir fins a 50 llengües en una sola sol·licitud.
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.

Límits: màxim 500 texts per lots, els màxims elements totals (texts × llengües de destí). Tasques temporals que s' iniciïn 30 minuts després del processament (no es compta el temps d' espera).
El processament del temps varia el llenguatge: idiomes comuns (espanyols, francès, etc.) usa models ràpids (~0. 1s per text), mentre que menys idiomes comuns usen el nostre gran model multilingüe (~1- 3s per text). Un lot de 100- text normalment complet en 10- 30 segons per idiomes comuns, o 2- 5 minuts per menys comuns. Per a obtenir millors resultats, envieu un idioma per lots per a sol· licitar i mantenir mides per lots sota de 50 textos.
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).
Pista: Quan 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 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.

S' està processant l' async: Les peticions per lots retornen immediatament amb una 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 El document a traduir (màx 10MB)
target_language string 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)
Implementació ROC: Els fitxers d' imatge i els PDF escanejats es processen amb reconeixement òptic de caràcters (OCR) per a extreure text abans de la traducció. Per a millors resultats, useu imatges neta i d' alta resolució.
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"
Els fitxers d' imatge es processen amb ROC per a extreure text abans de la traducció. La sortida traduïda es retorna com a .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.

Valora aquesta pàgina
Gràcies per la seva puntuació!
/5 basat en valoracions