kimik3.io/Errori

Errori e modalità di guasto di Kimi K3

I guasti peggiori di Kimi K3 non sembrano guasti: la chiamata restituisce HTTP 200. Qui sotto trovi tutti gli status che incontrerai davvero, con i corpi di risposta reali che abbiamo catturato rompendo le chiamate di proposito.

Quello che ti frega davvero non appartiene alla compagnia abituale di questa tabella: quando max_completion_tokens è troppo basso perché il ragionamento arrivi in fondo, K3 restituisce HTTP 200 con content vuoto — e ti fattura tutto. È un errore silenzioso: sembra un successo, ed è il modo più probabile in cui si rompe una prima integrazione. Analisi completa →

Misurato il 2026-07-16 su api.moonshot.ai, ritestato il 2026-07-18 via direct.evolink.ai, modello kimi-k3come abbiamo misurato.

La forma dell'errore

Gli errori arrivano come un unico oggetto error con message, type e code:

{
  "error": {
    "message": "API key is missing or invalid",
    "type": "invalid_authentication_error",
    "code": null
  }
}

Non fare switch su code. Il campo ammette null e in tutti gli errori che abbiamo provocato su Moonshot diretto mancava del tutto. type è il campo sempre valorizzato: fai il match su quello.

Attraverso un gateway i corpi qui sotto per l'autenticazione e per «modello non trovato» non saranno identici byte per byte. Una key sbagliata viene respinta dal layer di autenticazione del gateway stesso e non arriva mai a Moonshot: leggerai la sua formulazione, non quella di Moonshot. Sintomi, cause e soluzioni restano gli stessi. Le osservazioni sul comportamento in questa pagina — la trappola del content vuoto, i parametri che non vengono validati — sono proprietà del modello e valgono ovunque venga servito K3.

{
  "error": {
    "message": "Invalid Authentication",
    "type": "invalid_authentication_error"
  }
}

Gli errori, per sintomo

Riprodotto il 2026-07-16 su kimi-k3; 404 e tool_choice ritestati il 2026-07-18 via direct.evolink.ai.
SintomoChe cosa ottieni davveroCausa e soluzione
content vuoto,
ma ti fatturano

il più probabile
HTTP 200
finish_reason: "length"
content: ""
reasoning_content valorizzato
Il ragionamento ha consumato tutto il budget di token. Alza max_completion_tokens o lascialo al valore predefinito di 131,072. Le sei esecuzioni →
401
non autorizzato
{"error": {
  "message": "Invalid Authentication",
  "type": "invalid_authentication_error"
}}
Key assente, digitata male, revocata — oppure è saltato il prefisso Bearer. Verifica che la shell abbia davvero esportato la variabile. Qui non c'è nessun campo code su cui fare match.
404
modello non trovato
api.moonshot.ai, 2026-07-16:
{"error": {
  "message": "Not found the model kimi-k3-chat
              or Permission denied",
  "type": "resource_not_found_error"
}}
via direct.evolink.ai, 2026-07-18:
{"error": {
  "code": "model_not_found",
  "did_you_mean": "kimi-k3",
  "message": "Model 'kimi-k3-chat' is not
              available for this API key
              (unknown model id, or not
              enabled for your group). This
              error is permanent — do not
              retry with the same model id.
              Did you mean 'kimi-k3'? Call
              GET /v1/models to list the
              models available to this key."
}}
L'ID è esattamente kimi-k3. Attenzione: il messaggio di Moonshot confonde «nome sbagliato» e «nessun accesso» — se la grafia è corretta il problema sta nei permessi o nell'elenco dei modelli, non in un refuso. Controlla che il tuo gateway porti K3. Ritestato il 2026-07-18 via direct.evolink.ai: il 404 di EvoLink indica la soluzione a chiare lettere, in un campo did_you_mean.
400
messages vuoto
{"error": {
  "message": "Invalid request: messages
              must not be empty",
  "type": "invalid_request_error"
}}
L'array dei messaggi si è svuotato più a monte, filtrato via — di solito è un bug nel taglio della cronologia. Metti un controllo prima di inviare.
400
tool_choice forzato
{"error": {
  "message": "tool_choice 'specified' is
              incompatible with thinking
              enabled",
  "type": "invalid_request_error",
  "code": null
}}
Misurato il 2026-07-18 via direct.evolink.ai.
Il ragionamento sempre attivo di K3 rifiuta un tool_choice che forza una funzione specifica. tool_choice: "auto" funziona: lo stesso schema di tool ha restituito finish_reason: "tool_calls". Verifica da te il nome del tool restituito, invece di imporlo.
429
rate limit
{"error": {
  "message": "Rate limit exceeded",
  "type": "...",
  "code": null
}}
Secondo lo schema documentato di EvoLink — questo non l'abbiamo provocato.
Troppe richieste o troppi token al minuto per il tuo piano. Fai backoff esponenziale — 1s, 2s, 4s, con jitter. E serializza i tuoi burst: una tempesta di retry viene letta come carico aggiuntivo. In 50 chiamate il 2026-07-18 non abbiamo preso nessun 429, ma nelle ore di punta il rate limit è reale — la pagina di K3 su OpenRouter segnala il carico.
Timeout /
richiesta appesa
Nessuna risposta per decine di secondi Previsto sul contesto lungo: abbiamo misurato 52s su un prompt da 498k token. Imposta i timeout del client in minuti, non in secondi, e usa stream: true.
Nessun usage
in streaming
Lo stream si completa, del blocco usage nessuna traccia Passa stream_options: {"include_usage": true}. Senza, non vedi quanto hai speso — token di ragionamento compresi.
Credito
insufficiente
Dipende dal provider Controlla la dashboard. I contesti lunghi bruciano in fretta: una sola chiamata da 498k token sono $1.49 di solo input.

I guasti che non danno errore

È la categoria da mandare a memoria. K3 non valida i parametri — abbiamo trovato due casi in cui una richiesta palesemente non valida restituisce un pulito HTTP 200:

Entrambe hanno restituito HTTP 200 con una completion normale. 2026-07-16, riverificato il 2026-07-18.
Che cosa abbiamo inviatoPerché doveva fallireChe cosa è successo
reasoning_effort: "low" È documentato il supporto solo per max HTTP 200 — ignorato in silenzio: accettato senza avvisi, nessun effetto coerente
max_completion_tokens: 2000000 Quasi il doppio della finestra di contesto da 1,048,576 HTTP 200 — valore tagliato in silenzio al tetto massimo, senza avvisi

La lezione vale oltre questi due casi: un 200 da K3 non significa che la richiesta sia stata capita come volevi. Se conti su un parametro per cambiare il comportamento, verifica che il comportamento sia cambiato davvero, invece di dedurlo dall'assenza di un errore. Insieme alla trappola del content vuoto, la regola è semplice: fai le asserzioni sulla risposta, non sul codice di stato.

Una checklist prima del rilascio

  1. model nella risposta riporta kimi-k3 — nessuna sostituzione silenziosa del gateway.
  2. finish_reason == "stop", non "length".
  3. content non è vuoto.
  4. usage.total_tokens non è zero, e logghi reasoning_tokens.
  5. Timeout del client in minuti, se tocchi il contesto lungo.
  6. Ogni parametro su cui conti è verificato dal comportamento osservato, non da un 200.

L'asserzione che vale la pena tenere nel codice è nella guida API.

FAQ sugli errori di Kimi K3

Che cosa significa l'errore 401 Invalid Authentication di Kimi K3?

L'API key è assente, digitata male, revocata, oppure dall'header Authorization è saltato il prefisso Bearer. Il corpo è {"error": {"message": "Invalid Authentication", "type": "invalid_authentication_error"}}, senza campo code: fai il match su type, non su code.

Perché Kimi K3 restituisce 404 model not found?

L'ID del modello è esattamente kimi-k3. Il 404 diretto di Moonshot confonde un nome di modello sbagliato con un problema di permessi: recita 'Not found the model X or Permission denied'. Ritestato il 2026-07-18 via EvoLink, il corpo del 404 aggiunge un campo did_you_mean che punta a kimi-k3. Se la grafia è corretta, il problema è l'accesso o il gateway che non porta K3, non un refuso.

L'API di Kimi K3 valida i parametri della richiesta?

Non in modo affidabile. Due richieste non valide restituiscono HTTP 200 con una completion normale: reasoning_effort impostato su 'low' viene ignorato in silenzio, e max_completion_tokens impostato a 2,000,000 — quasi il doppio della finestra di contesto — viene tagliato in silenzio al tetto massimo (riverificato il 2026-07-18). Forzare una funzione specifica via tool_choice invece fallisce davvero: 400, tool_choice 'specified' is incompatible with thinking enabled. Un 200 non significa che la richiesta sia stata capita come volevi.

Riproduci tutto questo

Ogni caso di questa pagina si riproduce in pochi secondi con un curl e una key. EvoLink offre kimi-k3 su un endpoint compatibile con OpenAI — 10 crediti gratuiti e registrazione da qualsiasi paese, senza numero di telefono cinese.

Ottieni una API key EvoLink