Claude Opus 5.5 ya está disponible en SeedRouter

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 Markdown

Para 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?

  1. Inicia sesión en SeedRouter y abre API keys.
  2. Crea una clave y cópiala; solo se muestra una vez.
  3. 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
lowPasos rápidos y sencillos
highLa 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?

ErrorCausaSolución
400 en temperature, top_p, n o una penalizaciónKimi K3 los fija (1.0, 0.95, 1, 0)Omitirlos
400 en reasoning_effortUn valor distinto de low, high o maxUsar uno de los tres
400 en una imagenUna URL pública en lugar de una data URIEnviar la imagen en base64
401Clave ausente o incorrectaRevisar 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.

Guías relacionadas