Перейти к содержимому

Статус задачи

GET/v1/tasks/{token}

Опрашивайте задачу каждые 3–5 секунд до completed или failed.

Токен, с которым вы опрашиваете статус и скачиваете результат. Это параметр пути {token} эндпоинтов задачи.

{
"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"
}
statusОписание
pendingВ очереди, ожидает ресурсов.
processingПроверка выполняется.
completedЗавершено. Результат готов к скачиванию.
failedВыполнение завершилось ошибкой.
ПолеТипОписание
task_idstringТокен, с которым вы опрашиваете статус и скачиваете результат. Это параметр пути {token} эндпоинтов задачи.
progressintegerПроцент выполнения, от 0 до 100.
statusstringpending, processing, completed или failed.
productstringSlug продукта, с которым была отправлена задача — смотрите пакетный список продуктов.
countrystring | nullСтрана, с которой отправлена задача, или null для email-продуктов.
submittedintegerСтрок получено в отправке.
prefilteredintegerСтроки, отброшенные до проверки, — например, некорректные.
dedupedintegerУдалено дублирующихся строк.
totalintegerСтрок фактически поставлено на проверку после префильтрации и дедупликации.
processedintegerСтроки, обработанные вышестоящим каналом.
validintegerСтроки, подтверждённые как зарегистрированные.
invalidintegerСтроки, подтверждённые как незарегистрированные.
unknownintegerСтроки, которые провайдер не смог обработать.
unknown_processedintegerНеизвестные строки, повторно проверенные и завершённые.
unknown_unprocessedintegerНеизвестные строки, всё ещё не обработанные. За них возвращаются средства.
stagestring | nullВнутреннее имя этапа, пока задача выполняется. Только для диагностики — не ветвитесь по нему.
stage_secondsinteger | nullСекунд, проведённых на текущем этапе.
last_progress_atstring (ISO 8601) | nullКогда прогресс продвинулся в последний раз. Если отметка времени перестала меняться, задача зависла, а не просто работает медленно.
failure_messagestring | nullПричина сбоя задачи или null.
cost_deductedstringСумма, списанная за задачу, в виде строки.
cost_refundedstringСумма, возвращённая за строки, которые так и не были проверены, в виде строки.
result_availablebooleantrue, если файл результата можно скачать.
result_expires_atstring (ISO 8601) | nullКогда файл результата перестаёт скачиваться.
created_atstring (ISO 8601)Когда задача была создана.

submitted — это то, что вы отправили; total — то, что реально проверено. Они различаются, когда есть некорректные или дублирующиеся строки, и разница ровно равна prefiltered + deduped.

cost_deducted начисляется на total, а cost_refunded покрывает строки, которые так и не получили результата — корзину unknown_unprocessed. Оплачиваются только вердикты valid и invalid.

Окно терминала
# 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