Skip to main content
The HTTP gateway has landed on main but is not part of a published release. To run it today you build it from source or from the Dockerfile in the repository root. Flags, endpoints, and the error envelope may still change before it ships.
This reference describes the HTTP surface of a gateway you run. There is no hosted warpllm API — see Run the gateway to start one.

Base URL

That is the default bind (0.0.0.0:8080). Chat completions live under /v1, so an OpenAI client’s base URL is http://localhost:8080/v1.

Authentication

None, on this surface. The gateway ignores the caller’s Authorization header — it is never forwarded — and authenticates upstream with its own provider keys from the environment. Whatever key a client sends is unused.Because there is no caller authentication, do not expose a gateway to a network you do not control.

Endpoints

Create a chat completion

POST /v1/chat/completions — whole or streamed.

Liveness check

GET /health — status and version.

Conventions

openai/gpt-5-nano, not gpt-5-nano. The roster is closed — an unlisted name returns 400 rather than being forwarded to an upstream default. See Model routing.
A field not in the request schema reaches the provider untouched rather than being rejected, so a provider parameter warpllm has not learned yet is still usable.
model in every response and every chunk is what you asked for, not the upstream’s own name.
So an official SDK raises its own typed exception. warpllm adds origin, warpllm_code, provider, provider_status, and provider_code — additive fields a client can ignore. See Errors.
The roster is compiled into the binary. The model roster page is generated from it.

Status codes

502 covers the case OpenAI has no spelling for: a client talking to OpenAI directly never sees “the thing behind this gateway did not answer”.