Skip to main content

Unchanged

  • Request shape. messages, temperature, top_p, max_tokens, max_completion_tokens, stream, tools, tool_choice, user.
  • Response shape. A chat.completion with choices, message, finish_reason, usage.
  • Streaming. stream=True / stream: true, Server-Sent Event chunks.
  • Tool calling. The model returns tool_calls; your code runs them and returns a tool message.
  • Prompt caching. cache_control on content parts, on routes that support it. See Prompt Caching.
  • Reasoning. reasoning_details in the response, reasoning_tokens in usage.
  • Model listing.

Differences

  • system_fingerprint is always null.
  • Exactly one choice; n > 1 is rejected.
  • The error envelope is {"error": {"message", "code", "param"}} with no type field.
  • The privacy level travels with the model (:confidential); there is no privacy parameter. Encrypted adds client-side encryption and request headers on top.
  • /v1/chat/completions drops unknown fields at gateway-owned objects. Controls the model cannot honor return 400.
  • Rate-limit headers: X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset, and Retry-After on 429. See Rate Limits.
  • OpenAI model names are not Nito IDs. See model mapping.

Other Surfaces

  • Responses API (/v1/responses): a stateless shim. store: true and previous_response_id are rejected. See the Responses reference.
  • Files API (/v1/files): not served, 404. Send documents inline. See Multimodal.

Rejected Inputs

  • Audio and video input.
  • file_id content references. Supply file content inline.
  • response_format (json_object, json_schema) on models that do not advertise json_mode or structured_outputs.

SDKs

Overview.

Model Mapping

Names to IDs.

Chat Completions

The endpoint.

Streaming

Token by token.

Error Format

The envelope.

Privacy Levels

The four levels.