# Listar (/docs/developers/api-reference/time-clock-events/list)

## Descripcion general [#descripcion-general]

Este endpoint devuelve un listado paginado de las **checadas** (marcas de entrada y salida) registradas en tu organización, sin importar por dónde entraron: la API pública, o la captura masiva estilo Excel dentro de la plataforma.

Cada checada guarda dos tiempos: `timestamp`, el instante exacto de la marca en UTC, y `local_date`, el **día natural** al que pertenece según la zona horaria de asistencia de la organización. `local_date` es el día que agrupa la derivación de retardos, y es el campo sobre el que filtran `from` y `to`.

Los resultados se ordenan del día más reciente al más antiguo.

Requiere que la API key tenga el permiso **Listar checadas**.

## Endpoint [#endpoint]

`GET https://app.integranom.com/api/v1/time-clock-events`

## Consulta multiples checadas [#consulta-multiples-checadas]

***

Devuelve todas las checadas de la organización, paginadas de 20 en 20.

Fíjate en la segunda fila del ejemplo: la marca ocurrió a las `00:02` UTC del 5 de junio, pero su `local_date` es el **4 de junio** — en la zona horaria de la organización todavía era el día anterior. Siempre filtra por `local_date` (con `from` / `to`), nunca por la hora UTC.

## Query params [#query-params]

| Parametro         | Tipo                  | Default | Descripcion                                                 |
| ----------------- | --------------------- | ------- | ----------------------------------------------------------- |
| `page`            | integer ≥ 1           | 1       | Página solicitada. El tamaño de página es fijo en 20.       |
| `employee_number` | integer               | -       | Filtra las checadas de un solo empleado.                    |
| `from`            | string (`YYYY-MM-DD`) | -       | Incluye checadas con `local_date` **mayor o igual** a esta. |
| `to`              | string (`YYYY-MM-DD`) | -       | Incluye checadas con `local_date` **menor o igual** a esta. |

**cURL**

```bash
curl -X GET "https://app.integranom.com/api/v1/time-clock-events" \
-H "Authorization: Bearer TU_API_KEY" \
-H "Content-Type: application/json"
```

**Respuesta**

```json
{
"count": 12,
"page": 1,
"page_size": 20,
"total_pages": 1,
"next": null,
"previous": null,
"results": [
  {
    "timestamp": "2026-06-05T15:20:00.000Z",
    "local_date": "2026-06-05",
    "direction": "in",
    "source": "api",
    "device_id": "RELOJ-PLANTA-1",
    "employee_number": 1,
    "employee_name": "Jesús Muñoz Rivera",
    "legal_entity_number": 1,
    "legal_entity_name": "Comercializadora del Norte S.A. de C.V.",
    "created_at": "2026-06-05T15:20:04.000Z"
  },
  {
    "timestamp": "2026-06-05T00:02:00.000Z",
    "local_date": "2026-06-04",
    "direction": "out",
    "source": "api",
    "device_id": "RELOJ-PLANTA-1",
    "employee_number": 1,
    "employee_name": "Jesús Muñoz Rivera",
    "legal_entity_number": 1,
    "legal_entity_name": "Comercializadora del Norte S.A. de C.V.",
    "created_at": "2026-06-05T00:02:03.000Z"
  }
]
}
```

## Filtra por empleado y periodo [#filtra-por-empleado-y-periodo]

***

`employee_number`, `from` y `to` se combinan. El ejemplo trae las checadas del empleado `1` durante junio.

La segunda fila llegó por la **captura masiva estilo Excel** dentro de la plataforma (`source: "excel"`), no por un dispositivo: por eso no trae `device_id`. Todas las fuentes conviven en el mismo listado.

**cURL**

```bash
curl -X GET "https://app.integranom.com/api/v1/time-clock-events?employee_number=1&from=2026-06-01&to=2026-06-30" \
-H "Authorization: Bearer TU_API_KEY" \
-H "Content-Type: application/json"
```

**Respuesta**

```json
{
"count": 2,
"page": 1,
"page_size": 20,
"total_pages": 1,
"next": null,
"previous": null,
"results": [
  {
    "timestamp": "2026-06-05T15:20:00.000Z",
    "local_date": "2026-06-05",
    "direction": "in",
    "source": "api",
    "device_id": "RELOJ-PLANTA-1",
    "employee_number": 1,
    "employee_name": "Jesús Muñoz Rivera",
    "legal_entity_number": 1,
    "legal_entity_name": "Comercializadora del Norte S.A. de C.V.",
    "created_at": "2026-06-05T15:20:04.000Z"
  },
  {
    "timestamp": "2026-06-04T15:58:00.000Z",
    "local_date": "2026-06-04",
    "direction": "in",
    "source": "excel",
    "device_id": null,
    "employee_number": 1,
    "employee_name": "Jesús Muñoz Rivera",
    "legal_entity_number": 1,
    "legal_entity_name": "Comercializadora del Norte S.A. de C.V.",
    "created_at": "2026-06-06T18:00:00.000Z"
  }
]
}
```

## Campos de cada fila [#campos-de-cada-fila]

| Campo                 | Tipo                           | Descripcion                                                                                                                                             |
| --------------------- | ------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `timestamp`           | string (ISO 8601, UTC)         | Instante exacto de la marca.                                                                                                                            |
| `local_date`          | string (`YYYY-MM-DD`)          | Día natural de la marca en la zona horaria de asistencia de la organización. Es el día que agrupa la derivación de retardos.                            |
| `direction`           | `"in"` \| `"out"` \| null      | Dirección declarada por el dispositivo. `null` cuando no la envía.                                                                                      |
| `source`              | `"api"` \| `"excel"` \| `"qr"` | Por dónde entró: la API pública, la captura masiva estilo Excel, o el escaneo de un código QR de checada desde la app.                                  |
| `device_id`           | string \| null                 | Identificador del dispositivo que envió la marca. `null` en las marcas que no vienen de un dispositivo, como las de `source: "excel"` y `source: "qr"`. |
| `employee_number`     | integer                        | Número del empleado dentro de la organización.                                                                                                          |
| `employee_name`       | string                         | Nombre completo del empleado.                                                                                                                           |
| `legal_entity_number` | integer                        | Razón social del empleo.                                                                                                                                |
| `legal_entity_name`   | string                         | Nombre de la razón social.                                                                                                                              |
| `created_at`          | string (ISO 8601)              | Cuándo se registró la marca en la plataforma.                                                                                                           |

## Errores [#errores]

| Status | Causa                                                                                                                         |
| ------ | ----------------------------------------------------------------------------------------------------------------------------- |
| `400`  | Valor inválido en algún filtro (`employee_number` no entero, `from` / `to` con formato incorrecto, o `to` anterior a `from`). |
| `401`  | API key ausente o inválida.                                                                                                   |
| `403`  | La API key no tiene el permiso **Listar checadas**.                                                                           |