DevelopmentPlaybook16 min readPublished August 1, 2026

1M native context · low / high / max effort · cache-invalidating switches

Kimi K3’s Underused Powers: 1M Context, Native Vision

Kimi K3 coverage tends to stop at Agent Swarm. The surfaces teams actually leave idle are the 1,048,576-token context window, native image and video input, and a three-value reasoning-effort dial — and one of those three quietly controls whether the other two are affordable.

DA
Digital Applied Team
Senior strategists · Published Aug 1, 2026
PublishedAug 1, 2026
Read time16 min
SourcesMoonshot primaries, arXiv, reporting
Native context window
1M
1,048,576 tokens, vendor spec
Output rate, standard list
$15
per 1M tokens — includes the reasoning trace
Cache-hit input, standard list
$0.30
per 1M tokens vs $3.00 on a cache miss
Cache-hit rate, coding work
>90%
Moonshot-stated, Mooncake infrastructure

Kimi K3’s underused capabilities are not the ones getting written about. Coverage since the July 2026 launch has largely centred on Agent Swarm, while the three surfaces that change what a team can actually build — a 1,048,576-token native context window, image and video input handled inside the same model, and a three-value reasoning-effort dial — sit untouched in most stacks we see. They are also the three surfaces where the cost model is easiest to get badly wrong.

This is deliberately not a Swarm post. If you want the decision framework for when parallel subagents pay for themselves, that lives in our guide to which work actually parallelises. Everything below is about the capability surface you get without fanning out at all — the plain single-agent model, pointed at workloads most teams never try.

We cover what the effort dial does and why its default differs between two Moonshot surfaces, the cache-invalidation trap that makes casual effort-switching expensive, the arithmetic of a 1M-token turn on published list prices, what native vision accepts and what it does not, and the limits Moonshot itself publishes about long, autonomous sessions. Where a number is the vendor’s own, we say so.

Key takeaways
  1. 01
    The effort dial is the cost lever, not the model choice.reasoning_effort accepts low, high and max. K3 always reasons — thinking cannot be switched off at any setting. The parameter only sizes the hidden chain-of-thought budget before the visible answer.
  2. 02
    Two Moonshot surfaces ship two different defaults.The international OpenPlatform Chat Completions API defaults to max; the managed Kimi Code CLI service defaults to high. If you never set the parameter, which default you inherited depends on how you connected.
  3. 03
    Switching effort mid-session throws away your context cache.Moonshot's Kimi Code documentation states that switching reasoning effort invalidates the context cache, forcing a re-prefill — which forfeits the vendor-stated 90%-plus cache-hit rate exactly when you were trying to cut cost.
  4. 04
    Reasoning tokens bill as output, so deep runs cost real money.K3's standard list has one output rate, $15.00 per 1M tokens, and no separate reasoning-token line. Because thinking is always on, the hidden trace consumes that same budget before you see a word of the answer.
  5. 05
    Native vision is an input format, and documents are its best case.Seven image formats and nine video formats go into the same model as text. On Moonshot's own eval suite, K3's strongest published vision result is document-image understanding — the closest proxy for reading a scanned contract as a picture.

01The Unused SurfaceThree capabilities that ship with every K3 call and almost nobody uses.

Kimi K3 is a Stable LatentMoE model — 2.8 trillion total parameters with 104 billion active per token, drawn from 896 experts (16 active per token plus 2 shared), according to the Hugging Face model card. It has been hosted since July 16, 2026, with open weights published on July 27 under a custom Kimi K3 licence that is not OSI-approved. The commercial-revenue gate on those weights is a real constraint for anyone reselling inference; we cover it separately in our breakdown of K3’s open-weights licence and its commercial-revenue threshold, and the architecture background sits in the original release coverage.

What matters operationally is narrower than the architecture. Three things arrive with every API call, and in our reading of how teams actually configure K3, all three are routinely left at defaults or ignored entirely.

Surface 01
1M native context
1,048,576 tokens · vendor spec

Not a retrieval wrapper and not a sliding window — the window is native to the model. The catch is commercial rather than technical: Moonshot's Kimi Code plan tiers gate the full 1M window to Allegretto and above, with a fixed K3-256k variant for Moderato.

Plan-gated above 256K
Surface 02
Native vision
MoonViT-V2 · 401M params

Text, image and video tokens run through one architecture rather than an adapter bolted onto a text model. Seven image formats and nine video formats are accepted, with video routed through the Files API rather than inline base64 when it gets large.

Image + video in one model
Surface 03
Reasoning-effort dial
reasoning_effort: low | high | max

Three values, one parameter, and the single largest per-call cost variable you control. Thinking cannot be disabled at any setting — the dial sizes the hidden trace, it does not remove it.

The cost lever

Note the shape of that list. Two of the three are capabilities you reach for when the workload demands it. The third is a configuration you set once and then, if the documentation is right, should leave alone for the rest of the session. That asymmetry is the whole operational story of this post.

02Effort TiersOne parameter, three values, and two different defaults.

The reasoning_effort parameter accepts low, high and max. Per Moonshot’s API quickstart, K3 always reasons: there is no setting that turns thinking off, only settings that change how much of it happens before the model commits to a visible answer. That is a meaningful difference from models where a non-thinking mode exists as a cheap fallback — with K3, the floor is still a reasoning run.

The tiers did not all arrive together. At the K3 launch on July 17, 2026, Moonshot’s own blog stated that only max was supported, with low- and high-effort modes to follow in subsequent updates. Standard and High appeared in the Kimi Code documentation on July 18 — one day later. If your integration was written against launch-day material, it may still be pinned to the only value that existed at the time.

Low
Standard in the consumer UI
Latency over depth

Conversational replies, quick document summaries, simple coding queries — the cases where waiting on a long trace costs you more than the extra depth is worth. Described this way in Moonshot's documentation and the reporting on it.

Cheapest trace
High
Bounded deliberation
Kimi Code CLI default

Debugging a defined function, summarising a long document, structured analysis. Meaningful reasoning with a bounded budget. This is the default you inherit if you came in through the managed Kimi Code service rather than the raw API.

Sensible production floor
Max
Full compute expenditure
OpenPlatform API default

Hard coding tasks and long-horizon agentic work — and the setting every published K3 benchmark was run at, which is worth remembering when you compare a benchmark table against your own low-effort results.

Benchmark setting
The default divergence
The international OpenPlatform Chat Completions API defaults to max; the managed Kimi Code CLI service defaults to high. Both are Moonshot surfaces, both documented, and neither one is wrong — but a team that prototyped in Kimi Code and then shipped against the raw API without setting the parameter has silently moved to the most expensive tier. Read the parameter back explicitly in your own client rather than trusting the default you remember.

One more configuration detail worth knowing before you tune anything: K3’s sampling parameters are fixed and not API-configurable. Temperature sits at 1.0, top-p at 0.95, n at 1, and both presence and frequency penalties at 0, per the platform quickstart. If your prompt-engineering playbook leans on temperature control for determinism, that lever is not available here — the effort dial and your prompt are what you have.

03The TrapSwitching effort mid-session throws away your cache.

This is the detail that makes the effort dial non-trivial, and it is almost never mentioned in coverage that treats reasoning_effort as a one-line config toggle. Moonshot’s Kimi Code documentation is explicit about what happens when you change the value part-way through a session.

"Switching reasoning effort invalidates the context cache you've built up, so context that would have hit the cache must be re-prefilled."— Kimi Code documentation, July 18, 2026

To see why that matters, look at what the cache is worth. Moonshot states that its Mooncake disaggregated inference architecture achieves a cache hit rate above 90% on coding workloads. On the standard API list, a cache hit costs $0.30 per 1M input tokens and a cache miss costs $3.00 per 1M — a tenfold difference on the input line. A session running at a 90%-plus hit rate is not a nice-to-have optimisation; it is the reason the input side of the bill is survivable at all when your prompt is measured in hundreds of thousands of tokens.

The failure mode almost writes itself. A long session is running hot at max, the bill looks alarming, someone drops the effort to high to economise — and the next turn re-prefills the entire accumulated context at cache-miss rates. The cost-cutting move triggers the single most expensive event available in the session. Moonshot’s own guidance is the correct one: choose an effort level for the session and hold it, rather than tuning it mid-stream.

The practical discipline that follows is to decide effort at the same moment you decide the workload, not after the first invoice lands. If you genuinely need a different tier, start a fresh session for it and accept one cold prefill deliberately, rather than paying for an unplanned one in the middle of an existing conversation. Our walkthrough of the Kimi Code setup and plan-tier behaviour goes further into how the caching layer behaves across sessions.

04Cost ArithmeticWhat a 1M-token turn actually costs — and where the money goes.

There is no single honest answer to “what does a 1M-context run cost on K3?”, because the answer swings by roughly an order of magnitude depending on your cache-hit rate and how long the reasoning trace runs. What you can do is state the formula and read the range off it. Every figure below is computed from the standard Kimi API list rates published on Moonshot’s pricing page at the time of writing: cache-hit input $0.30 per 1M tokens, cache-miss input $3.00 per 1M tokens, output $15.00 per 1M tokens. These are list prices on the standard surface — not batch rates, not a plan-tier allowance, and not a third-party router’s quote.

The formula for one turn with a full 1,000,000-token prefill, where h is the fraction of that prefill served from cache:

input = (h × $0.30) + ((1 − h) × $3.00) and output = output tokens ÷ 1,000,000 × $15.00

The critical term is the one people forget. K3’s standard list shows a single flat output rate with no separate, cheaper reasoning-token line — and because thinking is always on, the hidden trace is billed at that same $15.00 per 1M before the visible answer starts. Reporting on Moonshot’s documentation has made the same point directly: every request runs a reasoning trace first, and those reasoning tokens bill as output. On a deep run, the thinking can cost more than the answer.

Cost of one Kimi K3 turn with a 1,000,000-token prefill, calculated from the standard Kimi API list rates published at the time of writing (cache-hit input $0.30/1M, cache-miss input $3.00/1M, output $15.00/1M). Input cost equals (h times $0.30) plus ((1 minus h) times $3.00) where h is the cached fraction of the prefill; output cost equals output tokens divided by 1,000,000 times $15.00. Illustrative arithmetic on published list prices, not a measured bill.
Session stateCached fraction (h)Input, 1M prefillOutputOne-turn total
Modest trace — 20,000 output tokens = $0.30
Cold first turn0%$3.00$0.30$3.30
Partially warm50%$1.65$0.30$1.95
Warm — Moonshot-stated coding rate90%$0.57$0.30$0.87
Very warm95%$0.435$0.30$0.735
Deeper trace — 60,000 output tokens = $0.90
Cold first turn0%$3.00$0.90$3.90
Warm — Moonshot-stated coding rate90%$0.57$0.90$1.47
The effort switch — warm prefill discarded, re-runs cold
Turn before the switch90%$0.57$0.90$1.47
Turn after the switch0%$3.00$0.90$3.90

Two readings fall straight out of the arithmetic. First, the input line collapses as the cache warms: $3.00 cold against $0.57 at a 90% hit rate is a 5.3× reduction on that line alone. Second, and less obvious, the output line becomes the dominant term precisely when you have optimised everything else. At a 90% hit rate with a 60,000-token trace, output is $0.90 of a $1.47 turn — the majority of the bill is thinking you never read. That is the honest reason 1M-context runs on K3 are expensive: not the window, but what the model does inside it.

The switch rows make the trap concrete. Dropping the effort level mid-session takes a $1.47 turn to $3.90 — roughly 2.65× — because the discarded prefill has to be paid for again at cache-miss rates before the cheaper trace can save you anything. Whatever you save on the output line, you have already spent several times over on the input line. Treat these as illustrative arithmetic on list prices rather than a measured bill; your real prefill will rarely be exactly a million tokens, and your real trace length is not something you set directly.

05Native VisionVision is an input format, not a plugin.

K3’s vision path runs through MoonViT-V2, a 401-million-parameter encoder integrated so that text, image and video tokens are processed within one architecture rather than handed off to a separate model. Practically, that means you are not choosing between a text model and a vision model — you are choosing what to put in the message.

The input contract has specifics worth reading before you build anything. Images are accepted in seven formats — JPEG, PNG, GIF, WebP, BMP, HEIC and HEIF — and SVG is explicitly not supported. Vision messages must send content as an array of objects rather than a plain string, and public image URLs are not accepted: images have to be base64-encoded or referenced through an uploaded-file handle. Teams that assume they can pass a CDN link hit that wall on day one.

Image formats
Accepted image types
7

JPEG, PNG, GIF, WebP, BMP, HEIC and HEIF. SVG is explicitly unsupported — rasterise vector assets before sending them. Content must be an array of objects, and public URLs are rejected in favour of base64 or an uploaded-file handle.

No SVG, no public URLs
Video formats
Native video input
9

MP4, MPEG, MOV, AVI, FLV, MPG, WebM, WMV and 3GPP, uploaded through the Files API and referenced by file handle in the message. Large videos must take the upload path rather than inline base64.

Files API, not base64
Video resolution
Moonshot's own video guidance
1080p

For video, vendor guidance recommends not exceeding FHD (1920x1080): higher resolutions raise token cost and processing time without improving understanding quality. No equivalent ceiling is published for still images. Image and video tokens are calculated dynamically from content rather than charged per item, and an estimate-tokens API exists to check consumption before you run the request.

Estimate before you send

Moonshot’s own launch material points at two workload shapes that most teams have not tried. The first is vision in the loop: iterating between generated code and live screenshots to debug and refine UI, game and CAD work — the model sees the rendered result rather than reasoning about the source alone. The second is timeline-shaped editorial work; Moonshot describes K3 editing its own teaser video from 56 source clips, handling clip selection, motion-matched cuts, frame-accurate beat synchronisation, audio processing and multiple rounds of revision. That is the vendor’s own demonstration, not an independent evaluation, and it should be read as a capability claim rather than a benchmark.

"Kimi K3 excels at motion design, animation, and video editing because its native multimodal architecture understands text, images, and video within the same model."— Moonshot AI, Kimi K3 tech blog, July 17, 2026

06Documents As ImagesThe strongest published vision result is the one nobody quotes.

Coverage of K3’s vision capability tends to quote MMMU-Pro or PerceptionBench, where the model sits mid-pack. The score that matters for the workload most agencies and operations teams actually have — piles of scanned contracts, invoices, forms and reports — is OmniDocBench, which measures document-image understanding. On Moonshot’s published table, K3 records 91.1 there, ahead of all four comparison models.

Before reading anything into the chart below: every one of these figures comes from Moonshot’s own eval suite, run at max effort, and none of it has been independently replicated. Open weights only shipped on July 27, 2026, so community reproduction was barely possible by the time of writing. Treat the whole table as vendor-reported.

K3 vision scores vs Fable 5, GPT-5.6 Sol, Opus 4.8 and GPT-5.5 · vendor-reported

Source: Moonshot AI's own eval suite, Kimi K3 tech blog — vendor-reported, not independently replicated
OmniDocBenchDocument-image understanding · next best 89.8
91.1
K3 leads
Video-MME (w/ subs)Video understanding · next best 89.5
90.0
K3 leads
MMVUVideo reasoning · next best 81.7
82.1
K3 leads
MathVisionVisual maths · GPT-5.6 Sol 95.8
94.3
Sol leads
CharXiv (RQ)Chart reasoning · Claude Fable 5 88.9
84.8
Fable 5 leads
MMMU-ProMulti-discipline · GPT-5.6 Sol 83.0
81.6
Sol leads
PerceptionBenchMoonshot in-house benchmark · Sol 59.7
58.5
Sol leads
WorldVQA (ForceAnswer)Forced-answer visual QA · Claude Fable 5 56.7
51.0
Fable 5 leads
ZeroBench (pass@5)Hard visual reasoning · ties Fable 5 at 23.0
23.0
Tie
K3 leads or ties the comparison setA comparison model leads

The honest summary is that K3 is competitive on vision rather than dominant. It leads on document images and on both video benchmarks, ties on the hardest visual-reasoning set, and trails on chart reasoning, visual maths, multi-discipline questions, atomic visual perception and forced-answer visual QA — the last of which is the widest gap in the published table, 51.0 against Fable 5’s 56.7. One further caveat belongs on the record: PerceptionBench is Moonshot’s own in-house benchmark focused on atomic visual perception, not a third-party standard, so it should never be cited as independent evidence for or against anyone.

Our reading of the pattern is that the document-image lead is the interesting part, and it is interesting for a structural reason. Moonshot’s launch material includes an evaluation condition in which the model is given a full PDF corpus rendered entirely as images with no machine-readable text available — forced to read documents visually rather than take an OCR or text-extraction shortcut. That is a deliberate stress test of exactly the pipeline most enterprise document workflows are built on, and it is the capability worth trialling first if you have a scanned-archive problem. Pair it with the effort dial and the cost arithmetic above, and a document-triage pipeline becomes a tractable build rather than an experiment.

07Long-Context RealityA million tokens is not a context strategy.

The most common mistake with a 1M window is treating capacity as retrieval. They are different engineering claims, and the gap between them predates K3 by years. The foundational work here is Liu et al.’s 2023 paper on how language models use long contexts, which found that performance on multi-document question answering and key-value retrieval is highest when the relevant information sits at the very beginning or the very end of the input, and degrades substantially when it sits in the middle — a pattern that replicated across six model families, including models explicitly built and marketed for long context.

General literature, not a K3 result
Liu et al., “Lost in the Middle: How Language Models Use Long Contexts” (arXiv:2307.03172, July 2023) reports: “Performance is often highest when relevant information occurs at the beginning or end of the input context, and significantly degrades when models must access relevant information in the middle of long contexts, even for explicitly long-context models.” That paper predates K3 by three years and was not run against it. We found no K3-specific long-context degradation study in this research pass, so treat the finding as the general architectural phenomenon a large window does not automatically cure — not as a measured K3 weakness.

K3 does not ignore the problem. Its architecture departs from standard full attention with Kimi Delta Attention, a hybrid design that interleaves linear and full attention to reduce key-value cache overhead at long context, plus Attention Residuals that retrieve depth-axis representations selectively rather than uniformly. Those are real engineering responses to a real constraint.

The most telling evidence, though, is a footnote in Moonshot’s own benchmark table. For the BrowseComp agentic-retrieval condition, Moonshot reports one score under a context-compaction strategy triggered at 300K tokens, and separately states that when evaluated with a 1M-token context window and no context management, K3 achieves 90.4. The vendor is running the comparison because context management — not raw window size — is the variable that moves the result. If Moonshot treats compaction as a live engineering choice at 300K, so should you. Retrieval quality, chunking, ordering and compaction remain your job; the window just raises the ceiling on how much you are allowed to get wrong.

08Vendor CaveatsMoonshot publishes two limitations that matter most in long sessions.

Both of the limitations in the K3 tech blog bite hardest in exactly the operating mode this post is recommending: long, autonomous, single-agent runs over a large context. Neither is a defect so much as a constraint on how you wire the harness.

"Sensitivity to thinking history. K3 was trained in the preserved thinking history mode. If the agent harness fails to pass back all the historical thinking content as required... generation quality may become highly unstable."— Moonshot AI, Kimi K3 tech blog, Limitations section

The operational consequence is specific: use a harness with verified compatibility, and do not switch an in-flight session over to K3 from another model. A conversation that accumulated its history under a different model will not carry the thinking content K3 was trained to expect. Combined with the cache-invalidation rule from section 03, a clean pattern emerges — pick the model, pick the effort level, then leave both alone for the duration.

The second published limitation is excessive proactiveness. Because training emphasised long-horizon tasks, Moonshot notes that K3 may make unexpected decisions on the user’s behalf when it hits minor issues or ambiguous intent. The vendor’s own recommendation is to add explicit constraints in the system prompt or an AGENTS.md file when you need bounded behaviour. For anyone running unattended overnight jobs, that is not optional polish — it is the difference between a long run you can review in the morning and one you have to unpick.

Before you adopt
Capability is only half of an adoption decision. K3’s hallucination profile is a separate question with its own published numbers, and we keep that analysis where it belongs — see our review of K3’s benchmark and hallucination-rate evidence at the K3 evaluation guide before you route production traffic to it.

09Decision GuideMatching the workload to the effort level — once, at the start.

Because you cannot economically change effort mid-session, the choice has to be made when you scope the job. The four archetypes below cover most of what teams point K3 at, mapped to the tier the documentation describes for that shape of work and to the capability that supports it.

Whole-repo or whole-corpus review
Long-document work at 1M context

Set max at the start and hold it. This is where the reasoning trace earns its cost, and where a cold prefill of a million tokens is a one-time $3.00 on standard list rates rather than a recurring charge — provided nothing invalidates the cache. Budget for output dominating the bill.

Hold at max
Scanned archives and forms
Document-image triage

The OmniDocBench result is the strongest published evidence for this shape of work, and Moonshot's own no-machine-readable-text evaluation condition suggests the pipeline was designed for it. Start at high, sample the output against ground truth, and only escalate to max if accuracy demands it.

Start at high
Screenshots and screen recordings
Visual QA and vision in the loop

Iterating between generated code and rendered screenshots, or reviewing a screen recording of a broken flow. Keep screen recordings at or below FHD, which is where vendor guidance caps video resolution, use the estimate-tokens API before large batches, and route video through the Files API rather than base64.

High, FHD video ceiling
Conversational and templated tasks
Quick replies and short summaries

Low is described for conversational replies, quick document summaries and simple coding queries — the cases where latency matters more than depth. Remember that low is still a reasoning run; there is no non-thinking tier to fall back to, so the floor cost is higher than on models that offer one.

Low, and expect a floor

Looking forward, the constraint that will shape K3 adoption over the next few quarters is not capability but session discipline. The model rewards teams that decide their configuration once and commit — one effort level, one harness, one model for the life of the session — and penalises the tuning-as-you-go habit that most teams developed on cheaper, statelessly-priced models. We expect harness authors to converge on making effort a session-level setting that is hard to change accidentally, and on surfacing cache-hit rate as a first-class metric, because right now the most expensive mistake available is invisible until the invoice. Teams building this discipline into their tooling now will run long-context work at a materially different unit cost than teams that do not.

If you are working out where a long-context or vision workload fits in a wider stack — and whether K3, a cheaper bulk model, or a frontier model is the right home for it — that comparative eval is exactly what our AI transformation engagements start with. The mechanics of running the resulting job at volume, including batch endpoints and cost guards, are covered in our guide to running a million-row LLM job.

10ConclusionThe dial matters more than the window.

Kimi K3, August 2026

A million-token window is a ceiling, not a strategy — the effort dial is what you actually operate.

K3’s underused surfaces are genuinely underused, and two of the three are straightforwardly worth trying: point it at scanned documents as images, and put screenshots in the loop when you are debugging rendered output. The published document-image result is the strongest case for the first, with the caveat that it is Moonshot’s own eval suite and nobody outside the company had replicated it by the time open weights landed on July 27.

The third surface is different in kind. The reasoning-effort dial is not a capability to explore but a setting to decide and defend, because Moonshot’s documentation says plainly that changing it mid-session invalidates the context cache — and the cache is what makes a 1M-token prefill cost $0.57 instead of $3.00 on standard list rates. Every 1M-context run on K3 is expensive for a reason that has nothing to do with the window: thinking is always on, the trace bills as output at $15.00 per 1M, and on a deep run the model spends more on reasoning you never see than on the answer you do.

The forward-looking version of that is simple enough to act on today. Decide the workload, decide the effort level, decide the harness, and then stop touching all three. The teams getting good unit economics out of long-context models are not the ones with the cleverest prompts — they are the ones whose sessions are boring, stable and cache-warm from the first turn to the last.

Put long context and native vision to work

The window raises the ceiling. What you do inside it is the engineering.

We help teams work out which model belongs on which workload, then build the pipelines — long-document review, document-image triage, visual QA — with the cost guards and session discipline that keep them affordable in production.

Free consultationExpert guidanceTailored solutions
What we work on

Long-context and multimodal builds

  • Model routing across K3, frontier and bulk tiers
  • Document-image triage for scanned archives
  • Screenshot and screen-recording QA loops
  • Cache-aware session design and cost guards
  • Evaluation harnesses on your own corpus
FAQ · Kimi K3 capabilities

The questions teams ask before they turn the dial.

It is a single API parameter accepting three values — low, high and max — that controls how large the hidden chain-of-thought budget is before the model produces a visible answer. Per Moonshot's platform quickstart, K3 always reasons: there is no value that disables thinking, only values that change how much of it happens. That is different from models offering a non-thinking mode as a cheap fallback, and it sets a floor under your per-call cost. The tiers also arrived in two stages — at the July 17, 2026 launch only max was supported, with Standard and High documented for Kimi Code the following day. If your integration was written against launch-day material, check whether it is still pinned to max.
Related dispatches

Continue exploring model capabilities.