API-dokumentado

Integri potencan tradukon en viajn aplikaĵojn per nia simpla REST API.

Komenco

The TranslateAPI provides a simple REST interface for translating text between 180+ languages. All API endpoints return JSON responses.

Baza URLo: https://api.translateapi.ai/api/v1/
RapidlanĉoComment

Fari vian unuan tradukopeton:

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!"
    }
}

Aŭtentigo

Aŭtentigu viajn petojn uzante API-ŝlosilon. Vi povas krei API-ŝlosilojn el via stirtabulo.

Aŭtentigo de kapoj (rekomendita)
Authorization: Bearer ta_your_api_key_here
Query Parameter
https://api.translateapi.ai/api/v1/translate/?api_key=ta_your_api_key_here
Sekurigu viajn API-ŝlosilojn! Ne malkaŝi ilin en klientflanka kodo aŭ publikaj deponejoj.

Traduki tekston

Traduki tekston al unusola cela lingvo.

POST https://api.translateapi.ai/api/v1/translate/
Petokorpo
Parametroj & Tipo: Necesa Priskribo
text string Jes Teksto por traduki (maksimume 50, 000 signoj)
target_language string Jes* Target language code (e.g., "es", "fr", "de")
source_language string @ info: status Source language code. Default: "auto" (auto-detect)

* Uzo target_language (ĉeno) por ununura lingvo aŭ target_languages (areo) por multoblaj. Vidu Plurcela Traduko.

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

Plurcela Traduko

Traduki tekston al pluraj lingvoj en unuopa peto. Uzis la saman finpunkton kiel unuopa traduko.

Tipo: Vi povas traduki ĝis 50 lingvojn en ununura peto.
POST https://api.translateapi.ai/api/v1/translate/
Petokorpo
{
    "text": "Hello, world!",
    "target_languages": ["es", "fr", "de", "ja"],
    "source_language": "en"
}

Uzu target_languages (areo) anstataŭ target_language (ĉeno) por multoblaj celoj.

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

Bataj tradukoj

Traduki plurajn tekstojn samtempe per nesinkrona prilaborado. Sendu grupon kaj voĉdonu por rezultoj.

Limigoj: maksimume 500 tekstoj po grupo, maksimume 750 eroj entute (tekstoj × cellingvoj). La taskoj daŭras 30 minutojn post la komenco de la prilaborado (atenda tempo ne estas kalkulita).
La prilabora tempo varias laŭ la lingvo: komunaj lingvoj (hispana, franca, germana, ktp.) uzas rapidajn modelojn (~ 0. 1s por teksto), dum malpli oftaj lingvoj uzas nian grandan plurlingvan modelon (~ 1- 3s por teksto). Bato de 100 tekstoj kutime kompletiĝas en 10- 30 sekundoj por komunaj lingvoj, aŭ 2- 5 minutoj por malpli oftaj. Por plej bonaj rezultoj, sendu 1 cellingvon por batopeto kaj tenu la batajn grandecojn sub 50 tekstoj.
POST https://api.translateapi.ai/api/v1/translate/batch/
Paŝo 1: Sendi grupon
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"
}'
Respondo (HTTP 202 akceptita)
{
    "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/"
}
@ action: inmenu
GET https://api.translateapi.ai/api/v1/jobs/{job_id}/
Ekzemplo de polling (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)
Respondo (atendita — en vico, atendas GPU)
{
    "job_id": "67535b2b-...",
    "status": "pending",
    "processed_texts": 0,
    "total_texts": 3,
    "progress_percentage": 0.0,
    "queue_position": 3
}
Respondo (dum prilaborado)
{
    "job_id": "67535b2b-...",
    "status": "processing",
    "processed_texts": 1,
    "total_texts": 3,
    "progress_percentage": 33.33,
    "queue_position": null
}
Respondo (preta)
{
    "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
    }
}
Realtempa progreso- spurado

Ĉiu voĉdona respondo enhavas realtempajn progresajn kampojn por ke vi povas rigardi precize kio okazas kun via grupo:

Kampo Priskribo
status Nuna taskostato: pending (en vico, atendas GPU-laboriston), processing (aktive tradukante), completed, failed
processed_texts Nombro de unuopaj tradukoj plenumitaj ĝis nun. Ĝisdatigas realtempe dum ĉiu teksto estas tradukita.
total_texts Totala nombro de tradukoj en ĉi tiu aro (tekstoj × cellingvoj).
progress_percentage Procento de kompletigo (0- 100). Kalkulita el processed_ texts / total_ texts.
queue_position Via pozicio en la vico kiam la stato estas "atendita" (1 = sekva). Nulo kiam prilaborita aŭ kompletigita. Uzu tion por taksi la atendan tempon kaj montri la vican staton al viaj uzantoj.
processing_time Totala prilaboradotempo en sekundoj (disponebla post kompletigo).
Tipo: Kiam status estas "pending", la GPU- laborantoj estas okupitaj per aliaj grupoj. Check queue_position por vidi kiom da taskoj antaŭas la vian (1 = vi estas la venonta). Via tasko komenciĝos aŭtomate - neniu ago necesas, nur daŭrigu la enketadon.
Plej bonaj praktikoj por grandaj laborŝarĝoj
  • Sendi 1 celan lingvon por batch- peto. Tio tenas ĉiun baĉon rapida kaj faciligas spuri la progreson.
  • @ info: status
  • Lanĉi maksimume 2 samtempajn taskojn. La grafika procesoro prilaboras 2 taskojn paralele - aldonaj taskoj atendas kaj ne estos lanĉitaj pli rapide.
  • Post tempolimo, reprovu la saman task_id anstataŭ sendi novan grupon. La origina tasko eble ankoraŭ estas prilaborata en la grafika procesoro.
  • Demandi ĉiun 3- 5 sekundojn. Pli oftaj demandoj ne plirapidigas la procezon.
Plurlingva grupo

Traduki plurajn tekstojn en plurajn lingvojn samtempe:

{
    "texts": ["Hello", "Goodbye"],
    "target_languages": ["es", "fr"],
    "source_language": "en"
}
Finitaj rezulto_datumoj
{
    "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
}
Petaj parametroj
Parametroj & Tipo: Necesa Priskribo
texts array Jes Array of strings to translate
target_language string Jes* Cellingva kodo por unusola lingvo
target_languages array Jes* Arbo de cellingvaj kodoj por pluraj lingvoj
source_language string @ info: status Source language code. Default: "auto"

* Donu aŭ target_languagetarget_languages, ne ambaŭ.

Nesinkrona prilaborado: Bataj petoj tuj revenas kun job_id. Truo GET /api/v1/jobs/{job_id}/ ĝis status estas "completed", tiam legu result_data por tradukoj. Use progress_percentage por spuri la progreson.

Dokumenta Traduko

Traduki tutajn dokumentojn konservante formatadon. Subtenas plurajn dosierformatojn.

POST https://api.translateapi.ai/api/v1/translate/document/
Peto (multoblaj partoj/form-datumoj)
Parametroj & Tipo: Necesa Priskribo
file file Jes La dokumento por traduki (maksimume 10MB)
target_language string Jes Target language code (e.g., "es", "fr", "de")
source_language string @ info: status Source language code. Default: "auto" (auto-detect)
Subtenitaj dosiertipoj
  • .txt - Plentekstaj dosieroj
  • .docx - Word-dokumentoj
  • .pdf - PDF-dokumentoj (inkluzive de skanitaj)
  • .json - JSON- dosieroj (tradukas ĉenajn valorojn)
  • .xml - XML- dosieroj
  • .srt - Subtekstdosieroj
  • .po / .pot - Gettext tradukaj dosieroj
  • .jpg / .jpeg - JPEG- bildoj (OCR)
  • .png - PNG- bildoj (OCR)
  • .tiff / .tif - TIFF bildoj (OCR)
  • .bmp - BMP- bildoj (OCR)
  • .webp - WebP bildoj (OCR)
OCR- subteno: Bilddosieroj kaj skanitaj PDF-oj estas traktitaj per optika signorekono (OCR) por ekstrakti tekston antaŭ tradukado. Por plej bonaj rezultoj, uzu klarajn, altdifinajn bildojn.
Ekzemplo (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"
Bilddosieroj estas traktitaj per OCR por ekstrakti tekston antaŭ tradukado. La tradukita eligo estas redonita kiel .txt dosiero.
Respondo
{
    "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"
}
Statovaloroj
pending Dosiero alŝutita, atendas prilaboradon
processing Traduko en progreso
completed Traduko preta, elŝutebla
failed Traduko malsukcesis (check error_message)
GET https://api.translateapi.ai/api/v1/translate/document/{id}/

@ action: inmenu

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

Lingva detekto

Lingva detekto estas enkonstruita en ĉiun tradukopeton. Set source_language to "auto" (aŭ omitu ĝin) kaj la malkovrita lingvo estos redonita en la respondo.

POST https://api.translateapi.ai/api/v1/translate/
Petokorpo
{
    "text": "Bonjour, comment allez-vous?",
    "target_language": "en"
}
Respondo
{
    "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 @ label: textbox

Subtenitaj lingvoj

Elpreni la liston de ĉiuj subtenataj lingvoj.

GET https://api.translateapi.ai/api/v1/translate/languages/
Respondo
{
    "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"},
        ...
    ]
}

Tradukado

Ni uzas la plej modernajn malfermkodajn tradukajn modelojn funkciantajn sur nia propra GPU-infrastrukturo. Ĉiuj modeloj estas komerce licencitaj (Apache 2.0).

& Modelo: Lingvoj Plej bona por
Helsinki-NLP/opus-mt 50+ lingvoparoj Komunaj lingvoj (EN, ES, FR, DE, IT, PT, RU, ZH, JA, ktp.)
Google MADLAD-400 400+ lingvoj Raraj lingvoj, ampleksa kovro

La API aŭtomate elektas la plej bonan modelon por via lingva paro. Vi povas opcione doni engine parametro:

Motoro Priskribo
"auto" Apriora. Unue provas HuggingFace, poste revenas al MADLAD- 400
"huggingface" Devigi HuggingFace/MarianMT (plej rapida, pli ol 50 lingvoj)
"madlad" Force MADLAD-400 (pli ol 400 lingvoj)

Erarotraktado

La API uzas standardajn HTTP-statusajn kodojn por indiki sukceson aŭ malsukceson.

Kodo Priskribo
200 Sukceso
400 Malbona peto - Nevalidaj parametroj
401 Neaŭtorizita - Nevalida aŭ mankanta API- ŝlosilo
402 Pago necesas - ĉiutaga signolimo superita
429 Tro da petoj - Limigo de rapideco superita
503 Servo Nedisponebla - Traduka maŝino provizore malfunkcias
Eraroresponda formato
{
    "error": "daily_limit_exceeded",
    "credits_remaining": 0,
    "daily_limit": 100000
}

Limigoj de rapideco

Limoj varias laŭ plano. Vidu pricing por plenaj detaloj:

Plano Signoj/monato Prezo
Libera 250,000 $0 Aliĝi senpage
Lanĉilo 2,500,000 $9/monatoj Aboni
Pro 10,000,000 $29/monatoj Aboni
Negoco 40,000,000 $79/monatoj Aboni
Skali 125,000,000 $199/monatoj Aboni

Kiam vi superos vian limigon, vi ricevos 429 Too Many Requests respondo ĝis la venonta monato aŭ vi ĝisdatigos.

Aŭtomate-skaliĝanta nuba infrastrukturo

TranslateAPI ruliĝas sur dediĉitaj NVIDIA A100 GPU-oj kun aŭtomata horizontala skalado. Kiam la postulo pliiĝas, aldonaj GPU-oj estas lanĉitaj ene de minutoj por konservi rapidajn respondtempojn. Tio signifas, ke nia API povas trakti preskaŭ senlimajn samtempajn petojn sen degradado — de unuopa peto al miloj po minuto.

Taksi tiun paĝon
Dankon pro via taksado!
/5 bazita sur Notoj