API de Kimi K3: cómo conseguir una clave y hacer tu primera llamada
Cómo usar la API de Kimi K3: consigue una clave, llama a kimi-k3 con el SDK de OpenAI, ajusta el razonamiento, streaming, imágenes y primeros errores.
Leer en MarkdownPara llamar a Kimi K3 necesitas una clave de API de una plataforma que lo sirva y una solicitud con model fijado en kimi-k3. Moonshot AI lo sirve en su propia Kimi API Platform, donde el modelo se desbloquea tras la primera recarga. SeedRouter lo sirve con una sola clave, con pago por uso y en el formato de solicitud oficial: apunta el SDK de OpenAI a https://api.seedrouter.ai/v1 y conserva tu código.
Esta guía usa SeedRouter; los cuerpos de las solicitudes son los mismos que los de la API de Kimi.
¿Cómo consigo una clave de API de Kimi K3?
- Inicia sesión en SeedRouter y abre API keys.
- Crea una clave y cópiala; solo se muestra una vez.
- Añade saldo cuando lo necesites. Las cuentas nuevas empiezan con un pequeño saldo gratuito y no hay suscripción.
Guarda la clave en una variable de entorno como SEEDROUTER_API_KEY y úsala solo desde código del lado del servidor.
¿Cómo uso Kimi K3 desde Python?
Kimi K3 habla el formato Chat Completions, así que el paquete oficial openai funciona tal cual:
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)La respuesta está en content. Kimi K3 razona antes de responder, y ese razonamiento vuelve en reasoning_content dentro del mismo mensaje.
¿Cómo lo llamo desde Node.js o 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."}]}'La misma clave responde también a la Responses API (/v1/responses) y al formato Anthropic Messages (/v1/messages) para kimi-k3.
¿Cómo ajusto el esfuerzo de razonamiento?
Kimi K3 siempre razona; no puedes desactivarlo. reasoning_effort fija cuánto piensa 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",
)| Valor | Úsalo para |
|---|---|
low | Pasos rápidos y sencillos |
high | La mayoría de tareas de código y análisis |
max (predeterminado) | Los problemas más difíciles |
Los tokens de razonamiento se facturan como salida y cuentan para max_completion_tokens, que por defecto es 131.072 y llega hasta 1.048.576. En nuestra prueba con la misma pregunta, low usó 25 tokens de salida y max usó 146.
¿Cómo recibo la respuesta en streaming?
Añade stream=True. El razonamiento llega primero en delta.reasoning_content y luego la respuesta en delta.content. Pide stream_options={"include_usage": True} para recibir el recuento de tokens en el último fragmento:
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)¿Puedo enviar imágenes?
Sí, como data URI en base64. Kimi K3 no acepta URL públicas de imágenes; su guía de inicio rápido dice «Vision input does not support public image URLs» (la entrada de visión no admite URL públicas de imágenes):
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?"},
],
}],
)¿Qué errores puedo encontrarme?
| Error | Causa | Solución |
|---|---|---|
400 en temperature, top_p, n o una penalización | Kimi K3 los fija (1.0, 0.95, 1, 0) | Omitirlos |
400 en reasoning_effort | Un valor distinto de low, high o max | Usar uno de los tres |
| 400 en una imagen | Una URL pública en lugar de una data URI | Enviar la imagen en base64 |
| 401 | Clave ausente o incorrecta | Revisar la cabecera Authorization |
Los errores devuelven {"error": {"code": ..., "message": "..."}}, y una solicitud que falla no se cobra.
Preguntas frecuentes
¿La API de Kimi K3 es compatible con OpenAI?
Sí. Kimi K3 acepta los formatos Chat Completions y Responses, así que el SDK de OpenAI funciona cambiando solo la URL base y el modelo. También acepta el formato Anthropic Messages.
¿Necesito una cuenta de Moonshot para usar Kimi K3?
En SeedRouter no. Inicias sesión en SeedRouter, creas allí una clave y pagas con tu saldo de SeedRouter.
¿Cuánto cuesta una solicitud a Kimi K3?
Se factura por token de entrada y de salida. La guía de precios de Kimi K3 tiene las tarifas en vivo y ejemplos calculados.
¿Dónde está la lista completa de parámetros?
La referencia de la API de Kimi K3 lista todos los campos, y la página de Kimi K3 ofrece un playground y los precios en vivo.



