Kimi K2 Thinking API: toman pricing and code
moonshotai/kimi-k2-thinking
You are billed for the usage the request actually reported. Prices follow the market. Cached input: 51,933 toman per 1M tokens.Pricing and top-ups
Kimi K2 Thinking example: tool calling
The example is picked from this model's own capabilities. Drop in your key and it runs as is.
from openai import OpenAI
import json
client = OpenAI(base_url="https://api.uttapen.ir/v1", api_key="sk-up-…")
tools = [{
"type": "function",
"function": {
"name": "check_stock",
"description": "Returns the stock level of a product",
"parameters": {
"type": "object",
"properties": {"sku": {"type": "string"}},
"required": ["sku"],
},
},
}]
messages = [{"role": "user", "content": "How many of the Nike NK-42 shoe are in stock?"}]
first = client.chat.completions.create(model="moonshotai/kimi-k2-thinking", messages=messages, tools=tools)
call = first.choices[0].message.tool_calls[0]
# you run the function yourself — the model never touches the database
args = json.loads(call.function.arguments)
result = {"sku": args["sku"], "qty": 7}
messages += [first.choices[0].message, {"role": "tool", "tool_call_id": call.id, "content": json.dumps(result)}]
final = client.chat.completions.create(model="moonshotai/kimi-k2-thinking", messages=messages, tools=tools)
print(final.choices[0].message.content)import OpenAI from "openai";
const client = new OpenAI({ baseURL: "https://api.uttapen.ir/v1", apiKey: "sk-up-…" });
const tools = [{
type: "function",
function: {
name: "check_stock",
description: "Returns the stock level of a product",
parameters: { type: "object", properties: { sku: { type: "string" } }, required: ["sku"] },
},
}];
const messages = [{ role: "user", content: "How many of the Nike NK-42 shoe are in stock?" }];
const first = await client.chat.completions.create({ model: "moonshotai/kimi-k2-thinking", messages, tools });
const call = first.choices[0].message.tool_calls[0];
const args = JSON.parse(call.function.arguments);
const result = { sku: args.sku, qty: 7 };
messages.push(first.choices[0].message, { role: "tool", tool_call_id: call.id, content: JSON.stringify(result) });
const final = await client.chat.completions.create({ model: "moonshotai/kimi-k2-thinking", messages, tools });
console.log(final.choices[0].message.content);curl https://api.uttapen.ir/v1/chat/completions \
-H "Authorization: Bearer sk-up-…" \
-H "Content-Type: application/json" \
-d '{
"model": "moonshotai/kimi-k2-thinking",
"messages": [{"role": "user", "content": "How many of the Nike NK-42 shoe are in stock?"}],
"tools": [{
"type": "function",
"function": {
"name": "check_stock",
"parameters": {"type": "object", "properties": {"sku": {"type": "string"}}, "required": ["sku"]}
}
}]
}'What is Kimi K2 Thinking good for?
Kimi K2 Thinking comes from Moonshot (Kimi); in uttapen you reach it with the model id "moonshotai/
Capabilities available on this id: it supports tool calling, so it can invoke your own functions with valid arguments; it returns schema-valid JSON through response_format, ready to hand to your code; it has a reasoning mode that pays off on multi-step problems, maths and debugging. All of it works through the standard parameters of the official OpenAI SDK — no custom client, no wrapper. Keep in mind that reasoning tokens are output tokens and do appear on the bill.
For a back-of-envelope figure: about 1,395 toman per 1,000-word exchange (207,732 in, 865,548 out, per 1M tokens). It supports cached input: repeated context is billed at 51,933 toman per 1M, which matters a lot if your system prompt is long. You are always charged for the usage the request actually reported, never for the estimate, and a failed request costs nothing.
The closest alternative with the same capabilities from a different provider is Hy4 preview: Kimi K2 Thinking works out about 9% cheaper, and its context window is smaller. Both run on the same key and the same code, so trying the other one is a single string change.
To make the figure concrete: 100,000 toman of credit buys roughly 72 thousand-word requests on Kimi K2 Thinking, and every 1,000 toman is about 717 words of round trip. A job with one million input tokens and one million output tokens comes to 1,073,280 toman in total. Filling this model's 262,144-token window costs 54,456 toman on the input side alone, which is the real reason to keep conversation history short.
Moonshot (Kimi) has 10 models in our catalogue; the cheapest is Kimi K2 0711 at 1,292 toman per thousand words and the dearest Kimi K3 at 7,288. Among the less common parameters it accepts presence_penalty, repetition_penalty, top_k — all through the standard request body. By context size the nearest option from another provider is Aion 3.5 at 262,144 tokens.
What to use it for: product chatbots and internal assistants, where cost and quality have to balance, logic puzzles and code review, agents that reach out to APIs and databases, extracting data against a fixed schema, analysing a long document or codebase in one request.
Kimi K2 Thinking is Moonshot AI’s most advanced open reasoning model to date, extending the K2 series into agentic, long-horizon reasoning. Built on the trillion-parameter Mixture-of-Experts (MoE) architecture introduced in...
Three real jobs, priced on this model
Each figure is derived from the prices above and moves when they do.
| Job | Tokens | Cost |
|---|---|---|
| One chat turn with a medium history | 1,500 in + 400 out | 658 toman |
| Summarising a ten-page document | 4,000 in + 600 out | 1,350 toman |
| Classifying a thousand short rows | 120,000 in + 20,000 out | 42,239 toman |
Price history
| Date | Input (toman/1M) | Output (toman/1M) |
|---|---|---|
| 22 Oct 2026 | 207,732 | 865,548 |
| 22 Oct 2026 | 207,732 | 865,548 |
| 9 Oct 2026 | 207,732 | 865,548 |
| 6 Oct 2026 | 207,732 | 865,548 |
| 6 Oct 2026 | 207,732 | 865,548 |
| 3 Oct 2026 | 207,732 | 865,548 |
| 2 Oct 2026 | 207,732 | 865,548 |
| 1 Oct 2026 | 207,732 | 865,548 |
| 13 Sep 2026 | 207,732 | 865,548 |
| 12 Sep 2026 | 207,732 | 865,548 |
| 10 Sep 2026 | 207,732 | 865,548 |
| 9 Sep 2026 | 207,732 | 865,548 |
Every price change for this model is recorded. Toman figures use today's rate.
Frequently asked
- How do I call Kimi K2 Thinking from Iran?
- Sign up with your mobile number, top the wallet up in toman, create an API key, then in the official OpenAI SDK point base_url at https:/
/ api.uttapen.ir/ v1 and set model to "moonshotai/ kimi-k2-thinking". Nothing else in your code changes. - What does Kimi K2 Thinking cost in toman?
- 207,732 toman per 1M input tokens and 865,548 toman per 1M output tokens; a 1,000-word request is around 1,395 toman. You pay for the usage that request actually reported, and a failed request costs nothing.
- How much input does Kimi K2 Thinking take?
- Up to 262,144 tokens per request, roughly 197k words. A single answer can reach 98,304 tokens.
- Does Kimi K2 Thinking support streaming and tool calling?
- Streaming (stream=true) works on every model here. This one supports tool calling in the standard OpenAI shape. Structured output through response_format works too.