Once a session is open, you talk to the proxy-router exactly like you would talk to OpenAI: same routes, same body schemas. The only difference is the session_id header and the BasicAuth header for the local API.

Headers

Chat completions

Streaming, OpenAI-compatible, model field is set by the provider based on session_id:
Streaming responses are SSE (text/event-stream); non-streaming returns application/json.

Audio transcriptions

POST /v1/audio/transcriptions — multipart form-data; the body is forwarded to the provider, so any field the provider accepts will pass through. Common fields: file, language, response_format, timestamp_granularities[], enable_diarization.

Audio speech (TTS)

Response is audio/mpeg (or whatever response_format you specified).

Embeddings

Closing a session early

Always close manually if you are finished well before the session timer expires. Unused stake returns to your wallet on close; the used stipend day-locks until the next UTC day (withdrawUserStakes). See Sessions: stake, close, claim.

Full schema

See API endpoints for our curated subset, or proxy-router/docs/swagger.yaml for the full schema.