Dokumen
Nggabungake terjemahan kuat menyang aplikasi sampeyan karo REST API sederhana kita.
Getting Started
TranslateAPI nyadiakeun antarmuka REST sederhana pikeun ngawaler teks antara 180+ basa. Sadaya titik tungtung API balikkeun tanggapan JSON.
https://api.translateapi.ai/api/v1/
Mulai Cepat
Nggawe pitakon terjemahan kapisanmu:
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!"
}
}
Autentikasi
Autentikasi pitakonan nganggo kunci API. Sampeyan bisa nyipta kunci API saka dashboard.
Autentikasi bagéan ndhuwur (dianjurake)
Authorization: Bearer ta_your_api_key_here
Parameter Query
https://api.translateapi.ai/api/v1/translate/?api_key=ta_your_api_key_here
Түүхий текст
Terjemah teks menyang siji basa tujuan.
POST https://api.translateapi.ai/api/v1/translate/
Tubuh Panggonan
| Parameter | _Jenis | Diperlukan | Keterangan |
|---|---|---|---|
text |
string | Iya | Teks kanggo diterjemahake (nganti 50.000 aksara) |
target_language |
string | Ya* | Target language code (e.g., "es", "fr", "de") |
source_language |
string | Ora | Source language code. Default: "auto" (auto-detect) |
* Gunakan target_language (string) kanggo basa tunggal utawa target_languages (array) kanggo multiple. Lihat Terjemahan multi-target.
Balasan
{
"translated_text": "Hola, mundo!",
"source_language": "en",
"target_language": "es",
"translations": {
"es": "Hola, mundo!"
},
"character_count": 13,
"translation_time": 0.45
}
Terjemahan multi-target
Nerjemahkeun teks kana sababaraha basa dina panyungsi tunggal. Ngagunakeun titik akhir anu sami sareng panyungsi tunggal.
POST https://api.translateapi.ai/api/v1/translate/
Tubuh Panggonan
{
"text": "Hello, world!",
"target_languages": ["es", "fr", "de", "ja"],
"source_language": "en"
}
Pangguna target_languages (array) ngganti target_language (string) kanggo target ganda.
Balasan
{
"source_language": "en",
"translations": {
"es": "Hola, mundo!",
"fr": "Bonjour, monde!",
"de": "Hallo, Welt!",
"ja": "こんにちは、世界!"
},
"character_count": 52,
"translation_time": 2.31
}
Terjemah
Terjemahkeun sababaraha teks sakaligus nganggo pamrosésan async. Kirim batches sarta polls pikeun hasil.
POST https://api.translateapi.ai/api/v1/translate/batch/
Langkah 1: Kirim 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"
}'
Jawaban (HTTP 202 Diterima)
{
"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/"
}
Langkah 2: Poll for Results
GET https://api.translateapi.ai/api/v1/jobs/{job_id}/
Contoh 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)
Balasan (ditunggu-tunggu — diurutan, ngenteni GPU)
{
"job_id": "67535b2b-...",
"status": "pending",
"processed_texts": 0,
"total_texts": 3,
"progress_percentage": 0.0,
"queue_position": 3
}
Jawaban (sadurunge diproses)
{
"job_id": "67535b2b-...",
"status": "processing",
"processed_texts": 1,
"total_texts": 3,
"progress_percentage": 33.33,
"queue_position": null
}
Jawaban (rampung)
{
"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
}
}
Pelacakan kemajuan wektu nyata
Saben balasan survei ngawengku medan kemajuan wektu nyata supaya sampeyan bisa ngawasi persis apa sing kedadeyan karo batch sampeyan:
| Lapangan | Keterangan |
|---|---|
status |
Keadaan tugas saiki: pending (kapungkur, ngenteni GPU worker), processing (aktif nerjemahake), completed, failed |
processed_texts |
Jumlah terjemahan individu anu réngsé dugi ka ayeuna. Ngamutahirkeun dina waktu nyata nalika unggal teks diterjemahkeun. |
total_texts |
Jumlah total terjemahan dina batches ieu (teks × basa target). |
progress_percentage |
Persén réngsé (0-100). Dikalkulasi ti processed_texts / total_texts. |
queue_position |
Posisi anjeun dina gulungan lamun statusna "ngadatar" (1 = saterusna). Null lamun diolah atawa réngsé. Gunakeun ieu pikeun ngukur waktos tunggu sarta némbongkeun status gulungan ka pamaké anjeun. |
processing_time |
Total waktos pamrosésan dina detik (disadiakeun nalika réngsé). |
status is "pending", para pekerja GPU sibuk karo batches liyane. Check queue_position pikeun ningali sabaraha padamelan anu ngadepan padamelan anjeun (1 = anjeun anu salajengna). Padamelan anjeun bakal dimimitian sacara otomatis — teu aya tindakan anu diperlukeun, ngan tetep polling.
Best Practices kanggo Workloads gedhe
- Kirim 1 basa target per panjaluk batch. Hal ieu ngajaga saben batch gancang sarta ngajadikeun pangwangunan gampang dilacak.
- Ngajaga batches dina 50-100 teks. batches leutik réngsé langkung gancang sarta méré anjeun pangénggalna pamutahiran langkung sering.
- Laksanakeun paling loba 2 padamelan batches sawaktu-waktu. GPU ngaproses 2 padamelan batches sawaktu-waktu — padamelan tambahan diulit-ulit sarta moal dimimitian langkung gancang.
- Nalika timeout, polling deui job_id anu sami tinimbang ngirimkeun batch anyar. Karya aslina masih bisa diolah dina GPU.
- Polling saben 3-5 detik. Polling langkung sering henteu ngirangan laju pamrosesan.
Multi-Language Batch
Terjemahake sawetara teks menyang pirang-pirang basa sekaligus:
{
"texts": ["Hello", "Goodbye"],
"target_languages": ["es", "fr"],
"source_language": "en"
}
Hasil_data rampung
{
"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
}
Parameter pitakonan
| Parameter | _Jenis | Diperlukan | Keterangan |
|---|---|---|---|
texts |
array | Iya | Array strings kanggo disalin |
target_language |
string | Ya* | Kode basa target kanggo basa tunggal |
target_languages |
array | Ya* | Array saka kode basa target kanggo akeh basa |
source_language |
string | Ora | Source language code. Default: "auto" |
* Nyawiji salah siji target_language utawa target_languages, ora loro.
job_id. Hole GET /api/v1/jobs/{job_id}/ nganti status is "completed", banjur baca result_data kanggo terjemahan. progress_percentage to track progress.
Terjemahan Dokumen
Terjemahake sakumna dokumén nalika ngalestarikeun pangolahan. Dukung format berkas ganda.
POST https://api.translateapi.ai/api/v1/translate/document/
Panggonan (multipart/form-data)
| Parameter | _Jenis | Diperlukan | Keterangan |
|---|---|---|---|
file |
file | Iya | Dokumen kanggo diterjemahake (maksimum 10MB) |
target_language |
string | Iya | Target language code (e.g., "es", "fr", "de") |
source_language |
string | Ora | Source language code. Default: "auto" (auto-detect) |
Tipe Fail sing Didukung
.txt- Fayil teks biasa.docx- Dokumen Word.pdf- Dokumen PDF (kalebu sing dipindai).json- Berkas JSON (ngerjemahake nilai string).xml- Fail XML
.srt- Fayl subtitle.po/.pot- Fail terjemahan Gettext.jpg/.jpeg- Gambar JPEG (OCR).png- Gambar PNG (OCR).tiff/.tif- Gambar TIFF (OCR).bmp- Gambar BMP (OCR).webp- Gambar WebP (OCR)
Conto (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 file.
Balasan
{
"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"
}
Nilai Status
pending |
Berkas wis diunggah, ngenteni diproses |
processing |
Translation in progress |
completed |
Terjemahan rampung, bisa diunduh |
failed |
terjemahan gagal (cek error_message) |
GET https://api.translateapi.ai/api/v1/translate/document/{id}/
Ngetes status terjemahan dokumèn utawa ngundhuh URL.
Balasan
{
"id": 123,
"original_filename": "document.docx",
"status": "completed",
"translated_file_url": "/media/translated/document_es.docx",
"character_count": 5420
}
Penemuan Basa
Penemuan basa diwangun ing saben panerjemahan. Set source_language to "auto" (atawa ulah dilaksanakeun) sarta basa anu kapanggih bakal dikembalikeun dina balasan.
POST https://api.translateapi.ai/api/v1/translate/
Tubuh Panggonan
{
"text": "Bonjour, comment allez-vous?",
"target_language": "en"
}
Balasan
{
"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
}
The source_language medan dina balasan nunjukkeun basa anu ditéwak nalika deteksi otomatis digunakeun.
Basa- basa sing didukung
Njupuk dhaptar saka kabeh basa sing didhukung.
GET https://api.translateapi.ai/api/v1/translate/languages/
Balasan
{
"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"},
...
]
}
Model terjemahan
Kami nganggo model terjemahan sumber terbuka anu paling canggih anu dijalankeun dina infrastruktur GPU urang sorangan. Sadaya model dilisensikan sacara komersial (Apache 2.0).
| Model | Basa | Paling apik kanggo |
|---|---|---|
| Helsinki-NLP/opus-mt | 50+ pasangan basa | Basa-basa umum (EN, ES, FR, DE, IT, PT, RU, ZH, JA, lsp.) |
| Google MADLAD-400 | 400+ basa | Basa-basa langka, panglipur komprehensif |
API otomatis milih model sing paling apik kanggo pasangan basa sampeyan. Sampeyan bisa nyetel pilihan engine پارامتر:
| Mesin | Keterangan |
|---|---|
"auto" |
Piawai. Ngupayakake HuggingFace pisanan, banjur bali menyang MADLAD-400 |
"huggingface" |
Force HuggingFace/MarianMT (paling cepet, 50+ basa) |
"madlad" |
Force MADLAD-400 (400+ basa) |
Pengendalian Kesalahan
API nggunakake kode status HTTP standar kanggo nuduhake sukses utawa gagal.
| Kode | Keterangan |
|---|---|
200 |
Sukses |
400 |
Panjaluk ala - Parameter ora sah |
401 |
Tanpa ijin - Kunci API ora sah utawa ilang |
402 |
Pembayaran Diperlukan - Jumlah aksara saben dina wis ngluwihi |
429 |
Akèh banget panjaluk - wates kecepatan ngluwihi |
503 |
Service Unavailable - Translation engine temporarily down |
Bentuk Balasan Kesalahan
{
"error": "daily_limit_exceeded",
"credits_remaining": 0,
"daily_limit": 100000
}
Batas kecepatan
Limits vary by plan. See pricing for full details:
| Plane | Карактар/Ай | Harga | |
|---|---|---|---|
| Bebas | 250,000 | $0 | Gabung Free |
| Pemula | 2,500,000 | $9/ms | Langganan |
| Pro | 10,000,000 | $29/ms | Langganan |
| Bisnis | 40,000,000 | $79/ms | Langganan |
| Skala | 125,000,000 | $199/ms | Langganan |
Nalika sampeyan ngluwihi watesan, sampeyan bakal nampa 429 Too Many Requests respon nganti wulan sabanjure utawa sampeyan 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.