POST /v1/messages theo chuẩn Anthropic Messages. SDK Anthropic hoạt động khi đổi baseURL thành https://YOUR_DOMAIN.
Chấp nhận cả x-api-key: sk_live_… (SDK Anthropic dùng mặc định) và Authorization: Bearer sk_live_…. Header anthropic-version được chấp nhận và bỏ qua an toàn.
| Tham số | Bắt buộc | Ghi chú |
|---|---|---|
model | Có | Model id công khai |
max_tokens | Có | Theo chuẩn Anthropic |
messages | Có | Role user/assistant |
system | Không | String hoặc mảng block |
stream | Không | true ⇒ SSE |
temperature, top_p, top_k | Không | Theo chuẩn |
stop_sequences | Không | Tối đa 8 |
tools, tool_choice | Không | Chỉ model hỗ trợ tool use |
thinking | Không | Chỉ model hỗ trợ reasoning; nền tảng tự chuẩn hóa giá trị |
{
"id": "msg_...",
"type": "message",
"role": "assistant",
"model": "claude-haiku-4-5",
"content": [{ "type": "text", "text": "..." }],
"stop_reason": "end_turn",
"stop_sequence": null,
"usage": { "input_tokens": 10, "output_tokens": 4 }
}Khi gửi stream: false, bạn luôn nhận một JSON hoàn chỉnh với Content-Type: application/json.
event: message_start
data: {"type":"message_start","message":{...}}
event: content_block_start
data: {"type":"content_block_start","index":0,"content_block":{"type":"text","text":""}}
event: content_block_delta
data: {"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"Xin"}}
event: content_block_stop
data: {"type":"content_block_stop","index":0}
event: message_delta
data: {"type":"message_delta","delta":{"stop_reason":"end_turn"},"usage":{"output_tokens":4}}
event: message_stop
data: {"type":"message_stop"}curl https://YOUR_DOMAIN/v1/messages/count_tokens \
-H "x-api-key: sk_live_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "claude-haiku-4-5",
"messages": [{"role": "user", "content": "Xin chào"}]
}'Endpoint này không sinh completion nên không tính vào hạn mức token; vẫn tính vào giới hạn tần suất.
Trỏ Claude Code vào nền tảng bằng hai biến môi trường:
export ANTHROPIC_BASE_URL="https://YOUR_DOMAIN"
export ANTHROPIC_AUTH_TOKEN="sk_live_YOUR_KEY"
claude/v1 vào base URLKhông sao — nền tảng chấp nhận cả /v1/v1/messages. Nhưng cấu hình đúng là không thêm /v1 cho SDK Anthropic.