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 MarkdownPour 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 ?
- Connectez-vous à SeedRouter et ouvrez API keys.
- Créez une clé et copiez-la ; elle n'est affichée qu'une fois.
- 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 |
|---|---|
low | Des étapes rapides et simples |
high | La 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 ?
| Erreur | Cause | Solution |
|---|---|---|
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_effort | Une valeur autre que low, high ou max | Utiliser l'une des trois |
| 400 sur une image | Une URL publique au lieu d'une data URI | Envoyer l'image en base64 |
| 401 | Clé absente ou incorrecte | Vé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.



