1. Lấy API key
Mở Telegram, bắt đầu trò chuyện với bot, rồi vào mục API Key trong Mini App để tạo key mới. Key chỉ hiển thị một lần — hãy sao chép và lưu lại ngay.
Mở bot trên Telegram2. Base URL & xác thực
Base URL
https://thoth.rezlabs.io
Xác thực
Gửi API key qua header Authorization: Bearer sk-.... Header x-api-key: sk-... cũng được chấp nhận như một lựa chọn thay thế.
3. Chat Completions (tương thích OpenAI)
POST /v1/chat/completions tương thích với OpenAI Chat Completions API — dùng trực tiếp với hầu hết client/SDK hiện có.
Không streaming
curl https://thoth.rezlabs.io/v1/chat/completions \
-H "Authorization: Bearer sk-..." \
-H "Content-Type: application/json" \
-d '{
"model": "claude-sonnet-latest",
"messages": [{"role": "user", "content": "Hello!"}]
}'
Streaming (SSE)
curl https://thoth.rezlabs.io/v1/chat/completions \
-H "Authorization: Bearer sk-..." \
-H "Content-Type: application/json" \
-d '{
"model": "claude-sonnet-latest",
"stream": true,
"messages": [{"role": "user", "content": "Hello!"}]
}'
4. Models & Messages
Danh sách model
GET /v1/models trả về các model mà API key của bạn được phép dùng, tuỳ theo channel đã được gán.
curl https://thoth.rezlabs.io/v1/models \
-H "Authorization: Bearer sk-..."
Anthropic Messages
POST /v1/messages theo định dạng Anthropic Messages API gốc — dùng trực tiếp với Claude Code hoặc SDK Anthropic.
curl https://thoth.rezlabs.io/v1/messages \
-H "Authorization: Bearer sk-..." \
-H "Content-Type: application/json" \
-H "anthropic-version: 2023-06-01" \
-d '{
"model": "claude-sonnet-latest",
"max_tokens": 1024,
"messages": [{"role": "user", "content": "Hello!"}]
}'
anthropic-version là tuỳ chọn; nếu không gửi, hệ thống mặc định 2023-06-01.5. SDK mẫu
Dùng thẳng SDK openai chính thức hoặc fetch — chỉ cần đổi base_url/URL và api_key.
Python (openai SDK)
from openai import OpenAI
client = OpenAI(
base_url="https://thoth.rezlabs.io/v1",
api_key="sk-...",
)
resp = client.chat.completions.create(
model="claude-sonnet-latest",
messages=[{"role": "user", "content": "Hello!"}],
)
print(resp.choices[0].message.content)
JavaScript (fetch)
const res = await fetch("https://thoth.rezlabs.io/v1/chat/completions", {
method: "POST",
headers: {
"Authorization": "Bearer sk-...",
"Content-Type": "application/json",
},
body: JSON.stringify({
model: "claude-sonnet-latest",
messages: [{ role: "user", content: "Hello!" }],
}),
});
const data = await res.json();
console.log(data.choices[0].message.content);
6. Model khả dụng
Bảng dưới là ví dụ minh hoạ các model phổ biến — danh sách thật phụ thuộc channel được gán cho từng API key.
| Model | Nhà cung cấp | Ghi chú |
|---|---|---|
claude-opus-latest | Claude (Anthropic) | Năng lực cao nhất, phù hợp tác vụ phức tạp |
claude-sonnet-latest | Claude (Anthropic) | Cân bằng tốc độ/chất lượng, dùng hằng ngày |
claude-haiku-latest | Claude (Anthropic) | Nhanh, chi phí thấp, tác vụ đơn giản |
gpt-5.5 | OpenAI (Codex) | Dòng GPT mới nhất, hỗ trợ reasoning |
grok-4 | xAI | Grok, mạnh về ngữ cảnh dài |
GET /v1/models7. Rate limit & lưu ý
Mỗi API key có thể bị giới hạn theo số request/phút, số request đồng thời, hoặc Budget tổng — tuỳ cấu hình được quản trị viên gán.
- 401 Unauthorized — key sai hoặc thiếu header xác thực.
- 403 Forbidden — key chưa được gán channel/model tương ứng.
- 429 Too Many Requests — vượt rate limit hoặc Budget, hãy giảm tốc độ gửi request và thử lại sau.