价格
每个模型每百万 token 的实时价格、每个价格列的含义、长上下文档位,以及如何根据 usage 算出一个请求的费用。
何时阅读本页
你想知道某个模型的价格、哪些 token 按哪种价格计费,或者想根据响应中的 usage 估算一个请求的费用。余额如何扣费见计费方式。
价格
| 模型 | 输入 | 输出 | 缓存写入(5 分钟) | 缓存写入(1 小时) | 缓存读取 |
|---|---|---|---|---|---|
Claude Fable 5.1 anthropic/claude-fable-5-1 | $9 | $45 | $11.25 | $18 | $0.225 |
Claude Fable 5 anthropic/claude-fable-5 | $9.5 | $47.5 | $11.875 | $19 | $0.95 |
Claude Opus 5.5 anthropic/claude-opus-5-5 | $3.6 | $18 | $4.5 | $7.2 | $0.18 |
Claude Opus 5 anthropic/claude-opus-5 | $4.75 | $23.75 | $5.9375 | $9.5 | $0.475 |
Claude Sonnet 5.5 anthropic/claude-sonnet-5-5 | $1.8 | $9 | $2.25 | $3.6 | $0.09 |
Claude Sonnet 5 anthropic/claude-sonnet-5 | $1.9 | $9.5 | $2.375 | $3.8 | $0.19 |
Claude Haiku 5.5 anthropic/claude-haiku-5-5 | $0.09 | $0.45 | $0.1125 | $0.18 | $0.009 |
Claude Opus 4.8 anthropic/claude-opus-4-8 | $4.75 | $23.75 | $5.9375 | $9.5 | $0.475 |
Claude Opus 4.7 anthropic/claude-opus-4-7 | $4.75 | $23.75 | $5.9375 | $9.5 | $0.475 |
Claude Opus 4.6 anthropic/claude-opus-4-6 | $4.75 | $23.75 | $5.9375 | $9.5 | $0.475 |
Claude Sonnet 4.6 anthropic/claude-sonnet-4-6 | $2.85 | $14.25 | $3.5625 | $5.7 | $0.285 |
实时读取自模型目录。划线价为 Anthropic 官方标价。价格单位为美元 / 百万 token,不含税。
长上下文
| 模型 | 输入 | 输出 | 缓存写入(5 分钟) | 缓存写入(1 小时) | 缓存读取 |
|---|---|---|---|---|---|
Claude Haiku 5.5 输入超过 100,000 个 token 的请求按以下价格计费。 | $0.45 | $2.25 | $0.5625 | $0.9 | $0.045 |
价格单位为美元 / 百万 token。每个价格都低于同一模型的 Anthropic 官方标价;旁边的划线价就是官方价。此表实时读取自模型目录(GET https://api.router.ezat.io/api/models),所以始终显示当前价格。
请求按开始时生效的价格,对它实际使用的 token 计费。列出模型和计算 token 数都免费。
各列的含义
| 列 | 计价对象 | Anthropic 格式 usage | OpenAI 格式 usage |
|---|---|---|---|
| 输入 | 既没有写入提示缓存、也不是从缓存读取的输入 token | input_tokens | prompt_tokens 减去 cached_tokens 和 cache_write_tokens |
| 输出 | 模型生成的所有 token,包括思考 | output_tokens | completion_tokens |
| 缓存写入(5 分钟) | 以默认 5 分钟有效期写入缓存的输入 token | cache_creation.ephemeral_5m_input_tokens | prompt_tokens_details.cache_write_tokens |
| 缓存写入(1 小时) | 以 "ttl": "1h" 写入缓存的输入 token | cache_creation.ephemeral_1h_input_tokens | 计入 cache_write_tokens |
| 缓存读取 | 从缓存读回的输入 token | cache_read_input_tokens | prompt_tokens_details.cached_tokens |
cache_creation_input_tokens是两种缓存写入的总和。如果响应没有拆分,全部按 5 分钟写入计费。- 在兼容 OpenAI 的 API 上,
prompt_tokens统计全部输入,无论是否缓存。这个 API 会自动进行提示缓存,使用 5 分钟写入,所以除非你自己设置了 1 小时断点,cache_write_tokens都是 5 分钟写入。见提示缓存。 - 不支持提示缓存的模型(见模型页的「能力」列)所有输入都按输入价格计费。
思考 token
思考 token 属于输出 token,按输出价格计费。在 /v1/messages 上,它们计入 output_tokens。在兼容 OpenAI 的 API 上,它们计入 completion_tokens,completion_tokens_details.reasoning_tokens 给出具体数量;思考文本本身不会返回。
长上下文档位
部分模型有长上下文档位,列在主表下方的 长上下文 中。请求的输入超过表中所示的阈值时适用该档位(在 GET /api/models 中,即达到该档位的 minInputTokens,也就是阈值加一)。这里的输入指全部输入 token:input_tokens 加缓存写入再加缓存读取。
请求超过阈值时,整个请求都按该档位的价格计费,输出和缓存 token 也包括在内,而不只是超出阈值的那部分 token。等于或低于阈值的请求全部按正常价格计费。
计算请求费用
把每类 token 数乘以对应的价格,再除以一百万:
cost = ( input_tokens × Input
+ 5-minute cache writes × Cache write (5 min)
+ 1-hour cache writes × Cache write (1 h)
+ cache_read_input_tokens × Cache read
+ output_tokens × Output ) / 1,000,000如果请求超过了所用模型的阈值,就改用长上下文价格。金额保留 12 位小数,所以一个小请求的费用可能不到一美分。
下面的脚本发送一个请求,从公开模型目录读取价格,然后打印这个请求的费用:
import json
import os
import urllib.request
import anthropic
client = anthropic.Anthropic(base_url="https://api.router.ezat.io", api_key=os.environ["EZAT_API_KEY"])
message = client.messages.create(
model="anthropic/claude-sonnet-5-5",
max_tokens=64,
messages=[{"role": "user", "content": "Say hello in five words."}],
)
# Prices in USD per million tokens, from the public catalog (no key needed).
with urllib.request.urlopen("https://api.router.ezat.io/api/models") as response:
catalog = json.load(response)["data"]
name = message.model.lower() # the response echoes the id or alias you sent
pricing = next(m["pricing"] for m in catalog if name == m["id"] or name in m["aliases"])
usage = message.usage
written = usage.cache_creation_input_tokens or 0
written_1h = (usage.cache_creation.ephemeral_1h_input_tokens if usage.cache_creation else 0) or 0
tokens = {
"input": usage.input_tokens,
"cacheWrite5m": written - written_1h,
"cacheWrite1h": written_1h,
"cacheRead": usage.cache_read_input_tokens or 0,
"output": usage.output_tokens,
}
# Above a long-context threshold, the whole request uses that tier's prices.
prompt = tokens["input"] + written + tokens["cacheRead"]
prices = {field: pricing[field] for field in tokens}
for tier in sorted(pricing["longContext"], key=lambda tier: tier["minInputTokens"]):
if prompt >= tier["minInputTokens"]:
prices.update(tier["prices"])
cost = sum(count * float(prices[field]) for field, count in tokens.items()) / 1_000_000
print(tokens)
print(f"about {cost:.8f} USD")脚本用目录中的价格进行估算。一个请求实际扣了多少费用,见控制台 用量 页面(https://router.ezat.io/zh/usage)的 最近请求 中的 费用 列。
不计费的情况
- 到达模型前就被拒绝的请求:缺少 key 或 key 无效、模型未知、触发限制,或余额为零。
- 失败的请求:提供方返回错误、没有可用容量,或响应因错误中止。
POST /v1/messages/count_tokens和模型列表。
中断的流式输出按已生成的部分计费,详见计费方式。
给 AI agent 的说明
- 价格单位为美元 / 百万 token。从
GET https://api.router.ezat.io/api/models(pricing,含longContext档位)或https://docs.router.ezat.io/pricing.md读取,绝不要硬编码。 - 费用 = Σ token 数 × 价格 / 1,000,000,涵盖
input_tokens、两种缓存写入、cache_read_input_tokens和output_tokens。 - 思考 token 属于输出 token。
- 如果
input_tokens+ 缓存写入 + 缓存读取大于或等于某个档位的minInputTokens,每一部分都按该档位的价格计费。 - 在兼容 OpenAI 的 API 上,未缓存的输入 =
prompt_tokens−cached_tokens−cache_write_tokens。