kimi-k2 — price, context and performance
kimi-k2 is a Moonshot AI model available on AirAI. Input $0.40, output $2.50 per 1M tokens.
Overview
| Vendor | Moonshot AI |
|---|---|
| API formats | openai, openai-response, openai-response-compact, anthropic, gemini, openai-alpha-search |
| Cache discount | 1× |
Pricing
| Plan | Multiplier | Input | Output | Cached input | Note |
|---|---|---|---|---|---|
| Base price | 1× | $0.40 | $2.50 | $0.40 | |
| Pro | 2× | $0.80 | $5.00 | $0.80 | Enterprise — full reasoning, high stability. |
| Max | 4× | $1.60 | $10.00 | $1.60 | Premium — max reasoning & stability. |
Only groups enabled for this model are listed.
Performance
| API endpoint | https://api.airai.cc/v1 |
|---|---|
| OpenAI-compatible | OpenAI-compatible |
FAQ
How much does kimi-k2 cost?
Input $0.40, output $2.50 per 1M tokens.
What is the context window of kimi-k2?
kimi-k2 has a not specified context window: the combined token limit for input and output in a single request.
How do I call kimi-k2 from code?
Point base_url to https://api.airai.cc/v1 and set model to kimi-k2. The API is fully OpenAI compatible.
Why does kimi-k2 return error 429?
429 is a rate limit response. Lower your concurrency, retry with backoff, or switch to a plan with a larger quota.
Model comparison
| Model | Vendor | Input | Output | Context |
|---|---|---|---|---|
| kimi-k2 | Moonshot AI | $0.40 | $2.50 | not specified |
| kimi-k2-0711-preview | Moonshot AI | $0.60 | $2.40 | 131.1K |
| kimi-k2.7-code | Moonshot AI | $0.95 | $4.00 | 262.1K |
| kimi-k2.6 | Moonshot AI | $0.95 | $4.00 | 262.1K |
| kimi-k2.5 | Moonshot AI | $0.41 | $1.98 | 262.1K |
| kimi-k3 | Moonshot AI | $3.00 | $15.00 | 1M |
| kimi-k3[1M] | Moonshot | Price not published | — | not specified |
Troubleshooting
429 is a rate limit response. Lower your concurrency, retry with backoff, or switch to a plan with a larger quota.
Common causes
- Too many concurrent requests
- Quota of the current plan exhausted
- Retrying immediately without backoff
How to fix
- Limit concurrency and retry with exponential backoff
- Switch to a plan with a larger quota
- Cache repeated requests
How to connect
curl https://api.airai.cc/v1/chat/completions \
-H "Authorization: Bearer <YOUR_API_KEY>" \
-H "Content-Type: application/json" \
-d '{
"model": "kimi-k2",
"messages": [{"role": "user", "content": "Hello"}]
}'from openai import OpenAI
client = OpenAI(
api_key="<YOUR_API_KEY>",
base_url="https://api.airai.cc/v1"
)
response = client.chat.completions.create(
model="kimi-k2",
messages=[{"role": "user", "content": "Hello"}]
)
print(response.choices[0].message.content)import OpenAI from "openai";
const client = new OpenAI({
apiKey: "<YOUR_API_KEY>",
baseURL: "https://api.airai.cc/v1"
});
const response = await client.chat.completions.create({
model: "kimi-k2",
messages: [{ role: "user", content: "Hello" }]
});
console.log(response.choices[0].message.content);const OpenAI = require("openai");
const client = new OpenAI({
apiKey: "<YOUR_API_KEY>",
baseURL: "https://api.airai.cc/v1"
});
client.chat.completions.create({
model: "kimi-k2",
messages: [{ role: "user", content: "Hello" }]
}).then((r) => console.log(r.choices[0].message.content));Replace <YOUR_API_KEY> with the API Key from your token settings.
Compatible endpoints
openaiopenai-responseopenai-response-compactanthropicgeminiopenai-alpha-search
Gemini SDK · TypeScript
import { GoogleGenerativeAI } from "@google/generative-ai";
const genAI = new GoogleGenerativeAI("<YOUR_API_KEY>");
const model = genAI.getGenerativeModel({ model: "kimi-k2" });
const result = await model.generateContent(
"Explain quantum entanglement in one paragraph."
);
console.log(result.response.text());Authentication
All requests must include the Authorization: Bearer <TOKEN> header. Anthropic-format endpoints also accept the x-api-key header. Generate your API Key on the Tokens page, where you can scope access by model, group, IP, and rate limits.
Supported parameters
| Parameter | Type | Default | Range | Description |
|---|---|---|---|---|
temperature | float | 1 | 0–2 | Sampling temperature; lower is more stable |
top_p | float | 1 | 0–1 | Nucleus sampling cumulative probability |
max_tokens | integer | — | — | Maximum tokens in the response |
frequency_penalty | float | 0 | −2–2 | Penalizes repeated high-frequency tokens |
presence_penalty | float | 0 | −2–2 | Encourages introducing new topics |
stop | string[] | null | ≤ 4 | Up to 4 strings that stop generation |
seed | integer | null | — | Seed for more reproducible sampling |
n | integer | 1 | — | Number of candidate completions |
stream | boolean | false | — | Stream tokens via SSE |
response_format | object | — | — | Force JSON output or schema-conformant results |
tools | array | — | — | Function/tool declarations the model can call |
tool_choice | string | object | auto | — | Tool selection strategy or specific tool name |
logprobs | boolean | false | — | Return log probabilities for each token |
top_logprobs | integer | null | 0–20 | Number of top probabilities returned per token |
logit_bias | map | — | — | Logit bias mapping per token |
user | string | — | — | End-user identifier for risk auditing |
Rate limits
| Tier | RPM | TPM | RPD |
|---|---|---|---|
| Eco | 990 | 398K | 20K |
| Test | 980 | 393K | 20K |
Data updated: 2026-10-10 15:55