TokenOff
Claude

API интерфейс

Используйте модели Claude, вызывая API интерфейс, предоставляемый TokenOff.

Получение API ключа

Перейдите на страницу 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:

  • Напишите нам наsupport@tokenoff.comи другие официальные каналы для технической поддержки

  • Создайте Issue в нашемGithubрепозитории

Содержание