Bắt đầuHướng dẫn
Yêu cầu API đầu tiên trong VS Code: một tệp .http, khóa từ .env
Gửi chat completion đầu tiên tới CheapTokens từ VS Code bằng tiện ích REST Client, giữ khóa ngoài git, và tìm câu trả lời cùng mức sử dụng token.

Trên trang này
Bạn có thể gửi yêu cầu đầu tiên tới CheapTokens mà không cần rời khỏi VS Code: cài tiện ích REST Client, viết một tệp .http, giữ khóa trong tệp .env bên cạnh và nhấn Ctrl+Alt+R. Câu trả lời mở ra trong một bảng bên cạnh tệp, còn văn bản và số token là hai trường bạn có thể thấy ngay.
Nếu bạn đã có sẵn một trình soạn thảo đang mở, cách này tốt hơn việc cài thêm một ứng dụng chỉ để nói "Hello" với một mô hình. Và yêu cầu vẫn nằm trong một tệp văn bản thuần, nên bạn có thể chạy lại vào ngày mai hoặc commit nó (không kèm khóa) cho đồng nghiệp. Các cách khác để gửi cùng yêu cầu đó có trong Yêu cầu đầu tiên với HTTPie và Yêu cầu API đầu tiên của bạn với CheapTokens.
Cài tiện ích và đưa khóa vào .env#
REST Client là tiện ích humao.. Trong VS Code nhấn F1, gõ ext install, tìm rest-client và cài đặt. (Đã kiểm tra theo README của tiện ích vào ngày 9 tháng 11 năm 2026.)
Giờ đến khóa. README mô tả {{$dotenv NAME}}: nó đọc một giá trị từ tệp .env nằm cùng thư mục với tệp .http của bạn. Đó chính xác là điều chúng ta muốn, vì khóa không bao giờ xuất hiện trong tệp yêu cầu. Tạo một thư mục cho thử nghiệm và đặt hai tệp vào đó.
.env:
CHEAPTOKENS_API_KEY=paste-your-key-here.gitignore:
.envTạo khóa trong tài khoản CheapTokens của bạn và dán vào thay cho phần giữ chỗ. Lý do dòng ignore quan trọng, và phải làm gì nếu khóa lỡ lọt vào một commit, có trong Lưu trữ khóa API an toàn.
Sắp xếp thứ tự
Đặt thiết lập theo đúng thứ tự
Kéo các mục hoặc dùng mũi tên
- Cài tiện ích REST Client
- Thêm .env vào .gitignore
- Đặt khóa trong .env bên cạnh tệp .http
- Nhấn Ctrl+Alt+R trên yêu cầu
Viết tệp .http#
Tạo first.http trong cùng thư mục. Cú pháp rất ngắn: một dòng yêu cầu (POST URL HTTP/, phương thức là tùy chọn và mặc định là GET), các dòng header Name: value cho đến dòng trống đầu tiên, rồi đến body sau một dòng trống. Các yêu cầu được phân tách bằng một dòng gồm ba dấu # trở lên.
### First request
POST https://api.cheaptokens.dev/v1/chat/completions
Authorization: Bearer {{$dotenv CHEAPTOKENS_API_KEY}}
Content-Type: application/json
{
"model": "zai-org/GLM-5.3-Flash",
"messages": [{ "role": "user", "content": "Hello" }]
}Có ba điều cần lưu ý. Địa chỉ là base của API CheapTokens, https:/, cộng với /. Mô hình được viết bằng id đầy đủ, zai-: một mô hình có ngữ cảnh 390K, có thể viết tới 8.192 token mỗi câu trả lời. Và khóa chỉ là phần giữ chỗ {{$dotenv …}}, nên tệp này an toàn để commit.

Nếu thiết lập của bạn không nhận tệp .env, README cũng mô tả {{$processEnv NAME}}, đọc một biến từ môi trường của máy bạn thay vào đó.
Gửi yêu cầu và tìm câu trả lời#
Nhấp "Send Request" phía trên dòng yêu cầu, hoặc nhấn Ctrl+Alt+R (Cmd+Alt+R trên macOS). Bạn cũng có thể nhấp chuột phải hoặc dùng F1. Phản hồi mở ra trong một bảng riêng. Nếu bạn thích một tab trình soạn thảo thông thường để có thể tìm kiếm và thu gọn, hãy đặt rest- thành true trong phần cài đặt.
Phản hồi là JSON chat-completions chuẩn. Hai chỗ quan trọng ngay từ ngày đầu:
choices[0].là văn bản câu trả lời. Bên cạnh đó,message. content finish_reasoncho bạn biết vì sao mô hình dừng lại.lengthnghĩa là câu trả lời bị cắt do giới hạn token.usagechứa số token cho yêu cầu này: số token bạn gửi và số token mô hình viết. Đây là thứ bạn phải trả tiền, nên hãy xem nó mỗi lần.

Tự mình thử xemThử xem: làm sao biết một câu trả lời bị cắt cụt?Hiện đáp án
Hãy xem finish_reason trong phản hồi. Nếu nó ghi length, mô hình đã chạm giới hạn token trước khi hoàn thành. Thêm một dòng "max_tokens" vào body, hoặc tăng nó lên, rồi gửi lại.
Để cảm nhận về chi phí: giả sử bạn gửi yêu cầu này 100 lần với khoảng 1.000 token vào và 300 token ra (đây là giả định cho ví dụ, không phải số đo thực tế).
| Mô hình | Đầu vào $/1M | Đầu ra $/1M | Mỗi yêu cầu | 100 yêu cầu | OpenRouter, 100 yêu cầu |
|---|---|---|---|---|---|
| GLM-5.3-Flash | $0.02 | $0.04 | $0.000032 | $0.0032 | $0.0058 |
| DeepSeek-V4-Flash | $0.015 | $0.10 | $0.000045 | $0.0045 | $0.0112 |
| MiniMax-M2.7 | $0.05 | $0.15 | $0.000095 | $0.0095 | $0.114 |
1.000 token đầu vào và 300 token đầu ra mỗi yêu cầu. Giá trên 1 triệu token là giá hiện hành và thay đổi cùng với biểu phí của chúng tôi; cột OpenRouter hiển thị giá tham chiếu cho cùng khối lượng công việc.
Bảng hiển thị giá trực tiếp của khối lượng công việc đó trên từng mô hình, kèm một cột OpenRouter để so sánh. Một câu "Hello" nhỏ bé tốn ít hơn nhiều.
Đổi mô hình trong một dòng#
Phần tiện lợi của một tệp văn bản thuần: đổi một dòng và gửi lại. Thay id mô hình bằng deepseek- (ngữ cảnh 380K, tối đa 32.768 token mỗi câu trả lời, một mức giá bất kể thời điểm trong ngày, tổng cộng rẻ hơn OpenRouter khi tính cả đầu vào và đầu ra) và nhấn Ctrl+Alt+R thêm lần nữa. Cùng body, cùng khóa, một câu trả lời khác, và một usage khác.
Muốn giữ cả hai? Dán một yêu cầu thứ hai bên dưới một dòng ### với id mô hình kia. Mỗi yêu cầu có liên kết Send Request riêng, nên bạn có thể chạy lần lượt và so sánh. Chưa chắc về một id? Liệt kê mô hình với GET /v1/models hiển thị các chuỗi chính xác.
Nếu không hoạt động#
Ghép cặp
Ghép triệu chứng với nguyên nhân
Nhấn vào một mục bên trái, rồi đến cặp của nó
- 401 UnauthorizedKhóa trống hoặc sai, thường là do .env không nằm cùng thư mục với tệp .http
- 404 Not FoundGõ sai đường dẫn URL hoặc id mô hình
- Câu trả lời dừng giữa câu, finish_reason là lengthĐã chạm giới hạn token, hãy tăng max_tokens
Với hai trường hợp đầu, API 401 hoặc 404: sai khóa, base URL hoặc id mô hình hướng dẫn từng bước kiểm tra. Chi tiết đầy đủ về yêu cầu có trong tài liệu CheapTokens, và giá hiện tại nằm trên trang giá.
Đó là toàn bộ quy trình: một tệp, một khóa trong .env, một phím tắt. Từ đây bạn có thể thêm system message, đổi max_tokens, hoặc chuyển cùng body đó thành mã trong bất kỳ ngôn ngữ nào.



