Claude Opus 5.5 уже доступна в SeedRouter

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?

  1. Войдите в SeedRouter и откройте API keys.
  2. Создайте ключ и скопируйте его; он показывается один раз.
  3. Пополняйте баланс, когда нужно. Новые аккаунты начинают с небольшого бесплатного баланса, подписки нет.

Храните ключ в переменной окружения, например 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 и актуальные цены.

Похожие руководства