Dokumentasi API
Mengintegrasikan terjemahan yang kuat ke dalam aplikasi anda dengan API REST mudah kami.
Memulakan
TranslateAPI menyediakan antaramuka REST mudah untuk menterjemah teks antara 180+ bahasa. Semua titik akhir API mengembalikan maklum balas JSON.
https://api.translateapi.ai/api/v1/
Mula Cepat
Buat permintaan terjemahan pertama anda:
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!"
}
}
Pengesahan
Sahkan permintaan anda menggunakan kekunci API. Anda boleh cipta kekunci API dari papan pemuka.
Pengesahan Pengepala (Dicadangkan)
Authorization: Bearer ta_your_api_key_here
Parameter Pertanyaan
https://api.translateapi.ai/api/v1/translate/?api_key=ta_your_api_key_here
Terjemah Teks
Terjemah teks ke dalam bahasa sasaran tunggal.
POST https://api.translateapi.ai/api/v1/translate/
Tubuh Permintaan
| Parameter | Jenis | Diperlukan | Huraian |
|---|---|---|---|
text |
string | Ya | Teks untuk diterjemah (maksimum 50,000 aksara) |
target_language |
string | Ya* | Target language code (e.g., "es", "fr", "de") |
source_language |
string | Tidak | Source language code. Default: "auto" (auto-detect) |
* Guna target_language (rantai) untuk bahasa tunggal atau target_languages (array) untuk berbilang. Lihat Penterjemahan Sasaran Berbilang.
Balasan
{
"translated_text": "Hola, mundo!",
"source_language": "en",
"target_language": "es",
"translations": {
"es": "Hola, mundo!"
},
"character_count": 13,
"translation_time": 0.45
}
Penterjemahan Sasaran Berbilang
Terjemah teks ke beberapa bahasa dalam satu permintaan. Guna titik akhir yang sama sebagai terjemahan tunggal.
POST https://api.translateapi.ai/api/v1/translate/
Tubuh Permintaan
{
"text": "Hello, world!",
"target_languages": ["es", "fr", "de", "ja"],
"source_language": "en"
}
Guna target_languages (aras) bukannya target_language (string) untuk sasaran berbilang.
Balasan
{
"source_language": "en",
"translations": {
"es": "Hola, mundo!",
"fr": "Bonjour, monde!",
"de": "Hallo, Welt!",
"ja": "こんにちは、世界!"
},
"character_count": 52,
"translation_time": 2.31
}
Terjemahan Baru
Terjemah teks berbilang pada satu masa dengan pemprosesan asynchronous. Hantar sepucuk dan undian untuk hasil.
POST https://api.translateapi.ai/api/v1/translate/batch/
Langkah 1: Hantar 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"
}'
Balasan (HTTP 202 Terima)
{
"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: Soalan untuk Hasil
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 (berlengah — berbaris gilir, menunggu GPU)
{
"job_id": "67535b2b-...",
"status": "pending",
"processed_texts": 0,
"total_texts": 3,
"progress_percentage": 0.0,
"queue_position": 3
}
Balasan (semasa pemprosesan)
{
"job_id": "67535b2b-...",
"status": "processing",
"processed_texts": 1,
"total_texts": 3,
"progress_percentage": 33.33,
"queue_position": null
}
Balasan (selesai)
{
"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
}
}
Penjejak Kemajuan Masa-Asli
Setiap jawapan undian merangkumi medan kemajuan masa nyata supaya anda boleh memantau tepat apa yang berlaku dengan kumpulan anda:
| Medan | Huraian |
|---|---|
status |
Status kerja semasa: pending (berbaris gilir, menunggu pekerja GPU), processing (secara aktif menerjemahkan), completed, failed |
processed_texts |
Bilangan terjemahan individu yang selesai setakat ini. Kemaskini dalam masa nyata apabila setiap teks diterjemahkan. |
total_texts |
Jumlah jumlah terjemahan dalam kumpulan ini (teks × bahasa sasaran). |
progress_percentage |
Peratusan penyelesaian (0-100). Dikira dari processed_texts / total_texts. |
queue_position |
Posisi anda dalam baris gilir bila status adalah "tertangguh" (1 = seterusnya). Null bila diproses atau selesai. Guna ini untuk memperkirakan masa menunggu dan paparkan status baris gilir kepada pengguna anda. |
processing_time |
Jumlah masa pemprosesan dalam saat (ada apabila selesai). |
status adalah "pending", pekerja GPU sibuk dengan bakul lain. Semak queue_position untuk melihat berapa banyak kerja di hadapan anda (1 = anda seterusnya). Tugas anda akan bermula secara automatik — tiada tindakan diperlukan, teruskan mengundi.
Amalan Terbaik untuk Muatan Kerja Besar
- Hantar 1 bahasa sasaran setiap permintaan kumpulan. Ini menjadikan setiap kumpulan pantas dan menjadikan kemajuan mudah untuk diikuti.
- Kekalkan bakul pada 50-100 teks. Bakul yang lebih kecil selesai lebih cepat dan memberikan anda kemaskini kemajuan yang lebih kerap.
- Jalankan paling banyak 2 tugas batch serentak. GPU memproses 2 tugas batch secara serentak — tugas tambahan berbaris gilir dan tidak akan bermula lebih cepat.
- Pada tamat masa, kaji semula job_id yang sama bukannya menghantar batch baru. Tugas asal mungkin masih diproses pada GPU.
- Soal setiap 3-5 saat. Soal yang lebih kerap tidak mempercepat pemprosesan.
Batch Berbilang-Bahasa
Terjemah teks berbilang ke berbilang bahasa pada satu masa:
{
"texts": ["Hello", "Goodbye"],
"target_languages": ["es", "fr"],
"source_language": "en"
}
Data_hasil selesai
{
"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 Permintaan
| Parameter | Jenis | Diperlukan | Huraian |
|---|---|---|---|
texts |
array | Ya | Aras rentetan untuk diterjemah |
target_language |
string | Ya* | Kod bahasa sasaran untuk bahasa tunggal |
target_languages |
array | Ya* | Aras kod bahasa sasaran untuk berbilang bahasa |
source_language |
string | Tidak | Source language code. Default: "auto" |
* Berikan sama ada target_language atau target_languages, bukan kedua-duanya.
job_id. Lubang GET /api/v1/jobs/{job_id}/ sehingga status adalah "completed", kemudian baca result_data untuk terjemahan. Guna progress_percentage untuk menjejaki kemajuan.
Terjemahan Dokumen
Terjemahkan keseluruhan dokumen sambil memelihara formatan. Menyokong beberapa format fail.
POST https://api.translateapi.ai/api/v1/translate/document/
Permintaan (multipart/form-data)
| Parameter | Jenis | Diperlukan | Huraian |
|---|---|---|---|
file |
file | Ya | Dokumen untuk diterjemah (maksimum 10MB) |
target_language |
string | Ya | Target language code (e.g., "es", "fr", "de") |
source_language |
string | Tidak | Source language code. Default: "auto" (auto-detect) |
Jenis fail disokong
.txt- Fail teks biasa.docx- Dokumen Word.pdf- Dokumen PDF (termasuk yang diimbas).json- Fail JSON (menterjemah nilai rentetan).xml- Fail XML
.srt- Fail subtajuk.po/.pot- Fail terjemahan Gettext.jpg/.jpeg- Imej JPEG (OCR).png- Imej PNG.tiff/.tif- Imej TIFF (OCR).bmp- Imej BMP (OCR).webp- Imej WebP (OCR)
Contoh (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 fail.
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 |
Fail dimuat naik, menunggu untuk diproses |
processing |
Penterjemahan sedang berjalan |
completed |
Terjemahan lengkap, muat turun tersedia |
failed |
Terjemahan gagal (periksa error_message) |
GET https://api.translateapi.ai/api/v1/translate/document/{id}/
Semak status terjemahan dokumen atau dapatkan URL muat turun.
Balasan
{
"id": 123,
"original_filename": "document.docx",
"status": "completed",
"translated_file_url": "/media/translated/document_es.docx",
"character_count": 5420
}
Pengesanan Bahasa
Pengesanan bahasa dibina dalam setiap permintaan terjemahan. Set source_language to "auto" (atau tinggalkannya) dan bahasa yang dikesan dikembalikan dalam respon.
POST https://api.translateapi.ai/api/v1/translate/
Tubuh Permintaan
{
"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 dalam jawapan menunjukkan bahasa yang dikesan apabila autokesan digunakan.
Bahasa yang disokong
Dapatkan senarai semua bahasa yang disokong.
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 menggunakan model terjemahan sumber terbuka terkini yang berjalan pada infrastruktur GPU kami sendiri. Semua model dilesenkan secara komersial (Apache 2.0).
| Model | Bahasa | Terbaik Untuk |
|---|---|---|
| Helsinki-NLP/opus-mt | 50+ pasangan bahasa | Bahasa umum (EN, ES, FR, DE, IT, PT, RU, ZH, JA, dll.) |
| Google MADLAD-400 | 400+ bahasa | Bahasa langka, liputan komprehensif |
API secara automatik memilih model terbaik untuk pasangan bahasa anda. Anda boleh tentukan secara opsyenal engine parameter:
| Enjin | Huraian |
|---|---|
"auto" |
Lalai. Cuba HuggingFace pertama, kembali ke MADLAD-400 |
"huggingface" |
Paksa HuggingFace/MarianMT (terpantas, 50+ bahasa) |
"madlad" |
Force MADLAD-400 (400+ bahasa) |
Pengendalian Ralat
API menggunakan kod status HTTP piawai untuk menunjukkan kejayaan atau kegagalan.
| Kod | Huraian |
|---|---|
200 |
Kejayaan |
400 |
Permintaan buruk - Parameter tidak sah |
401 |
Tidak dibenarkan - Kekunci API tidak sah atau hilang |
402 |
Pembayaran Diperlukan - Kuota aksara harian melebihi |
429 |
Terlalu Banyak Permintaan - Had kadar melebihi |
503 |
Servis tidak tersedia - enjin terjemahan untuk sementara terhenti |
Format Balasan Ralat
{
"error": "daily_limit_exceeded",
"credits_remaining": 0,
"daily_limit": 100000
}
Had Kadar
Had berbeza mengikut rancangan. Lihat harga untuk perincian penuh:
| Pelan | Aksara/bulan | Harga | |
|---|---|---|---|
| Bebas | 250,000 | $0 | Daftar Masuk |
| Pelancar | 2,500,000 | $9/ms | Langganan |
| Pro | 10,000,000 | $29/ms | Langganan |
| Perniagaan | 40,000,000 | $79/ms | Langganan |
| Skala | 125,000,000 | $199/ms | Langganan |
Apabila anda melebihi had anda, anda akan menerima 429 Too Many Requests respon sehingga bulan depan atau anda menaik taraf.
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.