API リファレンス

Translayer API

AIを活用したビジュアル翻訳をワークフローに統合できます。ページのアップロード、リアルタイムの進捗追跡、結果のダウンロードが可能です。

ベースURL: https://translayer.app/api

認証

Translayer APIはFirebase UIDを認証に使用します。リクエストボディにuserIdを含めてください。

Pro プランが必要です。 API アクセスはProプラン($199/月)でご利用いただけます。APIキーは以下で生成してください: ダッシュボード → 設定.
POST

/api/translate

翻訳用の画像をアップロードします。進捗追跡用のジョブIDを返します。

リクエスト(multipart/form-data)

フィールド 説明
imagesFile[]Page images (JPG, PNG, WebP). Required.
sourceLangstringSource language or "auto" for detection.
targetLangstringTarget language (e.g. "pl", "en", "ja").
modestring"fast" (0.5x credits), "standard" (1x), "advanced" (2x).
resolutionstring"original", "1K", "2K", "4K".
userIdstringYour Firebase UID. Required.
customPromptstringOptional translation instructions.

クレジットコスト計算式

credits = ceil(pages × resolution_multiplier × mode_multiplier)

例(cURL)

curl -X POST https://translayer.app/api/translate \
  -F "images=@page1.jpg" \
  -F "images=@page2.jpg" \
  -F "sourceLang=en" \
  -F "targetLang=ja" \
  -F "mode=standard" \
  -F "resolution=2K" \
  -F "userId=YOUR_FIREBASE_UID"

レスポンス

{
  "jobId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
  "mode": "standard",
  "creditsNeeded": 4
}
402 — クレジット不足 400 — ファイルがアップロードされていません
GET

/api/jobs/:jobId/events

翻訳進捗のリアルタイムSSE(Server-Sent Events)ストリーム。

例(JavaScript)

const es = new EventSource('/api/jobs/' + jobId + '/events');
es.onmessage = (event) => {
  const job = JSON.parse(event.data);
  console.log(job.status, job.progress + '/' + job.total);
  if (job.status === 'completed' || job.status === 'failed') {
    es.close();
  }
};

イベントペイロード

{
  "id": "job-uuid",
  "status": "processing",    // pending | processing | completed | failed
  "progress": 3,
  "total": 10,
  "currentFile": "page_003.jpg",
  "results": [
    { "sourceFilename": "page_001.jpg", "url": "/api/outputs/..." }
  ]
}
GET

/api/download/:jobId

翻訳済みの全ページをZIPアーカイブとしてダウンロードします。

例(cURL)

curl -o translated.zip https://translayer.app/api/download/JOB_ID

ファイル保持期間

プラン 保持期間
Free3 days
Starter14 days
Standard30 days
Pro90 days
404 — ジョブが見つかりません 410 — 期限切れ
DELETE

/api/projects/:id

翻訳プロジェクトとその出力ファイルを削除します。

例(cURL)

curl -X DELETE https://translayer.app/api/projects/JOB_ID \
  -H "Content-Type: application/json" \
  -d '{"userId": "YOUR_FIREBASE_UID"}'
403 — 権限がありません 404 — 見つかりません
POST

/api/checkout

サブスクリプションまたはクレジットパック購入用のStripe Checkoutセッションを作成します。

curl -X POST https://translayer.app/api/checkout \
  -H "Content-Type: application/json" \
  -d '{
    "priceId": "price_xxx",
    "mode": "subscription",
    "userId": "YOUR_FIREBASE_UID"
  }'

// Response: { "url": "https://checkout.stripe.com/..." }

完全な例(Python)

import requests, json, sseclient

BASE = "https://translayer.app/api"
UID = "your_firebase_uid"

# 1. Upload pages for translation
files = [("images", open(f"page_{i}.jpg", "rb")) for i in range(1, 6)]
data = {"sourceLang": "en", "targetLang": "ja", "mode": "standard",
        "resolution": "2K", "userId": UID}
res = requests.post(f"{BASE}/translate", files=files, data=data)
job_id = res.json()["jobId"]
print(f"Job started: {job_id}")

# 2. Track progress via SSE
response = requests.get(f"{BASE}/jobs/{job_id}/events", stream=True)
client = sseclient.SSEClient(response)
for event in client.events():
    job = json.loads(event.data)
    print(f"{job['progress']}/{job['total']} - {job['status']}")
    if job["status"] in ("completed", "failed"):
        break

# 3. Download ZIP
if job["status"] == "completed":
    zip_res = requests.get(f"{BASE}/download/{job_id}")
    with open("translated.zip", "wb") as f:
        f.write(zip_res.content)
    print("Downloaded translated.zip")

レート制限とクォータ

プラン ページ/月 同時実行ジョブ数 最大ファイルサイズ
Free1015 MB
Starter75210 MB
Standard500525 MB
Pro1,0001050 MB

統合の準備はできていますか?

無料プランで始めるか、Proにアップグレードして完全なAPIアクセスを取得してください。

無料で始める