Chat Completions
Sinh văn bản, trả về theo hình dạng response quen thuộc của OpenAI.
Đã triển khai
Request
POST
/chat/completionsCần header Authorization: Bearer apl_...
| Field | Kiểu | Mô tả |
|---|---|---|
modelbắt buộc | string | Public model ID lấy từ GET /models. |
messagesbắt buộc | Message[] | Mảng { role, content }, role ∈ system | user | assistant. |
stream | false | Hiện chỉ chấp nhận false. Gửi true sẽ bị từ chối rõ ràng thay vì im lặng trả về non-streaming. |
Response
| Field | Kiểu | Mô tả |
|---|---|---|
choices[0].message.contentbắt buộc | string | Nội dung model sinh ra. |
usagebắt buộc | object | prompt_tokens, completion_tokens, total_tokens. |
apilux.credit_chargedbắt buộc | integer | Số credit đã trừ cho request này. |
apilux.balance_afterbắt buộc | integer | Số dư còn lại sau khi trừ. |
Tính tiền
Theo tổng token (input + output), giá tính trên 1.000.000 token. Tối thiểu 1 credit mỗi request thành công.
Ví dụ
curl https://apilux.net/api/v1/chat/completions \
-H "Authorization: Bearer apl_YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "MODEL_ID",
"messages": [{ "role": "user", "content": "Xin chào" }]
}'const res = await fetch("https://apilux.net/api/v1/chat/completions", {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.APILUX_API_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
model: "MODEL_ID",
messages: [{ role: "user", content: "Xin chào" }],
}),
});
const data = await res.json();
console.log(data.choices[0].message.content);import os, requests
res = requests.post(
"https://apilux.net/api/v1/chat/completions",
headers={
"Authorization": f"Bearer {os.environ['APILUX_API_KEY']}",
"Content-Type": "application/json",
},
json={
"model": "MODEL_ID",
"messages": [{"role": "user", "content": "Xin chào"}],
},
)
print(res.json()["choices"][0]["message"]["content"])Lỗi
| HTTP | Mã | Ý nghĩa |
|---|---|---|
| 400 | invalid_request | Body không hợp lệ (thiếu field, sai kiểu, giá trị ngoài phạm vi). |
| 401 | auth_missing_or_malformed | Thiếu header Authorization hoặc sai định dạng. Phải là Bearer apl_.... |
| 401 | auth_invalid | API key không tồn tại. |
| 401 | auth_revoked | API key đã bị thu hồi. |
| 401 | auth_expired | API key đã hết hạn. |
| 400 | unknown_model | Model không tồn tại trong ApiLux. |
| 400 | capability_not_supported | Model có tồn tại nhưng không dùng được ở endpoint này (ví dụ dùng model text cho endpoint ảnh). |
| 503 | pricing_not_configured | Model đã có route nhưng chưa được cấu hình giá trong ApiLux. Đây là trạng thái phía chúng tôi, không phải lỗi của bạn. |
| 503 | model_disabled | Model đang bị tắt. |
| 503 | model_temporarily_unavailable | Model đang bật và có giá, nhưng nhà cung cấp phía sau hiện không phục vụ nó. Đây là trạng thái tạm thời và có thể tự hết — model sẽ xuất hiện lại trong GET /v1/models khi nhà cung cấp có nó trở lại. Bạn không bị trừ tiền và không có lời gọi nào tới nhà cung cấp. |
| 402 | insufficient_balance | Số dư ví không đủ để thực hiện request. |
| 429 | api_key_limit_exceeded | API key này đã chạm hạn mức bạn tự cấu hình. Ví vẫn còn tiền — chỉ key này không được tiêu thêm cho tới khi chu kỳ reset. Response kèm limit_type (spending | requests | tokens) và period (daily | monthly | lifetime). Hạn mức token của endpoint text được tính theo usage thực tế nên tổng có thể vượt tối đa một request. |
| 503 | api_key_quota_reconciliation_required | Một request text trước đó của chính key này chưa được đối soát xong. Thường gặp nhất: nhà cung cấp trả kết quả thành công nhưng không kèm usage token, nên hạn mức token của kỳ đó không còn đáng tin và ApiLux dừng lại thay vì để hạn mức bị vượt trong im lặng. Thử lại sẽ không qua được cho tới khi việc đó xong — hãy liên hệ hỗ trợ. Bạn không bị trừ tiền cho request bị chặn, không có lời gọi nào tới nhà cung cấp, và endpoint ảnh/video không bị ảnh hưởng. |
| 502 | upstream_error | Nhà cung cấp mô hình lỗi. Không bị trừ tiền. |
| 504 | upstream_timeout | Nhà cung cấp không phản hồi kịp. Không bị trừ tiền. |
| 429 | upstream_rate_limited | Bị giới hạn tốc độ. Thử lại sau vài giây. |
Ghi chú
Response có thêm object
apilux ngoài chuẩn OpenAI. Client OpenAI bỏ qua field lạ nên không ảnh hưởng gì.