始める
TranslateAPIは180以上の言語間でテキストを翻訳するための簡単なRESTインタフェースを提供します。すべてのAPIエンドポイントはJSON応答を返します。
API キーを取得
無料のアカウントを作成し、ダッシュボードから API キーを生成します:
- 登録 translateapi.ai/signup
- 次へ ダッシュボード → API キー
- "Create API Key" をクリックしてキーをコピー
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
ApiKey ヘッダ
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 (array) は複数の意味です マルチターゲット翻訳.
応答
{
"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
}
バッチ翻訳
非同期処理で複数のテキストを一度に翻訳します。結果をバッチで送信し、ポールします。
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
}
}
リアルタイム進捗追跡
| フィールド | 説明 |
|---|---|
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"
}
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"},
...
]
}
翻訳モデル
私たちは自社の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 | 受け入れ — バッチジョブキューに成功 |
| 400 | Bad Request — 無効なパラメータ (テキストが欠ける、言語がサポートされていないなど) |
| 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インスタンスが起動されます。すべての要求はキューに並べられ処理されます。何百もの同時要求を送信しても、すべて処理されます。リアルタイム翻訳は優先され、バッチジョブはバックグラウンドで処理されます。
クレジットが必要ですか?
月中にキャラクターがなくなったら、プランを変更せずに一度にクレジットを購入してください。 アップグレードパックを表示