# Secuencias

> Liste, ejecute, pause y reanude secuencias de correo electrónico

Source: https://docs.graph8.com/es/developers/sequences/

> **Tip: ¿Usa el SDK o la CLI?**
> El [SDK de JavaScript](https://docs.graph8.com/developers/sdk/#sequences) ofrece `g8.sequences.list()` y `g8.sequences.add()`. La [CLI](https://docs.graph8.com/developers/cli/#g8-sequences) admite `g8 sequences` y `g8 add-to-sequence`.

Las secuencias son campañas de correo electrónico automatizadas de varios pasos. Use estos endpoints para listar secuencias, controlar su ejecución y gestionar los contactos inscritos.

Para la autoría (crear, previsualizar, actualizar pasos, archivar y analizar) consulte [Ciclo de vida de las secuencias](https://docs.graph8.com/developers/sequences-lifecycle/).

---

## Listar secuencias

`GET /sequences`

Devuelve todas las secuencias con filtro de estado opcional y paginación.

### Parámetros de consulta

| Parámetro | Tipo | Predeterminado | Descripción |
|-----------|------|----------------|-------------|
| `page` | integer | 1 | Número de página |
| `limit` | integer | 50 | Elementos por página (máx. 200) |
| `status` | string | — | Filtrar por estado (`drafted`, `live`, `paused`, `completed`) |

### Ejemplo

**cURL**

```bash
curl "https://api.graph8.com/api/v1/sequences?status=live" \
  -H "Authorization: Bearer $API_KEY"
```

**Python**

```python
response = requests.get(
    f"{BASE_URL}/sequences",
    headers=HEADERS,
    params={"status": "live"}
)
```

### Respuesta

```json
{
  "data": [
    {
      "id": "seq-abc",
      "name": "Q2 Outbound",
      "status": "live",
      "user_email": "rep@company.com",
      "associated_list_id": 5,
      "created_at": "2026-02-15T10:00:00",
      "updated_at": "2026-02-20T14:30:00"
    }
  ],
  "pagination": {
    "page": 1,
    "limit": 50,
    "total": 1,
    "has_next": false
  }
}
```

---

## Obtener secuencia

`GET /sequences/{sequence_id}`

Devuelve información detallada sobre una secuencia, incluidos los indicadores de configuración.

### Ejemplo

**cURL**

```bash
curl "https://api.graph8.com/api/v1/sequences/seq-abc" \
  -H "Authorization: Bearer $API_KEY"
```

**Python**

```python
response = requests.get(
    f"{BASE_URL}/sequences/seq-abc",
    headers=HEADERS
)
```

### Respuesta

```json
{
  "data": {
    "id": "seq-abc",
    "name": "Q2 Outbound",
    "description": "Multi-touch outbound campaign for Q2 targets",
    "status": "live",
    "user_email": "rep@company.com",
    "associated_list_id": 5,
    "finish_on_reply": true,
    "send_in_same_thread": false,
    "wait_for_new_contacts": false,
    "paused_at": null,
    "resumed_at": null,
    "created_at": "2026-02-15T10:00:00",
    "updated_at": "2026-02-20T14:30:00"
  }
}
```

---

## Ejecutar secuencia

`POST /sequences/{sequence_id}/run`

Inicia una secuencia en borrador. Genera eventos de programación para todos los contactos inscritos.

### Ejemplo

**cURL**

```bash
curl -X POST "https://api.graph8.com/api/v1/sequences/seq-abc/run" \
  -H "Authorization: Bearer $API_KEY"
```

**Python**

```python
response = requests.post(
    f"{BASE_URL}/sequences/seq-abc/run",
    headers=HEADERS
)
```

### Respuesta

```json
{
  "data": {
    "sequence_id": "seq-abc",
    "status": "scheduling",
    "contacts_affected": 150
  }
}
```

---

## Pausar secuencia

`POST /sequences/{sequence_id}/pause`

Pausa una secuencia activa. Los envíos programados quedan retenidos hasta que la secuencia se reanude.

### Respuesta

```json
{
  "data": {
    "sequence_id": "seq-abc",
    "status": "paused",
    "contacts_affected": 150
  }
}
```

---

## Reanudar secuencia

`POST /sequences/{sequence_id}/resume`

Reanuda una secuencia pausada. Los envíos retenidos se reprograman.

### Respuesta

```json
{
  "data": {
    "sequence_id": "seq-abc",
    "status": "live",
    "contacts_affected": 150
  }
}
```

---

## Listar contactos de la secuencia

`GET /sequences/{sequence_id}/contacts`

Devuelve los contactos inscritos en una secuencia con su estado actual.

### Parámetros de consulta

| Parámetro | Tipo | Predeterminado | Descripción |
|-----------|------|----------------|-------------|
| `page` | integer | 1 | Número de página |
| `limit` | integer | 50 | Elementos por página (máx. 200) |
| `state` | string | — | Filtrar por estado del contacto |

### Ejemplo

**cURL**

```bash
curl "https://api.graph8.com/api/v1/sequences/seq-abc/contacts?state=active" \
  -H "Authorization: Bearer $API_KEY"
```

**Python**

```python
response = requests.get(
    f"{BASE_URL}/sequences/seq-abc/contacts",
    headers=HEADERS,
    params={"state": "active"}
)
```

### Respuesta

```json
{
  "data": [
    {
      "id": "sc-1",
      "contact_id": 12345,
      "state": "active",
      "current_step_order": 2,
      "created_at": "2026-02-15T10:00:00",
      "updated_at": "2026-02-18T09:00:00"
    }
  ],
  "pagination": {
    "page": 1,
    "limit": 50,
    "total": 1,
    "has_next": false
  }
}
```

---

## Agregar contactos a la secuencia

`POST /sequences/{sequence_id}/contacts`

Agrega contactos a una secuencia activa o en borrador. Devuelve `201 Created`.

### Cuerpo de la solicitud

| Campo | Tipo | Requerido | Descripción |
|-------|------|-----------|-------------|
| `contact_ids` | integer[] | Sí | IDs de los contactos que se van a agregar |
| `list_id` | integer | Sí | ID de la lista a la que pertenecen los contactos |

### Ejemplo

**cURL**

```bash
curl -X POST "https://api.graph8.com/api/v1/sequences/seq-abc/contacts" \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"contact_ids": [101, 102, 103], "list_id": 5}'
```

**Python**

```python
response = requests.post(
    f"{BASE_URL}/sequences/seq-abc/contacts",
    headers=HEADERS,
    json={"contact_ids": [101, 102, 103], "list_id": 5}
)
```

### Respuesta

```json
{
  "data": {
    "sequence_id": "seq-abc",
    "status": "contacts_added",
    "contacts_affected": 3
  }
}
```
