APIリファレンス

v1.8.56 · ライブ優先 · 1日8時間無料/IP · 00:00 GMT にリセット

概要

日本語音声を送るとテキストが返ります。翻訳は常に無料。文字起こしはUTC日あたりIPごとに8時間まで。

GET と POST とは? すべてのREST APIで使う標準のHTTPメソッドです。 GET はデータの取得(ヘルス、アカウント)。 POST は処理するデータを送ります(音声アップロード、キー発行)。 各エンドポイントの色付きバッジがメソッドを示します。Stripe や GitHub、OpenAI のドキュメントと同じです。

ベースURL: https://api.jptranscribe.com
ブラウザ用プロキシ: https://jptranscribe.com/api

各IPは1日8時間(00:00 GMTにリセット)。残り時間の確認は GET /v1/free または GET /v1/account.

認証

ほとんどのエンドポイントは Authorization ヘッダーに無料APIキーが必要です:

ヘッダー
Authorization: Bearer jpt_YOUR_API_KEY

キーは /get-key/ で発行。公開クライアントではなくバックエンドに置いてください。

クイックスタート

  1. 試してみるでクリップを文字起こし — サンプル付き
  2. アプリ向けキーはAPIキーを発行
  3. /v1/transcribe に音声をPOST
文字起こし + 翻訳
curl -X POST https://api.jptranscribe.com/v1/transcribe \
  -H "Authorization: Bearer jpt_YOUR_KEY" \
  -F "file=@sample.wav" \
  -F "language=ja" \
  -F "translate=true"
POST /v1/keys APIキー発行

無料APIキーを即時発行。認証不要。厳しい日間発行上限なし。文字起こしは1日8時間/IP。

リクエスト
curl -X POST https://api.jptranscribe.com/v1/keys \
  -H "Content-Type: application/json" \
  -d '{}'
GET /v1/account アカウントと残高

キーのワーカーオンライン状態、プールクレジット、統計。

リクエスト
curl https://api.jptranscribe.com/v1/account \
  -H "Authorization: Bearer jpt_YOUR_KEY"
POST /v1/transcribe 音声の文字起こし

日本語音声をアップロード。日間IPクォータを消費 — ルーティング を参照。

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

フィールド必須説明
filefilefile または urlWAV, MP3, M4A, FLAC, OGG
urlstringfile または url音声の公開HTTPS URL
languagestring任意既定 ja
translateboolean任意英訳を含める

レスポンス例

200 OK
{
  "id": "tx_abc123",
  "language": "ja",
  "text": "こんにちは、今日は配信を始めます。",
  "translation": "Hello, starting the stream today.",
  "duration_seconds": 12.4,
  "processed_by": "self",
  "route_reason": "7.92h of 8h/day left for this IP (resets …)",
  "model": "vosk-small-ja+postcorrect"
}
POST /v1/translate テキスト翻訳

音声なしの日本語→英語。常にサーバーで実行。

リクエスト JSON
{
  "text": "今日はいい天気ですね。",
  "source": "ja",
  "target": "en"
}
200 OK
{
  "text": "It's nice weather today, isn't it?",
  "source": "ja",
  "target": "en"
}
GET /v1/health ヘルスチェック

公開ステータスとクォータ。認証不要。ウォームASR / スロットは Oracle 容量を反映。

{
  "status": "ok",
  "version": "1.8.38",
  "backend": {
    "asr_workers": 2,
    "asr_warm_target": 2,
    "remote_asr": { "enabled": false },
    "pool": { "workers_online": 0, "shared_free": { "transcribe_slots": 2 } }
  }
}
GET /v1/free 共有無料プール

公開・読み取り専用。IPの残り無料秒(上限2時間/日)、グリッド容量、チャンク上限、クレジット消費率。ポーリングではオンラインになりません。

構成

api.jptranscribe.com は Oracle Ampere 上: キー、SQLite会計、ルーティング、無料ASR(ウォームVosk)。各IPはUTC日あたり8時間まで。

日間クォータ

各IPはUTC日あたり8時間の文字起こし。残り時間: GET /v1/freeshared_free.free_ip_remaining_hours. Resets at quota_resets_at_utc (00:00 GMT).

レガシーワーカーのエンドポイント

Voskで自分のCPU文字起こし。無料枠のあと、または共有グリッドが満杯のときに必要。

pip install -r requirements.txt
python worker.py --key jpt_YOUR_KEY

セットアップ全体: /worker/

ワーカーエンドポイント

worker.py が内部で使用。カスタムワーカーを作るとき以外は不要。

メソッドPath説明
POST/v1/worker/heartbeatワーカー登録(TTL約15分)
POST/v1/pool/claim次のジョブを取得
GET/v1/pool/jobs/{id}/audioジョブ音声をダウンロード
POST/v1/pool/jobs/{id}/complete結果を送信
POST/v1/pool/jobs/{id}/fail失敗を報告

ルーティングの仕組み

POST /v1/transcribe を呼ぶと、サーバーが次のいずれかを選びます:

ルート条件processed_by
server_demo日間IPクォータ内server
server_demoグリッドに空き · 無料2時間/IP/日以内 · チャンク30秒以内server_demo / server_demo_remote
pool_creditクレジット十分(費用 = 音声秒×1.5)pool
403 error日間クォータ切れ、またはサーバー混雑quota_exhausted / server_busy

エラーコード

HTTPコード意味
400invalid_request不正なパラメータ
400invalid_audio非対応または壊れた音声
401unauthorizedAPIキーなし、または無効
403quota_exhausted00:00 GMT のリセットまで待つ
413file_too_large10MB超
429rate_limitedリクエスト過多
500internal_errorサーバーエラー — 再試行

エラー形式: {"error": {"code": "…", "message": "…"}}

レート制限

制限
1分あたりのリクエストAPIキーあたり30
日間IPクォータ8時間 / IP / UTC日 · 00:00 GMT にリセット
ライブASRチャンク上限1窓あたり30秒
最大ファイルサイズ10 MB
IPあたりのキー発行 / 日厳しい上限なし(レート制限で濫用対策)
プールクレジット他者処理1秒につき1秒獲得。消費は1.5倍(+50%余剰)

Headers: X-RateLimit-Limit, X-RateLimit-Remaining. Live stats: /status/

SDKs

公式SDKはまだありません。curl、またはOpenAPIからクライアントを生成:

/spec/openapi.yaml · /spec/openapi.json