kimik3.io/API 指南

Kimi K3 API

模型 ID、鉴权、一段能跑通的请求,以及如何区分真正的成功和静默失败。本页所有响应体都是 2026-07-16 从线上真实抓回来的。

K3 兼容 OpenAI 格式。任何 OpenAI SDK 都能直接用——把 base_url 指向一个承载 kimi-k3 的接口地址、写上模型名,接入就完成了。

快速开始

下面的代码通过 EvoLink 调用 K3——它在 OpenAI 兼容接口上承载 kimi-k3。换成其他网关只需替换 base_url,其余一行不改。

python · openai sdk
from openai import OpenAI

client = OpenAI(
    api_key="YOUR_EVOLINK_API_KEY",
    base_url="https://direct.evolink.ai/v1",   # <-- 你唯一需要改的一行
)

response = client.chat.completions.create(
    model="kimi-k3",
    messages=[
        {"role": "user", "content": "Explain prompt caching in two sentences."},
    ],
)

print(response.choices[0].message.content)
print(response.usage)
curl
curl https://direct.evolink.ai/v1/chat/completions \
  -H "Authorization: Bearer $EVOLINK_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "kimi-k3",
    "messages": [
      {"role": "user", "content": "Explain prompt caching in two sentences."}
    ]
  }'

鉴权用 Bearer token:Authorization: Bearer <key>。key 放在环境变量里,绝不写进源码。接口路径是 /v1/chat/completions——如果你用的是 OpenAI SDK,把 /v1 根路径交给它,剩下的部分 SDK 会自动拼接。

拿 key:两条正规途径,任选一条

上面的代码需要一个 API key,正规途径有两条。有三样东西两边完全一样——费率($3.00 / $0.30 / $15.00 每百万 token,带日期戳)、模型行为(缓存块推理计费——本来就是同一个模型),还有你的代码(两边都是 OpenAI 格式;以后想切换,只改一行 base_url)。不一样的,是调用之外的所有事:

月之暗面官方直连EvoLink
上手 需要单独注册一个月之暗面平台账号 一个账号,注册即送 10 个免费额度,几分钟开通
一把 key 能调的模型 Kimi 系列 GPT、Claude、Gemini、K3 等全球主流模型——一把 key、一个接口
账单运维 每接入一家,就多一个要充值、盯余额、对账的钱包 所有模型共用一个余额、一张账单
多模型与 Agent 场景 模型路由、降级兜底、A/B 评测,意味着每家维护一个账号 路由、兜底、模型对比,只是在同一把 key 上改个字符串

什么时候该选官方直连?如果你只会用 Kimi 系列模型、且不希望链路上有任何中间层,那就直连——本页代码换成月之暗面的 base_url 一样能跑。除此之外的场景,右边这一列就是本站示例默认走网关的原因。

获取 EvoLink API key——注册即送 10 个免费额度

注册完成即进入带引导的控制台。已有账号?直接去控制台拿 key →

真实响应体长什么样

略有删减,其余逐字保留原始返回:

{
  "id": "chatcmpl-6a593017ec44f116fb614895",
  "object": "chat.completion",
  "created": 1784229923,
  "model": "kimi-k3",
  "choices": [{
    "index": 0,
    "message": {
      "role": "assistant",
      "content": "OK",
      "reasoning_content": "The user is asking me to reply with exactly \"OK\". This is a simple request with no complications..."
    },
    "finish_reason": "stop"
  }],
  "usage": {
    "prompt_tokens": 90,
    "completion_tokens": 47,
    "total_tokens": 137,
    "completion_tokens_details": {"reasoning_tokens": 31},
    "prompt_tokens_details": {"cached_tokens": 90}
  }
}

有两个字段值得注意,因为 OpenAI 里没有对应物:

  • message.reasoning_content——K3 的思考过程,和答案一起返回。取答案要读 content推理在 K3 上不是可开关的模式,而是恒开。
  • usage.completion_tokens_details.reasoning_tokens——输出 token 里有多少花在了思考上。上面这个例子,47 个 token 里 31 个用于推理,而回答只有两个字母。这部分按输出价计费

确认调用真的成功了

在 K3 上,HTTP 200 不等于成功。要查四件事:

  1. model 回显的是 kimi-k3——而不是网关悄悄替换的兜底模型。
  2. finish_reasonstop,不是 length——length 加空内容,正是推理预算陷阱的典型特征。
  3. content 是一个真正的字符串,不是 ""
  4. usage.total_tokens 不为零——它还告诉你这次花了多少。

落到代码上,最值得写的一条断言:

choice = response.choices[0]
if choice.finish_reason == "length" and not choice.message.content:
    raise RuntimeError(
        f"Reasoning consumed the whole budget "
        f"({response.usage.completion_tokens_details.reasoning_tokens} reasoning tokens). "
        f"Raise max_completion_tokens."
    )

关键参数

与 K3 相关的参数。默认值引自月之暗面 API 文档,读取于 2026-07-16;行为说明为我们的实测结论。
参数默认值你需要知道的
model 只能是 kimi-k3。不是 kimi-k3-chat,也不是 moonshot-k3
max_completion_tokens131,072 没有十足把握就别动它。推理会消耗这份预算;把上限压得太低,你会为一个空字符串买单。完整来龙去脉
streamfalse 长上下文下强烈建议开启——我们实测过 一条 498k token 的提示词耗时 52s
stream_options 设成 {"include_usage": true},否则流式输出时拿不到 usage 块,花了多少钱两眼一抹黑。
tools 函数调用,最多 128 个工具,JSON Schema 格式。
tool_choiceauto auto · none · required · 或指定某个函数名。
response_format{"type":"text"} 支持 json_objectjson_schema,用于结构化输出。
prompt_cache_keynull 我们没有测出它对前缀复用有任何影响——缓存本来就是自动生效的。我们测了什么
reasoning_effort 目前只支持 max——但传入不支持的值会返回 HTTP 200,而不是报错别指望它帮你做校验

完整的参数与响应结构参考:EvoLink 的 kimi-k3 API 文档

流式输出

Server-sent events,以 data: [DONE] 结束。K3 特有的一个细节:你最先收到的 token 是推理,不是答案。我们实测首 token 中位数 2.8s——而且五次实测里有三次,128 token 的上限被思考耗尽,一个内容 token 都没等到。

stream = client.chat.completions.create(
    model="kimi-k3",
    messages=[{"role": "user", "content": "Count to three."}],
    stream=True,
    stream_options={"include_usage": True},   # 不设这个就完全拿不到 usage
)

for chunk in stream:
    if not chunk.choices:
        continue
    delta = chunk.choices[0].delta
    if getattr(delta, "reasoning_content", None):
        pass                      # 思考内容——通常不是你要渲染的部分
    if delta.content:
        print(delta.content, end="", flush=True)

如果你把 reasoning_content 渲染给用户,等于把模型的草稿纸亮给他们看。多数产品的做法是:推理阶段显示加载动画,只把 content 流式输出出去。

API 常见问题

Kimi K3 的模型 ID 是什么?

只能是 kimi-k3——不是 kimi-k3-chat,也不是 moonshot-k3。响应会在 model 字段里把它回显出来,值得写一条断言去校验。

Kimi K3 兼容 OpenAI 格式吗?

兼容。K3 走标准的 /v1/chat/completions 接口形态,任何 OpenAI SDK 无需改动即可使用——设好 base_url 和模型名就行。K3 特有的两处补充,是 message 里的 reasoning_content 和 usage 里的 reasoning_tokens

用 Kimi K3 API 需要月之暗面账号吗?

不需要。任何承载 kimi-k3 的接口地址都能用——通过 EvoLink,一个账号、10 个免费额度,就能在调 K3 的同时调用 GPT、Claude、Gemini 等全球主流模型,费率与月之暗面官方直连一致

调 Kimi K3 该用哪个 base_url?

走 EvoLink:https://direct.evolink.ai/v1。直连月之暗面:https://api.moonshot.ai/v1。两种方式下,其余代码完全一致。

拿到 key,跑通上面的代码

EvoLink 在 OpenAI 兼容接口上承载 kimi-k3——一把 key 即可调用 GPT、Claude、Gemini 等全球主流模型。注册即送 10 个免费额度。

获取 EvoLink API key