> ## Documentation Index
> Fetch the complete documentation index at: https://docs.axelo.mx/llms.txt
> Use this file to discover all available pages before exploring further.

# Eventos de un Job

> GET /v1/jobs/{job_id}/events — Consulta el historial de entrega de un envío.

## Endpoint

```
GET /v1/jobs/{job_id}/events
```

## Headers

| Header      | Valor      |
| ----------- | ---------- |
| `X-API-Key` | Tu API key |

## Parámetros de ruta

| Parámetro | Tipo          | Descripción                             |
| --------- | ------------- | --------------------------------------- |
| `job_id`  | string (UUID) | El `job_id` retornado al crear el envío |

## Ejemplo

```bash theme={null}
curl https://api.axelo.mx/v1/jobs/c3d4e5f6-a1b2-4321-beef-000000000001/events \
  -H "X-API-Key: TU_API_KEY"
```

## Respuesta

```json theme={null}
{
  "job_id": "c3d4e5f6-a1b2-4321-beef-000000000001",
  "events": [
    {
      "event_id": 1001,
      "event_type": "sent",
      "result": {},
      "created_at": "2026-03-30T10:00:00Z"
    },
    {
      "event_id": 1002,
      "event_type": "delivered",
      "result": {},
      "created_at": "2026-03-30T10:00:05Z"
    },
    {
      "event_id": 1003,
      "event_type": "read",
      "result": {},
      "created_at": "2026-03-30T10:01:12Z"
    }
  ]
}
```

Los eventos se retornan en **orden cronológico** (el más antiguo primero).

## Tipos de evento por canal

### WhatsApp

| Evento      | Descripción                                 |
| ----------- | ------------------------------------------- |
| `sent`      | Mensaje enviado a Meta Cloud API            |
| `delivered` | Meta confirmó que el dispositivo lo recibió |
| `read`      | El destinatario abrió la conversación       |
| `failed`    | Error en cualquier etapa de la entrega      |

### Email

| Evento       | Descripción                                                                            |
| ------------ | -------------------------------------------------------------------------------------- |
| `sent`       | Aceptado por nuestro servidor SMTP (encolado para envío)                               |
| `delivered`  | El servidor del destinatario confirmó la recepción (250), detectado del log de Postfix |
| `opened`     | El destinatario cargó el pixel de tracking                                             |
| `clicked`    | El destinatario hizo clic en un enlace del email                                       |
| `bounced`    | Rebote duro devuelto por el servidor remoto                                            |
| `suppressed` | Destinatario en la lista de supresión (baja/rebote previo); no se envió                |
| `failed`     | Error de entrega                                                                       |

## Errores

| Código | Causa            |
| ------ | ---------------- |
| `401`  | API key inválida |
| `500`  | Error interno    |

<Note>
  Un job exitoso siempre tiene al menos un evento `sent`. Los eventos posteriores
  (`delivered`, `read`, `opened`, etc.) se agregan conforme el proveedor notifica
  la plataforma vía webhook.
</Note>
