Lewati ke konten

Status Tugas

GET/v1/tasks/{token}

Polling tugas hingga status completed atau failed. Interval direkomendasikan: 3–5 detik.

Token yang Anda pakai untuk polling dan mengunduh. Ini adalah parameter path {token} pada endpoint tugas.

{
"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"
}
statusDeskripsi
pendingMasuk antrean, menunggu resource.
processingPemeriksaan sedang berjalan.
completedSelesai. Hasil siap diunduh.
failedEksekusi gagal.
FieldTipeDeskripsi
task_idstringToken yang Anda pakai untuk polling dan mengunduh. Ini adalah parameter path {token} pada endpoint tugas.
progressintegerPersentase selesai, 0 hingga 100.
statusstringpending, processing, completed atau failed.
productstringSlug produk yang dipakai saat mengirim tugas — lihat daftar produk massal.
countrystring | nullNegara yang dipakai saat tugas dikirim, atau null untuk produk email.
submittedintegerBaris yang diterima dalam pengiriman.
prefilteredintegerBaris yang dibuang sebelum deteksi — misalnya baris yang formatnya salah.
dedupedintegerBaris duplikat yang dihapus.
totalintegerBaris yang benar-benar masuk antrean untuk deteksi, setelah penyaringan awal dan penghapusan duplikat.
processedintegerBaris yang telah diselesaikan oleh kanal hulu.
validintegerBaris yang dipastikan terdaftar.
invalidintegerBaris yang dipastikan tidak terdaftar.
unknownintegerBaris yang tidak dapat diselesaikan oleh penyedia.
unknown_processedintegerBaris unknown yang dicoba ulang dan telah selesai.
unknown_unprocessedintegerBaris unknown yang masih belum terselesaikan. Biaya untuk baris ini dikembalikan.
stagestring | nullNama tahap internal selama tugas berjalan. Hanya untuk diagnostik — jangan membuat percabangan berdasarkan nilai ini.
stage_secondsinteger | nullDetik yang dihabiskan pada tahap saat ini.
last_progress_atstring (ISO 8601) | nullKapan progres terakhir kali bergerak maju. Stempel waktu yang berhenti bergerak berarti tugas macet, bukan sekadar lambat.
failure_messagestring | nullAlasan tugas gagal, atau null.
cost_deductedstringJumlah yang dipotong untuk tugas, sebagai string.
cost_refundedstringJumlah yang dikembalikan untuk baris yang tidak pernah diperiksa, sebagai string.
result_availablebooleantrue jika file hasil dapat diunduh.
result_expires_atstring (ISO 8601) | nullKapan file hasil tidak lagi dapat diunduh.
created_atstring (ISO 8601)Kapan tugas dibuat.

submitted adalah yang Anda kirim; total adalah yang benar-benar diperiksa. Keduanya berbeda jika ada baris cacat atau duplikat, dan selisihnya tepat prefiltered + deduped.

cost_deducted ditagihkan atas total, dan cost_refunded mencakup baris yang tidak pernah terselesaikan — yaitu kelompok unknown_unprocessed. Hanya putusan valid dan invalid yang ditagih.

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