Kimi K3
Use o Kimi K3 com a API oficial Chat Completions, Responses ou Anthropic Messages: janela de contexto de 1M de tokens, raciocínio sempre ativo e o nível de raciocínio que você escolher.
O Kimi K3 é o modelo principal da Moonshot AI para programação de longo prazo, agentes e trabalho de conhecimento. Ele sempre raciocina antes de responder, e você escolhe a intensidade com reasoning_effort. Envie a requisição oficial do Kimi para o SeedRouter: altere a URL base e a chave de API, mantenha o corpo.
ID do modelo
| ID do modelo | Janela de contexto | Saída máxima | Nível de raciocínio | Nível de raciocínio padrão |
|---|---|---|---|---|
kimi-k3 | 1,048,576 tokens | 1,048,576 tokens (padrão 131,072) | low, high, max | max |
Entrada: texto e imagens. Saída: texto. Consulte a página do modelo para os preços atuais.
Exemplo rápido
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."}]
}'Endpoints
| Formato | Método e caminho | Autenticação |
|---|---|---|
| Chat Completions | POST https://api.seedrouter.ai/v1/chat/completions | Authorization: Bearer <key> |
| Responses | POST https://api.seedrouter.ai/v1/responses | Authorization: Bearer <key> |
| Anthropic Messages | POST https://api.seedrouter.ai/v1/messages | x-api-key: <key> ou Authorization: Bearer <key>, mais anthropic-version |
Os três retornam o formato de resposta oficial do Kimi, com ou sem streaming. Mantenha a chave de API em código do lado do servidor.
Parâmetros
Campos do Chat Completions:
| Nome | Tipo | Obrigatório | Padrão | Observações |
|---|---|---|---|---|
model | string | Sim | — | kimi-k3. |
messages | object[] | Sim | — | Mensagens de texto; imagens como partes image_url (veja Entrada de imagem). |
max_completion_tokens | integer | Não | 131072 | Até 1048576. Inclui os tokens de raciocínio. max_tokens é o nome obsoleto do mesmo limite. |
reasoning_effort | enum | Não | max | low, high ou max. Qualquer outro valor retorna 400. |
stop | string or string[] | Não | — | Até 5 sequências. |
response_format | object | Não | {"type": "text"} | text, json_object ou json_schema (com json_schema.name e json_schema.schema). |
tools | object[] | Não | — | Ferramentas de função. |
tool_choice | string or object | Não | auto | auto e none são aplicados. required e uma função nomeada são aceitos, mas não forçam uma chamada. |
stream | boolean | Não | false | Transmitir eventos enviados pelo servidor. |
stream_options.include_usage | boolean | Não | false | Adiciona o chunk final de uso. |
prompt_cache_options | object | Não | {"mode": "implicit", "ttl": "5m"} | mode: implicit. ttl: 5m ou 1h. |
prompt_cache_key, safety_identifier, prediction | — | Não | — | Aceitos. |
logprobs, top_logprobs | — | Não | — | Aceitos (top_logprobs de 0 a 20), mas nenhuma probabilidade logarítmica é retornada. |
temperature, top_p, n, presence_penalty, frequency_penalty | — | Não | 1.0, 0.95, 1, 0, 0 | Fixos. Qualquer outro valor retorna 400, então não os envie. |
Raciocínio e nível de raciocínio
O Kimi K3 sempre raciocina; não há como desativar o raciocínio. reasoning_effort define o quanto: max (o padrão) para o trabalho mais difícil, high para a maioria das tarefas e low para etapas rápidas e simples. O raciocínio volta em reasoning_content, ao lado de content. Os tokens de raciocínio são cobrados como tokens de saída e contam para max_completion_tokens.
Em conversas com vários turnos e chamadas de ferramentas, envie cada mensagem do assistente de volta sem alterações, incluindo seu reasoning_content.
Entrada de imagem
O Kimi K3 recebe imagens como data URIs em base64. Uma URL pública de imagem não é aceita e retorna 400, como na própria API do Kimi.
{"role": "user", "content": [
{"type": "image_url", "image_url": {"url": "data:image/png;base64,<BASE64_DATA>"}},
{"type": "text", "text": "Describe this image."}
]}Cache de contexto
O cache é automático: um prefixo de prompt repetido é lido do cache pela taxa menor de entrada em cache. prompt_cache_options.ttl define por quanto tempo um prefixo gravado fica em cache, 5m (o padrão) ou 1h; escolha 1h quando suas requisições tiverem mais de cinco minutos de intervalo. usage.prompt_tokens_details.cached_tokens informa os tokens lidos do cache e cache_write_tokens as escritas em cache cobradas na requisição.
Dimensões de cobrança
Consulte as taxas atuais na página do modelo. Uma requisição é cobrada pelos tokens que usa:
- tokens de entrada,
- tokens de entrada em cache (
cached_tokens), - tokens de escrita em cache (
cache_write_tokens), - tokens de saída, incluindo raciocínio.
Os preços não mudam com o tamanho do contexto. A cobrança é retirada do usage informado com a resposta concluída. Uma requisição que falha não é cobrada. Os registros de uso da sua conta mostram a cobrança exata para cada requisição.
Saída
Uma requisição Chat Completions sem streaming retorna:
{
"id": "chatcmpl-...",
"object": "chat.completion",
"created": 1790585961,
"model": "kimi-k3",
"choices": [{
"index": 0,
"finish_reason": "stop",
"message": {"role": "assistant", "reasoning_content": "...", "content": "..."}
}],
"usage": {
"prompt_tokens": 90,
"completion_tokens": 57,
"total_tokens": 147,
"cached_tokens": 90,
"prompt_tokens_details": {"cached_tokens": 90, "cache_write_tokens": 0}
}
}Com "stream": true cada chunk traz um delta com reasoning_content ou content. Com stream_options.include_usage, um último chunk com um array choices vazio traz o uso antes de data: [DONE].
API Responses e Codex
POST /v1/responses aceita o corpo da Responses: input, instructions, max_output_tokens, reasoning.effort (low, high, max), text.format (json_schema), tools (function e a ferramenta personalizada apply_patch), tool_choice, stream, prompt_cache_options, prompt_cache_key e safety_identifier. O raciocínio volta como um item reasoning com uma parte summary_text, e um stream traz eventos numerados de response.created até response.completed. A API não guarda estado: previous_response_id e conversation são ignorados, então envie a conversa inteira em input. A ferramenta web_search é ignorada.
Para usar o Kimi K3 no Codex, adicione um provider em ~/.codex/config.toml e defina SEEDROUTER_API_KEY:
model = "kimi-k3"
model_provider = "seedrouter"
model_context_window = 1048576
[model_providers.seedrouter]
name = "SeedRouter"
base_url = "https://api.seedrouter.ai/v1"
env_key = "SEEDROUTER_API_KEY"
wire_api = "responses"Formato Anthropic Messages
Código escrito para a API Anthropic Messages também pode chamar o Kimi K3: envie o corpo de Mensagens para /v1/messages com "model": "kimi-k3". system, max_tokens, tools, tool_choice (auto, none) e output_config.effort (low, high, max) são aplicados, e metadata.user_id e cache_control são aceitos. stop_sequences (até 5), tool_choice any e output_config.format são aceitos, mas não têm efeito. O raciocínio volta como blocos thinking. As imagens são enviadas como fontes base64.
Erros
Os erros usam {"error": {"code": ..., "message": "..."}} (o endpoint de Messages usa o formato de erro da Anthropic). O code é um código do catálogo de erros comum. Requisições falhadas não são cobradas.
Dicas
- Comece com o nível de raciocínio
highe passe paramaxapenas nos problemas mais difíceis;lowserve para etapas rápidas e simples. - Defina
max_completion_tokensalto o suficiente para o raciocínio e também para a resposta: é um orçamento para ambos. - Coloque o contexto longo e reutilizado no início do prompt para que requisições posteriores o leiam do cache, e use o TTL
1hquando as requisições forem espaçadas.
