If you are starting a new official Kimi API integration, use kimi-k2.6 first. Keep kimi-k2.5 for K2.5-specific compatibility or comparison tests, and use kimi-k2-thinking only when you intentionally target the older dedicated thinking model. Provider aliases, "free API" videos, and Claude-replacement setup guides can be useful trails, but they do not own the official Kimi API contract.
| Need | Use | Why | Check before production |
|---|---|---|---|
| New official Kimi API build | kimi-k2.6 | Current K2.6 quickstart model ID on the official Kimi API | Current model list, price, context, and account limits |
| Preserve a K2.5-specific test | kimi-k2.5 | Still a distinct model in the official model list | Whether the test really needs K2.5 behavior |
| Dedicated older thinking route | kimi-k2-thinking | Separate model ID, not a K2.6 alias | Reasoning output, tool-call handling, and max tokens |
| Hosted provider or free route | Provider-specific alias | Useful for testing only when the route owner supports it | Price, limits, model identity, data policy, and free-claim proof |
The model ID is the first decision

Kimi's current API surface is easy to misread because the public names are close enough to blur together. Kimi K2.6 API, Kimi K2.5 API, and Kimi K2 Thinking all sound like one product family, but an API call does not accept a family mood. It accepts a model string, a route, and request parameters.
For new work, the cleanest default is kimi-k2.6 on the official Kimi/Moonshot API. The K2.6 quickstart uses an OpenAI-compatible client shape and the base URL https://api.moonshot.ai/v1. That does not mean every older K2 reference should be deleted. It means new code should not start from an old model string unless the old behavior is the point of the test.
kimi-k2.5 still matters when you are comparing K2.5 behavior, preserving an existing evaluation, or testing a provider route that has not moved to K2.6. Treat it as a distinct route, not as a typo for K2.6. If your requirement is simply "use the current Kimi model," K2.5 is not the first row.
kimi-k2-thinking is narrower again. The official thinking guide treats it as a dedicated K2 thinking model, while K2.6 and K2.5 can have thinking behavior controlled by request settings. That boundary matters because it changes how you read the response and how you keep reasoning state across tool calls.
Start from the official API route
The official API route is the only owner for current model IDs, model-list status, pricing rows, context window, and parameter behavior. Provider pages can be useful, but they are not a substitute for the Kimi/Moonshot model list when you are deciding what the official model string means.
A minimal OpenAI-compatible call should make the route visible:
hljs tsimport OpenAI from "openai";
const client = new OpenAI({
apiKey: process.env.KIMI_API_KEY,
baseURL: "https://api.moonshot.ai/v1",
});
const response = await client.chat.completions.create({
model: "kimi-k2.6",
messages: [
{ role: "user", content: "Summarize the routing risk in this Kimi setup." },
],
});
console.log(response.choices[0]?.message);
Keep that example small on purpose. Before you add tool calls, multimodal input, batch evaluation, or a provider proxy, confirm that the selected account, project, key, and model string work on the official route. If the same request later fails through a hosted provider, you will know whether the issue belongs to Kimi's model contract or the provider's alias, billing, routing, or capability layer.
On May 8, 2026, the official platform showed K2.6 and K2.5 as 256K-context multimodal models, listed K2.6 pricing at cache hit $0.16/MTok, input $0.95/MTok, and output $4.00/MTok, and listed K2.5 pricing at cache hit $0.10/MTok, input $0.60/MTok, and output $3.00/MTok. Treat those as dated route-owner facts, not evergreen promises. Re-check the current platform before publishing budgets, dashboards, or user-facing price copy.
Do not confuse K2 Thinking with thinking mode

The fastest way to break a Kimi integration is to treat "thinking" as only a marketing word. There are two separate layers:
| Layer | What it means | Practical effect |
|---|---|---|
kimi-k2-thinking | A dedicated older K2 thinking model ID | You choose it in the model field when that route is intentional |
| K2.6 or K2.5 thinking behavior | Request-controlled behavior on the current model route | You handle reasoning output and tool-call continuity correctly |
The thinking guide is important because reasoning output is not just visible prose. Responses can expose reasoning_content, and tool-call workflows may need that reasoning content carried forward. Streaming behavior, temperature guidance, and max-token choices can also matter. If your wrapper strips nonstandard fields, summarizes intermediate messages, or drops reasoning content before the next tool call, the model route can look weaker than it is.
For production code, write down the contract you expect before changing the model string:
- Which model ID is the caller using?
- Is thinking behavior on, off, or default for that model?
- Does the client preserve
reasoning_contentwhere required? - Are tool-call messages replayed with the fields the guide expects?
- Is the max-token setting large enough for the reasoning route?
That checklist is more useful than asking whether "K2 Thinking is better." The real question is whether your request path, wrapper, and logs are preserving the behavior you intend to test.
Old K2 strings need a migration rule
The official model list included a retirement note for the older kimi-k2 series. Do not over-apply that warning. A retirement note for old kimi-k2-* strings is not the same as saying K2.5 or K2.6 is gone. It means your old config files, examples, provider aliases, and evaluation scripts need a targeted scan.
Use this migration pass:
| Where to search | What to look for | Action |
|---|---|---|
| Environment variables | hard-coded KIMI_MODEL, MODEL_ID, provider model aliases | Replace only after choosing the route owner |
| SDK wrappers | default model strings and hidden fallback models | Make the default explicit and log the selected model |
| Evaluation scripts | K2.5 or K2 Thinking benchmark labels | Preserve them if the comparison depends on that model |
| Provider configs | route-specific names such as hosted aliases | Verify provider docs and map them separately from official IDs |
| Documentation | "latest K2" wording with no model ID | Replace with exact model string and checked date |
The safest migration is not "replace every K2 string with K2.6." It is "new official builds default to K2.6; existing tests keep their intentional model; old strings get a route-owner check."
Treat provider and free API claims as route-specific

Hosted provider routes can be useful when you need a specific runtime, regional edge, worker platform, billing account, or integration surface. Cloudflare, Hugging Face, Ollama, Together-style routes, GitHub examples, and community guides can all help a developer test quickly. They still do not own Kimi's official model contract.
Before you depend on a provider route, verify each layer:
| Claim | Owner to check | Why it matters |
|---|---|---|
| Model identity | Provider docs plus official Kimi docs | The provider alias may not equal the official model ID |
| Price and billing | Provider pricing page | Unit price, minimums, free trial, and billing owner can differ |
| Context and limits | Provider model card or dashboard | A hosted route can expose a different practical limit |
| Tool or vision support | Provider capability docs | Function calling, vision, video, JSON, and streaming can differ |
| Data policy | Provider terms and product docs | Official model identity does not answer data handling |
| Free API claim | Route owner, not a video title | Free, unlimited, no-ban, or guarantee claims expire quickly |
If a video says "free Kimi K2.6 API," read it as a lead to verify, not as evidence. If a provider page lists @cf/moonshotai/kimi-k2.6 or another alias, treat that as the provider's route label. Your production docs should still say which official Kimi model the route is meant to reach and which facts belong to the provider.
Where the Kimi-vs-Claude question belongs
Some readers reach the model-ID question because K2.6 is being discussed as a Claude Code or Opus replacement. That is a different decision. Replacement analysis has to test workflow fit, latency, coding reliability, agent behavior, tool use, cost, and failure modes across both sides. The Kimi-family route decision should stay separate from that benchmark decision.
Keep the boundary clean:
- If you are choosing a Kimi model string, use the route checklist above.
- If you are deciding whether Kimi can replace a Claude workflow, use a comparison guide.
- If you are checking a provider setup, verify the provider route before comparing models.
- If you are writing production docs, name both the official model ID and the route owner.
That separation prevents a common shortcut: using benchmark excitement to justify a model string the code path has not actually verified.
Quick production checklist
Before shipping a Kimi K2-family integration, write down these values in the repository or runbook:
| Field | Good production note |
|---|---|
| Official target | kimi-k2.6, kimi-k2.5, or kimi-k2-thinking with reason |
| API owner | Kimi/Moonshot official API or named provider route |
| Base URL | Official https://api.moonshot.ai/v1 or provider endpoint |
| Checked date | Date model list, price, context, and limits were checked |
| Thinking behavior | Off, on, default, or dedicated model route |
| Reasoning handling | Whether the client preserves reasoning_content |
| Provider caveat | Alias, billing, limits, capabilities, and data policy |
| Stop rule | No free, unlimited, guarantee, uptime, or no-ban claims without owner proof |
The table is boring, which is why it works. It makes stale model strings visible before they become hidden production behavior.
FAQ
Is kimi-k2.6 the model ID I should use now?
For new official Kimi API work, yes. Use kimi-k2.6 unless you have a specific reason to preserve K2.5 behavior, target the dedicated K2 thinking model, or test a provider route that names a different alias.
Is kimi-k2-thinking the same as K2.6 thinking mode?
No. Treat kimi-k2-thinking as a separate model ID. K2.6 and K2.5 thinking behavior is a request and response handling question, not a license to invent a new K2.6 model name.
Is Kimi K2.5 still worth testing?
Yes, when the test depends on K2.5 behavior, compatibility, or an existing benchmark baseline. It should not be the default for a fresh official API build if the goal is simply to use the current Kimi route.
Can I use a free Kimi K2.6 API?
Maybe for a low-risk test, but only after the route owner proves what "free" means. Do not publish or depend on free, unlimited, no-ban, uptime, refund, or guarantee claims from videos, forums, or copied setup guides.
What should I do with old kimi-k2 model strings?
Search configs, wrappers, examples, and provider settings. Replace stale strings only after deciding whether the code path should use K2.6, preserve K2.5, target kimi-k2-thinking, or keep a provider-specific alias.



