Listas de contactos
Gestiona las listas de suscriptores que usan las campañas y los formularios de suscripción.
Crear una lista de contactos
Crea una lista de contactos vacía.
/audiencesRequiere una clave de API full. Añade personas con Añadir un suscriptor o pasando el ID de la lista en audiences al crear un contacto. Dispara un evento audience.created. Consulta Listas de contactos.
Parámetros del cuerpo
namestringobligatorioNewsletter. Debe ser único en el espacio de trabajo.visibilitystringpor defecto: privatepublic muestra la lista a todo el mundo en la página de gestión de suscripciones; private, solo a las personas suscritas a ella.public_namestring | nullnull se muestra name.public_descriptionstring | nulldouble_opt_inboolean | objecttrue o false, o un objeto con cualquiera de estos campos: enabled, redirect_url (una URL http(s) a la que van las personas después de confirmar, o null) y email. email acepta from, reply_to, subject, design (default o custom), heading, body, button_label y footer. Los campos que omites conservan su valor guardado. Para activarlo hace falta una dirección from de un dominio de envío verificado. Consulta Doble opt-in.
confirmation_emailboolean | objecttrue o false, o un objeto con enabled y email, que acepta los mismos campos que el anterior más button_url.unengagedobjectDevuelve
Devuelve 201 con la nueva lista, incluida su configuración, como se describe en Obtener una lista de contactos:
objectstringaudience.idstringnamestringtokenstringvisibilitystringpublic o private.created_atstringupdated_atstring{
"object": "audience",
"id": "aud_4KbFmQPy1feMCGAY8F8pAhiZ1u2",
"name": "Newsletter",
"token": "4KXUJdXRVlVgbkWQm4GHLy8BleP",
"visibility": "private",
"public_name": null,
"public_description": null,
"double_opt_in": {
"enabled": false,
"redirect_url": null,
"email": {
"from": null,
"reply_to": null,
"subject": "Confirm your subscription to {{audience_name}}",
"design": "default",
"heading": "Please confirm your subscription",
"body": "Hi {{first_name|\"there\"}},\n\nYou asked to join {{audience_name}}. Confirm your email address to start getting our emails.",
"button_label": "Confirm subscription",
"footer": "Button not working? Open this link: <a href=\"{{confirm_url}}\">{{confirm_url}}</a>\n\nIf you did not ask to subscribe, ignore this email. You will not be added unless you confirm.",
"source": null
}
},
"confirmation_email": {
"enabled": false,
"email": {
"from": null,
"reply_to": null,
"subject": "You're subscribed to {{audience_name}}",
"design": "default",
"heading": "You're subscribed",
"body": "Hi {{first_name|\"there\"}},\n\nThanks for joining {{audience_name}}. You will hear from us soon.",
"button_label": "",
"button_url": "",
"footer": "You are getting this email because you subscribed to {{audience_name}}. <a href=\"{{manage_subscriptions_url}}\">Manage subscriptions</a>",
"source": null
}
},
"unengaged": { "exclude": false, "days": 365 },
"archived": false,
"archived_at": null,
"subscribers_count": 0,
"created_at": "2026-10-01T10:02:44.613207Z",
"updated_at": "2026-10-01T10:02:44.613207Z"
}{
"error": "Audience with this name already exists",
"existing": {
"object": "audience",
"id": "aud_4KbFmQPy1feMCGAY8F8pAhiZ1u2",
"name": "Newsletter",
"token": "4KXUJdXRVlVgbkWQm4GHLy8BleP",
"subscribers_count": 0,
"created_at": "2026-10-01T10:02:44.000000Z",
"updated_at": "2026-10-01T10:02:44.000000Z"
}
}Obtener una lista de contactos
Obtiene una lista de contactos con su configuración, sus recuentos y su token público.
/audiences/{id}Requiere una clave de API full.
Parámetros de ruta
idstringobligatorioaud_…) o su nombre exacto, codificado para URL.Devuelve
Devuelve el objeto de lista de contactos.
objectstringaudience.idstringnamestringtokenstringvisibilitystringpublic o private. Las listas públicas aparecen para todo el mundo en la página de gestión de suscripciones; las privadas, solo para las personas suscritas a ellas.public_namestring | nullnull para mostrar name.public_descriptionstring | nulldouble_opt_inobjectenabled, redirect_url (adónde van las personas después de confirmar, o null) y email, el email de doble opt-in, con from, reply_to, subject, design (default o custom), heading, body, button_label, footer y source (el MJML de un diseño personalizado, o null; los listados lo omiten). Los campos que nunca has configurado contienen los valores por defecto.
confirmation_emailobjectenabled y email, el email de confirmación, con los mismos campos que el anterior más button_url.
unengagedobjectexclude (si las campañas omiten a los suscriptores sin interacción) y days (el periodo, 365 por defecto).archivedbooleanarchived_at contiene la fecha y hora, o null.subscribers_countintegerusageobjectused (el mismo número), limit (el número máximo de suscriptores que puede tener una lista en tu plan, o null si no hay límite) y plan. Consulta Límites.
unengaged_countintegerpending_confirmations_countintegercreated_atstringupdated_atstring{
"object": "audience",
"id": "aud_4KbFmQPy1feMCGAY8F8pAhiZ1u2",
"name": "Newsletter",
"visibility": "public",
"public_name": "Monthly newsletter",
"public_description": "Product news and tips, once a month.",
"double_opt_in": {
"enabled": true,
"redirect_url": null,
"email": {
"from": "News <news@example.com>",
"reply_to": null,
"subject": "Confirm your subscription to {{audience_name}}",
"design": "default",
"heading": "Please confirm your subscription",
"body": "Hi {{first_name|\"there\"}},\n\nYou asked to join {{audience_name}}. Confirm your email address to start getting our emails.",
"button_label": "Confirm subscription",
"footer": "Button not working? Open this link: <a href=\"{{confirm_url}}\">{{confirm_url}}</a>\n\nIf you did not ask to subscribe, ignore this email. You will not be added unless you confirm.",
"source": null
}
},
"confirmation_email": {
"enabled": false,
"email": {
"from": null,
"reply_to": null,
"subject": "You're subscribed to {{audience_name}}",
"design": "default",
"heading": "You're subscribed",
"body": "Hi {{first_name|\"there\"}},\n\nThanks for joining {{audience_name}}. You will hear from us soon.",
"button_label": "",
"footer": "You are getting this email because you subscribed to {{audience_name}}. <a href=\"{{manage_subscriptions_url}}\">Manage subscriptions</a>",
"button_url": "",
"source": null
}
},
"unengaged": { "exclude": true, "days": 365 },
"archived": false,
"archived_at": null,
"token": "4KXUJdXRVlVgbkWQm4GHLy8BleP",
"subscribers_count": 1284,
"unengaged_count": 212,
"pending_confirmations_count": 3,
"usage": {
"used": 1284,
"limit": 50000,
"plan": "pro"
},
"created_at": "2026-10-01T10:02:44.000000Z",
"updated_at": "2026-10-01T10:02:44.000000Z"
}{
"error": "Audience not found"
}Actualizar una lista de contactos
Cambia el nombre de una lista de contactos o su configuración.
/audiences/{id}Requiere una clave de API full. Envía solo los campos que quieras cambiar. El ID, el token y los suscriptores no cambian. Dispara un evento audience.updated.
Parámetros de ruta
idstringobligatorioParámetros del cuerpo
namestringvisibilitystringpublic muestra la lista a todo el mundo en la página de gestión de suscripciones; private, solo a las personas suscritas a ella.public_namestring | nullnull se muestra name.public_descriptionstring | nulldouble_opt_inboolean | objecttrue o false, o un objeto con cualquiera de estos campos: enabled, redirect_url (una URL http(s) a la que van las personas después de confirmar, o null) y email. email acepta from, reply_to, subject, design (default o custom), heading, body, button_label y footer. Los campos que omites conservan su valor guardado. Para activarlo hace falta una dirección from de un dominio de envío verificado. Consulta Doble opt-in.
confirmation_emailboolean | objecttrue o false, o un objeto con enabled y email, que acepta los mismos campos que el anterior más button_url.unengagedobjectarchivedbooleanConfigurar un diseño MJML personalizado con email.source forma parte de la fase alfa de MJML y devuelve 403 con error: "mjml_alpha" para las claves de API.
Devuelve
Devuelve la lista con su configuración, como en Obtener una lista de contactos. En esta respuesta, subscribers_count siempre es 0 y no se incluyen los recuentos; para obtenerlos, usa Obtener una lista de contactos. Una configuración no válida devuelve 422 con un objeto errors indexado por campo, como double_opt_in.email.from.
{
"object": "audience",
"id": "aud_4KbFmQPy1feMCGAY8F8pAhiZ1u2",
"name": "Weekly newsletter",
"token": "4KXUJdXRVlVgbkWQm4GHLy8BleP",
"visibility": "public",
"public_name": "Weekly newsletter",
"public_description": null,
"double_opt_in": {
"enabled": true,
"redirect_url": null,
"email": {
"from": "News <news@example.com>",
"reply_to": null,
"subject": "Confirm your subscription to {{audience_name}}",
"design": "default",
"heading": "Please confirm your subscription",
"body": "Hi {{first_name|\"there\"}},\n\nYou asked to join {{audience_name}}. Confirm your email address to start getting our emails.",
"button_label": "Confirm subscription",
"footer": "Button not working? Open this link: <a href=\"{{confirm_url}}\">{{confirm_url}}</a>\n\nIf you did not ask to subscribe, ignore this email. You will not be added unless you confirm.",
"source": null
}
},
"confirmation_email": {
"enabled": false,
"email": {
"from": null,
"reply_to": null,
"subject": "You're subscribed to {{audience_name}}",
"design": "default",
"heading": "You're subscribed",
"body": "Hi {{first_name|\"there\"}},\n\nThanks for joining {{audience_name}}. You will hear from us soon.",
"button_label": "",
"button_url": "",
"footer": "You are getting this email because you subscribed to {{audience_name}}. <a href=\"{{manage_subscriptions_url}}\">Manage subscriptions</a>",
"source": null
}
},
"unengaged": {
"exclude": false,
"days": 365
},
"archived": false,
"archived_at": null,
"subscribers_count": 0,
"created_at": "2026-10-01T10:02:44.000000Z",
"updated_at": "2026-10-01T14:31:09.000000Z"
}{
"error": "No valid fields provided for update. Provide at least one of: name, visibility, public_name, public_description, double_opt_in, confirmation_email, unengaged, archived"
}{
"message": "Validation failed.",
"errors": {
"double_opt_in.email.from": ["Use an address on a verified sending domain of this workspace."]
}
}{
"error": "Audience not found"
}{
"error": "Another audience with this name already exists"
}Listar listas de contactos
Devuelve una página de listas de contactos, de la más reciente a la más antigua. Las listas archivadas se omiten, salvo que las pidas.
/audiencesRequiere una clave de API full. Los elementos del listado no incluyen el token de la lista; para obtenerlo, usa Obtener una lista de contactos.
Parámetros de consulta
pageintegerpor defecto: 1limitintegerpor defecto: 10searchstringarchivedstringpor defecto: falsefalse para las listas activas, true solo para las archivadas y all para ambas.visibilitystringpublic o private para listar solo esas.matchstringpor defecto: allall u or. Cómo se combinan los filtros de abajo.orderstringname, public_name, visibility, subscribers_count o created_at.directionstringasc o desc.Filtros
Añade filtros con el formato key.condition=value, por ejemplo name.contains=news. Consulta Filtrado.
| Clave | Tipo |
|---|---|
name |
cadena |
public_name |
cadena |
visibility |
enumeración: public, private |
subscribers_count |
número |
created_at |
fecha |
Devuelve
dataobject[]object, id, name, la configuración (visibility, public_name, public_description, double_opt_in, confirmation_email, unengaged, archived, archived_at), subscribers_count, usage, created_at y updated_at. Consulta Obtener una lista de contactos. En los listados, los objetos email omiten source.total_recordsintegerarchived.next_page_urlstring | nullnull. Consulta Paginación.previous_page_urlstring | nullnull.{
"data": [
{
"object": "audience",
"id": "aud_4KbFmQPy1feMCGAY8F8pAhiZ1u2",
"name": "Newsletter",
"visibility": "public",
"public_name": "Monthly newsletter",
"public_description": "Product news and tips, once a month.",
"double_opt_in": {
"enabled": true,
"redirect_url": null,
"email": {
"from": "News <news@example.com>",
"reply_to": null,
"subject": "Confirm your subscription to {{audience_name}}",
"design": "default",
"heading": "Please confirm your subscription",
"body": "Hi {{first_name|\"there\"}},\n\nYou asked to join {{audience_name}}. Confirm your email address to start getting our emails.",
"button_label": "Confirm subscription",
"footer": "Button not working? Open this link: <a href=\"{{confirm_url}}\">{{confirm_url}}</a>\n\nIf you did not ask to subscribe, ignore this email. You will not be added unless you confirm."
}
},
"confirmation_email": {
"enabled": false,
"email": {
"from": "News <news@example.com>",
"reply_to": null,
"subject": "You're subscribed to {{audience_name}}",
"design": "default",
"heading": "You're subscribed",
"body": "Hi {{first_name|\"there\"}},\n\nThanks for joining {{audience_name}}. You will hear from us soon.",
"button_label": "",
"footer": "You are getting this email because you subscribed to {{audience_name}}. <a href=\"{{manage_subscriptions_url}}\">Manage subscriptions</a>",
"button_url": ""
}
},
"unengaged": {
"exclude": false,
"days": 365
},
"archived": false,
"archived_at": null,
"subscribers_count": 1284,
"usage": {
"used": 1284,
"limit": 50000,
"plan": "pro"
},
"created_at": "2026-10-01T10:02:44.000000Z",
"updated_at": "2026-10-01T10:02:44.000000Z"
},
{
"object": "audience",
"id": "aud_4KOlh9t2uw5od4qypqCtyrZyDq2",
"name": "Customers",
"visibility": "private",
"public_name": null,
"public_description": null,
"double_opt_in": {
"enabled": false,
"redirect_url": null,
"email": {
"from": null,
"reply_to": null,
"subject": "Confirm your subscription to {{audience_name}}",
"design": "default",
"heading": "Please confirm your subscription",
"body": "Hi {{first_name|\"there\"}},\n\nYou asked to join {{audience_name}}. Confirm your email address to start getting our emails.",
"button_label": "Confirm subscription",
"footer": "Button not working? Open this link: <a href=\"{{confirm_url}}\">{{confirm_url}}</a>\n\nIf you did not ask to subscribe, ignore this email. You will not be added unless you confirm."
}
},
"confirmation_email": {
"enabled": false,
"email": {
"from": null,
"reply_to": null,
"subject": "You're subscribed to {{audience_name}}",
"design": "default",
"heading": "You're subscribed",
"body": "Hi {{first_name|\"there\"}},\n\nThanks for joining {{audience_name}}. You will hear from us soon.",
"button_label": "",
"footer": "You are getting this email because you subscribed to {{audience_name}}. <a href=\"{{manage_subscriptions_url}}\">Manage subscriptions</a>",
"button_url": ""
}
},
"unengaged": {
"exclude": false,
"days": 365
},
"archived": false,
"archived_at": null,
"subscribers_count": 312,
"usage": {
"used": 312,
"limit": 50000,
"plan": "pro"
},
"created_at": "2026-09-20T16:45:10.000000Z",
"updated_at": "2026-09-20T16:45:10.000000Z"
}
],
"total_records": 2,
"next_page_url": null,
"previous_page_url": null
}Fusionar listas de contactos
Copia los suscriptores de otras listas de contactos en esta.
/audiences/{id}/mergeRequiere una clave de API full. Las personas que ya están en la lista de destino conservan su estado en ella, así que nadie que se haya dado de baja se vuelve a suscribir. Una persona que está en varias de las listas fusionadas se une con Subscribed activado si al menos una de ellas la tiene suscrita. Con delete_sources, las listas fusionadas se eliminan después, y las campañas que todavía no han terminado de enviarse (borradores, campañas programadas, en cola y en proceso de envío, y pruebas A/B que esperan su versión ganadora) pasan a enviarse a la lista de destino. Si una de esas campañas incluía una lista fusionada y excluía otra, la lista de destino sigue incluida. Los segmentos que tienen como origen una lista eliminada, o una regla sobre ella, pasan a usar la lista de destino, y lo mismo ocurre con los disparadores, los pasos, las condiciones y las condiciones de salida de las automatizaciones que la mencionan. También ocurre con los formularios que añaden personas a ella o la ofrecen como opción, con los enlaces de doble opt-in que todavía no se han confirmado y con las ejecuciones de automatizaciones que esperan una condición sobre ella. Cada eliminación dispara audience.deleted.
La fusión no dispara eventos subscriber.*, no inicia automatizaciones y no envía emails de doble opt-in ni de confirmación. Si los nuevos suscriptores hicieran que la lista de destino superase el límite de suscriptores de tu plan, no se fusiona nada y la petición devuelve 422 con tu usage. Una entrada no válida, como fusionar una lista consigo misma, también devuelve 422. Consulta Fusionar listas de contactos.
Parámetros de ruta
idstringobligatorioParámetros del cuerpo
source_idsstring[]obligatoriodelete_sourcesbooleanpor defecto: falseDevuelve
objectstringaudience_merge.audienceobjectobject, id, name y su nuevo subscribers_count.addedintegeralready_in_audienceintegerdeleted_source_idsstring[]{
"object": "audience_merge",
"audience": {
"object": "audience",
"id": "aud_4KbFmQPy1feMCGAY8F8pAhiZ1u2",
"name": "Newsletter",
"subscribers_count": 1503
},
"added": 219,
"already_in_audience": 93,
"deleted_source_ids": ["aud_4KOlh9t2uw5od4qypqCtyrZyDq2"]
}{
"error": "One or more audiences were not found",
"missing": ["aud_4KOlh9t2uw5od4qypqCtyrZyDq2"]
}{
"message": "Validation failed.",
"errors": {
"source_ids": ["An audience cannot be merged into itself."]
}
}Actualizar listas de contactos de forma masiva
Archiva, desarchiva o elimina varias listas de contactos a la vez.
/audiences/bulkRequiere una clave de API full. Todos los ID deben pertenecer al espacio de trabajo; si no, no se cambia nada y la petición devuelve 404 con los ID que faltan en missing. Archivar y desarchivar disparan audience.updated; eliminar dispara audience.deleted y elimina los suscriptores de las listas, como Eliminar una lista de contactos. Consulta Archivar una lista de contactos.
Parámetros del cuerpo
actionstringobligatorioarchive, unarchive o delete.idsstring[]obligatorioDevuelve
objectstringaudience_bulk.actionstringprocessedintegerchangedintegeridsstring[]{
"object": "audience_bulk",
"action": "archive",
"processed": 2,
"changed": 2,
"ids": ["aud_4KbFmQPy1feMCGAY8F8pAhiZ1u2", "aud_4KOlh9t2uw5od4qypqCtyrZyDq2"]
}{
"error": "One or more audiences were not found",
"missing": ["aud_4KOlh9t2uw5od4qypqCtyrZyDq2"]
}Eliminar una lista de contactos
Elimina de forma permanente una lista de contactos y quita de ella a todos sus suscriptores.
/audiences/{id}Requiere una clave de API full. Las pertenencias de los suscriptores a la lista se eliminan con ella, pero los contactos siguen en tu espacio de trabajo y en sus otras listas. Su URL de suscripción alojada deja de funcionar. Dispara un evento audience.deleted. No se envían eventos subscriber.deleted por las pertenencias eliminadas.
Parámetros de ruta
idstringobligatorioDevuelve
objectstringaudience.idstringnamestringdeletedbooleantrue.{
"object": "audience",
"id": "aud_4KOlh9t2uw5od4qypqCtyrZyDq2",
"name": "Customers",
"deleted": true
}{
"error": "Audience not found"
}