OpenAI- and Anthropic-compatible API for open models: what each endpoint supports

Munito AI serves open-source models through the OpenAI Chat Completions and Responses APIs and the Anthropic Messages API. See which tool calls, structured outputs and reasoning controls each endpoint supports.

Munito AI is an OpenAI-compatible API for open-source models. It serves the OpenAI Chat Completions and Responses APIs and the Anthropic Messages API, each with streaming, tool calls and structured outputs.

Set the base URL of your SDK. The OpenAI SDK, in Python or TypeScript, uses https://api.munito.ai/inference/v1, and the Anthropic SDK uses https://api.munito.ai/inference. Migrate from OpenAI or Anthropic gives the code and the model names.

What each endpoint supports

Chat CompletionsResponsesMessages
FormatOpenAIOpenAIAnthropic
PathPOST /v1/chat/completionsPOST /v1/responsesPOST /v1/messages
Streamingstream: truestream: truestream: true
Tool callsFunction toolsFunction tools and namespace toolsClient tools
A forced tool call returnsfinish_reason: "tool_calls"A function_call itemstop_reason: "tool_use"
Structured outputsresponse_format: json_schema, json_objecttext.format: json_schema, json_objectoutput_config.format: json_schema
Reasoning controlsreasoning_effort, chat_template_kwargsreasoning.effort, chat_template_kwargsthinking, output_config.effort
Reasoning textmessage.reasoningA reasoning itemA thinking block
storefalse by defaultfalse by defaultNot available
Logprobslogprobs, top_logprobstop_logprobs, with include: ["message.output_text.logprobs"]Not available
Imagesimage_url, and video_url for videoinput_imageimage blocks
Cached input tokensusage.prompt_tokens_details.cached_tokensusage.input_tokens_details.cached_tokensusage.cache_read_input_tokens
ErrorsOpenAI error bodyOpenAI error bodyAnthropic error body

Each path starts with https://api.munito.ai/inference. A request can use only the features of its model. For example, an image to a text-only model returns 400.

Differences from OpenAI and Anthropic

  • Forced tool calls. When tool_choice names a tool, the call ends with finish_reason: "tool_calls" on Chat Completions and stop_reason: "tool_use" on Messages, also in a stream. Some open-model servers end this call with stop or end_turn. An agent loop that checks this value then misses the call.
  • Reasoning and max_tokens. A reasoning model writes its reasoning before the answer, and max_tokens limits the two together. With a small limit, content is null and finish_reason is length. Set max_tokens to 2048 or more. See Reasoning.
  • Thinking text. On Messages, a thinking block holds the reasoning of the model as the model wrote it, not a summary. With thinking: {"type": "adaptive", "display": "omitted"}, each thinking block has an empty text and keeps its signature. In a stream, each thinking_delta has an empty text.
  • Thinking off. A model that cannot turn its reasoning off, such as zai-org/glm-5.3-flash, runs at its lowest effort with thinking: {"type": "disabled"}. The answer then keeps a short thinking block.
  • store. OpenAI stores each response unless store is false. Munito AI stores a response only with store: true or background: true, and previous_response_id needs a stored response. Add store: true where your code chains responses. See Data privacy.
  • Codex. The Responses API accepts the namespace tools, the hosted web_search tool and the client_metadata field that Codex sends, so a stock Codex runs. A call to a namespace tool comes back with its namespace and its name. See Codex.
  • Errors. Chat Completions and Responses send the OpenAI error body, and a validation error names the field in param. Messages sends the Anthropic error body, with the error type of each status. Each SDK therefore raises its usual exceptions. See Errors.

Parameters that Munito AI cannot apply

A parameter that Munito AI cannot apply returns 400, and the error names the parameter. Stock clients send some values on each request, so these values do not fail:

  • A max_tokens above the model maximum drops to the maximum.
  • A reasoning level that the model does not have moves to the nearest level that the model has.
  • On Responses, Munito AI removes the hosted web_search tool, and the model answers without a search. client_metadata has no effect. A tool_choice that forces a web search returns 400.
  • On Messages, context_management has no effect, and the model does not keep to thinking.budget_tokens.

Models

Each public chat model, such as qwen/qwen3.8-27b, zai-org/glm-5.3-flash and deepseek-ai/deepseek-v4-flash, answers on the three endpoints with tool calls and structured outputs. Models and pricing lists the inputs and the reasoning levels of each model.