Listar trabajos
GET
/v1/jobsPara desarrolladores
Descripción
Devuelve los trabajos en segundo plano de la instancia, del más reciente al más antiguo.
Autenticación
Authorizationbearer tokenheaderobligatorio- Formato:
Bearer <API_KEY>. X-Instance-Slugstringheaderobligatorio- Identificador de su instancia. Ver Autenticación.
Cada trabajo
exige el scope de lectura de su recurso: los de listas (list_import, list_merge,
list_snapshot, list_export, list_copy) piden list:read, y una API key sin él no los ve.
Request
Query params:
typestring, enum: `list_import | list_merge | list_snapshot | list_export | list_copy`- Solo los trabajos de este tipo.
statusstring, enum: `pending | processing | completed | failed`- Solo los trabajos en este estado.
pageinteger- Número de página; la primera es la 1. Default: 1.
page_sizeinteger- Tamaño de página, 1–100. Default: 20.
Response
200 OKCada elemento de
data es un trabajo, con los campos de GET /v1/jobs/{id}.idstring (UUID)siempre presente- Identificador del trabajo.
typestring, enum: `list_import | list_merge | list_snapshot | list_export | list_copy`siempre presente- Qué hace el trabajo:
list_importimporta un archivo en una lista,list_mergecombina listas en una nueva,list_snapshottoma la instantánea de un dataset en una lista nueva,list_exportexporta los datos de una lista a un CSV ylist_copycopia los contactos de una lista a un dataset. statusstring, enum: `pending | processing | completed | failed`siempre presentependingmientras espera su turno,processingmientras se ejecuta, ycompletedofailedal terminar.paramsobjectsiempre presente- Sobre qué trabaja. En los trabajos de listas,
list_ideimport_id: la lista que recibe los datos y su importación. Enlist_copy,list_ideimport_idson la lista de origen y su importación, y se sumandataset_id(el dataset de destino) yrate_per_minute, el máximo de contactos por minuto de la copia: la tasa que tenía el dataset al pedirla, compartida con la API. resultobject | null- El resultado del trabajo, según su tipo (
type). Enlist_export, el archivo:row_count(filas),size_bytes(tamaño en bytes),expires_at(hasta cuándo se puede descargar) y, una vez borrado,purged_at. Enlist_copy, los conteos de la copia (ver Copiar una lista a un dataset). Mientras la copia se ejecuta, muestra lo enviado hasta ese momento ynext_row, la primera fila que falta enviar. Enlist_import,list_mergeylist_snapshotesnull: el resultado está en su importación (import_iddeparams). error_codestring | null- Código del error, si falló (ver Notas de
GET /v1/jobs/{id}). error_messagestring | null- Por qué falló, si falló (en inglés).
created_atstring (date-time)siempre presente- Cuándo se creó el trabajo (ISO 8601, UTC).
started_atstring (date-time) | null- Cuándo empezó su último intento.
finished_atstring (date-time) | null- Cuándo terminó, haya completado o fallado.
Notas
- La paginación no informa el total:
pagination.has_moredice si hay una página siguiente, ytotal_itemsytotal_pagesvienen ennull. - Los trabajos que la API key no puede leer no aparecen, y tampoco cuentan para
has_more.
Request
curl -X GET "https://$API_HOST/v1/jobs?type=list_import&status=failed" \
-H "Authorization: Bearer $API_KEY" \
-H "X-Instance-Slug: $SLUG"
Response
{
"data": [
{
"id": "01a13f6e-fa08-7e2a-8b3d-5f6a7b8c9d0e",
"type": "list_merge",
"status": "processing",
"params": {
"list_id": 12,
"import_id": 31
},
"result": null,
"error_code": null,
"error_message": null,
"created_at": "2026-10-15T12:00:00Z",
"started_at": "2026-10-15T12:00:01Z",
"finished_at": null
}
],
"pagination": {
"page": 1,
"page_size": 20,
"has_more": false,
"total_items": null,
"total_pages": null
}
}