Kimi K3
Usa Kimi K3 con la API oficial de Chat Completions, Responses o Anthropic Messages: ventana de contexto de 1M tokens, razonamiento siempre activo y el nivel de razonamiento que elijas.
Kimi K3 es el modelo insignia de Moonshot AI para programación de largo recorrido, agentes y trabajo del conocimiento. Siempre razona antes de responder, y tú eliges cuánto con reasoning_effort. Envía la solicitud oficial de Kimi a SeedRouter: cambia la URL base y la clave API, mantén el cuerpo.
ID de modelo
| ID de modelo | Ventana de contexto | Salida máxima | Nivel de razonamiento | Nivel de razonamiento predeterminado |
|---|---|---|---|---|
kimi-k3 | 1,048,576 tokens | 1,048,576 tokens (131,072 predeterminado) | low, high, max | max |
Entrada: texto e imágenes. Salida: texto. Consulta la página del modelo para ver los precios actuales.
Ejemplo 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 y ruta | Autenticación |
|---|---|---|
| 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> o Authorization: Bearer <key>, más anthropic-version |
Los tres devuelven el formato de respuesta oficial de Kimi, con o sin streaming. Mantén la clave API en el código del lado del servidor.
Parámetros
Campos de Chat Completions:
| Nombre | Tipo | Obligatorio | Predeterminado | Notas |
|---|---|---|---|---|
model | string | Sí | — | kimi-k3. |
messages | object[] | Sí | — | Mensajes de texto; imágenes como partes image_url (consulta Entrada de imágenes). |
max_completion_tokens | integer | No | 131072 | Hasta 1048576. Incluye los tokens de razonamiento. max_tokens es el nombre obsoleto del mismo límite. |
reasoning_effort | enum | No | max | low, high o max. Cualquier otro valor devuelve 400. |
stop | string or string[] | No | — | Hasta 5 secuencias. |
response_format | object | No | {"type": "text"} | text, json_object o json_schema (con json_schema.name y json_schema.schema). |
tools | object[] | No | — | Herramientas de función. |
tool_choice | string or object | No | auto | Se aplican auto y none. required y una función con nombre se aceptan, pero no fuerzan una llamada. |
stream | boolean | No | false | Transmite server-sent events. |
stream_options.include_usage | boolean | No | false | Añade el chunk final de uso. |
prompt_cache_options | object | No | {"mode": "implicit", "ttl": "5m"} | mode: implicit. ttl: 5m o 1h. |
prompt_cache_key, safety_identifier, prediction | — | No | — | Se aceptan. |
logprobs, top_logprobs | — | No | — | Se aceptan (top_logprobs de 0 a 20), pero no se devuelven probabilidades logarítmicas. |
temperature, top_p, n, presence_penalty, frequency_penalty | — | No | 1.0, 0.95, 1, 0, 0 | Fijos. Cualquier otro valor devuelve 400, así que no los envíes. |
Razonamiento y nivel de razonamiento
Kimi K3 siempre razona; no hay forma de desactivarlo. reasoning_effort fija cuánto: max (el predeterminado) para el trabajo más difícil, high para la mayoría de las tareas y low para pasos rápidos y sencillos. El razonamiento se devuelve en reasoning_content, junto a content. Los tokens de razonamiento se facturan como tokens de salida y cuentan para max_completion_tokens.
En conversaciones de varios turnos y llamadas a herramientas, devuelve cada mensaje del asistente sin cambios, incluido su reasoning_content.
Entrada de imágenes
Kimi K3 recibe imágenes como data URI en base64. Una URL pública de imagen no se acepta y devuelve 400, igual que en la API de Kimi.
{"role": "user", "content": [
{"type": "image_url", "image_url": {"url": "data:image/png;base64,<BASE64_DATA>"}},
{"type": "text", "text": "Describe this image."}
]}Caché de contexto
La caché es automática: un prefijo de prompt repetido se lee desde la caché a la tarifa reducida de entrada en caché. prompt_cache_options.ttl elige cuánto tiempo permanece en caché un prefijo escrito, 5m (el predeterminado) o 1h; elige 1h cuando tus solicitudes estén separadas por más de cinco minutos. usage.prompt_tokens_details.cached_tokens informa de los tokens leídos desde la caché y cache_write_tokens de las escrituras en caché facturadas en la solicitud.
Dimensiones de facturación
Consulta las tarifas actuales en la página del modelo. Una solicitud se factura por los tokens que utiliza:
- tokens de entrada,
- tokens de entrada en caché (
cached_tokens), - tokens de escritura en caché (
cache_write_tokens), - tokens de salida, incluido el razonamiento.
Los precios no cambian con la longitud del contexto. El cargo se calcula a partir del usage que acompaña a la respuesta finalizada. Una solicitud fallida no se cobra. Los registros de uso de tu cuenta muestran el cargo exacto de cada solicitud.
Salida
Una solicitud de Chat Completions sin streaming devuelve:
{
"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}
}
}Con "stream": true cada chunk lleva un delta con reasoning_content o content. Con stream_options.include_usage, un último chunk con un array choices vacío lleva el uso antes de data: [DONE].
Responses API y Codex
POST /v1/responses acepta el cuerpo de Responses: input, instructions, max_output_tokens, reasoning.effort (low, high, max), text.format (json_schema), tools (function y la herramienta personalizada apply_patch), tool_choice, stream, prompt_cache_options, prompt_cache_key y safety_identifier. El razonamiento se devuelve como un elemento reasoning con una parte summary_text, y un flujo lleva eventos numerados desde response.created hasta response.completed. La API no guarda estado: previous_response_id y conversation se ignoran, así que envía toda la conversación en input. La herramienta web_search se ignora.
Para usar Kimi K3 en Codex, añade un provider a ~/.codex/config.toml y define 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
El código escrito para la API de Anthropic Messages también puede llamar a Kimi K3: envía el cuerpo de Messages a /v1/messages con "model": "kimi-k3". Se aplican system, max_tokens, tools, tool_choice (auto, none) y output_config.effort (low, high, max), y se aceptan metadata.user_id y cache_control. stop_sequences (hasta 5), tool_choice any y output_config.format se aceptan, pero no tienen efecto. El razonamiento se devuelve como bloques thinking. Las imágenes se envían como fuentes base64.
Errores
Los errores usan {"error": {"code": ..., "message": "..."}} (el endpoint de Messages usa el formato de error de Anthropic). El code es un código del catálogo de errores común. Las solicitudes fallidas no se facturan.
Consejos
- Empieza con el nivel de razonamiento
highy pasa amaxsolo para los problemas más difíciles;lowva bien para pasos rápidos y sencillos. - Establece
max_completion_tokenslo bastante alto para el razonamiento y para la respuesta: es un único presupuesto para ambos. - Coloca el contexto largo y reutilizado al inicio del prompt para que las solicitudes posteriores lo lean desde la caché, y usa el TTL
1hcuando las solicitudes estén espaciadas.
