Claude
API Interface
Use Claude models by calling the API interface provided by TokenOff.
Get API Key
Go to the API Keys page to create your API key.
API Base URL
https://tokenoff.com/apiClaude models are called through the /v1/messages interface, compatible with the Anthropic Messages API. This means you can use the official Anthropic Agent SDK without any adaptation changes.
curl
Blocking Call
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"}
]
}'
Output:
{"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"}}Streaming Response
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
}'
Output:
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 anthropicBlocking Call
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)
Output:
[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')]Streaming Response
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)
Output:
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/sdkBlocking Call
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);
Output:
[
{
type: 'text',
text: "Hey! I'm Claude Code, not Claude — but happy to help all the same. What can I do for you?"
}
]Streaming Response
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);
}
Output:
{
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' }Other Languages
For SDKs in other languages, please refer to the official documentation.
Supported Models
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
Contact Us
If you encounter any issues while using TokenOff:
Contact us atsupport@tokenoff.comand other official channels for technical support
Submit an issue on ourGithubrepository