Kimi K3
Chiama Kimi K3 con l'API ufficiale Chat Completions, Responses o Anthropic Messages: finestra di contesto di 1M token, ragionamento sempre attivo e il livello di ragionamento che preferisci.
Kimi K3 è il modello di punta di Moonshot AI per il coding di lungo periodo, gli agenti e il lavoro della conoscenza. Ragiona sempre prima di rispondere, e con reasoning_effort scegli quanto a fondo. Invia la richiesta ufficiale Kimi a SeedRouter: cambia l'URL di base e la chiave API, mantieni il corpo.
ID modello
| ID modello | Finestra di contesto | Output massimo | Livello di ragionamento | Livello di ragionamento predefinito |
|---|---|---|---|---|
kimi-k3 | 1,048,576 token | 1,048,576 token (predefinito 131,072) | low, high, max | max |
Input: testo e immagini. Output: testo. Consulta la pagina del modello per i prezzi attuali.
Esempio rapido
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."}]
}'Endpoint
| Formato | Metodo e percorso | Autenticazione |
|---|---|---|
| Chat Completions | POST https://api.seedrouter.ai/v1/chat/completions | Authorization: Bearer <key> |
| Responses | POST https://api.seedrouter.ai/v1/responses | Authorization: Bearer <key> |
| Anthropic Messages | POST https://api.seedrouter.ai/v1/messages | x-api-key: <key> oppure Authorization: Bearer <key>, più anthropic-version |
Tutti e tre restituiscono il formato di risposta ufficiale di Kimi, con o senza streaming. Mantieni la chiave API nel codice lato server.
Parametri
Campi di Chat Completions:
| Nome | Tipo | Obbligatorio | Predefinito | Note |
|---|---|---|---|---|
model | string | Sì | — | kimi-k3. |
messages | object[] | Sì | — | Messaggi di testo; immagini come parti image_url (vedi Input di immagini). |
max_completion_tokens | integer | No | 131072 | Fino a 1048576. Include i token di ragionamento. max_tokens è il nome deprecato dello stesso limite. |
reasoning_effort | enum | No | max | low, high o max. Qualsiasi altro valore restituisce 400. |
stop | string or string[] | No | — | Fino a 5 sequenze. |
response_format | object | No | {"type": "text"} | text, json_object o json_schema (con json_schema.name e json_schema.schema). |
tools | object[] | No | — | Strumenti di tipo funzione. |
tool_choice | string or object | No | auto | auto e none vengono applicati. required e una funzione con nome sono accettati, ma non forzano una chiamata. |
stream | boolean | No | false | Trasmette server-sent events. |
stream_options.include_usage | boolean | No | false | Aggiunge il chunk finale con l'utilizzo. |
prompt_cache_options | object | No | {"mode": "implicit", "ttl": "5m"} | mode: implicit. ttl: 5m o 1h. |
prompt_cache_key, safety_identifier, prediction | — | No | — | Accettati. |
logprobs, top_logprobs | — | No | — | Accettati (top_logprobs da 0 a 20), ma non vengono restituite probabilità logaritmiche. |
temperature, top_p, n, presence_penalty, frequency_penalty | — | No | 1.0, 0.95, 1, 0, 0 | Fissi. Qualsiasi altro valore restituisce 400, quindi non inviarli. |
Ragionamento e livello di ragionamento
Kimi K3 ragiona sempre; non c'è modo di disattivare il ragionamento. reasoning_effort stabilisce quanto: max (il predefinito) per il lavoro più difficile, high per la maggior parte dei compiti, low per passaggi rapidi e semplici. Il ragionamento viene restituito in reasoning_content, accanto a content. I token di ragionamento vengono fatturati come token di output e rientrano in max_completion_tokens.
Nelle conversazioni a più turni e nelle chiamate agli strumenti, rimanda ogni messaggio dell'assistente senza modificarlo, compreso il suo reasoning_content.
Input di immagini
Kimi K3 accetta le immagini come data URI base64. Un URL pubblico di un'immagine non è accettato e restituisce 400, come sull'API di Kimi.
{"role": "user", "content": [
{"type": "image_url", "image_url": {"url": "data:image/png;base64,<BASE64_DATA>"}},
{"type": "text", "text": "Describe this image."}
]}Caching del contesto
Il caching è automatico: un prefisso di prompt ripetuto viene letto dalla cache alla tariffa più bassa per l'input in cache. prompt_cache_options.ttl sceglie per quanto tempo un prefisso scritto resta in cache, 5m (il predefinito) o 1h; scegli 1h quando tra le tue richieste passano più di cinque minuti. usage.prompt_tokens_details.cached_tokens riporta i token letti dalla cache e cache_write_tokens le scritture in cache fatturate per la richiesta.
Dimensioni di fatturazione
Vedi i prezzi attuali nella pagina del modello. Una richiesta viene fatturata in base ai token che utilizza:
- token di input,
- token di input in cache (
cached_tokens), - token di scrittura in cache (
cache_write_tokens), - token di output, incluso il ragionamento.
I prezzi non cambiano con la lunghezza del contesto. L'addebito si basa sull'usage riportato con la risposta completata. Una richiesta fallita non viene addebitata. I registri di utilizzo del tuo account mostrano l'addebito esatto di ogni richiesta.
Output
Una richiesta Chat Completions senza streaming restituisce:
{
"id": "chatcmpl-...",
"object": "chat.completion",
"created": 1790585961,
"model": "kimi-k3",
"choices": [{
"index": 0,
"finish_reason": "stop",
"message": {"role": "assistant", "reasoning_content": "...", "content": "..."}
}],
"usage": {
"prompt_tokens": 90,
"completion_tokens": 57,
"total_tokens": 147,
"cached_tokens": 90,
"prompt_tokens_details": {"cached_tokens": 90, "cache_write_tokens": 0}
}
}Con "stream": true ogni chunk contiene un delta con reasoning_content o content. Con stream_options.include_usage, un ultimo chunk con un array choices vuoto riporta l'utilizzo prima di data: [DONE].
Responses API e Codex
POST /v1/responses accetta il corpo Responses: input, instructions, max_output_tokens, reasoning.effort (low, high, max), text.format (json_schema), tools (function e lo strumento personalizzato apply_patch), tool_choice, stream, prompt_cache_options, prompt_cache_key e safety_identifier. Il ragionamento viene restituito come elemento reasoning con una parte summary_text, e uno stream trasporta eventi numerati da response.created a response.completed. L'API è stateless: previous_response_id e conversation vengono ignorati, quindi invia l'intera conversazione in input. Lo strumento web_search viene ignorato.
Per usare Kimi K3 in Codex, aggiungi un provider a ~/.codex/config.toml e imposta SEEDROUTER_API_KEY:
model = "kimi-k3"
model_provider = "seedrouter"
model_context_window = 1048576
[model_providers.seedrouter]
name = "SeedRouter"
base_url = "https://api.seedrouter.ai/v1"
env_key = "SEEDROUTER_API_KEY"
wire_api = "responses"Formato Anthropic Messages
Anche il codice scritto per l'API Anthropic Messages può chiamare Kimi K3: invia il corpo Messages a /v1/messages con "model": "kimi-k3". system, max_tokens, tools, tool_choice (auto, none) e output_config.effort (low, high, max) vengono applicati, e metadata.user_id e cache_control sono accettati. stop_sequences (fino a 5), tool_choice any e output_config.format sono accettati ma non hanno effetto. Il ragionamento viene restituito come blocchi thinking. Le immagini vengono passate come sorgenti base64.
Errori
Gli errori usano {"error": {"code": ..., "message": "..."}} (l'endpoint Messages usa il formato di errore di Anthropic). Il code è un codice dal catalogo errori comune. Le richieste fallite non vengono addebitate.
Suggerimenti
- Parti dal livello di ragionamento
highe passa amaxsolo per i problemi più difficili;lowè adatto a passaggi rapidi e semplici. - Imposta
max_completion_tokensabbastanza alto sia per il ragionamento sia per la risposta: è un unico budget per entrambi. - Metti il contesto lungo e riutilizzato all'inizio del prompt, così le richieste successive lo leggono dalla cache, e usa il TTL
1hquando le richieste sono distanziate.
