KovAPIKovAPI
POST https://kovapi.com/v1/chat/completions

Claude Opus 5 对话接口(Anthropic):自适应思考,擅长复杂推理、代码工程和 Agent 编排。思考强度 low 到 max 五档可调,支持图片输入、工具调用和提示缓存。同时提供 OpenAI 兼容接口和原生 Anthropic 接口,Claude Code 可以直连。

📥 上下文窗口(最大输入):约 200K tokens(20 万)。

在 Playground 试用 →

快速开始

两步跑通:先发一个普通请求,再试流式输出。把 YOUR_API_KEY 换成你的 Key,下面的命令可以直接运行。接口和 OpenAI 的 Chat Completions 一致,已有的 OpenAI 代码只要改 base_url 和 model。

第 1 步 · 发送请求

curl
curl https://kovapi.com/v1/chat/completions \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"model": "claude-opus-5", "messages": [{"role": "user", "content": "用一句话解释什么是光合作用"}]}'

返回(HTTP 200)

JSON
{
  "id": "chatcmpl-7f3c9a1e2b4d6f8a",
  "object": "chat.completion",
  "created": 1791281400,
  "model": "claude-opus-5",
  "choices": [
    {
      "index": 0,
      "message": {
        "role": "assistant",
        "content": "光合作用是植物利用阳光,把二氧化碳和水转化成糖并释放氧气的过程。"
      },
      "finish_reason": "stop"
    }
  ],
  "usage": {
    "prompt_tokens": 18,
    "completion_tokens": 42,
    "total_tokens": 60
  }
}

message.content 是回答,usage 是这一单计费用的 token 数;提示缓存怎么计费,见下文「提示缓存」。

第 2 步 · 流式输出(推荐)

curl
curl -N https://kovapi.com/v1/chat/completions \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"model": "claude-opus-5", "stream": true, "messages": [{"role": "user", "content": "用一句话解释什么是光合作用"}]}'

流式返回标准的 SSE:每一块的正文在 choices[0].delta.content,最后一块带 usage,以 data: [DONE] 结束。回答长、或者模型要先思考时,请用流式:非流式请求最长约 10 分钟,超过会被断开。

Python(OpenAI SDK)

Python
from openai import OpenAI

client = OpenAI(base_url="https://kovapi.com/v1", api_key="YOUR_API_KEY")

# 1. 一问一答
resp = client.chat.completions.create(
    model="claude-opus-5",
    messages=[{"role": "user", "content": "用一句话解释什么是光合作用"}],
)
print(resp.choices[0].message.content)

# 2. 流式输出
stream = client.chat.completions.create(
    model="claude-opus-5",
    messages=[{"role": "user", "content": "用一句话解释什么是光合作用"}],
    stream=True,
)
for chunk in stream:
    if chunk.choices and chunk.choices[0].delta.content:
        print(chunk.choices[0].delta.content, end="", flush=True)

也可以用 Anthropic SDK(原生接口)

Python · Anthropic SDK
import anthropic

client = anthropic.Anthropic(base_url="https://kovapi.com/anthropic", api_key="YOUR_API_KEY")
msg = client.messages.create(
    model="claude-opus-5",
    max_tokens=1024,
    messages=[{"role": "user", "content": "用一句话解释什么是光合作用"}],
)
print(next(b.text for b in msg.content if b.type == "text"))

Anthropic SDK 的 base_url 写到 /anthropic 为止,SDK 会自己加上 /v1/messages;Key 和上面是同一把。

认证

Header
Authorization: Bearer YOUR_API_KEY
Content-Type: application/json

在控制台创建 API Key 后即可调用。

规格速览

上下文窗口~200K token
输入文本、图片
思考自适应思考(默认开启),强度用 reasoning_effort 调
工具调用支持(OpenAI tools 格式)
联网搜索支持(web_search: true,搜索本身不收费)
接口/v1/chat/completions · /anthropic/v1/messages
流式输出支持(stream: true,SSE)
计费方式按 token:输入、输出(含思考)和缓存命中分别计价,失败不收费

请求参数

POST /v1/chat/completions 的请求体(JSON),和 OpenAI 的 Chat Completions 相同。下表是常用参数,以及它们在这个模型上的实际效果:

参数类型必填说明
modelstring是模型 id:claude-opus-5。
messagesarray是对话消息数组,每条有 role(system / user / assistant / tool)和 content。content 可以是字符串,也可以是 text 和 image_url 组成的数组(看图,见下文)。多轮对话把历史消息按顺序全部带上。
streamboolean否true 时以 SSE 流式返回,最后一块带 usage。默认 false。
max_tokensinteger否输出上限,思考 token 也算在里面。给得太小,模型可能在写出正文前就用完:网关会返回 400 max_tokens_too_small,不计费(建议 512 以上)。部分模型上,过小的值会被自动调高到能完整作答的下限,仍只按实际用量计费。
temperature / top_pnumber否这一代 Claude 已经不支持采样参数:网关会去掉 temperature、top_p、top_k(不报错),模型按默认方式采样。
reasoning_effortstring否思考强度:low / medium / high / xhigh / max,网关会转成 Claude 的 output_config.effort;minimal 和 none 按 low 处理。也可以写成 claude-opus-5-high。
thinkingobject否{"type": "disabled"} 关闭思考。旧写法 {"type": "enabled", "budget_tokens": N} 会按预算换算成相近的思考强度。
tools / tool_choicearray / string否函数调用,OpenAI 标准格式。模型要调用时返回 finish_reason: "tool_calls" 和 tool_calls,见下文。
web_searchboolean否true 时先联网搜索,把结果作为参考资料交给模型,见下文。

其余 OpenAI 参数(如 stop、seed、user)原样转给模型,是否生效由模型决定。

价格

按 token 计费,价格实时读取计费表(每百万 token)。写入提示缓存的 token 按缓存写入价,命中缓存的按缓存命中价。只按成功请求的实际用量收费,1 积分 = $0.005。

类型美元 / 百万 token积分 / 百万 token
输入$4.00800
输出(含思考)$20.004000
缓存命中$0.4080
缓存写入$5.001000

举例:输入 2,000 token、输出 1,000 token(含思考)的一次请求约 $0.028。

思考

自适应思考,默认开启:模型按问题难度决定想多少。reasoning_effort 可选 low / medium / high / xhigh / max,网关会转成 Claude 的 output_config.effort;也可以把档位写进型号名,例如 claude-opus-5-high,按 claude-opus-5 计费。

要拿到思考摘要,请用原生接口 /anthropic,在请求里带 "thinking": {"type": "adaptive", "display": "summarized"};思考强度写成 "output_config": {"effort": "high"}。

这个型号可以关闭思考:传 "thinking": {"type": "disabled"}。

思考 token 计入输出 token,按输出价计费。

提示缓存

长提示词即使不做标记,也可能被自动写入缓存(按缓存写入价计费),之后重复的前缀按缓存命中价计费。用原生接口 /anthropic 时,可以在 system 或消息块上加 "cache_control": {"type": "ephemeral"} 自己指定缓存位置;Claude Code 会自动这样做。

原生接口在 usage.cache_creation_input_tokens(写入)和 usage.cache_read_input_tokens(命中)里返回缓存的 token 数,账单按返回的数字计算。

看图(图片输入)

在 content 数组里放 image_url。推荐用 base64 的 data URI(data:image/png;base64,...),总能被读到;公网图片链接要先下载,偶尔会取不到或超时。图片按模型方的规则折算成输入 token。

curl
curl https://kovapi.com/v1/chat/completions \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"model": "claude-opus-5", "messages": [{"role": "user", "content": [{"type": "text", "text": "这张图里有什么"}, {"type": "image_url", "image_url": {"url": "data:image/png;base64,iVBORw0KGgo..."}}]}]}'

工具调用(Function Calling)

在 tools 里用 JSON Schema 描述函数。模型决定调用时返回 finish_reason: "tool_calls",message.tool_calls 里是函数名和参数(JSON 字符串)。

curl
curl https://kovapi.com/v1/chat/completions \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"model": "claude-opus-5", "messages": [{"role": "user", "content": "上海现在天气怎么样"}], "tools": [{"type": "function", "function": {"name": "get_weather", "description": "Current weather of a city", "parameters": {"type": "object", "properties": {"city": {"type": "string"}}, "required": ["city"]}}}]}'

执行函数后,把结果作为一条 role: "tool" 的消息(带上对应的 tool_call_id)追加到对话里再请求一次,模型会据此给出最终回答。tool_choice 可以是 auto、none、required,或指定某个函数。

原生 Anthropic 接口(/anthropic)

  • 地址 https://kovapi.com/anthropic/v1/messages,请求和返回都是 Anthropic Messages 格式:流式事件、工具调用(tool_use / tool_result)、图片块都和 Anthropic 官方一致,Anthropic SDK 和 Claude Code 可以直接用。
  • 认证用 x-api-key: YOUR_API_KEY(也接受 Authorization: Bearer),Key 和 /v1 是同一把。anthropic-version、anthropic-beta 请求头会原样转发;max_tokens 必填。
  • 只收 Claude 型号,其他型号返回 404 not_found_error。另有 POST /anthropic/v1/messages/count_tokens(计算 token 数,不收费)和 GET /anthropic/v1/models。
  • 思考摘要:"thinking": {"type": "adaptive", "display": "summarized"};思考强度:"output_config": {"effort": "high"}(low 到 max)。temperature、top_p、top_k 会被去掉。
  • 出错时按 Anthropic 的格式返回:{"type": "error", "error": {"type": ..., "message": ...}};余额不足是 402 billing_error。
  • 联网搜索在这个接口上默认关闭(以免改动 Claude Code 每一轮相同的前缀、影响缓存),加请求头 x-web-search: 1 开启。
curl
curl https://kovapi.com/anthropic/v1/messages \
  -H "x-api-key: YOUR_API_KEY" \
  -H "anthropic-version: 2023-06-01" \
  -H "Content-Type: application/json" \
  -d '{"model": "claude-opus-5", "max_tokens": 1024, "messages": [{"role": "user", "content": "用一句话解释什么是光合作用"}]}'

在 Claude Code 里使用 →

稳定性与自动重试

  • 请求出错、超时或满载时,网关会在开始返回内容之前自动重试,不需要你重试,也不会重复收费。
  • 流式请求一旦开始输出就不再自动重试:中途断开时,按断开前已经产生的用量计费(见 计费与退款)。
  • 模型满载时返回 429 并带 Retry-After,按它的秒数等待后重试;失败的请求不计费。各模型的状态见 服务状态。

错误与退款

出错时返回一个 error 对象(message、type、code、param),请按 HTTP 状态码和 code 判断,不要匹配 message 的文字。失败的请求不计费,完整列表见 错误码。

HTTPcode原因怎么办
400invalid_messages / invalid_role / invalid_max_tokens对话请求的 messages 缺失、为空或格式不对,role 不在允许的范围,或 max_tokens 不是正整数。param 指出是哪个字段。修正 param 指出的字段。
400model_not_found型号写错、没有传 model,或这个型号不能用在这个接口上(例如拿对话模型调生图接口)。以 GET /v1/models 或 API 手册 里的模型 id 为准。
400max_tokens_too_small思考型模型把 max_tokens 全部用在了思考上,没有写出正文(非流式对话)。调大 max_tokens 后重试。
4xxinvalid_request模型方拒绝了请求(例如上下文超长、参数不支持),状态码和 message 按模型方的原样返回,code 是模型方给出的值。按 message 修改请求。
401invalid_api_keyKey 不存在、已删除或已停用,或者账号已停用。到控制台「API Keys」页面检查这把 Key。
402insufficient_quota余额不够预扣这一单。网关先按这一单可能的最高费用预扣,同时发很多请求时也可能出现。如果是并发突发,稍等几秒重试;否则充值。
403permission_denied这个模型不在这把 Key 的模型白名单里。换成白名单里的模型,或在控制台修改白名单。
429rate_limit_exceeded超过了这把 Key 设置的每分钟请求数(按最近 60 秒计)。不带 Retry-After。等几秒再试,或在控制台调高这把 Key 的上限。
429rate_limit_exceeded这个模型暂时满载,请求没有发出。只出现在对话类接口:图片和视频任务不会被拒,而是排队。OpenAI 兼容接口带 Retry-After。按 Retry-After 的秒数等待后重试。
502upstream_timeout上游超时,包括迟迟没有返回第一个字。重试;长回答建议用 stream: true。
502upstream_unavailable上游出错或暂时不可用。稍后重试。
502upstream_busy模型方限流。模型方的 429 不会原样返回给你,而是换成这个 502。稍后重试。
502empty_completion模型方返回了空内容。这不是对你的内容的判定。重试。
503model_maintenance型号维护中,暂停接单,期间不会改由其他模型作答。维护结束后重试,进度见 服务状态。

流式请求开始输出后再出错,状态码不会改变:错误会以一条带 error 的数据出现在流里,或者流直接结束(没有 data: [DONE]),请按中断处理。