เอกสาร API
เชื่อมโยงการแปลที่ทรงพลังเข้ากับแอพพลิเคชันของคุณด้วย REST API ง่ายๆของเรา
เริ่มต้น
TranslateAPI ให้บริการอินเทอร์เฟซ REST ง่ายๆ สำหรับการแปลข้อความระหว่าง 180+ ภาษา จุดจบของ API ทั้งหมดจะส่งผลลัพธ์เป็น JSON
1. เอากุญแจ API มา
สร้างบัญชีผู้ใช้ฟรี และสร้างกุญแจ API จากแดชบอร์ด:
- ลงทะเบียนที่ translateapi.ai/signup
- ไปยัง แผงควบคุม → กุญแจ API
- คลิกที่ "สร้างกุญแจ API" และคัดลอกกุญแจของคุณ
กุญแจ API เริ่มด้วย ta_ ตามด้วยตัวอักษร 56 ตัว
https://api.translateapi.ai/api/v1/2. ทำคำขอครั้งแรก
แทนที่ YOUR_ API_ KEY ด้วยกุญแจจากแดชบอร์ดของคุณ:
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!"
$ch = curl_init("https://api.translateapi.ai/api/v1/translate/");
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POST => true,
CURLOPT_HTTPHEADER => [
"Authorization: Bearer YOUR_API_KEY",
"Content-Type: application/json"
],
CURLOPT_POSTFIELDS => json_encode([
"text" => "Hello, world!",
"target_language" => "es"
])
]);
$result = json_decode(curl_exec($ch), true);
echo $result["translated_text"]; // "Hola, mundo!"
payload := strings.NewReader(`{
"text": "Hello, world!",
"target_language": "es"
}`)
req, _ := http.NewRequest("POST", "https://api.translateapi.ai/api/v1/translate/", payload)
req.Header.Set("Authorization", "Bearer YOUR_API_KEY")
req.Header.Set("Content-Type", "application/json")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
var result map[string]interface{}
json.NewDecoder(resp.Body).Decode(&result)
fmt.Println(result["translated_text"]) // "Hola, mundo!"
var client = new HttpClient();
client.DefaultRequestHeaders.Add("Authorization", "Bearer YOUR_API_KEY");
var content = new StringContent(
JsonSerializer.Serialize(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 = JsonSerializer.Deserialize<JsonElement>(
await response.Content.ReadAsStringAsync()
);
Console.WriteLine(result.GetProperty("translated_text")); // "Hola, mundo!"
การตอบสนอง
{
"translated_text": "Hola, mundo!",
"source_language": "en",
"target_language": "es",
"translations": {
"es": "Hola, mundo!"
},
"character_count": 13,
"translation_time": 0.45
}
การตรวจสอบสิทธิ์
ตรวจสอบความถูกต้องของคำร้องขอของคุณโดยใช้กุญแจ API คุณสามารถสร้างกุญแจ API จากข้อมูลของคุณได้ แผงควบคุม.
การตรวจสอบสิทธิ์ส่วนหัว (แนะนำ)
Authorization: Bearer ta_your_api_key_here
หัวแถบ
Authorization: ApiKey ta_your_api_key_here
พารามิเตอร์คำถาม
https://api.translateapi.ai/api/v1/translate/?api_key=ta_your_api_key_here
แปลข้อความ
แปลข้อความเป็นภาษาเดียว
POST https://api.translateapi.ai/api/v1/translate/
ตำแหน่งของคำร้อง
| พารามิเตอร์ | ประเภท | จำเป็น | คำอธิบาย |
|---|---|---|---|
text |
string | ใช่ | ข้อความที่จะแปล (สูงสุด 50, 000 ตัวอักษร) |
target_language |
string | ใช่* | Target language code (e.g., "es", "fr", "de") |
source_language |
string | ไม่มี | Source language code. Default: "auto" (auto-detect) |
engine |
string | ไม่มี | กลไกแปลภาษา: "auto" (ปริยาย), "huggingface", หรือ "madlad" โปรดดูที่ โมเดลการแปลภาษา โมเดลการแปล. |
* ใช้ target_language (ข้อความ) สำหรับภาษาเดียว หรือ target_languages (อาร์เรย์) สำหรับตัวคูณ การแปลหลายเป้าหมาย.
การตอบสนอง
{
"translated_text": "Hola, mundo!",
"source_language": "en",
"target_language": "es",
"translations": {
"es": "Hola, mundo!"
},
"character_count": 13,
"translation_time": 0.45
}
source_language หรือตั้งค่าเป็น "auto" ใช้เพื่อตรวจจับภาษาต้นฉบับอัตโนมัติ ภาษาที่ตรวจจับได้จะถูกแสดงในหน้าต่าง source_language สนามตอบสนอง
การแปลหลายเป้าหมาย
แปลข้อความเป็นหลายภาษาด้วยการร้องขอครั้งเดียว ใช้จุดจบเดียวกันกับการแปลครั้งเดียว
POST https://api.translateapi.ai/api/v1/translate/
ตำแหน่งของคำร้อง
{
"text": "Hello, world!",
"target_languages": ["es", "fr", "de", "ja"],
"source_language": "en"
}
ใช้ target_languages (แถว) แทน target_language (สตริง) สำหรับเป้าหมายหลายตัว
การตอบสนอง
{
"source_language": "en",
"translations": {
"es": "Hola, mundo!",
"fr": "Bonjour, monde!",
"de": "Hallo, Welt!",
"ja": "こんにちは、世界!"
},
"character_count": 52,
"translation_time": 2.31
}
การแปลเป็นกลุ่ม
แปลข้อความหลายข้อในเวลาเดียวกัน ด้วยการประมวลผลแบบไม่ซ้ำกัน (async) ส่งผลลัพธ์เป็นบั๊กและโพล
POST https://api.translateapi.ai/api/v1/translate/batch/
ขั้นตอนที่ 1: จัดส่งแถว
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"
}'
การตอบสนอง (ยอมรับ HTTP 202)
{
"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/"
}
ขั้นตอนที่2: สำรวจหาผลลัพธ์
GET https://api.translateapi.ai/api/v1/jobs/{job_id}/
ตัวอย่างการสำรวจ (ไพธอน)
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"Done: {processed}/{total} in {result.get('processing_time', 0):.1f}s")
translations = result["result_data"]["translations"]
break
elif status == "failed":
raise Exception(result.get("error_message", "Translation failed"))
elif status == "pending":
print(f"Queued (position {result.get('queue_position', '?')})")
else:
print(f"[{status}] {processed}/{total} ({progress:.0f}%)")
time.sleep(3)
การตอบสนอง (เสร็จสมบูรณ์)
{
"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
}
}
ติดตามความคืบหน้าแบบเรียลไทม์
| ช่อง | คำอธิบาย |
|---|---|
status |
pending (คิวรอ GPU ทำงาน) processing (กำลังแปล) completed, failed |
processed_texts |
จำนวนการแปลภาษาที่เสร็จสมบูรณ์แล้ว ปรับปรุงอัตโนมัติเมื่อมีการแปลข้อความ |
progress_percentage |
เปอร์เซ็นต์การทำเสร็จ (0- 100) คำนวณจาก processed_ texts / total_ texts |
queue_position |
สถานะของคุณในคิวเมื่อสถานะเป็น "รอ" (1 = ต่อไป) ค่าเป็นศูนย์เมื่อมีการประมวลผลหรือเสร็จสมบูรณ์ ใช้เพื่อประมาณเวลาการรอและแสดงสถานะคิวให้ผู้ใช้ของคุณดู |
processing_time |
เวลาในการประมวลผลทั้งหมดเป็นวินาที (ใช้ได้เมื่อเสร็จสมบูรณ์) |
หลายภาษา
แปลข้อความเป็นหลายภาษาในเวลาเดียวกัน:
{
"texts": ["Hello", "Goodbye"],
"target_languages": ["es", "fr"],
"source_language": "en"
}
ข้อมูลผลลัพธ์ที่เสร็จสิ้นแล้ว
{
"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
}
พารามิเตอร์การร้องขอ
| พารามิเตอร์ | ประเภท | จำเป็น | คำอธิบาย |
|---|---|---|---|
texts |
array | ใช่ | อาร์เรย์ของข้อความที่จะแปล |
target_language |
string | ใช่* | รหัสภาษาเป้าหมายสำหรับภาษาเดียว |
target_languages |
array | ใช่* | อาร์เรย์ของรหัสภาษาเป้าหมายสำหรับหลายภาษา |
source_language |
string | ไม่มี | Source language code. Default: "auto" |
* ระบุทั้งสอง target_language หรือ target_languagesไม่ใช่ทั้งคู่
วิธีการที่ดีที่สุดสำหรับงานที่หนัก
- ส่งภาษาเป้าหมาย 1 ภาษาต่อการร้องขอการแปลงเป็นกลุ่ม เพื่อให้การแปลงเป็นกลุ่มทำงานเร็วขึ้น และทำให้การติดตามความคืบหน้าง่ายขึ้น
- เก็บการทำงานเป็นกลุ่มๆ ละ 50- 100 ข้อความ หากเป็นกลุ่มๆ ขนาดเล็กกว่า จะทำให้งานเสร็จเร็วขึ้น และให้คุณได้รับรายงานความคืบหน้าอย่างต่อเนื่อง
- จัดส่งงานหลายๆ งานตามที่ต้องการ - คลัสเตอร์ GPU ของเราปรับขนาดอัตโนมัติเพื่อจัดการความต้องการงาน งานจะถูกประมวลผลคู่ขนานกันบนหลายๆ ตัวอย่าง
- เมื่อหมดเวลา ทำการโพลล์ job_ id เดิมอีกครั้ง แทนที่จะส่งงานใหม่ เป็นไปได้ว่างานเดิมยังคงถูกประมวลผลอยู่บน GPU
- ถามทุก 3-5 วินาที การถามบ่อย ๆ จะไม่ทำให้การประมวลผลเร็วขึ้น
การแปลเอกสาร
แปลเอกสารทั้งฉบับโดยรักษารูปแบบไว้ รองรับรูปแบบแฟ้มหลายรูปแบบ
POST https://api.translateapi.ai/api/v1/translate/document/
การร้องขอ (ข้อมูลหลายส่วน/แบบฟอร์ม)
| พารามิเตอร์ | ประเภท | จำเป็น | คำอธิบาย |
|---|---|---|---|
file |
file | ใช่ | เอกสารที่จะแปล (ขนาดสูงสุด 10MB) |
target_language |
string | ใช่ | Target language code (e.g., "es", "fr", "de") |
source_language |
string | ไม่มี | Source language code. Default: "auto" (auto-detect) |
ประเภทแฟ้มที่รองรับ
เอกสาร
.txt- แฟ้มข้อความธรรมดา.docx- เอกสาร Word.pdf- เอกสาร PDF (รวมถึงเอกสารสแกน)
ข้อมูลและท้องถิ่น
.json- แฟ้ม JSON (แปลค่าข้อความ).xml- แฟ้ม XML.srt- แฟ้มคำบรรยายเสียง.po/.pot- แฟ้มแปล Gettext
ภาพ (OCR)
.jpg/.jpeg- รูปภาพ JPEG (OCR).png- ภาพ PNG (OCR).tiff/.tif- รูปภาพ TIFF (OCR).bmp- รูปภาพ BMP (OCR).webp- รูปภาพ WebP (OCR)
ตัวอย่าง (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"
การตอบสนอง
{
"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"
}
GET https://api.translateapi.ai/api/v1/translate/document/{id}/
ตรวจสอบสถานะของการแปลเอกสาร หรือรับที่อยู่ URL ของการดาวน์โหลด
ค่าสถานะ
pending |
แฟ้มถูกอัพโหลดแล้ว รอการประมวลผล |
processing |
กำลังแปล |
completed |
การแปลเสร็จสมบูรณ์ สามารถดาวน์โหลดได้แล้ว |
failed |
การแปลล้มเหลว (ตรวจสอบข้อความผิดพลาด) |
ภาษาที่รองรับ
เรียกดูรายการภาษาที่รองรับทั้งหมด
GET https://api.translateapi.ai/api/v1/translate/languages/
การตอบสนอง
{
"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"},
...
]
}
โมเดลการแปล
เราใช้โมเดลการแปลแบบโอเพนซอร์สที่ทันสมัยที่ทำงานบนโครงสร้างพื้นฐานของ GPU ของเราเอง โมเดลทั้งหมดมีใบอนุญาตเชิงพาณิชย์ (Apache 2.0)
| โมเดล | ภาษา | เหมาะสำหรับ |
|---|---|---|
| Helsinki-NLP/opus-mt | คู่ภาษา 50+ | ภาษาทั่วไป (EN, ES, FR, DE, IT, PT, RU, ZH, JA, ฯลฯ) |
| Google MADLAD-400 | 400+ ภาษา | ภาษาที่หายาก ความครอบคลุมที่กว้างขวาง |
API จะเลือกแบบจำลองที่เหมาะสมที่สุดสำหรับคู่ภาษาของคุณโดยอัตโนมัติ คุณสามารถกำหนดตัวเลือกได้ engine พารามิเตอร์:
| เครื่องยนต์ | คำอธิบาย |
|---|---|
"auto" |
ค่าปริยาย ลองใช้ HuggingFace ก่อน แล้วกลับไปใช้ MADLAD- 400 |
"huggingface" |
บังคับ HuggingFace/MarianMT (เร็วที่สุด, 50+ ภาษา) |
"madlad" |
Force MADLAD-400 (400+ ภาษา) |
การจัดการข้อผิดพลาด
API ใช้รหัสสถานะ HTTP มาตรฐานเพื่อแสดงความสำเร็จหรือล้มเหลว
| รหัส | คำอธิบาย |
|---|---|
| 200 | สำเร็จแล้ว |
| 202 | ยอมรับ — งานบั๊กถูกจัดจอดเป็นคิวสำเร็จ |
| 400 | คำขอที่ไม่ถูกต้อง — พารามิเตอร์ไม่ถูกต้อง (ขาดข้อความ, ไม่รองรับภาษา, ฯลฯ) |
| 401 | ไม่ได้รับอนุญาต - กุญแจ API ไม่ถูกต้องหรือหายไป |
| 402 | ต้องการจ่ายเงิน — จำนวนตัวละครหมดแล้ว ปรับระดับแพ็คเกจของคุณหรือซื้อเพิ่ม |
| 403 | ไม่อนุญาต — กุญแจ API ขาดพื้นที่ที่จำเป็น หรือ IP ไม่ได้อยู่ในรายการที่อนุญาต |
| 503 | บริการไม่สามารถใช้ได้ - กลไกแปลภาษาทำงานชั่วคราว |
รูปแบบการตอบสนองข้อผิดพลาด
{
"error": "insufficient_credits",
"credits_remaining": 0
}
ขอบเขตการใช้งาน
TranslateAPI has no request rate limits. All requests are queued and processed by our auto-scaling GPU cluster. Your plan determines your monthly character allowance:
| แผน | ตัวอักษร/เดือน | ใช้ API แบบแบต | เอกสาร | ราคา | |
|---|---|---|---|---|---|
| ว่าง | 250,000 | — | — | $0 | ลงทะเบียน |
| เริ่มการทำงาน | 2,500,000 | $9/ชั่วโมง | จองเป็นสมาชิก | ||
| โปร | 10,000,000 | $29/ชั่วโมง | จองเป็นสมาชิก | ||
| ธุรกิจ | 40,000,000 | $79/ชั่วโมง | จองเป็นสมาชิก | ||
| ปรับขนาด | 125,000,000 | $199/ชั่วโมง | จองเป็นสมาชิก | ||
| Enterprise | Unlimited | $499/ชั่วโมง | Contact Sales |
เมื่อคุณเกินขอบเขตของคุณ คุณจะได้รับ 402 Payment Required รอคำตอบ จนกว่าเดือนหน้า หรือคุณจะอัพเกรด
โครงสร้างพื้นฐานคลาวด์ที่ปรับขนาดอัตโนมัติ
TranslateAPI ทำงานบนตัวอย่าง NVIDIA A100 GPU ที่มีการปรับขนาดแนวนอนอัตโนมัติ เมื่อความต้องการเพิ่มขึ้น ตัวอย่าง GPU เพิ่มเติมจะถูกเริ่มในไม่กี่นาที เพื่อรักษาเวลาตอบสนองที่รวดเร็ว คำขอทั้งหมดจะถูกจัดเป็นคิวและถูกประมวลผล - ส่งคำขอร่วมกันเป็นร้อย ๆ ครั้ง และพวกเขาจะถูกจัดการทั้งหมด การแปลแบบเรียลไทม์จะได้รับความสำคัญ งานประมวลผลกลุ่มจะถูกประมวลผลในภายหลัง
ต้องการเพิ่มเครดิตอีกไหม?
หมดตัวละครกลางเดือน ซื้อเครดิตเพิ่มครั้งเดียว โดยไม่เปลี่ยนแผนของคุณ แสดงแพ็คเกจเติมเงิน