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 Completions | Responses | Messages | |
|---|---|---|---|
| Format | OpenAI | OpenAI | Anthropic |
| Path | POST /v1/chat/completions | POST /v1/responses | POST /v1/messages |
| Streaming | stream: true | stream: true | stream: true |
| Tool calls | Function tools | Function tools and namespace tools | Client tools |
| A forced tool call returns | finish_reason: "tool_calls" | A function_call item | stop_reason: "tool_use" |
| Structured outputs | response_format: json_schema, json_object | text.format: json_schema, json_object | output_config.format: json_schema |
| Reasoning controls | reasoning_effort, chat_template_kwargs | reasoning.effort, chat_template_kwargs | thinking, output_config.effort |
| Reasoning text | message.reasoning | A reasoning item | A thinking block |
store | false by default | false by default | Not available |
| Logprobs | logprobs, top_logprobs | top_logprobs, with include: ["message.output_text.logprobs"] | Not available |
| Images | image_url, and video_url for video | input_image | image blocks |
| Cached input tokens | usage.prompt_tokens_details.cached_tokens | usage.input_tokens_details.cached_tokens | usage.cache_read_input_tokens |
| Errors | OpenAI error body | OpenAI error body | Anthropic 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_choicenames a tool, the call ends withfinish_reason: "tool_calls"on Chat Completions andstop_reason: "tool_use"on Messages, also in a stream. Some open-model servers end this call withstoporend_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, andmax_tokenslimits the two together. With a small limit,contentisnullandfinish_reasonislength. Setmax_tokensto 2048 or more. See Reasoning. - Thinking text. On Messages, a
thinkingblock holds the reasoning of the model as the model wrote it, not a summary. Withthinking: {"type": "adaptive", "display": "omitted"}, each thinking block has an empty text and keeps itssignature. In a stream, eachthinking_deltahas 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 withthinking: {"type": "disabled"}. The answer then keeps a shortthinkingblock. store. OpenAI stores each response unlessstoreisfalse. Munito AI stores a response only withstore: trueorbackground: true, andprevious_response_idneeds a stored response. Addstore: truewhere your code chains responses. See Data privacy.- Codex. The Responses API accepts the
namespacetools, the hostedweb_searchtool and theclient_metadatafield that Codex sends, so a stock Codex runs. A call to a namespace tool comes back with itsnamespaceand itsname. 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_tokensabove 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_searchtool, and the model answers without a search.client_metadatahas no effect. Atool_choicethat forces a web search returns400. - On Messages,
context_managementhas no effect, and the model does not keep tothinking.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.
Migrate from OpenAI or Anthropic
Move from the OpenAI or Anthropic SDK to open models on Munito AI. Change the base URL, the API key and the model name, and check what works differently.
FAQ
Short answers about the Munito AI API. Where requests run, the EU-only host, the open models, the API formats, prices and data retention.