Claude Opus 5.5 já está disponível no SeedRouter

API do Kimi K3: como obter uma chave e fazer a primeira chamada

Como acessar a API do Kimi K3: obtenha a chave, chame kimi-k3 com o SDK da OpenAI, esforço de raciocínio, streaming, imagens e os erros mais comuns no início.

Ler em Markdown

Para chamar o Kimi K3, você precisa de uma chave de API de uma plataforma que o ofereça e de uma solicitação com model definido como kimi-k3. A Moonshot AI o oferece na sua própria Kimi API Platform, onde o modelo é liberado após a primeira recarga. A SeedRouter o oferece com uma única chave, com pagamento por uso, no formato de solicitação oficial: aponte o SDK da OpenAI para https://api.seedrouter.ai/v1 e mantenha seu código.

Este guia usa a SeedRouter; os corpos das solicitações são os mesmos da API do próprio Kimi.

Como obter uma chave de API do Kimi K3?

  1. Entre na SeedRouter e abra API keys.
  2. Crie uma chave e copie-a; ela é mostrada uma única vez.
  3. Adicione crédito quando precisar. Contas novas começam com um pequeno saldo gratuito, e não há assinatura.

Guarde a chave em uma variável de ambiente como SEEDROUTER_API_KEY e use-a apenas em código do lado do servidor.

Como chamar o Kimi K3 em Python?

O Kimi K3 usa o formato Chat Completions, então o pacote oficial openai funciona como está:

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)

A resposta vem em content. O Kimi K3 raciocina antes de responder, e esse raciocínio volta em reasoning_content na mesma mensagem.

Como chamá-lo em Node.js ou 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."}]}'

A mesma chave também atende a Responses API (/v1/responses) e o formato Anthropic Messages (/v1/messages) para kimi-k3.

Como definir o esforço de raciocínio?

O Kimi K3 sempre raciocina; não é possível desativar isso. reasoning_effort define quanto ele pensa antes de responder:

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",
)
ValorUse para
lowPassos rápidos e simples
highA maior parte do trabalho de código e análise
max (padrão)Os problemas mais difíceis

Os tokens de raciocínio são cobrados como saída e contam para max_completion_tokens, cujo padrão é 131.072 e que vai até 1.048.576. No nosso teste com a mesma pergunta, low usou 25 tokens de saída e max usou 146.

Como receber a resposta em streaming?

Adicione stream=True. O raciocínio chega primeiro em delta.reasoning_content, depois a resposta em delta.content. Peça stream_options={"include_usage": True} para receber a contagem de tokens no último chunk:

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)

Posso enviar imagens?

Sim, como data URIs em base64. O Kimi K3 não aceita URLs públicas de imagem; o seu quickstart diz: "Vision input does not support public image URLs" (a entrada de visão não aceita URLs públicas de imagem):

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?"},
        ],
    }],
)

Quais erros esperar?

ErroCausaSolução
400 em temperature, top_p, n ou uma penalidadeO Kimi K3 os fixa (1,0, 0,95, 1, 0)Deixe-os de fora
400 em reasoning_effortUm valor diferente de low, high ou maxUse um dos três
400 em uma imagemUma URL pública em vez de um data URIEnvie a imagem em base64
401Chave ausente ou erradaVerifique o cabeçalho Authorization

Os erros retornam {"error": {"code": ..., "message": "..."}}, e uma solicitação que falha não é cobrada.

Perguntas frequentes

A API do Kimi K3 é compatível com a OpenAI?

Sim. O Kimi K3 aceita os formatos Chat Completions e Responses, então o SDK da OpenAI funciona trocando apenas a URL base e o modelo. Ele também aceita o formato Anthropic Messages.

Preciso de uma conta na Moonshot para usar o Kimi K3?

Não na SeedRouter. Você entra na SeedRouter, cria uma chave lá e paga com o seu saldo da SeedRouter.

Quanto custa uma solicitação ao Kimi K3?

Ela é cobrada por token de entrada e de saída. O guia de preços do Kimi K3 traz as taxas ao vivo e exemplos calculados.

Onde está a lista completa de parâmetros?

A referência da API do Kimi K3 lista todos os campos, e a página do Kimi K3 tem um playground e os preços ao vivo.

Guias relacionados