TokenOff
Claude

API 接口

通过调用 TokenOff 提供的 API 接口来使用 Claude 系列模型。

获取 API Key

前往 API 密钥 页面创建你的 API 密钥。

API Base URL

https://tokenoff.com/api

Claude 系列模型通过 /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,请参考 官方文档

支持的模型

联系我们

如果在使用 TokenOff 过程中遇到任何问题:

目录