kimik3.io/错误速查
Kimi K3 错误与失败模式
Kimi K3 最坑的失败不像失败:调用照样返回 HTTP 200。下面是你实际会撞上的每种状态,响应体全部来自我们故意打坏的真实调用。
真正会坑到你的那一个,并不在常规错误的行列里:当 max_completion_tokens 低到不够推理跑完时,K3 会返回 HTTP 200 加一个空的 content——并且照全额扣费。它是静默的,看上去像成功,也是第一次接入最容易翻车的地方。完整分析 →
2026-07-16 实测于 api.moonshot.ai,2026-07-18 经 direct.evolink.ai 复测,模型 kimi-k3——测量方法。
错误长什么样
错误以单个 error 对象返回,带 message、type 和 code 三个字段:
{
"error": {
"message": "API key is missing or invalid",
"type": "invalid_authentication_error",
"code": null
}
}
不要用 code 做分支判断。它可以为 null,而且在我们对月之暗面(Moonshot AI)官方直连触发的每一个错误里,它干脆整个缺失。每次都有值的字段是 type——按它来匹配。
走网关时,下面的鉴权错误和「模型不存在」响应体不会逐字节一致。错误的 key 会被网关自己的鉴权层直接拒掉,根本到不了月之暗面,所以你拿到的是网关的措辞,不是月之暗面的。但症状、成因和修法两边都成立。本页的行为层结论——空 content 陷阱、不做校验的参数——是模型本身的属性,在任何承载 K3 的地方都适用。
{
"error": {
"message": "Invalid Authentication",
"type": "invalid_authentication_error"
}
}
错误一览,按症状分
| 症状 | 你实际拿到的 | 成因与修法 |
|---|---|---|
content 为空,照样扣费 最高发 |
HTTP 200finish_reason: "length"content: ""reasoning_content 有内容 |
推理吃光了整个 token 预算。调高 max_completion_tokens,或保持 131,072 的默认值。六组实测 → |
401鉴权失败 |
|
key 缺失、敲错、被吊销,或者 Bearer 前缀被弄丢了。先确认你的 shell 真的导出了那个环境变量。没有 code 字段可供匹配。 |
404模型不存在 |
api.moonshot.ai,2026-07-16:经 direct.evolink.ai,2026-07-18: |
模型 ID 就是 kimi-k3,一字不差。注意月之暗面这条 message 把「名字写错」和「没有权限」混为一谈——如果拼写没问题,那就是权限或上架问题,不是手误。确认你的网关承载了 K3。2026-07-18 经 direct.evolink.ai 复测:EvoLink 的 404 直接用 did_you_mean 字段把正确 ID 递到你面前。 |
400messages 为空 |
|
你的消息数组在上游被过滤成了空的——通常是裁剪对话历史的 bug。发送前先做校验。 |
400强制 tool_choice |
2026-07-18 实测于 direct.evolink.ai。 |
K3 常开的思考模式会拒绝用 tool_choice 强制指定某个函数。tool_choice: "auto" 没问题——同一套工具 schema 返回了 finish_reason: "tool_calls"。与其强制指定,不如自己校验返回的工具名。 |
429被限流 |
引自 EvoLink 文档给出的 schema——这一条我们没有实际触发。 |
你所在档位的每分钟请求数或 token 数超了。指数退避——1s、2s、4s,再加抖动。把自己的并发请求串行化:重试风暴在服务端看来只是更大的负载。2026-07-18 的 50 次调用我们一次 429 都没碰到,但高峰期限流真实存在——OpenRouter 的 K3 页面就挂着负载警示。 |
| 超时 / 请求挂起 |
几十秒没有任何响应 | 长上下文下属于正常现象:我们实测 498k token 的提示词要 52 秒。客户端超时按分钟设,不要按秒,并使用 stream: true。 |
| 流式输出 没有 usage |
流式跑完了,没有 usage 块 | 传 stream_options: {"include_usage": true}。不传的话你对这次花了多少钱一无所知——包括推理 token。 |
| 余额 不足 |
取决于服务商 | 去后台看余额。长上下文烧钱很快:一次 498k token 的调用,光输入就是 $1.49。 |
不报错的失败
这一类才值得刻进脑子里。K3 不校验你的参数——我们发现两种明显不合法的请求,都返回了干干净净的 HTTP 200:
| 我们发了什么 | 为什么本该报错 | 实际结果 |
|---|---|---|
reasoning_effort: "low" |
文档写明只支持 max |
HTTP 200——静默忽略:照单接受、零警告、无一致效果 |
max_completion_tokens: 2000000 |
几乎是 1,048,576 上下文窗口的两倍 | HTTP 200——数值被静默钳到上限,零警告 |
教训不止于这两条:K3 返回 200,不代表它按你的意图理解了请求。如果你指望某个参数改变行为,就去验证行为真的变了——不要因为没报错就默认生效。再叠上空 content 陷阱,规则就一句话:断言响应内容,别断言状态码。
上线前自检清单
- 响应里的
model回显为kimi-k3——没有被网关静默换掉。 finish_reason == "stop",而不是"length"。content非空。usage.total_tokens非零,并且把reasoning_tokens记进日志。- 会碰长上下文的话,客户端超时按分钟设。
- 所有你依赖的参数,都用观察到的行为验证过,而不是靠一个 200。
值得写进代码的那条断言,在 API 指南里。
Kimi K3 错误常见问题
Kimi K3 的 401 Invalid Authentication 错误是什么意思?
你的 API key 缺失、敲错、被吊销,或者 Authorization 头里丢了 Bearer 前缀。响应体是 {"error": {"message": "Invalid Authentication", "type": "invalid_authentication_error"}},没有 code 字段,所以要按 type 匹配,而不是按 code。
Kimi K3 为什么返回 404 model not found?
模型 ID 就是 kimi-k3,一字不差。月之暗面官方直连的 404 把模型名写错和权限问题混为一谈:原文是 'Not found the model X or Permission denied'。2026-07-18 经 EvoLink 复测,404 响应体多了一个指向 kimi-k3 的 did_you_mean 字段。如果拼写正确,问题出在访问权限或网关没有上架 K3,不是手误。
Kimi K3 API 会校验请求参数吗?
不可靠。两种不合法的请求都返回了 HTTP 200 和正常补全:reasoning_effort 设为 'low' 会被静默忽略;max_completion_tokens 设为 2,000,000——几乎是上下文窗口的两倍——会被静默钳到上限(2026-07-18 复测确认)。用 tool_choice 强制指定函数则真的会报 400:tool_choice 'specified' is incompatible with thinking enabled。返回 200 不代表请求被按你的意图理解。
亲手复现这一切
本页每个案例,一条 curl 加一把 key,几秒就能复现。EvoLink 在 OpenAI 兼容接口上承载 kimi-k3——注册即送 10 个免费额度。