Skip to main content

Capability matrix

Every table on this page is generated from the code that serves requests and from the production model policy, so it cannot say something the router doesn't do. Where a cell says a parameter is dropped, the response header X-MindsHub-Dropped-Params will name it at request time; where it says clamped, X-MindsHub-Clamped-Params will. The rule behind both is in Core concepts.

Legend

CellMeaning
yesHonored on every model behind this API.
per modelHonored where the target model takes it, dropped and named in X-MindsHub-Dropped-Params where it doesn't. The models table says which.
partialHonored with a limitation stated in the row's notes.
noAccepted and ignored. The request succeeds and the feature silently doesn't happen.
400Refused with a 400 naming the field, because serving the request would answer a different question than the one asked.
no fieldThis API's wire format has no field for it.
forwarded / adapted / conditional / ignored / rejectedThe parameter table's own vocabulary: relayed as sent; honored with translation; honored per model; accepted and ignored; refused with a 400.

Features by API

One row per feature, one column per request format. Spellings differ by API; the semantics are the same because all three reach the same service.

FeatureChat CompletionsResponsesMessagesNotes
Streamingyes · streamyes · streamyes · stream
Tool callingyes · toolsyes · toolsyes · tools
Parallel tool callsper model · parallel_tool_callsper model · parallel_tool_callsper model · tool_choice.disable_parallel_tool_use
Structured output (JSON schema)per model · response_formatper model · text.formatper model · output_config.formatThe one parameter refused rather than dropped when the model can't honor it.
Schema-less JSON modepartialpartialno fieldjson_object is a 400 on the Claude family, which has no schema-less mode.
Reasoning effortper model · reasoning_effortper model · reasoning.effortper model · output_config.effort
Extended thinking objectno fieldno fieldper model · thinking
Reasoning carried across turnsno fieldper model · include: reasoning.encrypted_contentno field
Web searchyesyesyesNative or external per model; the models table says which. On a model without search the web tools are dropped.
Images inyesyesyesAccepted on every model; a model without vision returns its provider's own error.
PDF / file inputpartialnonoA Chat Completions file part reaches OpenAI-transport models only; Responses input_file parts and Anthropic Files API references are dropped.
Automatic prompt cachingyesyesyes
Explicit cache breakpointsno fieldno fieldpartialBlock-level cache_control is honored on Claude-family targets; the top-level auto-caching switch is ignored.
Server-side conversation stateno · storeyes · storeno fieldstore and previous_response_id; 30-day retention, chains walked 25 turns back.
Stored-response operationsno fieldyesno fieldGET/DELETE /v1/responses/{id}, input_items, cancel.
Token counting endpointno fieldno fieldyesPOST /v1/messages/count_tokens, free and unmetered.
Legacy functions / function_callyes · functionsno fieldno field
web_search_optionsyes · web_search_optionsno fieldno field
Sampling (temperature, top_p)per model · temperatureper model · temperatureper model · temperature
seed and repetition penaltiesper model · seedno fieldno field
verbosityper model · verbosityper model · text.verbosityno field
Conversations API (conversation)no field400 · conversationno field

Request parameters by API

One row per parameter concept. Each cell shows how that API treats it (forwarded, adapted, conditional on the model, ignored, or rejected with a 400) and the spelling that API uses. The same tables, filtered to one API, appear on each API reference page.

GroupParameterChat CompletionsResponsesMessages
Structuremodeladapted · modeladapted · modeladapted · model
Structureconversation so faradapted · messagesadapted · inputforwarded · messages
Structuresystem promptadapted · messages[role=system]adapted · instructionsforwarded · system
Structurestreamforwarded · streamforwarded · streamforwarded · stream
Structurestream_optionsadapted · stream_optionsignored · stream_optionsno field
Generationmax_tokensconditional · max_tokensconditional · max_output_tokensconditional · max_tokens
Generationmax_completion_tokensadapted · max_completion_tokensno fieldno field
Generationtemperatureconditional · temperatureconditional · temperatureconditional · temperature
Generationtop_pconditional · top_pconditional · top_pconditional · top_p
Generationtop_kconditional · top_kno fieldconditional · top_k
Generationstop_sequencesconditional · stopno fieldconditional · stop_sequences
Generationseedconditional · seedno fieldno field
Generationpresence_penaltyconditional · presence_penaltyno fieldno field
Generationfrequency_penaltyconditional · frequency_penaltyno fieldno field
Generationverbosityconditional · verbosityconditional · text.verbosityno field
Reasoningreasoning_effortconditional · reasoning_effortconditional · reasoning.effortadapted · output_config.effort
Reasoningthinkingno fieldno fieldconditional · thinking
Reasoningincludeno fieldconditional · includeno field
Toolstoolsadapted · toolsadapted · toolsadapted · tools
Toolstool_choiceadapted · tool_choiceadapted · tool_choiceadapted · tool_choice
Toolsparallel_tool_callsconditional · parallel_tool_callsconditional · parallel_tool_callsadapted · tool_choice.disable_parallel_tool_use
Toolsweb_search_optionsadapted · web_search_optionsno fieldno field
Toolsfunctionsadapted · functionsno fieldno field
Toolsfunction_calladapted · function_callno fieldno field
Output shaperesponse_formatconditional · response_formatconditional · text.formatadapted · output_config.format
Storage and chainingstoreignored · storeadapted · storeno field
Storage and chainingprevious_response_idno fieldadapted · previous_response_idno field
Storage and chainingbackgroundno fieldignored · backgroundno field
Accepted and ignoredmetadataignored · metadataignored · metadataignored · metadata
Accepted and ignoreduserignored · userignored · userno field
Accepted and ignoredsafety_identifierignored · safety_identifierignored · safety_identifierno field
Accepted and ignoredservice_tierignored · service_tierignored · service_tierignored · service_tier
Accepted and ignoredprompt_cache_keyignored · prompt_cache_keyignored · prompt_cache_keyno field
Accepted and ignoredprompt_cache_retentionignored · prompt_cache_retentionignored · prompt_cache_retentionno field
Accepted and ignorednignored · nno fieldno field
Accepted and ignoredlogprobsignored · logprobsno fieldno field
Accepted and ignoredtop_logprobsignored · top_logprobsignored · top_logprobsno field
Accepted and ignoredlogit_biasignored · logit_biasno fieldno field
Accepted and ignoredpredictionignored · predictionno fieldno field
Accepted and ignoredmodalitiesignored · modalitiesno fieldno field
Accepted and ignoredaudioignored · audiono fieldno field
Accepted and ignoredtruncationno fieldignored · truncationno field
Accepted and ignoredmax_tool_callsno fieldignored · max_tool_callsno field
Accepted and ignoredcache_control (top-level)no fieldno fieldignored · cache_control
Accepted and ignoredcontainerno fieldno fieldignored · container
Accepted and ignoredinference_geono fieldno fieldignored · inference_geo
Refusedconversationno fieldrejected (400) · conversationno field
Refusedpromptno fieldrejected (400) · promptno field
Refusedcontext_managementno fieldrejected (400) · context_managementno field

Providers

Transport-level facts about each upstream provider. The models table below already has these intersected in; this table explains why a model row reads the way it does.

ProviderTransportNative web searchExternal search loopNamed tool_choicetool_choice: noneParams the transport can't carrymax_tokens floorNotes
openaiopenai_responsesopenai_nativenoyesyestop_k, stop_sequences, thinking, seed, presence_penalty, frequency_penalty16Real api.openai.com rejects max_tokens below 16; requests below the floor are raised to it.
anthropicanthropic_messagesanthropic_nativenoyesyesseed, presence_penalty, frequency_penalty, verbositynone
geminigemini_nativegemini_google_searchnoyesyesthinking, parallel_tool_calls, verbositynoneSets thinking depth through thinking_level, which the effort parameter carries; the fetch web tool is always dropped.
fireworksfireworksnoyesyesnothinking, seed, presence_penalty, frequency_penalty, verbositynoneShares Anthropic's wire shape but not its backend: tool_choice: none is honored by dropping the tools.
moonshotmoonshotmoonshot_nativeyesnoyesthinking, reasoning_effort, verbositynoneKimi reasons internally with no adjustable level. Its own $web_search builtin or the external loop, per policy.
metafireworksnoyesyesnothinking, response_format, seed, presence_penalty, frequency_penalty, verbositynoneAs Fireworks. response_format refused pending verification of Meta's own spelling.
cerebrasmoonshotnoyesyesyesthinking, top_k, verbositynone
groqmoonshotnoyesyesyesthinking, top_k, verbositynone
xaiopenai_responsesopenai_nativenoyesyestop_k, stop_sequences, thinking, seed, presence_penalty, frequency_penalty, verbositynoneOpenAI-compatible Responses transport; verbosity unverified and dropped.

Models

One row per generation alias, in the order GET /v1/models lists them. Pinned versions share their family's facts. Embedding aliases are on Embeddings.

AliasProviderEffort levelsthinking objectWeb searchNamed tool_choicetool_choice: noneParallel tool callsJSON schemaJSON modeSamplingStop sequencesseed and penaltiesverbosityMax output tokensContext windowNotes
mindshub_airopenainot adjustablenononeyesyesyesyesyesnonenononeyes128,0001,050,000[a]
sonnetanthropiclow · medium · high · maxyesnativeyesyesyesyes400noneyesnoneno128,0001,000,000
sonnet-5anthropiclow · medium · high · maxyesnativeyesyesyesyes400noneyesnoneno128,0001,000,000
opusanthropiclow · medium · high · xhigh · maxyesnativeyesyesyesyes400noneyesnoneno128,0001,000,000
opus-5anthropiclow · medium · high · xhigh · maxyesnativeyesyesyesyes400noneyesnoneno128,0001,000,000
fableanthropiclow · medium · high · xhigh · maxyesnative→ autodrops toolsyesyes400noneyesnoneno128,0001,000,000
fable-5-1anthropiclow · medium · high · xhigh · maxyesnative→ autodrops toolsyesyes400noneyesnoneno128,0001,000,000
fable-5anthropiclow · medium · high · xhigh · maxyesnativeyesyesyesyes400noneyesnoneno128,0001,000,000
haikuanthropicnot adjustableyesnativeyesyesyesyes400temperature, top_p, top_kyesnonenoprovider default200,000
haiku-4-5anthropicnot adjustableyesnativeyesyesyesyes400temperature, top_p, top_kyesnonenoprovider default200,000
gptopenailow · medium · high · xhigh · maxnonativeyesyesyesyesyesnonenononeyes128,0001,050,000[a]
gpt-6-astraopenailow · medium · high · xhigh · maxnonativeyesyesyesyesyesnonenononeyes128,0001,050,000[a]
gpt-5-6-solopenainone · low · medium · high · xhigh · maxnonativeyesyesyesyesyesnonenononeyes128,0001,050,000[a]
gpt-terraopenainone · low · medium · high · xhigh · maxnonativeyesyesyesyesyesnonenononeyes128,0001,050,000[a]
gpt-terra-5-6openainone · low · medium · high · xhigh · maxnonativeyesyesyesyesyesnonenononeyes128,0001,050,000[a]
gpt-lunaopenainone · low · medium · high · xhigh · maxnonativeyesyesyesyesyesnonenononeyes128,0001,050,000[a]
gpt-luna-5-6openainone · low · medium · high · xhigh · maxnonativeyesyesyesyesyesnonenononeyes128,0001,050,000[a]
gpt-codexopenailow · medium · high · xhighnonativeyesyesyesyesyesnonenononeyes128,000400,000[a]
gpt-codex-5-3openailow · medium · high · xhighnonativeyesyesyesyesyesnonenononeyes128,000400,000[a]
gpt-miniopenainone · low · medium · high · xhighnonativeyesyesyesyesyestemperature, top_pnononeyesprovider default400,000[a]
gpt-mini-5-4openainone · low · medium · high · xhighnonativeyesyesyesyesyestemperature, top_pnononeyesprovider default400,000[a]
gpt-nanoopenainone · low · medium · high · xhighnonativeyesyesyesyesyestemperature, top_pnononeyesprovider default400,000[a]
gpt-nano-5-4openainone · low · medium · high · xhighnonativeyesyesyesyesyestemperature, top_pnononeyesprovider default400,000[a]
geminigeminilow · medium · highnonativeyesyesnoyesyesnoneyesseed, presence_penalty, frequency_penaltyno65,5361,048,576
gemini-3-1-progeminilow · medium · highnonativeyesyesnoyesyesnoneyesseed, presence_penalty, frequency_penaltyno65,5361,048,576
gemini-flashgeminilow · medium · highnonativeyesyesnoyesyesnoneyesseed, presence_penalty, frequency_penaltyno65,5361,048,576
gemini-flash-3-8geminilow · medium · highnonativeyesyesnoyesyesnoneyesseed, presence_penalty, frequency_penaltyno65,5361,048,576
gemini-flash-3-7geminilow · medium · highnonativeyesyesnoyesyesnoneyesseed, presence_penalty, frequency_penaltyno65,5361,048,576
gemini-flash-3-6geminiminimal · low · medium · highnonativeyesyesnoyesyesnoneyesseed, presence_penalty, frequency_penaltyno65,5361,048,576
gemini-flash-3-5geminiminimal · low · medium · highnonativeyesyesnoyesyesnoneyesseed, presence_penalty, frequency_penaltyno65,5361,048,576
gemini-flash-3geminiminimal · low · medium · highnonativeyesyesnoyesyestemperature, top_p, top_kyesseed, presence_penalty, frequency_penaltynoprovider default1,048,576
gemini-flash-litegeminiminimal · low · medium · highnonativeyesyesnoyesyesnoneyesseed, presence_penalty, frequency_penaltyno65,5361,048,576
gemini-flash-lite-3-1geminiminimal · low · medium · highnonativeyesyesnoyesyesnoneyesseed, presence_penalty, frequency_penaltyno65,5361,048,576
kimifireworksnot adjustablenoexternal (exa)yesdrops toolsyesyesyestemperature, top_p, top_kyesnonenoprovider default[b]
kimi-k3fireworksnot adjustablenoexternal (exa)yesdrops toolsyesyesyestemperature, top_p, top_kyesnonenoprovider default
deepseekfireworksnone · low · high · maxnoexternal (exa)yesdrops toolsyesyesyestemperature, top_p, top_kyesnonenoprovider default
deepseek-v4-profireworksnone · low · high · maxnoexternal (exa)yesdrops toolsyesyesyestemperature, top_p, top_kyesnonenoprovider default
deepseek-v4-flashfireworksnone · low · high · maxnoexternal (exa)yesdrops toolsyesyesyestemperature, top_p, top_kyesnonenoprovider default
deepseek-v4-flash-0731fireworksnone · low · high · maxnoexternal (exa)yesdrops toolsyesyesyestemperature, top_p, top_kyesnonenoprovider default
qwenfireworkslow · medium · xhighnoexternal (exa)yesdrops toolsyesyesyestemperature, top_p, top_kyesnonenoprovider default
qwen-3-8-a95bfireworkslow · medium · xhighnoexternal (exa)yesdrops toolsyesyesyestemperature, top_p, top_kyesnonenoprovider default
glmfireworkslow · high · maxnoexternal (exa)yesdrops toolsyesyesyestemperature, top_p, top_kyesnonenoprovider default
glm-5-3fireworkslow · high · maxnoexternal (exa)yesdrops toolsyesyesyestemperature, top_p, top_kyesnonenoprovider default
glm-5-2fireworkshigh · maxnoexternal (exa)yesdrops toolsyesyesyestemperature, top_p, top_kyesnonenoprovider default
glm-5-3-flashfireworkslow · high · maxnoexternal (exa)yesdrops toolsyesyesyestemperature, top_p, top_kyesnonenoprovider default
glm-flash-5-3fireworkslow · high · maxnoexternal (exa)yesdrops toolsyesyesyestemperature, top_p, top_kyesnonenoprovider default
muse-sparkmetanot adjustablenoexternal (exa)→ autodrops toolsyes400400temperature, top_p, top_kyesnonenoprovider default1,048,576[c]
muse-spark-1-3metanot adjustablenoexternal (exa)→ autodrops toolsyes400400temperature, top_p, top_kyesnonenoprovider default1,048,576
muse-spark-1-2metanot adjustablenoexternal (exa)→ autodrops toolsyes400400temperature, top_p, top_kyesnonenoprovider default1,048,576
muse-spark-1-1metanot adjustablenoexternal (exa)→ autodrops toolsyes400400temperature, top_p, top_kyesnonenoprovider default1,048,576
grokxailow · medium · high · xhighnonativeyesyesyesyesyestemperature, top_pnononenoprovider default500,000
grok-4-6xailow · medium · high · xhighnonativeyesyesyesyesyestemperature, top_pnononenoprovider default500,000
grok-4-5xailow · medium · highnonativeyesyesyesyesyestemperature, top_pnononenoprovider default500,000
  • [a] max_tokens below 16 is raised to 16.
  • [b] Takes temperature only at 1 and top_p only at 0.95; other values return the provider's own 400. Tool schemas are normalized for Kimi's stricter validator.
  • [c] Only tool_choice: "auto" is accepted upstream; named and required are rewritten to auto, none is honored by dropping the tools. response_format is refused until Meta's own spelling is verified.

No production alias currently routes to: moonshot, cerebras, groq.

Generated from the live production model policy on 2026-09-10.

How this page is produced

The tables between the GENERATED markers are rendered by scripts/generate_capability_matrix.py from three sources: the per-API parameter contracts in the service's request modules, the per-provider transport table, and a committed snapshot of the production model policy. A unit test fails any pull request whose committed tables disagree with what the code renders, and the docs publish re-checks against the live production policy.

If a cell looks wrong, the fix is in the code or the policy, not on this page: file it against the inference service and the table follows on the next publish.