API 문서화

간단한 REST API로 강력한 번역 기능을 애플리케이션에 통합하십시오.

시작하기

TranslateAPI는 180개 이상의 언어 사이에서 텍스트를 번역하는 간단한 REST 인터페이스를 제공합니다. 모든 API 엔드포인트는 JSON 응답을 반환합니다.

1. API 키를 가져오기

무료 계정을 만들고 대시보드에서 API 키를 생성하십시오.

  1. 가입하기 translateapi.ai/signup
  2. 다음으로 이동 대시보드 → API 키
  3. "API 키 만들기"를 클릭하고 키를 복사하십시오.

API 키는 다음으로 시작됩니다. ta_ 뒤에 56개의 십육진법 문자가 붙습니다.

기본 URL: 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 키를 사용하여 요청을 인증할 수 있습니다. 대시보드.

헤더 인증( 권장)
Authorization: Bearer ta_your_api_key_here
API 키 헤더
Authorization: ApiKey ta_your_api_key_here
쿼리 매개 변수
https://api.translateapi.ai/api/v1/translate/?api_key=ta_your_api_key_here
API 키를 안전하게 보관하세요! 클라이언트 코드 또는 공개 저장소에 노출하지 마십시오.

텍스트 번역

단일 대상 언어로 텍스트를 번역합니다.

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
}
종류: 한 번의 요청으로 최대 50개 언어로 번역할 수 있습니다.

일괄 번역

비동기 처리로 한 번에 여러 개의 텍스트를 번역합니다. 결과에 대한 일괄 처리 및 투표를 제출합니다.

한계: 배치당 최대 100개의 텍스트, 총 300개의 항목(텍스트 × 대상 언어). 작업은 처리가 시작된 후 45분이 지나면 시간이 초과됩니다.
속도: 일반적인 언어(ES, FR, DE)는 빠른 모델(~0.1s/텍스트)을 사용하고, 덜 일반적인 언어는 다국어 모델(~1-3s/텍스트)을 사용합니다.
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 = 다음) 이라면 대기열의 위치입니다. 처리되거나 완료되었을 때 Null입니다. 대기 시간을 추정하고 사용자에게 대기열 상태를 보여주기 위해 이것을 사용하십시오.
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"
}
OCR 지원: 이미지 파일과 스캔된 PDF는 광학 문자 인식(OCR)으로 처리되어 번역 전에 텍스트를 추출합니다. 최상의 결과를 얻으려면 선명한 고해상도 이미지를 사용하십시오.
GET https://api.translateapi.ai/api/v1/translate/document/{id}/

문서 번역의 상태를 확인하거나 다운로드 URL을 검색합니다.

상태 값
pending 파일이 업로드되었으며 처리를 기다리고 있습니다
processing 진행 중인 번역
completed 번역 완료, 다운로드 가능
failed 번역 실패 (check error_message)

지원되는 언어

지원되는 모든 언어 목록을 확인하십시오.

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"},
        ...
    ]
}

186개 언어 모두 보기

번역 모델

저희는 자체 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 성공
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/% 1 초 구독하기
전문가 10,000,000 $29/% 1 초 구독하기
비즈니스 40,000,000 $79/% 1 초 구독하기
크기 조정 125,000,000 $199/% 1 초 구독하기
Enterprise Unlimited $499/% 1 초 Contact Sales

당신이 당신의 한계를 초과하면, 당신은 402 Payment Required 다음 달까지 응답 또는 업그레이드.

자동 확장 클라우드 인프라

TranslateAPI는 전용 NVIDIA A100 GPU 인스턴스에서 자동 수평 확장 기능을 통해 실행됩니다. 수요가 증가하면 추가 GPU 인스턴스가 몇 분 내에 실행되어 빠른 응답 시간을 유지합니다. 모든 요청이 대기열에 놓여 처리되므로 수백 개의 동시 요청을 보내도 모두 처리됩니다. 실시간 번역이 우선되고 배치 작업이 백그라운드에서 처리됩니다.

더 많은 크레딧이 필요하십니까?

월 중순에 캐릭터가 부족하신다면, 플랜을 변경하지 않고도 한 번에 크레딧을 충전하세요. 충전 팩 보기

이 페이지 평가하기
평가해 주셔서 감사합니다!
/5 기준 평가