API di Kimi K3: come ottenere una chiave e fare la prima chiamata
Come accedere all'API di Kimi K3: ottieni una chiave, chiama kimi-k3 con l'SDK OpenAI, imposta lo sforzo di ragionamento, streaming, immagini ed errori comuni.
Leggi in MarkdownPer chiamare Kimi K3 ti servono una chiave API di una piattaforma che lo offre e una richiesta con model impostato su kimi-k3. Moonshot AI lo offre sulla propria Kimi API Platform, dove il modello si sblocca dopo la prima ricarica. SeedRouter lo offre con un'unica chiave, a consumo, nel formato di richiesta ufficiale: punta l'SDK OpenAI su https://api.seedrouter.ai/v1 e mantieni il tuo codice.
Questa guida usa SeedRouter; i corpi delle richieste sono gli stessi dell'API di Kimi.
Come ottenere una chiave API di Kimi K3?
- Accedi a SeedRouter e apri API keys.
- Crea una chiave e copiala; viene mostrata una sola volta.
- Aggiungi credito quando ti serve. I nuovi account partono con un piccolo saldo gratuito e non c'è alcun abbonamento.
Conserva la chiave in una variabile d'ambiente come SEEDROUTER_API_KEY e usala solo da codice lato server.
Come chiamare Kimi K3 da Python?
Kimi K3 usa il formato Chat Completions, quindi il pacchetto ufficiale openai funziona così com'è:
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 risposta è in content. Kimi K3 ragiona prima di rispondere, e quel ragionamento torna in reasoning_content nello stesso messaggio.
Come chiamarlo da 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 stessa chiave risponde anche alla Responses API (/v1/responses) e al formato Anthropic Messages (/v1/messages) per kimi-k3.
Come impostare lo sforzo di ragionamento?
Kimi K3 ragiona sempre; non puoi disattivarlo. reasoning_effort stabilisce quanto pensa prima di rispondere:
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",
)| Valore | Usalo per |
|---|---|
low | Passaggi rapidi e semplici |
high | La maggior parte del coding e dell'analisi |
max (predefinito) | I problemi più difficili |
I token di ragionamento sono fatturati come output e contano per max_completion_tokens, che per impostazione predefinita è 131.072 e arriva fino a 1.048.576. Nel nostro test sulla stessa domanda, low ha usato 25 token di output e max ne ha usati 146.
Come ricevere la risposta in streaming?
Aggiungi stream=True. Il ragionamento arriva prima in delta.reasoning_content, poi la risposta in delta.content. Chiedi stream_options={"include_usage": True} per ricevere il conteggio dei token nell'ultimo chunk:
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)Posso inviare immagini?
Sì, come data URI in base64. Kimi K3 non accetta URL pubblici di immagini; il suo quickstart dice: "Vision input does not support public image URLs" (l'input visivo non supporta URL pubblici di immagini):
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?"},
],
}],
)Quali errori puoi incontrare?
| Errore | Causa | Soluzione |
|---|---|---|
400 su temperature, top_p, n o una penalità | Kimi K3 li fissa (1,0, 0,95, 1, 0) | Omettili |
400 su reasoning_effort | Un valore diverso da low, high o max | Usa uno dei tre |
| 400 su un'immagine | Un URL pubblico invece di un data URI | Invia l'immagine in base64 |
| 401 | Chiave mancante o errata | Controlla l'header Authorization |
Gli errori restituiscono {"error": {"code": ..., "message": "..."}}, e una richiesta che fallisce non viene addebitata.
Domande frequenti
L'API di Kimi K3 è compatibile con OpenAI?
Sì. Kimi K3 accetta i formati Chat Completions e Responses, quindi l'SDK OpenAI funziona cambiando solo l'URL di base e il modello. Accetta anche il formato Anthropic Messages.
Serve un account Moonshot per usare Kimi K3?
Non su SeedRouter. Accedi a SeedRouter, crei lì una chiave e paghi con il tuo saldo SeedRouter.
Quanto costa una richiesta a Kimi K3?
Viene fatturata per token di input e di output. La guida ai prezzi di Kimi K3 riporta le tariffe live ed esempi di calcolo.
Dove trovo l'elenco completo dei parametri?
La documentazione API di Kimi K3 elenca ogni campo, e la pagina di Kimi K3 offre un playground e i prezzi live.



