一、概要
当サイトでは OpenAI Chat Completions(/v1/chat/completions) 形式の互換インターフェースを提供しています。OpenAI公式SDKやOpenAI互換クライアントで動作する既存のコードであれば、リクエストURLを当サイトのゲートウェイ入口に向け、api_key を当サイトの sk- から始まるキーに置き換えるだけで利用可能です。その他の呼び出し方法は変更ありません。
現在利用可能なGPTシリーズのモデルはモデル一覧に準じます(gpt-5.4、gpt-5.5、gpt-5.4-mini、gpt-4o など)。完全なリストおよび単価は GET /v1/models で照会できます。
二、インターフェースURL
| メソッド | パス | 説明 |
|---|---|---|
| POST | /v1/chat/completions | チャット補完(非ストリーミング / ストリーミング)。リクエストボディはOpenAIの仕様に準拠 |
| GET | /v1/models | モデルと単価のリスト(認証不要) |
ゲートウェイURL:https://www.relay-api.com。OpenAI互換呼び出しを行う際は、リクエストを POST https://www.relay-api.com/v1 に送信してください。パスはそのまま指定します。
三、認証方法
Authorization: Bearer sk-あなたのAPIキー
「ユーザーセンター → APIキー」から sk- で始まるキーを作成してください。公式のOpenAIと同じ認証ヘッダーを使用します。SDKを使用する場合、Authorization ヘッダーは自動的に付与されます。
四、クイックスタート
4.1 curl(非ストリーミング)
curl -X POST https://www.relay-api.com/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer sk-あなたのAPIキー" \
-d '{
"model": "gpt-5.4",
"messages": [
{"role": "system", "content": "あなたは親切なアシスタントです。"},
{"role": "user", "content": "自分自身を3文で紹介してください"}
],
"temperature": 0.7,
"max_tokens": 512
}'
4.2 OpenAI SDK(Python)
from openai import OpenAI
client = OpenAI(
base_url="https://www.relay-api.com/v1",
api_key="sk-あなたのAPIキー",
)
resp = client.chat.completions.create(
model="gpt-5.4",
messages=[{"role": "user", "content": "こんにちは"}],
)
print(resp.choices[0].message.content)
base_url を上記のOpenAI入口URLに設定し、api_key を置き換えるだけで、それ以外の呼び出し方法は公式SDKと完全に同じです。
五、リクエストパラメータ
| フィールド | 型 | 必須 | 説明 |
|---|---|---|---|
| model | string | はい | モデル名(slug)、例:gpt-5.4 |
| messages | array | はい | メッセージリスト。各要素は {role, content}。roleは system / user / assistant |
| temperature | number | いいえ | サンプリング温度。デフォルトは1.0 |
| top_p | number | いいえ | 核サンプリング。デフォルトは1.0 |
| max_tokens | int | いいえ | 最大出力トークン数 |
| stream | bool | いいえ | ストリーミングの有効化。デフォルトはfalse |
| stop | string / array | いいえ | 停止シーケンス |
| presence_penalty / frequency_penalty | number | いいえ | 重複ペナルティ。範囲は -2〜2 |
六、レスポンス構造
{
"id": "chatcmpl-123456",
"object": "chat.completion",
"created": 1710000000,
"model": "gpt-5.4",
"choices": [
{
"index": 0,
"message": {"role": "assistant", "content": "こんにちは!お会いできて嬉しいです。"},
"finish_reason": "stop"
}
],
"usage": {
"prompt_tokens": 18,
"completion_tokens": 12,
"total_tokens": 30
}
}
| フィールド | 説明 |
|---|---|
| id | 補完処理の一意なID |
| choices[].message | アシスタントの返答。contentにテキストが格納されます |
| choices[].finish_reason | 終了理由:stop / length / content_filter |
| usage.prompt_tokens | 入力トークン数(課金対象) |
| usage.completion_tokens | 出力トークン数(課金対象) |
| usage.total_tokens | 合計トークン数 |
七、ストリーミング出力
リクエストボディに "stream": true を含めるとSSEストリームが返ります。各 data: 行がチャンクとなります:
data: {"id": "chatcmpl-123456", "object": "chat.completion.chunk", "choices": [{"index": 0, "delta": {"role": "assistant"}, "finish_reason": null}]}
data: {"id": "chatcmpl-123456", "object": "chat.completion.chunk", "choices": [{"index": 0, "delta": {"content": "こんにちは"}, "finish_reason": null}]}
data: {"id": "chatcmpl-123456", "object": "chat.completion.chunk", "choices": [{"index": 0, "delta": {}, "finish_reason": "stop"}]}
data: [DONE]
クライアント側で各チャンクの choices[0].delta.content を結合することで完全な回答が得られます。[DONE] を受信するとストリーム終了です。OpenAI SDKで stream=True を設定すれば、これらのイベントは自動的に処理されます。
八、一般的なエラーコード
| HTTPステータス | 意味 | 推奨される対応 |
|---|---|---|
| 400 | リクエストパラメータが不正(モデルが存在しない、messagesが空など) | リクエストボディのフィールドを確認する |
| 401 | APIキーが無効または未指定 | Authorizationヘッダーとキーの形式を確認する |
| 403 | キーが無効化、残高不足、またはそのモデルへの権限なし | チャージするか、キーの権限を確認する |
| 404 | パスまたはモデルが存在しない | base_url とモデル名を確認する |
| 429 | レート制限(レートリミット)超過 | 指数バックオフを用いて再試行する |
| 500 | サービス内部エラー | しばらく待ってから再試行。改善しない場合はサポートへ連絡 |
エラーレスポンスのボディはすべて {"code": ステータスコード, "message": "エラー内容", "data": null} という構造になっています。
九、互換性についての説明
- OpenAI SDK(Python / Node.jsなど)は、
base_urlをカスタマイズすることで利用可能です。 - LobeChat、ChatBox、NextChat、One APIなど、OpenAI互換のあらゆるクライアントでカスタムAPIURLとして設定可能です。
- モデル名は
GET /v1/modelsで返されるslugを参照してください。
