OpenAI Chat Completions (HTTP)
Fased’s Gateway can serve a small OpenAI-compatible Chat Completions endpoint. This endpoint is disabled by default. When disabled, the route is not served.POST /v1/chat/completions- Same port as the Gateway (WS + HTTP multiplex):
http://<gateway-host>:<port>/v1/chat/completions
fased agent), so routing/permissions/config match your Gateway.
Authentication
Uses the Gateway auth configuration. Send a bearer token:Authorization: Bearer <token>
- When
gateway.auth.mode="token", usegateway.auth.token(orFASED_GATEWAY_TOKEN). - When
gateway.auth.mode="password", usegateway.auth.password(orFASED_GATEWAY_PASSWORD). - If
gateway.auth.rateLimitis configured and too many auth failures occur, the endpoint returns429withRetry-After.
Choosing an agent
No custom headers required: encode the agent id in the OpenAImodel field:
model: "fased:<agentId>"(example:"fased:main","fased:beta")model: "fased/<agentId>"(alias)model: "agent:<agentId>"(alias)
x-fased-agent-id: <agentId>(default:main)x-fased-agent: <agentId>(alias)
x-fased-session-key: <sessionKey>to fully control session routing.
Enabling the endpoint
Setgateway.http.endpoints.chatCompletions.enabled to true:
Disabling the endpoint
Setgateway.http.endpoints.chatCompletions.enabled to false:
Session behavior
By default the endpoint is stateless per request (a new session key is generated each call). If the request includes an OpenAIuser string, the Gateway derives a stable session key from it, so repeated calls can share an agent session.
Message support
systemanddevelopermessages become extra system instructions for the run.user,assistant,tool, andfunctionmessages become conversation context.- Text content is supported. Non-text message parts are ignored by this compatibility endpoint.
- Request bodies are capped at 1 MiB.
- Usage fields are returned in the OpenAI shape, but token counts are currently
0.
Streaming (SSE)
Setstream: true to receive Server-Sent Events (SSE):
Content-Type: text/event-stream- Each event line is
data: <json> - Stream ends with
data: [DONE]