RavChat follows the Anthropic-compat posture: unsupported parameters are accepted and silently ignored so existing clients run unmodified — except where silence would corrupt semantics, which returns 400. This table is the contract.

Request parameters

Response fields

Client notes

openai-python / openai-node

Full support incl. streaming; unknown fields like x_ravchat are preserved (model_extra in Python).

LangChain ChatOpenAI

invoke + streaming + with_structured_output (json_schema) work; agent tool-loops need v1.1 function calling.

LiteLLM

Works — api_base must keep the /v1 suffix. LiteLLM drops unknown body fields; read the x-ravchat-* headers for project/session ids.

Vercel AI SDK

createOpenAICompatible; use includeUsage for usage.cost.

Known deviations from OpenAI

  1. Live project files are mutable (the agent may edit them after indexing) — managed uploads are immutable. See Files.
  2. Sampling parameters are ignored — the agent governs its own generation.
  3. No token-based rate-limit headers — credits are the budget.
  4. n>1, client tools, and non-text input parts other than file parts are rejected rather than emulated (v1).