เอกสาร API
เชื่อมโยงการแปลที่ทรงพลังเข้ากับแอพพลิเคชันของคุณด้วย REST API ง่ายๆของเรา
เริ่มต้น
TranslateAPI ให้บริการอินเทอร์เฟซ REST ง่ายๆ สำหรับการแปลข้อความระหว่าง 180+ ภาษา จุดจบของ API ทั้งหมดจะส่งผลลัพธ์เป็น JSON
https://api.translateapi.ai/api/v1/
เริ่มเร็ว
ทำคำขอแปลครั้งแรกของคุณ:
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!"
}
}
การตรวจสอบสิทธิ์
ตรวจสอบความถูกต้องของคำร้องขอของคุณโดยใช้กุญแจ API คุณสามารถสร้างกุญแจ API จากข้อมูลของคุณได้ แผงควบคุม.
การตรวจสอบสิทธิ์ส่วนหัว (แนะนำ)
Authorization: Bearer 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) |
* ใช้ 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
}
การแปลหลายเป้าหมาย
แปลข้อความเป็นหลายภาษาด้วยการร้องขอครั้งเดียว ใช้จุดจบเดียวกันกับการแปลครั้งเดียว
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"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)
การตอบสนอง (รอ - อยู่ในคิว, รอ GPU)
{
"job_id": "67535b2b-...",
"status": "pending",
"processed_texts": 0,
"total_texts": 3,
"progress_percentage": 0.0,
"queue_position": 3
}
การตอบสนอง (ขณะประมวลผล)
{
"job_id": "67535b2b-...",
"status": "processing",
"processed_texts": 1,
"total_texts": 3,
"progress_percentage": 33.33,
"queue_position": null
}
การตอบสนอง (เสร็จสมบูรณ์)
{
"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 |
จำนวนการแปลภาษาที่เสร็จสมบูรณ์แล้ว ปรับปรุงอัตโนมัติเมื่อมีการแปลข้อความ |
total_texts |
จำนวนทั้งหมดของการแปลในบั๊กนี้ (ข้อความ x ภาษาเป้าหมาย) |
progress_percentage |
เปอร์เซ็นต์การทำเสร็จ (0- 100) คำนวณจาก processed_ texts / total_ texts |
queue_position |
สถานะของคุณในคิวเมื่อสถานะเป็น "รอ" (1 = ต่อไป) ค่าเป็นศูนย์เมื่อมีการประมวลผลหรือเสร็จสมบูรณ์ ใช้เพื่อประมาณเวลาการรอและแสดงสถานะคิวให้ผู้ใช้ของคุณดู |
processing_time |
เวลาในการประมวลผลทั้งหมดเป็นวินาที (ใช้ได้เมื่อเสร็จสมบูรณ์) |
status มันคือ "pending", คนทำงานของ GPU กำลังยุ่งอยู่กับการทำงานในแบตอื่นๆ ตรวจสอบ queue_position เพื่อดูว่ามีงานอยู่ก่อนหน้างานของคุณอีกกี่งาน (1 = คุณเป็นคนต่อไป) งานของคุณจะเริ่มขึ้นโดยอัตโนมัติ - ไม่ต้องทำอะไรเลย แค่รอให้มีการโพลล์ต่อไป
วิธีการที่ดีที่สุดสำหรับงานที่หนัก
- ส่งภาษาเป้าหมาย 1 ภาษาต่อการร้องขอการแปลงเป็นกลุ่ม เพื่อให้การแปลงเป็นกลุ่มทำงานเร็วขึ้น และทำให้การติดตามความคืบหน้าง่ายขึ้น
- เก็บการทำงานเป็นกลุ่มๆ ละ 50- 100 ข้อความ หากเป็นกลุ่มๆ ขนาดเล็กกว่า จะทำให้งานเสร็จเร็วขึ้น และให้คุณได้รับรายงานความคืบหน้าอย่างต่อเนื่อง
- ประมวลผลงานแบตเดียวกันได้สูงสุด2งาน หน่วยประมวลผลภาพจิ๊กซอว์จะประมวลผลงานแบต2งานควบคู่กันไป - งานเพิ่มเติมจะถูกจัดเป็นคิวและจะไม่เริ่มทำงานเร็วขึ้น
- เมื่อหมดเวลา ทำการโพลล์ job_ id เดิมอีกครั้ง แทนที่จะส่งงานใหม่ เป็นไปได้ว่างานเดิมยังคงถูกประมวลผลอยู่บน GPU
- ถามทุก 3-5 วินาที การถามบ่อย ๆ จะไม่ทำให้การประมวลผลเร็วขึ้น
หลายภาษา
แปลข้อความเป็นหลายภาษาในเวลาเดียวกัน:
{
"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ไม่ใช่ทั้งคู่
job_id. หลุม GET /api/v1/jobs/{job_id}/ จนกว่า status คือ "completed", แล้วอ่าน result_data ใช้สำหรับแปล progress_percentage เพื่อติดตามความคืบหน้า
การแปลเอกสาร
แปลเอกสารทั้งฉบับโดยรักษารูปแบบไว้ รองรับรูปแบบแฟ้มหลายรูปแบบ
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.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"
.txt ไฟล์
การตอบสนอง
{
"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"
}
ค่าสถานะ
pending |
แฟ้มถูกอัพโหลดแล้ว รอการประมวลผล |
processing |
กำลังแปล |
completed |
การแปลเสร็จสมบูรณ์ สามารถดาวน์โหลดได้แล้ว |
failed |
การแปลล้มเหลว (ตรวจสอบข้อความผิดพลาด) |
GET https://api.translateapi.ai/api/v1/translate/document/{id}/
ตรวจสอบสถานะของการแปลเอกสาร หรือรับที่อยู่ URL ของการดาวน์โหลด
การตอบสนอง
{
"id": 123,
"original_filename": "document.docx",
"status": "completed",
"translated_file_url": "/media/translated/document_es.docx",
"character_count": 5420
}
การตรวจจับภาษา
การตรวจจับภาษาจะถูกติดตั้งไว้ในทุกคำขอแปล source_language to "auto" (หรือลบมันออกไป) และภาษาที่ตรวจพบจะถูกส่งกลับมาในคำตอบ
POST https://api.translateapi.ai/api/v1/translate/
ตำแหน่งของคำร้อง
{
"text": "Bonjour, comment allez-vous?",
"target_language": "en"
}
การตอบสนอง
{
"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
}
นี่ source_language ช่องในคำตอบแสดงภาษาที่ตรวจพบเมื่อใช้การตรวจพบอัตโนมัติ
ภาษาที่รองรับ
เรียกดูรายการภาษาที่รองรับทั้งหมด
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 |
สำเร็จแล้ว |
400 |
คำขอที่ไม่ถูกต้อง - พารามิเตอร์ไม่ถูกต้อง |
401 |
ไม่ได้รับอนุญาต - กุญแจ API ไม่ถูกต้องหรือหายไป |
402 |
จำเป็นต้องชำระค่าบริการ - เกินกำหนดจำนวนอักขระต่อวัน |
429 |
มีการร้องขอมากเกินไป - เกินขอบเขตอัตรา |
503 |
บริการไม่สามารถใช้ได้ - กลไกแปลภาษาทำงานชั่วคราว |
รูปแบบการตอบสนองข้อผิดพลาด
{
"error": "daily_limit_exceeded",
"credits_remaining": 0,
"daily_limit": 100000
}
ขอบเขตอัตรา
ขอบเขตแตกต่างกันไปตามแผน ราคา รายละเอียดเพิ่มเติม:
| แผน | ตัวอักษร/เดือน | ราคา | |
|---|---|---|---|
| ว่าง | 250,000 | $0 | ลงทะเบียน |
| เริ่มการทำงาน | 2,500,000 | $9/ชั่วโมง | จองเป็นสมาชิก |
| โปร | 10,000,000 | $29/ชั่วโมง | จองเป็นสมาชิก |
| ธุรกิจ | 40,000,000 | $79/ชั่วโมง | จองเป็นสมาชิก |
| ปรับขนาด | 125,000,000 | $199/ชั่วโมง | จองเป็นสมาชิก |
เมื่อคุณเกินขอบเขตของคุณ คุณจะได้รับ 429 Too Many Requests รอคำตอบ จนกว่าเดือนหน้า หรือคุณจะอัพเกรด
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.