Chat Completions (định dạng OpenAI)
Gọi model qua POST /v1/chat/completions bằng curl, OpenAI SDK cho TypeScript hoặc Python, có hoặc không stream.
Trên trang này
Endpoint POST /v1/chat/completions nhận yêu cầu theo định dạng OpenAI Chat Completions. Bạn dùng được OpenAI SDK hoặc bất kỳ công cụ nào hỗ trợ “OpenAI Compatible” chỉ bằng cách đổi Base URL và khoá.
Thông tin endpoint
| Mục | Giá trị |
|---|---|
| URL | https://rexapf.com/v1/chat/completions |
| Phương thức | POST |
| Xác thực | Authorization: Bearer <khoá API> |
| Content-Type | application/json |
Trường bắt buộc là model và messages. Lấy ID model ở API Gateway › Model hoặc qua GET /v1/models. Thiếu model, Gateway trả 400 với thông báo Missing model.
Gửi yêu cầu đầu tiên
Chuẩn bị khoá
Tạo khoá ở Khoá API và lưu vào biến môi trường.
bash$ export REXAPF_API_KEY="sk_9r_..."Chọn model
Sao chép ID model từ trang Model & bảng giá.
Gửi yêu cầu
Chọn cách gọi phù hợp:
$ curl https://rexapf.com/v1/chat/completions \ -H "Authorization: Bearer $REXAPF_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "model": "<model-id>", "messages": [ {"role": "system", "content": "Bạn là trợ lý ngắn gọn."}, {"role": "user", "content": "Giải thích REST API trong 2 câu."} ] }'import OpenAI from "openai"; const client = new OpenAI({ apiKey: process.env.REXAPF_API_KEY, baseURL: "https://rexapf.com/v1", }); const res = await client.chat.completions.create({ model: "<model-id>", messages: [{ role: "user", content: "Giải thích REST API trong 2 câu." }], }); console.log(res.choices[0].message.content);import os from openai import OpenAI client = OpenAI(api_key=os.environ["REXAPF_API_KEY"], base_url="https://rexapf.com/v1") res = client.chat.completions.create( model="<model-id>", messages=[{"role": "user", "content": "Giải thích REST API trong 2 câu."}], ) print(res.choices[0].message.content)Kiểm tra trên bảng điều khiển
Mở API Gateway › Sử dụng › Lịch sử để xem yêu cầu vừa gửi, số token và chi phí.
Stream phản hồi
Đặt "stream": true để nhận phản hồi dần theo dạng Server-Sent Events. Mỗi sự kiện là một dòng data: {...} chứa choices[0].delta, và luồng kết thúc bằng data: [DONE].
$ curl -N https://rexapf.com/v1/chat/completions \
-H "Authorization: Bearer $REXAPF_API_KEY" \
-H "Content-Type: application/json" \
-d '{"model": "<model-id>", "stream": true, "messages": [{"role": "user", "content": "Đếm từ 1 đến 5"}]}'const stream = await client.chat.completions.create({
model: "<model-id>",
messages: [{ role: "user", content: "Đếm từ 1 đến 5" }],
stream: true,
});
for await (const chunk of stream) {
process.stdout.write(chunk.choices[0]?.delta?.content ?? "");
}Dùng curl -N để tắt bộ đệm, nhờ đó bạn thấy từng phần phản hồi ngay khi đến.
Lưu ý khi dùng
- Model ngoài gói — nếu model không có trong gói hiện tại, Gateway trả
403mãmodel_not_allowed. Đổi model hoặc nâng gói. - Ngữ cảnh lớn — input vượt 250K token tính phí ×1.25, vượt 500K token tính phí ×1.5 cho toàn bộ yêu cầu.
- CORS — endpoint cho phép gọi từ mọi origin. Tuy vậy, đừng nhúng khoá API vào mã chạy trên trình duyệt; hãy gọi qua máy chủ của bạn.
- Codex dùng endpoint
POST /v1/responses(định dạng OpenAI Responses). Xem Codex.
Lỗi trả về theo dạng OpenAI:
{
"error": {
"message": "Invalid API key provided.",
"type": "authentication_error",
"code": "invalid_api_key"
}
}Danh sách đầy đủ ở Mã lỗi & giới hạn.