
This article covers the new parameters and usage notes for Kimi K3. On AIHubMix, K3 is available through the Chat Completions, Responses, and Claude-compatible Messages APIs. See also: Moonshot official platform docs. The “Verified” conclusions and sample responses in each section come from actual calls made on 2026-07-17 through the AIHubMix APIs (Chat Completions / Responses / Messages).
1. Model Specs at a Glance
Verified: bothstoplimits are validated, and exceeding either returns 400; the Messages API applies the same validation tostop_sequences. ❗ When a stop sequence is hit, the Messages API does not follow Anthropic semantics: in testing,stop_reasonis"end_turn"(rather than"stop_sequence"),stop_sequenceisnull, and the visible text before the stop word may be empty. Clients that rely on these two fields to detect truncation should take note.
2. Thinking Mode: reasoning_effort Only Supports max
K3’s thinking is on by default, and reasoning_effort only supports a single level: "max".
Multi-turn conversations must pass the thinking history back verbatim: per Moonshot’s official documentation, K3 is trained with preserved thinking, so in multi-turn conversations the previous assistant message must be passed back complete and unmodified (including the thinking content). Missing thinking history leads to unstable output quality. If you use a session-management framework or a proxy layer, confirm the thinking content is passed back untrimmed.
- Chat Completions
- Responses
- Messages
Thinking content is returned in the
reasoning_content field of the response; in multi-turn conversations, pass the previous assistant message (including reasoning_content) back verbatim.Verified: the response returnsreasoning_content; after passing the previous assistant message (includingreasoning_content) back verbatim, subsequent turns answer normally.
3. Sampling Parameters Are Fixed
K3’s sampling parameters are fixed by the vendor:temperature 1.0, top_p 0.95, n 1, and presence_penalty / frequency_penalty 0. The official recommendation is to omit these parameters from requests.
Note: the fixed sampling values are part of the official spec and cannot be verified from response signals; follow the official recommendation and omit these parameters.
4. Tool Calling and Dynamic Tool Loading
tools supports up to 128 tools; tool_choice supports forcing and disabling tool calls. K3 also supports dynamic tool loading: injecting new tools mid-conversation via the tools field of a system message (a message shape specific to the Chat API).
- Chat Completions
- Responses
- Messages
tool_choice supports auto / none / required; required forces the model to call a tool. Dynamic tool loading: the tool-injecting system message carries no content, the injected tools take effect for subsequent turns, and the message must be included again in every request.Verified:tool_choice: "required"forces a tool call even for unrelated prompts;"none"suppresses tool calls; tools injected mid-conversation via a system message withoutcontentcan be called normally.
5. Structured Output
Structured output makes the model return content that strictly conforms to a given JSON Schema.- Chat Completions
- Responses
- Messages
response_format supports json_schema with strict mode.Verified: the output is valid JSON conforming to the schema.
6. Context Caching Is Automatic
K3’s context caching is enabled automatically, with no parameters required. When a repeated long prefix hits the cache, the hit amount is reported in usage (the field name varies by API). Cache pricing is on the model page.- Chat Completions
- Responses
- Messages
Verified: the second request with an identical long prefix reports the hit in usage.prompt_tokens_details.cached_tokens.
7. partial Prefix Completion
Prefix completion makes the model continue generating from a given prefix, well suited to code completion and format-controlled output.
- Chat Completions
- Responses
- Messages
Pass
"partial": true in the last assistant message.Verified: generation continues from the given prefix without repeating it.
8. Vision Input
Images are passed as base64; the content-block format varies by API.- Chat Completions
- Responses
- Messages
Verified: base64 image input works, and the model correctly describes the test image.
9. Verified Reference: Latency and Usage of a Long Single-Call Task
K3’s thinking is fixed at the max level, so single requests for complex tasks take significantly longer than on typical models. Measured data from a single-file HTML game generation task (one prompt with a reference image, generated in one shot with no iteration): the single request took 2,541 seconds (about 42 minutes), with 74,994 completion tokens, of which 54,486 (73%) were thinking tokens; the final output was 1,275 lines of directly runnable code, withfinish_reason stop.
Client-side recommendations:
- Set client timeouts to minutes or longer, and prefer streaming for long tasks;
- Leave ample headroom in
max_completion_tokens— in this case thinking alone consumed 54,486 tokens.
10. Capability × API Support Matrix
Every cell in the table below was verified on 2026-07-17 through actual calls to the AIHubMix production APIs; each cell shows the parameter / field syntax for the corresponding API.FAQ
Which APIs does K3 support on AIHubMix? Chat Completions (/v1/chat/completions), Responses (/v1/responses), and the Claude-compatible Messages API (/v1/messages).
Can thinking be disabled or turned down?
No. K3’s thinking is on by default, and reasoning_effort only supports the single "max" level.
Why must reasoning_content be passed back in multi-turn conversations?
K3 is trained with preserved thinking; Moonshot requires the previous assistant message to be passed back complete and unmodified. Missing thinking history leads to unstable output quality.
What are the limits on the stop parameter?
At most 5 stop sequences, each no longer than 32 bytes; exceeding either limit returns a 400 error.
Does the Messages API support structured output?
❗ No. Kimi K3’s official Messages (Anthropic-compatible) endpoint silently ignores structured-output fields (returning 200 with free-form text and no error). For structured output, use response_format on Chat Completions or text.format on Responses.
Why do single K3 requests take so long?
K3’s thinking is fixed at the max level, and thinking tokens make up a large share on complex tasks (73% of completion tokens in the measured case). Set client timeouts to minutes or longer and use streaming.
For pricing and real-time status, see the Kimi K3 model page; for more models, visit the model gallery. Last updated: 2026-07-17