API 문서화
간단한 REST API로 강력한 번역 기능을 애플리케이션에 통합하십시오.
시작하기
TranslateAPI는 180개 이상의 언어 사이에서 텍스트를 번역하는 간단한 REST 인터페이스를 제공합니다. 모든 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 키를 사용하여 요청을 인증할 수 있습니다. 대시보드.
헤더 인증( 권장)
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
}
일괄 번역
비동기 처리로 한 번에 여러 개의 텍스트를 번역합니다. 결과에 대한 일괄 처리 및 투표를 제출합니다.
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 |
이 배치의 총 번역 수 (텍스트 × 대상 언어). |
progress_percentage |
완료 백분율 (0-100). processed_texts / total_texts에서 계산합니다. |
queue_position |
상태가 "보류 중" (1 = 다음) 이라면 대기열의 위치입니다. 처리되거나 완료되었을 때 Null입니다. 대기 시간을 추정하고 사용자에게 대기열 상태를 보여주기 위해 이것을 사용하십시오. |
processing_time |
초 단위의 총 처리 시간(완료되면 사용 가능). |
status 다음과 같습니다 "pending", GPU 작업자가 다른 배치 작업으로 바쁘다. Check queue_position 귀하의 작업보다 앞서 있는 작업이 얼마나 많은지 확인합니다(1 = 다음 작업자). 귀하의 작업은 자동으로 시작됩니다.
대규모 워크로드를 위한 모범 사례
- 배치 요청 당 1개의 대상 언어를 보냅니다. 이렇게 하면 각 배치가 빠르게 진행되고 진행 상황을 쉽게 추적할 수 있습니다.
- 50-100 텍스트에서 배치를 유지. 작은 배치는 빠르게 완료하고 더 자주 진행 상황 업데이트를 제공합니다.
- 최대 2개의 동시 배치 작업을 실행합니다. GPU는 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 |
번역 실패 (check error_message) |
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 인프라에서 실행되는 최첨단 오픈 소스 번역 모델을 사용합니다. 모든 모델은 상업적으로 라이선스되어 있습니다(아파치 2.0).
| 모델 | 언어 | 가장 적합한 |
|---|---|---|
| Helsinki-NLP/opus-mt | 50개 이상의 언어 쌍 | 일반 언어 (영어, 스페인어, 프랑스어, 독일어, 이탈리아어, 포르투갈어, 러시아어, 중국어, 일본어 등) |
| Google MADLAD-400 | 400개 이상의 언어 지원 | 희귀 언어, 포괄적인 커버리지 |
API는 사용자의 언어 쌍에 가장 적합한 모델을 자동으로 선택합니다. engine 파라미터:
| 엔진 | 설명 |
|---|---|
"auto" |
먼저 HuggingFace를 시도하고, 다시 MADLAD-400으로 돌아갑니다. |
"huggingface" |
강제 HuggingFace/MarianMT (가장 빠른, 50 개 이상의 언어) |
"madlad" |
힘 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/% 1 초 | 구독하기 |
| 전문가 | 10,000,000 | $29/% 1 초 | 구독하기 |
| 비즈니스 | 40,000,000 | $79/% 1 초 | 구독하기 |
| 크기 조정 | 125,000,000 | $199/% 1 초 | 구독하기 |
당신이 당신의 한계를 초과하면, 당신은 429 Too Many Requests 다음 달까지 응답 또는 업그레이드.
자동 확장 클라우드 인프라
TranslateAPI는 자동 수평 확장 기능이 있는 전용 NVIDIA A100 GPU 인스턴스에서 실행됩니다. 수요가 증가하면 추가 GPU 인스턴스가 몇 분 내에 실행되어 빠른 응답 시간을 유지합니다. 이는 API가 분당 하나의 요청에서 수천 개의 요청까지 거의 무제한의 동시 요청을 처리할 수 있다는 것을 의미합니다.