Saltearse al contenido

Ciclo de vida de las secuencias

La página de Secuencias cubre las operaciones básicas (listar, obtener, ejecutar, pausar/reanudar y gestionar los contactos inscritos). Esta página describe los endpoints de ciclo de vida que se usan para crear e inspeccionar una secuencia de extremo a extremo, normalmente lo que necesita una CLI o una herramienta de compilación.

Todos los endpoints comparten el prefijo /sequences y requieren una clave de API de tipo Bearer.

EndpointMétodoDescripción
/sequencesPOSTCrear una secuencia (con pasos y canales opcionales)
/sequences/{id}/previewGETLeer secuencia, pasos y canales (sin inscripción)
/sequences/{id}PATCHActualizar metadatos de la secuencia
/sequences/{id}/steps/{step_id}PATCHActualizar un único paso
/sequences/{id}/pausePOSTPausar una secuencia activa
/sequences/{id}/resumePOSTReanudar una secuencia pausada
/sequences/{id}/analyticsGETInforme completo de analíticas
/sequences/{id}DELETEEliminación temporal (archivar) de una secuencia

Una secuencia en estado transitional (scheduling, pausing, resuming, terminating) no admite PATCH: se obtendrá 409 Conflict. Espere a que la operación se estabilice.

Para esquemas legibles por máquina, consulte la documentación interactiva de la API.


Crear secuencia

POST /sequences

Crea una secuencia en estado drafted. De forma opcional puede incluir steps[] y channels[] en la misma llamada.

Cuerpo de la solicitud

CampoTipoRequeridoDescripción
namestringNombre de la secuencia
user_emailstringDirección de correo del propietario
descriptionstringNoDescripción libre
finish_on_replybooleanNo (predeterminado true)Detener el contacto al recibir respuesta
send_in_same_threadbooleanNoEnviar los seguimientos en el mismo hilo de correo
wait_for_new_contactsbooleanNoMantener la secuencia a la espera de nuevas inscripciones
associated_list_idintegerNoLista de contactos que se asociará
stepsobject[]NoConfiguración de los pasos. Consulte Configuración de paso
channelsobject[]NoConfiguración de los canales. Consulte Configuración de canal
campaign_idstringNoCampaña de AI Studio que se vinculará

Configuración de paso

CampoTipoDescripción
step_orderintegerOrden dentro de la secuencia
step_typestringEMAIL, PHONE, SMS, LINKEDIN, etc.
input_typestringON_DEMAND o TEMPLATE (predeterminado ON_DEMAND)
time_intervalintegerRetraso en segundos después del paso anterior
step_dataobjectDatos de plantilla o contenido del paso (asunto, cuerpo, etc.)

Configuración de canal

CampoTipoDescripción
channel_idintegerID del recurso (ID de buzón, ID de teléfono, etc.)
channel_valuestringLa dirección o número en sí
channel_typestringEMAIL, PHONE, SMS, LINKEDIN, WHATSAPP
channel_dataobjectMetadatos opcionales

Ejemplo

Ventana de terminal
curl -X POST "https://be.graph8.com/api/v1/sequences" \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "Q2 Outbound",
"user_email": "[email protected]",
"associated_list_id": 5,
"steps": [
{
"step_order": 1,
"step_type": "EMAIL",
"input_type": "TEMPLATE",
"time_interval": 0,
"step_data": {"subject": "Quick intro", "body": "Hi {{first_name}}..."}
}
],
"channels": [
{
"channel_id": 12,
"channel_value": "[email protected]",
"channel_type": "EMAIL"
}
]
}'

Respuesta 201 Created

{
"data": {
"id": "seq_abc",
"name": "Q2 Outbound",
"status": "drafted",
"created_at": "2026-04-15T10:00:00Z"
}
}

Errores

EstadoSignificado
400Configuración de paso o canal no válida

Vista previa de secuencia

GET /sequences/{sequence_id}/preview

Vista de solo lectura de una secuencia con todos sus pasos y canales. No inscribe a ningún contacto.

Ejemplo

Ventana de terminal
curl "https://be.graph8.com/api/v1/sequences/seq_abc/preview" \
-H "Authorization: Bearer $API_KEY"

Respuesta

{
"data": {
"id": "seq_abc",
"name": "Q2 Outbound",
"status": "drafted",
"description": null,
"steps": [
{
"id": "stp_1",
"step_order": 1,
"step_type": "EMAIL",
"input_type": "TEMPLATE",
"time_interval": 0,
"step_data": {"subject": "Quick intro", "body": "..."}
}
],
"channels": [
{"id": "ch_1", "channel_id": 12, "channel_value": "[email protected]", "channel_type": "EMAIL"}
]
}
}

Actualizar secuencia

PATCH /sequences/{sequence_id}

Actualiza los metadatos de la secuencia. Envíe únicamente los campos que desee modificar.

Cuerpo de la solicitud

CampoTipoDescripción
namestringNombre de la secuencia
descriptionstringDescripción
is_sharedbooleanCompartir con la organización
finish_on_replybooleanFinalizar al recibir respuesta
send_in_same_threadbooleanSeguimientos en el mismo hilo
wait_for_new_contactsbooleanEsperar nuevos contactos
schedule_idstringID de programación
appointment_idintegerID de cita

Ejemplo

Ventana de terminal
curl -X PATCH "https://be.graph8.com/api/v1/sequences/seq_abc" \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{"name": "Q2 Outbound v2", "send_in_same_thread": true}'

Errores

EstadoSignificado
404Secuencia no encontrada
409La secuencia se encuentra en un estado transitional (scheduling, pausing, resuming, terminating)

Actualizar paso

PATCH /sequences/{sequence_id}/steps/{step_id}

Actualiza un único paso. Se aplica la misma regla 409 si la secuencia principal está en transición.

Cuerpo de la solicitud

CampoTipoDescripción
step_dataobjectDatos de plantilla o contenido
time_intervalintegerRetraso en segundos después del paso anterior
step_typestringTipo de paso
input_typestringON_DEMAND o TEMPLATE

Ejemplo

Ventana de terminal
curl -X PATCH "https://be.graph8.com/api/v1/sequences/seq_abc/steps/stp_1" \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{"step_data": {"subject": "Quick intro v2", "body": "Updated..."}}'

Pausar y reanudar

POST /sequences/{sequence_id}/pause POST /sequences/{sequence_id}/resume

Pausa una secuencia activa (o reanuda una pausada). Devuelve la cantidad de contactos afectados.

Respuesta

{
"data": {
"sequence_id": "seq_abc",
"status": "paused",
"contacts_affected": 150
}
}

Analíticas

GET /sequences/{sequence_id}/analytics

Devuelve un informe completo de analíticas: KPIs generales, rendimiento en el tiempo, desglose de engagement, distribución de contactos, métricas por paso y distribución por remitente. La estructura refleja el modelo interno SequenceReports.

Ejemplo

Ventana de terminal
curl "https://be.graph8.com/api/v1/sequences/seq_abc/analytics" \
-H "Authorization: Bearer $API_KEY"

Respuesta

{
"data": {
"overview": {"sent": 320, "opened": 180, "replied": 22},
"performance": {"open_rate": 0.56, "reply_rate": 0.07},
"engagement": {"by_day": [...]},
"timeline": [...],
"contact_distribution": {"active": 150, "completed": 100, "stopped": 70},
"step_breakdown": [
{"step_id": "stp_1", "sent": 320, "opened": 180}
],
"step_creation_methods": [...],
"sender_distribution": [...]
}
}

Encontrará el esquema completo en /api/v1/docs, bajo SequenceAnalyticsResponse.


Eliminar (archivar)

DELETE /sequences/{sequence_id}

Realiza una eliminación temporal de una secuencia estableciendo is_archived = true. Las secuencias ya archivadas devuelven 400. Las secuencias en ciertos estados no terminales no pueden archivarse y devuelven 409.

Ejemplo

Ventana de terminal
curl -X DELETE "https://be.graph8.com/api/v1/sequences/seq_abc" \
-H "Authorization: Bearer $API_KEY"

Errores

EstadoSignificado
400La secuencia ya está archivada
404Secuencia no encontrada
409La secuencia no puede archivarse en su estado actual