OpenAI Chat Completions (HTTP)
Gateway OpenClaw dapat menyajikan endpoint Chat Completions kecil yang kompatibel dengan OpenAI. Endpoint ini dinonaktifkan secara default. Aktifkan terlebih dahulu di konfigurasi.POST /v1/chat/completions- Port yang sama dengan Gateway (multiplex WS + HTTP):
http://<gateway-host>:<port>/v1/chat/completions
GET /v1/modelsGET /v1/models/{id}POST /v1/embeddingsPOST /v1/responses
openclaw agent), sehingga perutean/izin/konfigurasinya sesuai dengan Gateway Anda.
Autentikasi
Menggunakan konfigurasi autentikasi Gateway. Jalur autentikasi HTTP yang umum:- autentikasi shared-secret (
gateway.auth.mode="token"atau"password"):Authorization: Bearer <token-or-password> - autentikasi HTTP tepercaya yang membawa identitas (
gateway.auth.mode="trusted-proxy"): rutekan melalui proxy sadar identitas yang dikonfigurasi dan biarkan proxy tersebut menyuntikkan header identitas yang diperlukan - autentikasi terbuka private-ingress (
gateway.auth.mode="none"): tidak memerlukan header autentikasi
- Saat
gateway.auth.mode="token", gunakangateway.auth.token(atauOPENCLAW_GATEWAY_TOKEN). - Saat
gateway.auth.mode="password", gunakangateway.auth.password(atauOPENCLAW_GATEWAY_PASSWORD). - Saat
gateway.auth.mode="trusted-proxy", permintaan HTTP harus berasal dari sumber trusted proxy non-loopback yang dikonfigurasi; proxy loopback pada host yang sama tidak memenuhi mode ini. - Jika
gateway.auth.rateLimitdikonfigurasi dan terlalu banyak kegagalan autentikasi terjadi, endpoint akan mengembalikan429denganRetry-After.
Batas keamanan (penting)
Perlakukan endpoint ini sebagai permukaan akses operator penuh untuk instance gateway.- Autentikasi bearer HTTP di sini bukan model cakupan sempit per pengguna.
- Token/kata sandi Gateway yang valid untuk endpoint ini harus diperlakukan seperti kredensial pemilik/operator.
- Permintaan dijalankan melalui jalur agen control-plane yang sama seperti tindakan operator tepercaya.
- Tidak ada batas tool terpisah non-pemilik/per-pengguna pada endpoint ini; setelah pemanggil lolos autentikasi Gateway di sini, OpenClaw memperlakukan pemanggil itu sebagai operator tepercaya untuk gateway ini.
- Untuk mode autentikasi shared-secret (
tokendanpassword), endpoint memulihkan default operator penuh normal meskipun pemanggil mengirim headerx-openclaw-scopesyang lebih sempit. - Mode HTTP tepercaya yang membawa identitas (misalnya trusted proxy auth atau
gateway.auth.mode="none") menghormatix-openclaw-scopesbila ada dan jika tidak kembali ke himpunan cakupan default operator normal. - Jika kebijakan agen target mengizinkan tool sensitif, endpoint ini dapat menggunakannya.
- Simpan endpoint ini hanya pada loopback/tailnet/private ingress; jangan ekspos langsung ke internet publik.
gateway.auth.mode="token"atau"password"+Authorization: Bearer ...- membuktikan kepemilikan secret operator gateway bersama
- mengabaikan
x-openclaw-scopesyang lebih sempit - memulihkan himpunan cakupan operator default penuh:
operator.admin,operator.approvals,operator.pairing,operator.read,operator.talk.secrets,operator.write - memperlakukan giliran chat pada endpoint ini sebagai giliran pengirim pemilik
- mode HTTP tepercaya yang membawa identitas (misalnya trusted proxy auth, atau
gateway.auth.mode="none"pada private ingress)- mengautentikasi identitas tepercaya luar atau batas deployment tertentu
- menghormati
x-openclaw-scopessaat header ada - kembali ke himpunan cakupan default operator normal saat header tidak ada
- hanya kehilangan semantik pemilik ketika pemanggil secara eksplisit mempersempit cakupan dan menghilangkan
operator.admin
Kontrak model yang berpusat pada agen
OpenClaw memperlakukan field OpenAImodel sebagai target agen, bukan id model penyedia mentah.
model: "openclaw"merutekan ke agen default yang dikonfigurasi.model: "openclaw/default"juga merutekan ke agen default yang dikonfigurasi.model: "openclaw/<agentId>"merutekan ke agen tertentu.
x-openclaw-model: <provider/model-or-bare-id>mengoverride model backend untuk agen yang dipilih.x-openclaw-agent-id: <agentId>tetap didukung sebagai override kompatibilitas.x-openclaw-session-key: <sessionKey>mengontrol perutean sesi sepenuhnya.x-openclaw-message-channel: <channel>menetapkan konteks channel ingress sintetis untuk prompt dan kebijakan yang sadar channel.
model: "openclaw:<agentId>"model: "agent:<agentId>"
Mengaktifkan endpoint
Setelgateway.http.endpoints.chatCompletions.enabled ke true:
Menonaktifkan endpoint
Setelgateway.http.endpoints.chatCompletions.enabled ke false:
Perilaku sesi
Secara default endpoint ini stateless per permintaan (kunci sesi baru dibuat pada setiap panggilan). Jika permintaan menyertakan string OpenAIuser, Gateway menurunkan kunci sesi stabil darinya, sehingga panggilan berulang dapat berbagi satu sesi agen.
Mengapa permukaan ini penting
Ini adalah himpunan kompatibilitas dengan daya ungkit tertinggi untuk frontend dan tool self-hosted:- Sebagian besar penyiapan Open WebUI, LobeChat, dan LibreChat mengharapkan
/v1/models. - Banyak sistem RAG mengharapkan
/v1/embeddings. - Klien chat OpenAI yang ada biasanya dapat mulai dengan
/v1/chat/completions. - Klien yang lebih native agen semakin cenderung memilih
/v1/responses.
Daftar model dan perutean agen
What does `/v1/models` return?
What does `/v1/models` return?
Daftar target agen OpenClaw.Id yang dikembalikan adalah entri
openclaw, openclaw/default, dan openclaw/<agentId>.
Gunakan langsung sebagai nilai model OpenAI.Does `/v1/models` list agents or sub-agents?
Does `/v1/models` list agents or sub-agents?
Endpoint ini mencantumkan target agen tingkat atas, bukan model penyedia backend dan bukan sub-agen.Sub-agen tetap menjadi topologi eksekusi internal. Sub-agen tidak muncul sebagai pseudo-model.
Why is `openclaw/default` included?
Why is `openclaw/default` included?
openclaw/default adalah alias stabil untuk agen default yang dikonfigurasi.Itu berarti klien dapat terus menggunakan satu id yang dapat diprediksi meskipun id agen default yang sebenarnya berubah antar lingkungan.How do I override the backend model?
How do I override the backend model?
Gunakan
x-openclaw-model.Contoh:
x-openclaw-model: openai/gpt-5.4
x-openclaw-model: gpt-5.4Jika Anda menghilangkannya, agen yang dipilih akan berjalan dengan pilihan model normal yang telah dikonfigurasi.How do embeddings fit this contract?
How do embeddings fit this contract?
/v1/embeddings menggunakan id model target agen yang sama.Gunakan model: "openclaw/default" atau model: "openclaw/<agentId>".
Saat Anda membutuhkan model embedding tertentu, kirimkan dalam x-openclaw-model.
Tanpa header itu, permintaan akan diteruskan ke penyiapan embedding normal milik agen yang dipilih.Streaming (SSE)
Setelstream: true untuk menerima Server-Sent Events (SSE):
Content-Type: text/event-stream- Setiap baris event adalah
data: <json> - Stream berakhir dengan
data: [DONE]
Penyiapan cepat Open WebUI
Untuk koneksi Open WebUI dasar:- Base URL:
http://127.0.0.1:18789/v1 - Base URL Docker di macOS:
http://host.docker.internal:18789/v1 - Kunci API: token bearer Gateway Anda
- Model:
openclaw/default
GET /v1/modelsharus mencantumkanopenclaw/default- Open WebUI harus menggunakan
openclaw/defaultsebagai id model chat - Jika Anda menginginkan penyedia/model backend tertentu untuk agen tersebut, setel model default normal agen itu atau kirim
x-openclaw-model
openclaw/default, sebagian besar penyiapan Open WebUI dapat terhubung dengan base URL dan token yang sama.
Contoh
Non-streaming:/v1/modelsmengembalikan target agen OpenClaw, bukan katalog penyedia mentah.openclaw/defaultselalu ada sehingga satu id stabil dapat bekerja lintas lingkungan.- Override penyedia/model backend ditempatkan di
x-openclaw-model, bukan fieldmodelOpenAI. /v1/embeddingsmendukunginputsebagai string atau array string.