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.

URL Asas: 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
Simpan kunci API anda dengan selamat! Jangan paparkan mereka dalam kod sisi klien atau repositori awam.

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.

Jenis: Anda boleh menterjemahkan sehingga 50 bahasa dalam satu permintaan.
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.

Had: maks 500 teks per lot, maks 750 item keseluruhan (teks × bahasa sasaran). Masa tamat kerja 30 minit selepas pemprosesan bermula (masa tunggu baris gilir tidak dikira).
Masa pemprosesan berlainan mengikut bahasa: bahasa biasa (Spanyol, Perancis, Jerman, dll.) menggunakan model pantas (~0.1s per teks), manakala bahasa yang kurang biasa menggunakan model multibahasa kami yang besar (~1-3s per teks). Satu kumpulan 100-teks biasanya selesai dalam 10-30 saat untuk bahasa biasa, atau 2-5 minit untuk yang kurang biasa. Untuk hasil terbaik, hantar 1 bahasa sasaran per permintaan kumpulan dan simpan saiz kumpulan di bawah 50 teks.
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).
Jenis: Bila 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.

Pemprosesan Asynchronous: Permintaan kumpulan kembali dengan segera dengan a 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)
Sokongan OCR: Fail imej dan PDF yang diimbas diproses dengan pengenalan aksara optikal (OCR) untuk mengekstrak teks sebelum terjemahan. Untuk hasil terbaik, gunakan imej yang jelas, resolusi tinggi.
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"
Fail imej diproses dengan OCR untuk mengekstrak teks sebelum terjemahan. Output terjemahan dikembalikan sebagai .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.

Nilaikan halaman ini
Terima kasih kerana penilaian anda!
/5 berdasarkan penarafan