Saltearse al contenido

Estado de Tarea

GET/v1/tasks/{token}

Consulta cada 3–5 segundos hasta completed o failed.

Token con el que consultas y descargas. Este es el parámetro de ruta {token} de los endpoints de tarea.

{
"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"
}
statusDescripción
pendingEn cola, esperando recursos.
processingLa detección está en curso.
completedCompletado. El resultado está listo para descargar.
failedLa ejecución falló.
CampoTipoDescripción
task_idstringToken con el que consultas y descargas. Este es el parámetro de ruta {token} de los endpoints de tarea.
progressintegerPorcentaje completado, 0 a 100.
statusstringpending, processing, completed o failed.
productstringSlug del producto con el que se envió la tarea — consulta la lista de productos masivos.
countrystring | nullPaís con el que se envió la tarea, o null para productos de correo electrónico.
submittedintegerFilas recibidas en el envío.
prefilteredintegerFilas descartadas antes de la detección, por ejemplo líneas mal formadas.
dedupedintegerFilas duplicadas eliminadas.
totalintegerFilas realmente en cola para detección, después del prefiltrado y la deduplicación.
processedintegerFilas que el canal de origen ya terminó.
validintegerFilas confirmadas como registradas.
invalidintegerFilas confirmadas como no registradas.
unknownintegerFilas que el proveedor no pudo resolver.
unknown_processedintegerFilas desconocidas que se reintentaron y se liquidaron.
unknown_unprocessedintegerFilas desconocidas aún sin resolver. Se reembolsan.
stagestring | nullNombre de la etapa interna mientras la tarea se ejecuta. Solo diagnóstico: no ramifiques según él.
stage_secondsinteger | nullSegundos transcurridos en la etapa actual.
last_progress_atstring (ISO 8601) | nullCuándo avanzó el progreso por última vez. Una marca de tiempo que deja de moverse significa que la tarea está atascada, no solo lenta.
failure_messagestring | nullPor qué falló la tarea, o null.
cost_deductedstringMonto deducido por la tarea, como cadena.
cost_refundedstringMonto reembolsado por las filas que nunca se verificaron, como cadena.
result_availablebooleantrue cuando el archivo de resultados se puede descargar.
result_expires_atstring (ISO 8601) | nullCuándo el archivo de resultados deja de poder descargarse.
created_atstring (ISO 8601)Cuándo se creó la tarea.

submitted es lo que enviaste; total es lo que realmente se verificó. Difieren siempre que haya filas mal formadas o duplicadas, y la diferencia es exactamente prefiltered + deduped.

cost_deducted se cobra sobre total, y cost_refunded cubre las filas que nunca se resolvieron — el grupo unknown_unprocessed. Solo se facturan los veredictos valid e invalid.

Ventana de terminal
# 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