On our own GPUs
Kimi K3 API
2.8T mixture-of-experts, a 1M-token window, and vision built into the base.
Context
1M
Max output
1M
Serving precision
BF16
Licence
Open weights
Kimi K3 is Moonshot AI’s flagship, released in July 2026. A new mixture-of-experts architecture puts roughly 2.8 trillion parameters behind 16 active experts out of 896, with a 1-million-token context window. Kimi Delta Attention and attention residuals keep memory and throughput manageable on very long inputs. Image and video understanding sit in the base model rather than a bolted-on vision layer, which is why it holds up on agent work that reads screenshots and screen recordings.
Open weights, deployed in facilities we build out and lease directly, operated by us. We resell nobody else’s account quota.
Specifications
- Model ID
- kimi-k3
- Published by
- Moonshot AI
- How it is served
- On our own GPUs
- Licence
- Open weights
- Total parameters
- 2.8T MoE
- Active parameters
- 16 / 896 experts
- Context
- 1M
- Max output
- 1M
- Serving precision
- BF16
- Input modalities
- Text · Image · Video
- Released
- 2026-07-16
- Price
- See pricing
What it is good at
- A million tokens that actually hold
- A whole repository, a few hundred pages of contract, months of conversation history — all in one request, with no chunking and re-stitching. Kimi Delta Attention compresses the KV cache so throughput does not fall off a cliff on long inputs.
- Native multimodality, not a bolt-on
- Image and video understanding are base-model capabilities. Letting it look at an error screenshot or a recorded UI flow before deciding the next step beats OCR-then-text, and that is exactly what agent workloads need.
- Long-horizon agent work
- K3 is built for long-running coding and agent workloads. Multi-step planning, tool calling and retry-after-failure hold together noticeably better than the previous generation.
Where it fits
- Repository-scale code comprehension, refactors and migrations
- Extraction and comparison across long contracts, filings and paper sets
- GUI agents and automated testing that read screenshots or recordings
- Assistants that must keep dozens of turns of history intact
Three steps
Change one line of base_url, put the model ID below in the `model` field, and leave the rest of your code alone.
model: "kimi-k3"
curl https://api.nexaix.net/v1/chat/completions \
-H "Authorization: Bearer $NEXAIX_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "kimi-k3",
"stream": true,
"messages": [
{ "role": "user", "content": "Summarise this contract." }
]
}'import os
from openai import OpenAI
client = OpenAI(
# the only new line
base_url="https://api.nexaix.net/v1",
api_key=os.environ["NEXAIX_API_KEY"],
)
# everything below is your existing code
stream = client.chat.completions.create(
model="kimi-k3",
stream=True,
messages=[
{"role": "user", "content": "Summarise this contract."}
],
)
for chunk in stream:
print(chunk.choices[0].delta.content or "", end="")import OpenAI from "openai";
const client = new OpenAI({
baseURL: "https://api.nexaix.net/v1", // the only new line
apiKey: process.env.NEXAIX_API_KEY,
});
// everything below is your existing code
const stream = await client.chat.completions.create({
model: "kimi-k3",
stream: true,
messages: [
{ role: "user", content: "Summarise this contract." }
],
});
for await (const chunk of stream) {
process.stdout.write(chunk.choices[0]?.delta?.content ?? "");
}About this model
Can I really use the full 1M-token context?
Yes. We do not truncate context and we do not quietly shrink the window. Do note that cost and time-to-first-token rise linearly with input length, so benchmark with realistically long samples before you settle on a production configuration.
Is your Kimi K3 the same model as the one in the official app?
We deploy the officially released weights and serve at the precision published on this page — no quantization downgrade. The official app may add product-layer behaviour (browsing, plugins, system prompts) that is not part of the model itself and will not appear on the API.
How do I use the multimodal input?
Pass image_url or base64 content using the standard OpenAI multimodal message format — the same fields your existing code already uses. Video goes in as a sampled frame sequence; limits are in the docs.
Also worth a look
- On our own GPUsGLM-5.2750B sparse MoE, a 1M window, MIT licensed — tuned hard for software engineering.glm-5.2
- On our own GPUsDeepSeek V4 Pro1.6 trillion parameters, thinking and non-thinking modes, MIT licensed.deepseek-v4-pro
- On our own GPUsDeepSeek V4 Flash284B total, 13B active per token — the lowest unit cost in the V4 generation.deepseek-v4-flash
Run your own eval on it
Take the trial credit, run the evals you already have against this model, and then decide whether it gets your production traffic.
