ApiLux

Chat Completions

Sinh văn bản, trả về theo hình dạng response quen thuộc của OpenAI.

Đã triển khaiKhả dụng hay không còn phụ thuộc model bạn chọn đã được bật và có giá trong ApiLux.

Request

POST/chat/completions

Cần header Authorization: Bearer apl_...

FieldKiểuMô tả
modelbắt buộcstringPublic model ID lấy từ GET /models.
messagesbắt buộcMessage[]Mảng { role, content }, role ∈ system | user | assistant.
streambooleantrue trả về luồng SSE tương thích OpenAI, chunk cuối mang usage. Mặc định false.

Response

FieldKiểuMô tả
choices[0].message.contentbắt buộcstringNội dung model sinh ra.
usagebắt buộcobjectprompt_tokens, completion_tokens, total_tokens.
apilux.credit_chargedbắt buộcintegerSố credit đã trừ cho request này.
apilux.balance_afterbắt buộcintegerSố 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
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" }]
  }'
Node.js
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);
Python
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

HTTPMãÝ nghĩa
400invalid_requestBody không hợp lệ (thiếu field, sai kiểu, giá trị ngoài phạm vi).
401auth_missing_or_malformedThiếu header Authorization hoặc sai định dạng. Phải là Bearer apl_....
401auth_invalidAPI key không tồn tại.
401auth_revokedAPI key đã bị thu hồi.
401auth_expiredAPI key đã hết hạn.
400unknown_modelModel không tồn tại trong ApiLux.
400capability_not_supportedModel có tồn tại nhưng không dùng được ở endpoint này (ví dụ dùng model text cho endpoint ảnh).
503pricing_not_configuredModel đã 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.
503model_disabledModel đang bị tắt.
503model_temporarily_unavailableModel đ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.
402insufficient_balanceSố dư ví không đủ để thực hiện request.
409duplicate_requestĐã có một request TẠO với cùng Idempotency-Key đang chạy hoặc đã hoàn tất. ApiLux KHÔNG gọi nhà cung cấp lần hai và KHÔNG trừ tiền lần hai. Nếu request gốc đã xong, response kèm job_id để bạn lấy kết quả ở đó. Chỉ áp cho các endpoint tạo media (images/generations, images/edits, videos/generations).
429api_key_limit_exceededAPI 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.
503api_key_quota_reconciliation_requiredMộ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.
429rate_limit_exceededVượt hạn mức tốc độ (request mỗi giây hoặc mỗi phút). Kèm header Retry-After và trường retry_after_seconds; limit_type cho biết trục nào chặn. Request bị chặn KHÔNG gọi nhà cung cấp và KHÔNG bị trừ tiền. Chờ đúng số giây rồi thử lại.
503system_maintenanceApiLux đang bảo trì. Toàn bộ endpoint sinh nội dung tạm dừng; bạn không bị trừ tiền và không có lời gọi nào tới nhà cung cấp. Thử lại sau.
503ai_requests_disabledNgười vận hành đã tạm ngừng nhận request AI, trong khi phần còn lại của dịch vụ vẫn chạy. Tách khỏi system_maintenance vì đây là công tắc hẹp hơn.
503provider_catalog_staleApiLux không còn bằng chứng đủ mới về việc nhà cung cấp còn phục vụ model nào, nên dừng lại thay vì tính tiền một request có thể hỏng. Đây là sự cố phía chúng tôi, không phải model bị gỡ — nó tự hết ngay khi một lần đồng bộ thành công quay lại. Thử lại sau vài phút là hợp lý.
502upstream_errorNhà cung cấp mô hình lỗi. Không bị trừ tiền.
504upstream_timeoutNhà cung cấp không phản hồi kịp. Không bị trừ tiền.
429upstream_rate_limitedBị 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ì.