APIドキュメント

簡単なREST APIで強力な翻訳をアプリケーションに統合する。

始める

TranslateAPIは180以上の言語間でテキストを翻訳するための簡単なRESTインタフェースを提供します。すべてのAPIエンドポイントはJSON応答を返します。

ベース URL: 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
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)

* 使用 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
}

マルチターゲット翻訳

単一の要求で複数の言語にテキストを翻訳します。単一の翻訳と同じエンドポイントを使用します。

タイプ: 1つの要求で最大50の言語に翻訳できます。
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
}

バッチ翻訳

非同期処理で複数のテキストを一度に翻訳します。結果をバッチで送信し、ポールします。

制限: バッチ当たり最大 500 テキスト、合計最大 750 項目 (テキスト × ターゲット言語)。ジョブは処理開始後 30 分でタイムアウトします (キューの待ち時間は含まれません)。
処理時間は言語によって異なります。一般的な言語 (スペイン語、フランス語、ドイツ語など) は高速モデル (テキスト当たり 0.1 秒) を使用しますが、一般的でない言語は大規模な多言語モデル (テキスト当たり 1-3 秒) を使用します。100 テキストのバッチは一般的な言語では通常 10-30 秒で完了し、一般的でない言語では 2-5 分で完了します。最良の結果を得るには、バッチリクエスト当たり 1 つのターゲット言語を送信し、バッチサイズを 50 テキスト以下に保ちましょう。
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"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 ワーカーは他のバッチで忙しいのです。チェックしてください。 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)
OCR サポート: 画像ファイルとスキャンした PDF は翻訳前にテキストを抽出するために光学文字認識 (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"
画像ファイルは翻訳前にテキストを抽出するために OCR で処理されます。翻訳された出力は XML ファイルとして返されます。 .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インフラストラクチャ上で動作する最新のオープンソース翻訳モデルを使用しています。すべてのモデルは商業的にライセンスされています(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 サクセス
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 来月まで応答しないと アップグレードできない

自動拡張型クラウドインフラストラクチャ

TranslateAPIは自動的に水平スケーリングする専用のNVIDIA A100 GPUインスタンス上で動作します。要求が増加すると、追加のGPUインスタンスが数分以内に起動され、応答時間を短縮します。これは、我々のAPIが、実質的に無制限の並行リクエストを処理できることを意味します。1分間に1件から数千件まで。

このページを評価
ありがとうございました
/5 基づいて 評価