年払い 年払いなら、すべての有料プランで2か月分が無料。 プランを見る
サインイン 無料で始める

OpenAI 互換 API

最終更新: 11 11月 2026

概要

OpenAI 互換 API を使うと、OpenAI の chat completions 形式に対応したツールから、ToRun のチャットモデルを ToRun アカウントの支払いで使えます。opencode などのコーディングエージェントは、ToRun の MCP ツールと並べて、ToRun をモデルプロバイダーとして使えます。

アドレスとサインイン

ベース URL https://mcp.torun.ai/v1
サインイン Authorization: Bearer <your developer key>

MCP サーバーと同じ開発者キーを使います。開発者キーを参照してください。OpenAI 互換 API の追加前に作成したキーには 403 insufficient_scope が返ります。キーの権限は変わらないため、新しいキーを作成してください。

この API のエンドポイントは GET /v1/models と POST /v1/chat/completions の 2 つです。/v1 配下のそれ以外のパスには 404 not_found が返ります。

モデル

GET /v1/models は、最初に torun/auto、続いてあなたのプランで使えるすべてのテキストモデルをモデル ID で一覧表示します。各モデルには次の情報があります。

  • 読み取れるテキストの量(context_length)と、書ける返信の長さ(max_completion_tokens)
  • ツールを呼び出せるか(supports_tools)、画像を読み取れるか(supports_vision)
  • 100 万トークンあたりの Runs での価格(pricing: input と output)

torun/auto を使うと、ToRun がリクエストごとにモデルを選びます。リクエストに画像があれば画像を読み取れるモデルを、tools が送られていればツールを呼び出せるモデルを選びます。

Chat completions

POST /v1/chat/completions は次を受け付けます。

  • ロール system、developer(system として扱われます)、user、assistant、tool を持つ messages
  • tools と tool_choice(auto、none、required、または名前を指定した 1 つの関数): あなたのツール自身のツールは、ツール呼び出しとしてそのツールに返され、ToRun が実行することはありません
  • json_object を指定した response_format。json_schema も受け付け、JSON で返信しますが、スキーマ自体は強制されません
  • temperature(0〜2)、top_p(0〜1)、max_completion_tokens または max_tokens、stop(最大 4 つのシーケンス)、seed、reasoning_effort
  • stream と stream_options.include_usage

1 より大きい n、logprobs、top_logprobs、音声、テキスト以外の出力は、無視されるのではなく 400 unsupported_parameter で拒否されます。

画像

画像は、image_url パートに data:image/...;base64,... の形でインラインで送ります。1 リクエストあたり最大 20 MB です。リンクで送った画像は 400 image_url_not_supported で拒否されます。ToRun がその画像を取得することはありません。画像はアプリと同様に安全性チェックを受けます。

ストリーミング

"stream": true を指定すると、返信は chat.completion.chunk 形式の server-sent events として届きます。

  • 最初のチャンクにはロール assistant が含まれ、ツール呼び出しはそれぞれの index とともにストリーミングされます。
  • 送るものがない間は、15 秒ごとに : keepalive のコメント行が届きます。SSE パーサーはこれを読み飛ばします。
  • data: [DONE] は、成功したストリームの終わりを示します。
  • stream_options.include_usage を指定すると、最後のチャンクは choices が空で、usage を含みます。
  • ストリーム開始後の失敗は、[DONE] なしの data: {"error": ...} イベント 1 つとして届きます。

ストリーミングなしの呼び出しは、110 秒経過すると 504 timeout で停止します。長いリクエストは "stream": true で送ってください。

使用量

usage には、prompt_tokens、completion_tokens、total_tokens、prompt_tokens_details.cached_tokens、completion_tokens_details.reasoning_tokens に加えて、呼び出しにかかった Runs を示す torun_credits が含まれます。

opencode で使う

開発者向けページにある opencode の設定は、MCP サーバーと並べて ToRun をモデルプロバイダーとして追加します。

{
  "$schema": "https://opencode.ai/config.json",
  "provider": {
    "torun": {
      "npm": "@ai-sdk/openai-compatible",
      "name": "ToRun",
      "options": { "baseURL": "https://mcp.torun.ai/v1", "apiKey": "{env:TORUN_API_KEY}" },
      "models": { "torun/auto": { "name": "ToRun Auto" } }
    }
  }
}

OpenAI のチャット API に対応したその他のツールも同じように使えます。このページの「OpenAI API」タブには、次の呼び出しが表示されます。

curl https://mcp.torun.ai/v1/chat/completions \
  -H "Authorization: Bearer $TORUN_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"model": "torun/auto", "messages": [{"role": "user", "content": "Hello"}]}'

呼び出しの支払い方法

API 呼び出しには、アプリで同じ使い方をした場合と同じ Runs がかかります。支払いに使われるのは有料の資金だけで、まず有料プランの利用枠から、キーで許可していればその後ウォレットから支払われます。無料枠が API 呼び出しの支払いに使われることはありません。キーの月間と 1 日の上限が適用され、返信はチャットの返信と同じように安全性チェックを受けます。

上限

キーごとに、この API へのリクエストは 1 分あたり 60 回まで、同時に実行できる completions は 4 つまでです。これを超えると、API は Retry-After ヘッダー付きの 429 rate_limit_exceeded を返します。

エラー

エラーはすべて {"error": {"message": ..., "type": ..., "param": ..., "code": ...}} の形をしています。message は、リクエストの Accept-Language ヘッダーで指定した言語で返されます。

ステータス コード 意味
400 invalid_json, missing_parameter, invalid_parameter, unsupported_parameter リクエストの形式が正しくないか、ToRun が対応していないパラメーターを使っています。
400 image_url_not_supported 画像がリンクで送られました。インラインで送ってください。
400 content_blocked 安全性チェックがコンテンツをブロックしました。
400 upstream_rejected モデルのプロバイダーがリクエストを拒否しました。理由はメッセージに記載されています。
401 invalid_api_key キーがない、入力が間違っている、または取り消されています。
402 insufficient_credits, wallet_spend_not_allowed, spending_cap_reached アカウントまたはキーで呼び出しの支払いができません。
403 insufficient_scope キーがこの API の追加前に作成されました。新しいキーを作成してください。
403 model_not_available そのモデルはあなたのプランに含まれていません。
403 account_suspended, no_developer_access アカウントが停止されているか、開発者アクセスがありません。
404 model_not_found そのモデル ID は GET /v1/models の一覧にありません。
404 not_found /v1 配下にそのパスはありません。
429 rate_limit_exceeded 呼び出しが多すぎます。Retry-After の時間だけ待ってください。
500 internal_error ToRun 側で問題が発生しました。
502 upstream_error, empty_reply モデルのプロバイダーでエラーが起きたか、空の返信が返されました。
503 upstream_error, cap_unreadable, scan_unavailable 呼び出しに必要なサービスが一時的に利用できません。もう一度お試しください。
504 timeout ストリーミングなしの呼び出しが 110 秒を超えました。

支払いができないリクエストには、クライアントが再試行を繰り返さないよう、429 ではなく 402 が返されます。