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.
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
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.
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.
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). |
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_language aŭ target_languages, ne ambaŭ.
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)
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"
.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.