Get started

OpenAI compatibility & streaming

The inference surface is byte-compatible with the OpenAI wire shapes, so adopting Routeplane is a base-URL change, not a rewrite.

POST /v1/chat/completions and POST /v1/embeddings are byte-compatible with the OpenAI wire shapes. Request and response bodies match field-for-field, so existing tooling, retries, and parsers keep working.

Streaming uses standard text/event-stream chunks terminated by data: [DONE]. Set stream: true and read the SSE stream exactly as you would from OpenAI; the serving provider is echoed back in the x-routeplane-provider response header.

bashstreaming
# Set "stream": true and read the SSE chunks until data: [DONE]
curl -N https://<gateway-host>/v1/chat/completions \
  -H "content-type: application/json" \
  -H "x-routeplane-api-key: rp_..." \
  -d '{"model":"gpt-4o","stream":true,"messages":[{"role":"user","content":"Stream this"}]}'

Embeddings cover OpenAI, Azure OpenAI, and Gemini. Inputs are residency-classified and PII-masked by default (mask-then-embed); encoding_format: "base64" is passed through verbatim. Anthropic has no first-party embeddings and returns 422 embeddings_not_supported.