Skip to main content

Vendor differences

See Authentication & Base URL for client configuration. These representative tests were run on 2026-09-22 and apply to the permissions and routes available at that time, not every version or parameter combination.

Protocol support​

ProtocolRepresentative models that passed
Chat CompletionsAll 36 text models in the public catalog, including GPT, Claude, Gemini, DeepSeek, GLM, Kimi and MiniMax
Anthropic Messagesclaude-haiku-4-5, claude-sonnet-5, deepseek-v4-flash, glm-5.3-flash, kimi-k2.6, MiniMax-M2.7
Responses APIgpt-5.6-luna, gpt-5.5 (Codex CLI)
Native Geminigemini-3.6-flash, gemini-3.7-flash, gemini-3.8-flash; image generation with gemini-3.1-flash-image
Verify Responses separately

Chat Completions success does not establish Responses support. Claude Haiku returned 500 / convert_request_failed / not implemented, while DeepSeek Flash returned 400 / MissingParameter. Other models were not exhaustively tested on this endpoint; they do not necessarily return the same error.

Roles and conversation history​

developer support varies by model and route. DeepSeek Flash, GLM 5.3 Flash and MiniMax M2.7 accepted a developer message and returned text. Claude Haiku and Kimi K2.6 rejected the role. Use system / user / assistant for basic portable examples. Acceptance does not prove identical role-priority semantics.

Anthropic system prompts go at the top level. With Messages, use the top-level system field.

Preserve tool-call context. With OpenAI-compatible requests, keep the assistant's tool_calls and return role: "tool" results with matching tool_call_id values. With Anthropic, preserve the tool_use / tool_result associations.

Do not discard all thinking blocks. Claude Sonnet 5 returned thinking and tool_use with extended thinking enabled. Returning the original assistant content, including its signature, followed by the matching tool_result, produced a final answer. Preserve required blocks according to the Anthropic protocol; do not alter or invent signatures. Handle other models' reasoning_content according to their specifications.

DeepSeek​

Both deepseek-v4-pro and deepseek-v4-flash returned nonempty reasoning_content and final text after receiving enable_thinking: true. Do not describe reasoning as Pro-only. This test did not establish true/false switch behavior or all corresponding Messages thinking parameters.

Kimi​

Minimal kimi-k3 calls succeeded with both temperature: 1 and temperature: 0.3; it cannot be described as requiring 1 universally. Acceptance does not prove the upstream changes its sampling distribution accordingly. Keep the error details and reduce to a minimal request when diagnosing parameter errors.

MiniMax​

Copy model names exactly from the catalog, such as MiniMax-M2.7 and MiniMax-M3, preserving case and hyphens. Availability and permissions depend on the current account.

GLM​

Reasoning can consume the output budget. With max_tokens: 128, glm-5-turbo returned HTTP 200 but empty final text and finish_reason: "length". Raising the limit to 1024 produced text. Check the finish reason and reasoning usage before treating HTTP 200 as a complete answer.

Anthropic​

Both x-api-key and Bearer authentication passed Messages tests. Tool count is not the only constraint: claude-sonnet-5 accepted 1, 13 and 32 tool definitions containing nested objects, arrays and enums. The 32-tool request also succeeded with automatic tool choice.

This does not prove support for arbitrarily complex schemas or a complete default Hermes toolset. Record tool count, schema, request size and error details before reducing tools to isolate a 400. See Hermes.

Google​

Gemini appears in the current catalog. Native calls passed for three text models, and image generation passed for one image model, as listed above. Actual availability still depends on permissions and route status.

The native path is /v1beta/models/{model}:generateContent. Supply contents in the body and generation settings under generationConfig.

OpenAI​

Representative GPT models passed Chat Completions and Responses tests. gpt-image-2 returned a decodable generated image. Image editing and all advanced parameter combinations were not covered in this run; generation success does not establish editing support. See First Call for image response handling.

Diagnosing a 400​

  1. Check the exact model name, permissions and protocol path.
  2. Preserve error.code/type/message and the request ID.
  3. Reproduce with that protocol's minimal required parameters.
  4. Add roles, sampling parameters and tools back individually.
  5. For multi-turn calls, check tool IDs and all required protocol context.

See FAQ for more troubleshooting.