Sincronización de audiencias
Las sincronizaciones de audiencias envían una audiencia de graph8 (lista de contactos) a una plataforma publicitaria y la mantienen actualizada de forma periódica. graph8 es compatible con cuatro plataformas: Meta (audiencias personalizadas de Facebook/Instagram), LinkedIn (Matched Audiences), Google Ads (Customer Match) y X (Tailored Audiences).
Cada configuración de sincronización tiene un modo:
mirror: mantiene la audiencia de la plataforma sincronizada exactamente con la lista de origen (agrega nuevos miembros y elimina los que ya no están).append_only: solo agrega nuevos miembros; nunca elimina.
Un proceso ejecuta cada sincronización según su refresh_cadence_hours. También puede activar una sincronización de forma manual.
| Endpoint | Método | Descripción |
|---|---|---|
/audience-syncs | GET | Lista todas las configuraciones de sincronización de la organización |
/audience-syncs | POST | Crea una nueva configuración de sincronización |
/audience-syncs/{id} | GET | Obtiene una configuración de sincronización individual |
/audience-syncs/{id} | PATCH | Actualiza una configuración de sincronización |
/audience-syncs/{id} | DELETE | Eliminación lógica de una configuración de sincronización |
/audience-syncs/{id}/trigger | POST | Activa manualmente una ejecución de sincronización |
/audience-syncs/{id}/runs | GET | Lista las ejecuciones de sincronización recientes |
/audience-syncs/{id}/errors | GET | Lista únicamente las ejecuciones de sincronización fallidas |
Para esquemas en formato legible por máquina, consulte la documentación interactiva de la API.
Listar sincronizaciones de audiencias
GET /audience-syncs
Devuelve todas las configuraciones de sincronización de la organización autenticada.
Ejemplo
curl "https://be.graph8.com/api/v1/audience-syncs" \ -H "Authorization: Bearer $API_KEY"response = requests.get( f"{BASE_URL}/audience-syncs", headers=HEADERS,)configs = response.json()["data"]Respuesta
{ "data": [ { "id": 12, "audience_id": 5, "platform": "meta", "platform_audience_name": "Q2 Outbound - Mirror", "mode": "mirror", "refresh_cadence_hours": 24, "is_active": true, "status": "active", "last_sync_at": "2026-04-15T08:00:00Z", "created_at": "2026-04-01T10:00:00Z" } ]}Crear sincronización de audiencia
POST /audience-syncs
Crea una nueva configuración de sincronización. Devuelve 409 Conflict si ya existe una configuración para la misma combinación de audience_id + platform.
Cuerpo de la solicitud
| Campo | Tipo | Requerido | Descripción |
|---|---|---|---|
audience_id | integer | Sí | ID de la lista de origen (debe ser > 0) |
platform | string | Sí | Uno de meta, linkedin, google, x |
platform_audience_name | string | No | Nombre visible en la plataforma publicitaria (máx. 255) |
mode | string | No | mirror (predeterminado) o append_only |
refresh_cadence_hours | integer | No | 0-720, predeterminado 24 |
platform_config | object | No | Configuración específica de la plataforma (p. ej., ID de cuenta publicitaria, alcances OAuth) |
suppression_list_ids | integer[] | No | Listas cuyos miembros deben excluirse |
Ejemplo
curl -X POST "https://be.graph8.com/api/v1/audience-syncs" \ -H "Authorization: Bearer $API_KEY" \ -H "Content-Type: application/json" \ -d '{ "audience_id": 5, "platform": "meta", "platform_audience_name": "Q2 Outbound", "mode": "mirror", "refresh_cadence_hours": 24, "platform_config": {"ad_account_id": "act_1234567890"} }'response = requests.post( f"{BASE_URL}/audience-syncs", headers=HEADERS, json={ "audience_id": 5, "platform": "meta", "platform_audience_name": "Q2 Outbound", "mode": "mirror", "refresh_cadence_hours": 24, "platform_config": {"ad_account_id": "act_1234567890"}, },)Respuesta 201 Created
Devuelve la misma estructura que un elemento de la lista.
Errores
| Estado | Significado |
|---|---|
409 | Ya existe una configuración de sincronización para esta combinación de audiencia + plataforma |
422 | platform no está en el conjunto permitido, o mode no es válido |
Obtener sincronización de audiencia
GET /audience-syncs/{config_id}
Devuelve una configuración de sincronización individual por ID.
Ejemplo
curl "https://be.graph8.com/api/v1/audience-syncs/12" \ -H "Authorization: Bearer $API_KEY"Errores
| Estado | Significado |
|---|---|
404 | Configuración de sincronización no encontrada |
Actualizar sincronización de audiencia
PATCH /audience-syncs/{config_id}
Actualización parcial. Envíe únicamente los campos que desea modificar.
Cuerpo de la solicitud
| Campo | Tipo | Descripción |
|---|---|---|
mode | string | mirror o append_only |
refresh_cadence_hours | integer | 0-720 |
is_active | boolean | Pausar o reanudar sin eliminar |
suppression_list_ids | integer[] | Reemplaza el conjunto de listas de supresión |
Ejemplo
curl -X PATCH "https://be.graph8.com/api/v1/audience-syncs/12" \ -H "Authorization: Bearer $API_KEY" \ -H "Content-Type: application/json" \ -d '{"is_active": false}'Eliminar sincronización de audiencia
DELETE /audience-syncs/{config_id}
Eliminación lógica. La audiencia no se elimina de la plataforma publicitaria; graph8 simplemente deja de sincronizarla.
Respuesta
{ "data": { "status": "deleted", "id": 12 } }Activar sincronización de audiencia
POST /audience-syncs/{config_id}/trigger
Ejecuta la sincronización de inmediato, fuera de su cadencia programada. Devuelve el resultado de la sincronización (recuentos de miembros agregados y eliminados).
Ejemplo
curl -X POST "https://be.graph8.com/api/v1/audience-syncs/12/trigger" \ -H "Authorization: Bearer $API_KEY"Errores
| Estado | Significado |
|---|---|
500 | La plataforma publicitaria subyacente devolvió un error. Consulte /runs o /errors para ver el mensaje |
Listar ejecuciones de sincronización
GET /audience-syncs/{config_id}/runs
Devuelve las ejecuciones recientes de una configuración (tanto exitosas como fallidas).
Parámetros de consulta
| Parámetro | Tipo | Predeterminado | Descripción |
|---|---|---|---|
limit | integer | 20 | Máximo de ejecuciones a devolver (1-100) |
Respuesta
{ "data": [ { "id": 4521, "started_at": "2026-04-15T08:00:00Z", "finished_at": "2026-04-15T08:00:14Z", "status": "success", "members_added": 12, "members_removed": 3, "total_members": 1450, "error_message": null } ]}Listar errores de sincronización
GET /audience-syncs/{config_id}/errors
Misma estructura que /runs, filtrada por status = "failed". Use este endpoint para mostrar fallas en su panel.
Parámetros de consulta
| Parámetro | Tipo | Predeterminado | Descripción |
|---|---|---|---|
limit | integer | 20 | Máximo de errores a devolver (1-100) |
Respuesta
{ "data": [ { "id": 4520, "started_at": "2026-04-15T07:30:00Z", "error_message": "Meta API: invalid access token", "details": { "config_id": 12, "status": "failed" } } ]}