Bỏ qua để đến nội dung

Lấy trạng thái tác vụ

GET/v1/tasks/{token}

Kiểm tra định kỳ cho đến khi trạng thái hoàn tất hoặc thất bại. Khoảng cách khuyến nghị: 3–5 giây.

Token dùng để thăm dò và tải xuống. Đây là tham số đường dẫn {token} của các endpoint tác vụ.

{
"task_id": "xKj9aP3qLm7v",
"status": "completed",
"progress": 100,
"product": "YOUR_PRODUCT_SLUG",
"country": "CN",
"submitted": 5000,
"prefiltered": 0,
"deduped": 0,
"total": 5000,
"processed": 5000,
"valid": 3800,
"invalid": 1200,
"unknown": 0,
"unknown_processed": 0,
"unknown_unprocessed": 0,
"stage": "completed",
"stage_seconds": 12,
"last_progress_at": "2026-09-05T10:00:12+00:00",
"failure_message": null,
"cost_deducted": "0.500000",
"cost_refunded": "0.000000",
"result_available": true,
"result_expires_at": "2026-05-02T10:00:00+00:00",
"created_at": "2026-05-01T10:00:00+00:00"
}
statusMô tả
pendingĐã vào hàng đợi, đang chờ tài nguyên.
processingTác vụ kiểm tra đang chạy.
completedĐã hoàn tất. Kết quả sẵn sàng để tải xuống.
failedThực thi thất bại.
TrườngKiểuMô tả
task_idstringToken dùng để thăm dò và tải xuống. Đây là tham số đường dẫn {token} của các endpoint tác vụ.
progressintegerPhần trăm hoàn thành, 0 đến 100.
statusstringpending, processing, completed hoặc failed.
productstringSlug sản phẩm đã dùng khi gửi tác vụ — xem danh sách sản phẩm hàng loạt.
countrystring | nullQuốc gia mà tác vụ được gửi kèm, hoặc null với sản phẩm email.
submittedintegerSố dòng nhận được trong lần gửi.
prefilteredintegerSố dòng bị loại trước khi phát hiện — ví dụ các dòng sai định dạng.
dedupedintegerSố dòng trùng lặp đã bị loại bỏ.
totalintegerSố dòng thực sự được đưa vào hàng đợi phát hiện, sau khi lọc trước và loại trùng.
processedintegerSố dòng mà kênh thượng nguồn đã xử lý xong.
validintegerSố dòng được xác nhận là đã đăng ký.
invalidintegerSố dòng được xác nhận là chưa đăng ký.
unknownintegerSố dòng mà nhà cung cấp không thể phân giải.
unknown_processedintegerCác dòng không phân giải được đã được thử lại và quyết toán.
unknown_unprocessedintegerCác dòng không phân giải được vẫn chưa xử lý. Những dòng này được hoàn tiền.
stagestring | nullTên giai đoạn nội bộ khi tác vụ đang chạy. Chỉ dùng để chẩn đoán — không rẽ nhánh theo giá trị này.
stage_secondsinteger | nullSố giây đã dùng ở giai đoạn hiện tại.
last_progress_atstring (ISO 8601) | nullThời điểm tiến độ tiến triển lần cuối. Mốc thời gian ngừng thay đổi nghĩa là tác vụ bị kẹt, chứ không chỉ chậm.
failure_messagestring | nullLý do tác vụ thất bại, hoặc null.
cost_deductedstringSố tiền đã trừ cho tác vụ, ở dạng chuỗi.
cost_refundedstringSố tiền đã hoàn cho những dòng chưa từng được kiểm tra, ở dạng chuỗi.
result_availablebooleantrue khi có thể tải tệp kết quả.
result_expires_atstring (ISO 8601) | nullThời điểm tệp kết quả không còn tải được.
created_atstring (ISO 8601)Thời điểm tác vụ được tạo.

submitted là số bạn đã gửi; total là số thực sự được kiểm tra. Hai giá trị này khác nhau khi có dòng sai định dạng hoặc trùng lặp, và chênh lệch đúng bằng prefiltered + deduped.

cost_deducted được tính trên total, còn cost_refunded bao gồm các dòng không bao giờ có kết quả — nhóm unknown_unprocessed. Chỉ các kết luận valid và invalid mới bị tính phí.

Terminal window
# Poll until the task leaves pending/processing. `last_progress_at` going
# stale is the real failure signal, not elapsed time.
for i in $(seq 1 120); do
body=$(curl -s -X GET "https://api.zelnum.com/api/v1/tasks/xKj9aP3qLm7v" \
-H "X-API-Key: YOUR_KEY_HERE")
status=$(printf '%s' "$body" | jq -r '.status')
printf '%s %s%%\n' "$status" "$(printf '%s' "$body" | jq -r '.progress')"
case "$status" in
completed) printf '%s' "$body" | jq .; break ;;
failed) printf '%s' "$body" | jq .; exit 1 ;;
esac
sleep 5
done