OpenAI Chat Completions(HTTP)
OpenClaw の Gateway は、小規模な OpenAI 互換 Chat Completions エンドポイントを提供できます。
このエンドポイントはデフォルトで無効です。まず config で有効にしてください。
- POST /v1/chat/completions
- Gateway と同じポート(WS + HTTP 多重化):http://<gateway-host>:<port>/v1/chat/completions
内部的には、リクエストは通常の Gateway エージェント実行として処理されます(openclaw agent と同じコードパス)。そのため、ルーティング/権限/config は Gateway と一致します。
認証
Gateway の auth 設定を使用します。bearer トークンを送信してください:
- Authorization: Bearer <token>
注意:
- gateway.auth.mode="token" の場合、gateway.auth.token(または OPENCLAW_GATEWAY_TOKEN)を使用してください。
- gateway.auth.mode="password" の場合、gateway.auth.password(または OPENCLAW_GATEWAY_PASSWORD)を使用してください。
エージェントの選択
カスタムヘッダーは不要です:エージェント ID を OpenAI の model フィールドにエンコードしてください:
- model: "openclaw:<agentId>"(例:"openclaw:main"、"openclaw:beta")
- model: "agent:<agentId>"(エイリアス)
またはヘッダーで特定の OpenClaw エージェントをターゲットにします:
- x-openclaw-agent-id: <agentId>(デフォルト:main)
高度な設定:
- x-openclaw-session-key: <sessionKey> でセッションルーティングを完全に制御できます。
エンドポイントの有効化
gateway.http.endpoints.chatCompletions.enabled を true に設定してください:
{
gateway: {
http: {
endpoints: {
chatCompletions: { enabled: true }
}
}
}
}
エンドポイントの無効化
gateway.http.endpoints.chatCompletions.enabled を false に設定してください:
{
gateway: {
http: {
endpoints: {
chatCompletions: { enabled: false }
}
}
}
}
セッション動作
デフォルトでは、エンドポイントはリクエストごとにステートレスです(呼び出しごとに新しいセッションキーが生成されます)。
リクエストに OpenAI の user 文字列が含まれている場合、Gateway はそれから安定したセッションキーを導出するため、繰り返し呼び出しでエージェントセッションを共有できます。
ストリーミング(SSE)
Server-Sent Events(SSE)を受信するには stream: true を設定してください:
- Content-Type: text/event-stream
- 各イベント行は data: <json>
- ストリームは data: [DONE] で終了
例
ノンストリーミング:
curl -sS http://127.0.0.1:18789/v1/chat/completions \
-H 'Authorization: Bearer YOUR_TOKEN' \
-H 'Content-Type: application/json' \
-H 'x-openclaw-agent-id: main' \
-d '{
"model": "openclaw",
"messages": [{"role":"user","content":"hi"}]
}'
ストリーミング:
curl -N http://127.0.0.1:18789/v1/chat/completions \
-H 'Authorization: Bearer YOUR_TOKEN' \
-H 'Content-Type: application/json' \
-H 'x-openclaw-agent-id: main' \
-d '{
"model": "openclaw",
"stream": true,
"messages": [{"role":"user","content":"hi"}]
}'