始める
TranslateAPIは180以上の言語間でテキストを翻訳するための簡単なRESTインタフェースを提供します。すべてのAPIエンドポイントはJSON応答を返します。
1. Get Your API Key
Create a free account and generate your API key from the dashboard:
- Sign up at translateapi.ai/signup
- Go to ダッシュボード → API キー
- Click "Create API Key" and copy your key
API keys start with ta_ followed by 56 hex characters.
https://api.translateapi.ai/api/v1/2. Make Your First Request
Replace YOUR_API_KEY with the key from your dashboard:
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
ApiKey Header
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 | いいえ | Translation engine: "auto" (default), "huggingface", or "madlad". See Translation Models. 翻訳モデル. |
* 使用 target_language (文字列) 単一言語または target_languages (array) は複数の意味です マルチターゲット翻訳.
応答
{
"translated_text": "Hola, mundo!",
"source_language": "en",
"target_language": "es",
"translations": {
"es": "Hola, mundo!"
},
"character_count": 13,
"translation_time": 0.45
}
source_language or set it to "auto" to automatically detect the source language. The detected language is returned in the source_language response field.
マルチターゲット翻訳
単一の要求で複数の言語にテキストを翻訳します。単一の翻訳と同じエンドポイントを使用します。
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}/
ポリングの例 (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"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
}
}
Real-Time Progress Tracking
| Field | 説明 |
|---|---|
status |
pending (queued, waiting for a GPU worker), processing (actively translating), completed, failed |
processed_texts |
Number of individual translations completed so far. Updates in real time as each text is translated. |
progress_percentage |
Completion percentage (0-100). Calculated from processed_texts / total_texts. |
queue_position |
Your position in the queue when status is "pending" (1 = next up). Null when processing or completed. Use this to estimate wait time and show queue status to your users. |
processing_time |
Total processing time in seconds (available when completed). |
マルチ言語バッチ
複数のテキストを複数の言語に同時に翻訳:
{
"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両方じゃない
Best Practices for Large Workloads
- Send 1 target language per batch request. This keeps each batch fast and makes progress easy to track.
- Keep batches at 50-100 texts. Smaller batches complete faster and give you more frequent progress updates.
- Submit as many batch jobs as you need — our GPU cluster auto-scales to handle demand. Jobs are processed in parallel across multiple instances.
- On timeout, re-poll the same job_id instead of submitting a new batch. The original job may still be processing on the GPU.
- Poll every 3-5 seconds. More frequent polling does not speed up processing.
文書翻訳
形式を保持しながら文書全体を翻訳します。複数のファイルフォーマットをサポートします。
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) |
サポートされているファイルタイプ
Documents
.txt- プレーンテキストファイル.docx- Word ドキュメント.pdf- PDF 文書 (スキャンしたものも含む)
Data & Localization
.json- JSON ファイル (文字列値を翻訳).xml- XMLファイル.srt- 字幕ファイル.po/.pot- Gettext 翻訳ファイル
Images (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 |
翻訳に失敗しました (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"},
...
]
}
Submit Corrections
Suggest a better translation for a given source text. Corrections enter a moderation queue; once approved by our team they surface as "Community Verified" translations for that text.
https://translateapi.ai/api/v1/ (not the api. translation host), and requires an API key.POST https://translateapi.ai/api/v1/suggestions/
リクエストの本文
| Parameter | タイプ | 説明 |
|---|---|---|
source_text |
string | The original text that was translated. |
source_language |
string | Source language code (e.g. "en"). |
target_language |
string | Target language code (e.g. "es"). |
machine_translation |
string | The machine translation you are correcting. |
suggested_translation |
string | Your improved translation (must differ from machine_translation). |
Example Request
curl -X POST https://translateapi.ai/api/v1/suggestions/ \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"source_text": "Hello, world!",
"source_language": "en",
"target_language": "es",
"machine_translation": "Hola, mundo!",
"suggested_translation": "¡Hola, mundo!"
}'
応答
{
"id": 4213,
"status": "pending",
"created": true,
"message": "Correction submitted for review."
}
Re-submitting the same source/language pair updates your existing suggestion instead of creating a duplicate (returns 200 with "created": false).
翻訳モデル
私たちは自社のGPUインフラストラクチャ上で動作する最新のオープンソース翻訳モデルを使用しています。すべてのモデルは商業的にライセンスされています(Apache 2.0)。
| モデル | 言語 | ベスト・フォー |
|---|---|---|
| Helsinki-NLP/opus-mt | 50以上の言語ペア | 共通言語(英語,スペイン語,フランス語,ドイツ語,イタリア語,ポルトガル語,ロシア語,中国語,日本語など) |
| Google MADLAD-400 | 400以上の言語 | 希少言語、総合的なカバレッジ |
この API は、あなたの言語ペアに最適なモデルを自動的に選択します。 engine パラメータ:
| エンジン | 説明 |
|---|---|
"auto" |
デフォルト。最初に HuggingFace を試み、MADLAD-400 に戻ります |
"huggingface" |
Force HuggingFace/MarianMT (最速、50以上の言語) |
"madlad" |
フォースMADLAD-400(400以上の言語) |
エラーハンドリング
APIは標準HTTPステータスコードを使用して成功か失敗を示す。
| コード | 説明 |
|---|---|
| 200 | サクセス |
| 202 | Accepted — Batch job queued successfully |
| 400 | Bad Request — Invalid parameters (missing text, unsupported language, etc.) |
| 401 | 無効 - API キーが無効または欠けています |
| 402 | Payment Required — Character credits exhausted. Upgrade your plan or purchase a top-up. |
| 403 | Forbidden — API key lacks required scope or IP not in whitelist |
| 503 | サービスが利用できません - 翻訳エンジンが一時的にダウン |
エラー応答フォーマット
{
"error": "insufficient_credits",
"credits_remaining": 0
}
Usage Limits
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:
| プラン | 文字/月 | Batch API | Documents | プライス | |
|---|---|---|---|---|---|
| フリー | 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 来月まで応答しないと アップグレードできない
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. All requests are queued and processed — send hundreds of concurrent requests and they'll all be handled. Real-time translations get priority, batch jobs process in the background.
Need More Credits?
Run out of characters mid-month? Purchase a one-time credit top-up without changing your plan. View top-up packs