API tương thích Anthropic

TokenCode tương thích với giao thức Anthropic Messages API, bạn có thể sử dụng trực tiếp Anthropic SDK hoặc bất kỳ client nào tương thích giao thức Claude để kết nối.

Base URL

text
https://tokencode.dev

Xác thực

Tất cả endpoint đều yêu cầu xác thực:

  • Bearer Token: Authorization: Bearer <your-api-key>
  • x-api-key Header: x-api-key: <your-api-key>

Messages

Endpoint Messages tương thích Anthropic Claude. Hỗ trợ mô hình Claude, cũng hỗ trợ gọi các mô hình khác thông qua chuyển đổi giao thức.

bash
curl https://tokencode.dev/v1/messages \
  -H "x-api-key: sk-your-api-key" \
  -H "anthropic-version: 2023-06-01" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "claude-sonnet-4-6",
    "max_tokens": 1024,
    "messages": [
      {"role": "user", "content": "Giải thích về điện toán lượng tử"}
    ]
  }'

Tham số yêu cầu:

Tham số Kiểu Bắt buộc Mô tả
model string ID mô hình (ví dụ claude-sonnet-4-6)
messages array Mảng đối tượng tin nhắn
max_tokens integer Số Token tối đa được tạo
stream boolean Không Bật phản hồi luồng
temperature number Không Nhiệt độ lấy mẫu (0-1)
top_p number Không Xác suất lấy mẫu nhân
top_k integer Không Lấy mẫu Top-K
stop_sequences array Không Chuỗi dừng
system string/array Không System prompt
tools array Không Định nghĩa công cụ
tool_choice object Không Chiến lược gọi công cụ

Ví dụ phản hồi:

json
{
  "id": "msg_abc123",
  "type": "message",
  "role": "assistant",
  "content": [
    {
      "type": "text",
      "text": "Điện toán lượng tử là một phương pháp sử dụng nguyên lý cơ học lượng tử..."
    }
  ],
  "model": "claude-sonnet-4-6",
  "stop_reason": "end_turn",
  "stop_sequence": null,
  "usage": {
    "input_tokens": 25,
    "output_tokens": 128
  }
}

Phản hồi luồng

Khi đặt "stream": true, phản hồi sử dụng định dạng SSE, loại sự kiện nhất quán với giao thức gốc Anthropic:

text
event: message_start
data: {"type":"message_start","message":{"id":"msg_abc123","type":"message","role":"assistant","content":[],"model":"claude-sonnet-4-6","usage":{"input_tokens":25,"output_tokens":0}}}

event: content_block_delta
data: {"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"Điện toán"}}

event: message_stop
data: {"type":"message_stop"}

Tự động chuyển đổi giao thức

Khi gọi mô hình không phải Claude qua endpoint giao thức Anthropic, TokenCode tự động hoàn thành chuyển đổi giao thức:

  • Chuyển đổi yêu cầu: Chuyển định dạng Anthropic Messages sang định dạng gốc của mô hình đích (như OpenAI Chat Completions)
  • Chuyển đổi phản hồi: Chuyển phản hồi của mô hình đích sang định dạng Anthropic Messages trả về
  • Thích ứng luồng: Loại sự kiện luồng tự động thích ứng sang định dạng SSE của Anthropic

Điều này có nghĩa là bạn có thể gọi các mô hình khác như OpenAI, Gemini qua endpoint này trong các client gốc Anthropic như Claude Code mà không cần bất kỳ thích nghi nào.

Sử dụng Anthropic SDK

python
import anthropic

client = anthropic.Anthropic(
    api_key="sk-your-api-key",
    base_url="https://tokencode.dev"
)

# Gọi mô hình Claude
message = client.messages.create(
    model="claude-sonnet-4-6",
    max_tokens=1024,
    messages=[{"role": "user", "content": "Xin chào"}]
)

# Gọi mô hình OpenAI — tự động chuyển đổi giao thức
message = client.messages.create(
    model="gpt-5.5",
    max_tokens=1024,
    messages=[{"role": "user", "content": "Xin chào"}]
)
javascript
import Anthropic from "@anthropic-ai/sdk";

const client = new Anthropic({
  apiKey: "sk-your-api-key",
  baseURL: "https://tokencode.dev",
});

// Gọi mô hình Claude
const message = await client.messages.create({
  model: "claude-sonnet-4-6",
  max_tokens: 1024,
  messages: [{ role: "user", content: "Xin chào" }],
});

Đầu vào đa phương thức

Hỗ trợ đầu vào hình ảnh (Vision):

python
message = client.messages.create(
    model="claude-sonnet-4-6",
    max_tokens=1024,
    messages=[
        {
            "role": "user",
            "content": [
                {
                    "type": "image",
                    "source": {
                        "type": "base64",
                        "media_type": "image/png",
                        "data": "<base64-encoded-image>"
                    }
                },
                {
                    "type": "text",
                    "text": "Mô tả hình ảnh này"
                }
            ]
        }
    ]
)

Phản hồi lỗi

Phản hồi lỗi tuân theo định dạng lỗi Anthropic:

json
{
  "type": "error",
  "error": {
    "type": "invalid_request_error",
    "message": "max_tokens: required"
  }
}
Mã trạng thái HTTP Ý nghĩa
400 Tham số yêu cầu không hợp lệ
401 Xác thực thất bại — API Key không hợp lệ
403 Quyền không đủ
404 Mô hình không tồn tại
429 Giới hạn tốc độ hoặc số dư không đủ
500 Lỗi nội bộ máy chủ
529 Dịch vụ thượng-stream quá tải