跳转到主要内容
Claude Messages Count Tokens API 可以在不实际创建消息的情况下,计算一条 Message 的输入 Token 数量,包括工具、图片和文档等内容的 Token 计数。这在需要预估成本或检查输入是否超出模型上下文限制时非常有用。 本文档主要介绍 Claude Messages Count Tokens API 的使用流程。

申请流程

要使用 Claude Messages Count Tokens API,首先可以到 Claude Messages Count Tokens API 页面点击「Acquire」按钮,获取请求所需要的凭证。 如果你尚未登录或注册,会自动跳转到登录页面邀请您来注册和登录,登录注册之后会自动返回当前页面。 该 API 完全免费使用,无需消耗额度。

基本使用

Claude Messages Count Tokens API 的请求路径为 /v1/messages/count_tokens,与 Anthropic 官方 API 保持一致。我们至少需要提供两个必填参数:
  • model:选择使用的 Claude 模型,如 claude-sonnet-4-5-20250929claude-opus-4-20250514 等。
  • messages:输入的消息数组,每条消息包含 role(角色)和 content(内容)。
常用可选参数:
  • system:系统提示词,会计入 Token 数量。
  • tools:工具定义,会计入 Token 数量。
  • thinking:扩展思考配置。

cURL 示例

curl -X POST 'https://api.acedata.cloud/v1/messages/count_tokens' \
  -H 'accept: application/json' \
  -H 'authorization: Bearer {token}' \
  -H 'content-type: application/json' \
  -d '{
    "model": "claude-sonnet-4-5-20250929",
    "messages": [
      {
        "role": "user",
        "content": "Hello, Claude"
      }
    ]
  }'

Python 示例

import httpx

url = "https://api.acedata.cloud/v1/messages/count_tokens"
headers = {
    "accept": "application/json",
    "authorization": "Bearer {token}",
    "content-type": "application/json",
}
payload = {
    "model": "claude-sonnet-4-5-20250929",
    "messages": [
        {
            "role": "user",
            "content": "Hello, Claude"
        }
    ],
}
response = httpx.post(url, headers=headers, json=payload)
print(response.json())
返回结果示例:
{
  "input_tokens": 11
}

使用 Anthropic SDK

Claude Messages Count Tokens API 完全兼容 Anthropic 官方 SDK,可以直接使用 anthropic 库来调用。
from anthropic import Anthropic

client = Anthropic(
    api_key="{token}",
    base_url="https://api.acedata.cloud",
)

result = client.messages.count_tokens(
    model="claude-sonnet-4-5-20250929",
    messages=[
        {
            "role": "user",
            "content": "Hello, Claude"
        }
    ],
)
print(result.input_tokens)

包含工具的 Token 计数

如果你的请求中包含工具定义,这些工具也会计入 Token 数量:
result = client.messages.count_tokens(
    model="claude-sonnet-4-5-20250929",
    messages=[
        {
            "role": "user",
            "content": "What is the weather in San Francisco?"
        }
    ],
    tools=[
        {
            "name": "get_weather",
            "description": "Get the current weather in a given location",
            "input_schema": {
                "type": "object",
                "properties": {
                    "location": {
                        "type": "string",
                        "description": "The city and state, e.g. San Francisco, CA"
                    }
                },
                "required": ["location"]
            }
        }
    ],
)
print(result.input_tokens)

包含系统提示词的 Token 计数

系统提示词也会计入 Token 数量:
result = client.messages.count_tokens(
    model="claude-sonnet-4-5-20250929",
    system="You are a helpful assistant that speaks Chinese.",
    messages=[
        {
            "role": "user",
            "content": "Hello"
        }
    ],
)
print(result.input_tokens)

注意事项

  • 该 API 仅计算输入 Token 数量,不会产生任何模型输出。
  • Token 计数结果可用于预估调用 Claude Messages API 的成本。
  • 不同模型的 Token 化方式可能有所不同,请使用与实际调用相同的 model 参数。
  • 该 API 完全免费,不消耗任何额度。