Claude Opus 5.5 est disponible sur SeedRouter

API Kimi K3 : obtenir une clé et faire votre premier appel

API Kimi K3 : obtenir une clé, appeler kimi-k3 avec le SDK OpenAI, régler l’effort de raisonnement, streamer, envoyer des images, corriger les erreurs.

Lire en Markdown

Pour appeler Kimi K3, il vous faut une clé API d'une plateforme qui le propose et une requête avec model défini sur kimi-k3. Moonshot AI le propose sur sa propre Kimi API Platform, où le modèle se débloque après une première recharge. SeedRouter le propose avec une seule clé, en paiement à l'usage, avec le format de requête officiel : pointez le SDK OpenAI vers https://api.seedrouter.ai/v1 et gardez votre code.

Ce guide utilise SeedRouter ; les corps de requête sont les mêmes que sur l'API de Kimi.

Comment obtenir une clé API Kimi K3 ?

  1. Connectez-vous à SeedRouter et ouvrez API keys.
  2. Créez une clé et copiez-la ; elle n'est affichée qu'une fois.
  3. Ajoutez du crédit quand vous en avez besoin. Les nouveaux comptes démarrent avec un petit solde gratuit, et il n'y a pas d'abonnement.

Conservez la clé dans une variable d'environnement comme SEEDROUTER_API_KEY, et utilisez-la uniquement dans du code côté serveur.

Comment appeler Kimi K3 en Python ?

Kimi K3 parle le format Chat Completions, donc le paquet officiel openai fonctionne tel quel :

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 réponse se trouve dans content. Kimi K3 raisonne avant de répondre, et ce raisonnement revient dans reasoning_content sur le même message.

Comment l'appeler en Node.js ou avec 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 même clé répond aussi à la Responses API (/v1/responses) et au format Anthropic Messages (/v1/messages) pour kimi-k3.

Comment régler l'effort de raisonnement ?

Kimi K3 raisonne toujours ; vous ne pouvez pas le désactiver. reasoning_effort règle combien il réfléchit avant de répondre :

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",
)
ValeurÀ utiliser pour
lowDes étapes rapides et simples
highLa plupart des tâches de code et d'analyse
max (par défaut)Les problèmes les plus difficiles

Les tokens de raisonnement sont facturés comme sortie et comptent dans max_completion_tokens, qui vaut 131 072 par défaut et peut aller jusqu'à 1 048 576. Dans notre test sur la même question, low a utilisé 25 tokens de sortie et max en a utilisé 146.

Comment streamer la réponse ?

Ajoutez stream=True. Le raisonnement arrive d'abord dans delta.reasoning_content, puis la réponse dans delta.content. Demandez stream_options={"include_usage": True} pour obtenir le nombre de tokens dans le dernier fragment :

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)

Peut-on envoyer des images ?

Oui, sous forme de data URI en base64. Kimi K3 n'accepte pas les URL d'images publiques ; son guide de démarrage indique « Vision input does not support public image URLs » (l'entrée visuelle ne prend pas en charge les URL d'images publiques) :

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

Quelles erreurs peut-on rencontrer ?

ErreurCauseSolution
400 sur temperature, top_p, n ou une pénalitéKimi K3 les fixe (1.0, 0.95, 1, 0)Les omettre
400 sur reasoning_effortUne valeur autre que low, high ou maxUtiliser l'une des trois
400 sur une imageUne URL publique au lieu d'une data URIEnvoyer l'image en base64
401Clé absente ou incorrecteVérifier l'en-tête Authorization

Les erreurs renvoient {"error": {"code": ..., "message": "..."}}, et une requête qui échoue n'est pas facturée.

Questions fréquentes

L'API Kimi K3 est-elle compatible OpenAI ?

Oui. Kimi K3 accepte les formats Chat Completions et Responses, donc le SDK OpenAI fonctionne en changeant seulement l'URL de base et le modèle. Il accepte aussi le format Anthropic Messages.

Faut-il un compte Moonshot pour utiliser Kimi K3 ?

Pas sur SeedRouter. Vous vous connectez à SeedRouter, vous y créez une clé et vous payez avec votre solde SeedRouter.

Combien coûte une requête Kimi K3 ?

Elle est facturée par token d'entrée et de sortie. Le guide des tarifs de Kimi K3 donne les tarifs en direct et des exemples chiffrés.

Où trouver la liste complète des paramètres ?

La référence de l'API Kimi K3 liste chaque champ, et la page Kimi K3 propose un playground et les prix en direct.

Guides associés