Kimi K3 API: как получить ключ и сделать первый запрос
Как получить доступ к Kimi K3 API: ключ, вызов kimi-k3 через OpenAI SDK, уровень рассуждения, стриминг, изображения и ошибки, с которыми сталкиваются новички.
Читать в MarkdownЧтобы вызвать Kimi K3, нужен API-ключ от платформы, которая её предоставляет, и запрос, в котором model равно kimi-k3. Moonshot AI предоставляет модель на собственной Kimi API Platform, где она становится доступна после первого пополнения. SeedRouter предоставляет её по одному ключу, с оплатой по факту использования и в официальном формате запросов: направьте OpenAI SDK на https://api.seedrouter.ai/v1 и оставьте свой код как есть.
В этом руководстве используется SeedRouter; тела запросов такие же, как в собственном API Kimi.
Как получить API-ключ Kimi K3?
- Войдите в SeedRouter и откройте API keys.
- Создайте ключ и скопируйте его; он показывается один раз.
- Пополняйте баланс, когда нужно. Новые аккаунты начинают с небольшого бесплатного баланса, подписки нет.
Храните ключ в переменной окружения, например SEEDROUTER_API_KEY, и используйте его только в серверном коде.
Как вызвать Kimi K3 из Python?
Kimi K3 работает в формате Chat Completions, поэтому официальный пакет openai подходит без изменений:
import os
from openai import OpenAI
client = OpenAI(
api_key=os.environ["SEEDROUTER_API_KEY"],
base_url="https://api.seedrouter.ai/v1",
)
completion = client.chat.completions.create(
model="kimi-k3",
messages=[{"role": "user", "content": "Explain context caching in one sentence."}],
)
print(completion.choices[0].message.content)Ответ находится в content. Kimi K3 рассуждает перед ответом, и это рассуждение возвращается в reasoning_content того же сообщения.
Как вызвать её из Node.js или cURL?
import OpenAI from "openai";
const client = new OpenAI({
apiKey: process.env.SEEDROUTER_API_KEY,
baseURL: "https://api.seedrouter.ai/v1",
});
const completion = await client.chat.completions.create({
model: "kimi-k3",
messages: [{ role: "user", content: "Explain context caching in one sentence." }],
});
console.log(completion.choices[0].message.content);curl https://api.seedrouter.ai/v1/chat/completions \
-H "Authorization: Bearer $SEEDROUTER_API_KEY" \
-H "Content-Type: application/json" \
-d '{"model": "kimi-k3", "messages": [{"role": "user", "content": "Explain context caching in one sentence."}]}'Тот же ключ работает и с Responses API (/v1/responses), и с форматом Anthropic Messages (/v1/messages) для kimi-k3.
Как задать уровень рассуждения?
Kimi K3 рассуждает всегда; отключить это нельзя. reasoning_effort задаёт, сколько модель думает перед ответом:
completion = client.chat.completions.create(
model="kimi-k3",
messages=[{"role": "user", "content": "Find the bug: def avg(xs): return sum(xs) / len(xs)"}],
reasoning_effort="high",
)| Значение | Для чего подходит |
|---|---|
low | Быстрые простые шаги |
high | Большинство задач программирования и анализа |
max (по умолчанию) | Самые сложные задачи |
Токены рассуждения тарифицируются как выходные и учитываются в max_completion_tokens, значение которого по умолчанию 131 072, а максимум — 1 048 576. В нашем тесте на одном и том же вопросе low использовал 25 выходных токенов, а max — 146.
Как получать ответ потоком?
Добавьте stream=True. Сначала рассуждение приходит в delta.reasoning_content, затем ответ — в delta.content. Укажите stream_options={"include_usage": True}, чтобы получить количество токенов в последнем чанке:
stream = client.chat.completions.create(
model="kimi-k3",
messages=[{"role": "user", "content": "Write a haiku about latency."}],
stream=True,
stream_options={"include_usage": True},
)
for chunk in stream:
if chunk.choices and chunk.choices[0].delta.content:
print(chunk.choices[0].delta.content, end="", flush=True)Можно ли отправлять изображения?
Да, в виде data URI в base64. Kimi K3 не принимает публичные URL изображений; в её quickstart сказано: «Vision input does not support public image URLs» (визуальный ввод не поддерживает публичные URL изображений):
import base64
with open("chart.png", "rb") as f:
image = base64.b64encode(f.read()).decode()
completion = client.chat.completions.create(
model="kimi-k3",
messages=[{
"role": "user",
"content": [
{"type": "image_url", "image_url": {"url": f"data:image/png;base64,{image}"}},
{"type": "text", "text": "What does this chart show?"},
],
}],
)Какие ошибки стоит ожидать?
| Ошибка | Причина | Решение |
|---|---|---|
400 на temperature, top_p, n или штраф | Kimi K3 фиксирует их (1,0, 0,95, 1, 0) | Не передавайте их |
400 на reasoning_effort | Значение, отличное от low, high или max | Используйте одно из трёх |
| 400 на изображение | Публичный URL вместо data URI | Отправьте изображение в base64 |
| 401 | Ключ отсутствует или неверен | Проверьте заголовок Authorization |
Ошибки возвращаются в виде {"error": {"code": ..., "message": "..."}}, а неудачный запрос не тарифицируется.
Часто задаваемые вопросы
Совместим ли Kimi K3 API с OpenAI?
Да. Kimi K3 принимает форматы Chat Completions и Responses, поэтому OpenAI SDK работает, если сменить только базовый URL и модель. Принимается и формат Anthropic Messages.
Нужен ли аккаунт Moonshot, чтобы пользоваться Kimi K3?
Не на SeedRouter. Вы входите в SeedRouter, создаёте там ключ и платите со своего баланса SeedRouter.
Сколько стоит запрос к Kimi K3?
Он тарифицируется по входным и выходным токенам. В руководстве по ценам Kimi K3 есть актуальные тарифы и примеры расчёта.
Где полный список параметров?
В справочнике по Kimi K3 API перечислены все поля, а на странице Kimi K3 есть Playground и актуальные цены.



