Hướng dẫn
Tác vụ bất đồng bộ
Gửi tác vụ chạy lâu, thăm dò trạng thái, xử lý trạng thái kết thúc và lấy kết quả.
Một số thao tác của Felo trả về task_id ngay lập tức và hoàn tất ở chế độ nền. Mô hình chung ở mọi nơi: gửi, thăm dò, rồi lấy kết quả.
Hai nhóm tác vụ
| Nhóm | Gửi | Thăm dò |
|---|---|---|
| Quy trình Felo | POST /v2/ppts, POST /v2/landing_page, POST /v2/mindmap | GET /v2/tasks/{task_id}/status |
| Tạo sinh mô hình | POST /api/v1/videos/generations, POST /api/v1/images/generations | GET /api/v1/videos/generations/{task_id}, GET /api/v1/images/generations/{task_id} |
Xuất PPTX là một thao tác bất đồng bộ riêng: POST /v2/ppts/{ppt_business_id}/export, sau đó GET /v2/ppts/{ppt_business_id}/export.
SuperAgent không phải API thăm dò. Nó trả về stream_key và dùng SSE; xem tham chiếu SuperAgent.
Vòng đời
- Gửi. Gửi các tham số mô hình hoặc quy trình. Một lần gửi thành công trả về
task_idvà trạng thái ban đầu. - Thăm dò. Đọc endpoint tác vụ theo một khoảng thời gian. Hãy đặt khoảng thời gian và thời gian chờ tối đa trong mã của bạn.
- Kết thúc. Khi thành công, đọc URL kết quả hoặc các trường đầu ra. Khi thất bại, đọc lỗi và quyết định có gửi lại hay không.
Giá trị trạng thái
Tác vụ quy trình Felo dùng giá trị chữ hoa:
| Trạng thái | Ý nghĩa |
|---|---|
RUNNING | Vẫn đang xử lý |
COMPLETED | Đã hoàn tất thành công |
FAILED | Thất bại cuối cùng; đọc error_message |
PENDING | Trạng thái kết thúc trong phản hồi lịch sử; đọc error_message |
EXPIRED | Kết thúc; tác vụ không còn khả dụng |
CANCELED | Kết thúc; tác vụ đã bị hủy |
Tác vụ tạo sinh mô hình dùng giá trị chữ thường: queued, running, succeeded, failed và interrupted. Một tác vụ thất bại có thể bao gồm đối tượng error với message và type.
Các giá trị trạng thái chưa biết có thể xuất hiện khi backend phát triển. Hãy coi giá trị chưa biết là chưa kết thúc trừ khi tài liệu nói khác.
Thăm dò trạng thái
- Tác vụ quy trình Felo: thăm dò mỗi 2–5 giây.
- Tạo video: thăm dò mỗi 5–10 giây.
- Tạo hình ảnh: bắt đầu với 2–5 giây và giãn dần cho các tác vụ chạy lâu.
- Dừng khi gặp trạng thái kết thúc, khi hết thời gian chờ bạn chọn, hoặc sau số lần thử tối đa.
- Thêm độ trễ ngẫu nhiên khi nhiều máy khách cùng thăm dò.
Một vòng lặp Node.js đơn giản:
async function pollStatus(taskId, { timeoutMs = 10 * 60 * 1000 } = {}) {
const deadline = Date.now() + timeoutMs;
while (Date.now() < deadline) {
const response = await fetch(`https://openapi.felo.ai/v2/tasks/${taskId}/status`, {
headers: { Authorization: `Bearer ${process.env.FELO_API_KEY}` },
});
if (!response.ok) throw new Error(`status ${response.status}`);
const payload = await response.json();
const status = payload.data?.status;
if (status === "COMPLETED") return payload.data;
if (["FAILED", "PENDING", "EXPIRED", "CANCELED"].includes(status)) {
throw new Error(payload.data?.error_message || status);
}
await new Promise((resolve) => setTimeout(resolve, 3000));
}
throw new Error("task timed out");
}Lấy kết quả
| Tác vụ | Kết quả |
|---|---|
| PPT | GET /v2/tasks/{task_id}/historical trả về ppt_url, ppt_biz_id và live_doc_url khi có |
| Landing page | Phản hồi lịch sử trả về đầu ra trang và live_doc_url khi có |
| Video / hình ảnh | Phản hồi thăm dò trả về outputs; khi thành công, các mục là URL phương tiện đã ký có thể tải xuống ẩn danh. Xem Tạo hình ảnh để biết chi tiết về hết hạn và tải xuống |
| Xuất PPTX | Phản hồi thăm dò trả về download_url và expires_at chỉ khi status là COMPLETED |
URL tải xuống đã ký của PPTX hết hạn 30 phút sau khi được cấp. Hãy gọi lại endpoint GET để lấy URL mới; việc này không tạo lại tệp.
Xử lý thất bại
- Đọc trường lỗi của tác vụ trước khi thử lại. Một số thất bại do yêu cầu gây ra và sẽ lặp lại.
- Không gửi lại một cách mù quáng mỗi khi hết thời gian chờ; trước tiên hãy kiểm tra xem tác vụ còn
RUNNINGhay không. 402nghĩa là không đủ tín dụng.429nghĩa là bị giới hạn tần suất. Chỉ thử lại sau khi điều kiện đó được giải quyết.- Các trường callback trên tạo video và hình ảnh hiện bị bỏ qua. Hãy thăm dò endpoint tác vụ thay vì chờ webhook.