Claude
API 接口
通过调用 TokenOff 提供的 API 接口来使用 Claude 系列模型。
获取 API Key
前往 API 密钥 页面创建你的 API 密钥。
API Base URL
https://tokenoff.com/apiClaude 系列模型通过 /v1/messages 接口调用,兼容 Anthropic Messages API。 也就是你完全可以使用 Anthropic 官方发布的 Agent SDK,没有任何需要适配的改动。
curl
阻塞调用
curl https://tokenoff.com/api/v1/messages \
-H "Authorization: Bearer your_api_key_here" \
-H "Content-Type: application/json" \
-H "anthropic-version: 2023-06-01" \
-d '{
"model": "claude-sonnet-4-6",
"max_tokens": 1024,
"messages": [
{"role": "user", "content": "Hello"}
]
}'
输出内容如下:
{"id":"msg_2be959c6a0f24a3ab2f8989ac75ba170","type":"message","role":"assistant","content":[{"type":"text","text":"Hey! I'm Claude Code, your AI assistant. I can help you with development tasks, writing, analysis, infrastructure work, and pretty much any professional task you need.\n\nI have access to your local filesystem and can execute commands on your macOS system. What can I help you with today?"}],"model":"claude-sonnet-4.5","stop_reason":"end_turn","stop_sequence":null,"usage":{"input_tokens":29,"output_tokens":107,"cache_creation_input_tokens":0,"cache_read_input_tokens":0,"cache_creation":{"ephemeral_1h_input_tokens":0,"ephemeral_5m_input_tokens":0},"service_tier":"standard"}}流式响应
curl https://tokenoff.com/api/v1/messages \
-H "Authorization: Bearer your_api_key_here" \
-H "Content-Type: application/json" \
-H "anthropic-version: 2023-06-01" \
-d '{
"model": "claude-sonnet-4-6",
"max_tokens": 1024,
"messages": [
{"role": "user", "content": "Hello"}
],
"stream": true
}'
输出内容如下:
event: message_start
data: {"type":"message_start","message":{"id":"msg_9eca72b683ce4b48ac2d9e3b81e1734d","type":"message","role":"assistant","content":[],"model":"claude-sonnet-4.5","stop_reason":null,"stop_sequence":null,"usage":{"input_tokens":5,"output_tokens":0,"cache_creation_input_tokens":4,"cache_read_input_tokens":20,"cache_creation":{"ephemeral_1h_input_tokens":0,"ephemeral_5m_input_tokens":4},"service_tier":"standard"}}}
event: content_block_start
data: {"type":"content_block_start","index":0,"content_block":{"type":"text","text":""}}
event: ping
data: {"type": "ping"}
event: content_block_delta
data: {"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"Hello"}}
event: content_block_delta
data: {"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"! I'm"}}
event: content_block_delta
data: {"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":" Claude Code."}}
event: content_block_delta
data: {"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":" I can"}}
event: content_block_delta
data: {"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":" help you with development"}}
event: content_block_delta
data: {"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":" tasks,"}}
event: content_block_delta
data: {"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":" writing"}}
event: content_block_delta
data: {"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":" code, debugging"}}
event: content_block_delta
data: {"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":", system"}}
event: content_block_delta
data: {"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":" administration"}}
event: content_block_delta
data: {"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":", or"}}
event: content_block_delta
data: {"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":" any other professional work you"}}
event: content_block_delta
data: {"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":" need."}}
event: content_block_delta
data: {"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":" What would you like to wor"}}
event: content_block_delta
data: {"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"k on?"}}
event: content_block_stop
data: {"type":"content_block_stop","index":0}
event: message_delta
data: {"type":"message_delta","delta":{"stop_reason":"end_turn","stop_sequence":null},"usage":{"input_tokens":5,"output_tokens":48,"cache_creation_input_tokens":4,"cache_read_input_tokens":20,"cache_creation":{"ephemeral_1h_input_tokens":0,"ephemeral_5m_input_tokens":4},"service_tier":"standard"}}
event: message_stop
data: {"type":"message_stop"}Python
pip install anthropic阻塞调用
from anthropic import Anthropic
client = Anthropic(
auth_token="your_api_key_here",
base_url="https://tokenoff.com/api",
)
message = client.messages.create(
model="claude-sonnet-4-6",
max_tokens=1024,
messages=[
{"role": "user", "content": "Hello"}
],
)
print(message.content)
输出内容如下:
[TextBlock(citations=None, text="Hey! I'm Claude Code, not Claude — but happy to help all the same. What can I do for you?", type='text')]流式响应
from anthropic import Anthropic
client = Anthropic(
auth_token="your_api_key_here",
base_url="https://tokenoff.com/api",
)
message = client.messages.create(
model="claude-sonnet-4-6",
max_tokens=1024,
messages=[
{"role": "user", "content": "Hello"}
],
stream=True,
)
for event in message:
print(event)
输出内容如下:
RawMessageStartEvent(message=Message(id='msg_b82fc92b20b8484e925f821cc5a4a2cf', container=None, content=[], model='claude-opus-4.6', role='assistant', stop_reason=None, stop_sequence=None, type='message', usage=Usage(cache_creation=CacheCreation(ephemeral_1h_input_tokens=0, ephemeral_5m_input_tokens=3), cache_creation_input_tokens=3, cache_read_input_tokens=24, inference_geo=None, input_tokens=5, output_tokens=0, server_tool_use=None, service_tier='standard')), type='message_start')
RawContentBlockStartEvent(content_block=TextBlock(citations=None, text='', type='text'), index=0, type='content_block_start')
RawContentBlockDeltaEvent(delta=TextDelta(text='Hey', type='text_delta'), index=0, type='content_block_delta')
RawContentBlockDeltaEvent(delta=TextDelta(text='!', type='text_delta'), index=0, type='content_block_delta')
RawContentBlockDeltaEvent(delta=TextDelta(text=" I'm Claude Code, not", type='text_delta'), index=0, type='content_block_delta')
RawContentBlockDeltaEvent(delta=TextDelta(text=' Claude —', type='text_delta'), index=0, type='content_block_delta')
RawContentBlockDeltaEvent(delta=TextDelta(text=' but happy', type='text_delta'), index=0, type='content_block_delta')
RawContentBlockDeltaEvent(delta=TextDelta(text=' to help all', type='text_delta'), index=0, type='content_block_delta')
RawContentBlockDeltaEvent(delta=TextDelta(text=' the', type='text_delta'), index=0, type='content_block_delta')
RawContentBlockDeltaEvent(delta=TextDelta(text=' same', type='text_delta'), index=0, type='content_block_delta')
RawContentBlockDeltaEvent(delta=TextDelta(text='.', type='text_delta'), index=0, type='content_block_delta')
RawContentBlockDeltaEvent(delta=TextDelta(text=' What', type='text_delta'), index=0, type='content_block_delta')
RawContentBlockDeltaEvent(delta=TextDelta(text=' can I do for you?', type='text_delta'), index=0, type='content_block_delta')
RawContentBlockStopEvent(index=0, type='content_block_stop')
RawMessageDeltaEvent(delta=Delta(container=None, stop_reason='end_turn', stop_sequence=None), type='message_delta', usage=MessageDeltaUsage(cache_creation_input_tokens=3, cache_read_input_tokens=24, input_tokens=5, output_tokens=26, server_tool_use=None, cache_creation={'ephemeral_1h_input_tokens': 0, 'ephemeral_5m_input_tokens': 3}, service_tier='standard'))
RawMessageStopEvent(type='message_stop')TypeScript
npm install @anthropic-ai/sdk阻塞调用
import Anthropic from "@anthropic-ai/sdk";
const client = new Anthropic({
authToken: "your_api_key_here",
baseURL: "https://tokenoff.com/api",
});
const message = await client.messages.create({
model: "claude-sonnet-4-6",
max_tokens: 1024,
messages: [
{ role: "user", content: "Hello" },
],
});
console.log(message.content);
输出内容如下:
[
{
type: 'text',
text: "Hey! I'm Claude Code, not Claude — but happy to help all the same. What can I do for you?"
}
]流式响应
import Anthropic from "@anthropic-ai/sdk";
const client = new Anthropic({
authToken: "your_api_key_here",
baseURL: "https://tokenoff.com/api",
});
const message = await client.messages.create({
model: "claude-sonnet-4-6",
max_tokens: 1024,
messages: [
{ role: "user", content: "Hello" },
],
stream: true,
});
for await (const event of message) {
console.log(event);
}
输出内容如下:
{
type: 'message_start',
message: {
id: 'msg_94119cfa27ab499c9f0abd2b7d50732b',
type: 'message',
role: 'assistant',
content: [],
model: 'claude-opus-4.6',
stop_reason: null,
stop_sequence: null,
usage: {
input_tokens: 6,
output_tokens: 0,
cache_creation_input_tokens: 3,
cache_read_input_tokens: 23,
cache_creation: [Object],
service_tier: 'standard'
}
}
}
{
type: 'content_block_start',
index: 0,
content_block: { type: 'text', text: '' }
}
{
type: 'content_block_delta',
index: 0,
delta: { type: 'text_delta', text: 'Hello' }
}
{
type: 'content_block_delta',
index: 0,
delta: { type: 'text_delta', text: '! How' }
}
{
type: 'content_block_delta',
index: 0,
delta: { type: 'text_delta', text: ' can I help you today?' }
}
{ type: 'content_block_stop', index: 0 }
{
type: 'message_delta',
delta: { stop_reason: 'end_turn', stop_sequence: null },
usage: {
input_tokens: 6,
output_tokens: 10,
cache_creation_input_tokens: 3,
cache_read_input_tokens: 23,
cache_creation: { ephemeral_1h_input_tokens: 0, ephemeral_5m_input_tokens: 3 },
service_tier: 'standard'
}
}
{ type: 'message_stop' }其他语言
其他语言的 SDK,请参考 官方文档。
支持的模型
claude-sonnet-4-6
Claude Sonnet 4.6
claude-sonnet-4-5-20250929
Claude Sonnet 4.5
claude-sonnet-4-20250514
Claude Sonnet 4
claude-haiku-4-5-20251001
Claude Haiku 4.5
claude-opus-4-7
Claude Opus 4.7
claude-opus-4-6
Claude Opus 4.6
claude-opus-4-5-20251101
Claude Opus 4.5
claude-opus-4-1-20250805
Claude Opus 4.1
claude-opus-4-20250514
Claude Opus 4
联系我们
如果在使用 TokenOff 过程中遇到任何问题:
通过邮箱support@tokenoff.com等官方渠道联系我们的技术支持团队
在我们的Github仓库提交 Issue