Listas de contatos
Gerencie as listas de inscritos usadas por campanhas e formulários de inscrição.
Criar uma lista de contatos
Cria uma lista de contatos vazia.
/audiencesRequer uma chave de API com escopo full. Adicione pessoas com Adicionar um inscrito ou passando o ID da lista em audiences ao criar um contato. Dispara um evento audience.created. Consulte Listas de contatos.
Parâmetros do corpo
namestringobrigatórioNewsletter. Deve ser único no workspace.visibilitystringpadrão: privatepublic mostra a lista na página de gerenciamento de inscrições para todos; private, apenas para as pessoas inscritas nela.public_namestring | nullnull, aparece name.public_descriptionstring | nulldouble_opt_inboolean | objecttrue ou false, ou um objeto com qualquer um destes campos: enabled, redirect_url (uma URL http(s) para onde as pessoas vão depois de confirmar, ou null) e email. email aceita from, reply_to, subject, design (default ou custom), heading, body, button_label e footer. Os campos que você omitir mantêm o valor armazenado. Para ativá-lo, é preciso um endereço from em um domínio de envio verificado. Consulte Double opt-in.
confirmation_emailboolean | objecttrue ou false, ou um objeto com enabled e email, que aceita os mesmos campos acima e também button_url.unengagedobjectRetorno
Retorna 201 com a nova lista de contatos, incluindo as configurações dela, conforme descrito em Obter uma lista de contatos:
objectstringaudience.idstringnamestringtokenstringvisibilitystringpublic ou 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"
}
}Obter uma lista de contatos
Obtém uma lista de contatos com as configurações, as contagens e o token público.
/audiences/{id}Requer uma chave de API com escopo full.
Parâmetros de caminho
idstringobrigatórioaud_…) ou o nome exato dela, codificado para URL.Retorno
Retorna o objeto da lista de contatos.
objectstringaudience.idstringnamestringtokenstringvisibilitystringpublic ou private. As listas públicas aparecem na página de gerenciamento de inscrições para todos; as privadas, apenas para as pessoas inscritas nelas.public_namestring | nullnull para mostrar name.public_descriptionstring | nulldouble_opt_inobjectenabled, redirect_url (para onde as pessoas vão depois de confirmar, ou null) e email, o e-mail de double opt-in, com from, reply_to, subject, design (default ou custom), heading, body, button_label, footer e source (o MJML de um design personalizado, ou null; as listagens o omitem). Os campos que você nunca definiu contêm os valores padrão.
confirmation_emailobjectenabled e email, o e-mail de confirmação, com os mesmos campos acima e também button_url.
unengagedobjectexclude (se as campanhas deixam de fora os inscritos não engajados) e days (o período, 365 por padrão).archivedbooleanarchived_at contém o horário, ou null.subscribers_countintegerusageobjectused (a mesma contagem), limit (o número máximo de inscritos que uma lista pode ter no seu plano, ou null se não houver limite) e plan. Consulte Limites.
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"
}Atualizar uma lista de contatos
Renomeia uma lista de contatos ou altera as configurações dela.
/audiences/{id}Requer uma chave de API com escopo full. Envie apenas os campos que você quer alterar. O ID, o token e os inscritos não mudam. Dispara um evento audience.updated.
Parâmetros de caminho
idstringobrigatórioParâmetros do corpo
namestringvisibilitystringpublic mostra a lista na página de gerenciamento de inscrições para todos; private, apenas para as pessoas inscritas nela.public_namestring | nullnull, aparece name.public_descriptionstring | nulldouble_opt_inboolean | objecttrue ou false, ou um objeto com qualquer um destes campos: enabled, redirect_url (uma URL http(s) para onde as pessoas vão depois de confirmar, ou null) e email. email aceita from, reply_to, subject, design (default ou custom), heading, body, button_label e footer. Os campos que você omitir mantêm o valor armazenado. Para ativá-lo, é preciso um endereço from em um domínio de envio verificado. Consulte Double opt-in.
confirmation_emailboolean | objecttrue ou false, ou um objeto com enabled e email, que aceita os mesmos campos acima e também button_url.unengagedobjectarchivedbooleanDefinir um design MJML personalizado com email.source faz parte da fase alfa do MJML e retorna 403 com error: "mjml_alpha" para chaves de API.
Retorno
Retorna a lista de contatos com as configurações dela, como em Obter uma lista de contatos. Nesta resposta, subscribers_count é sempre 0, e as contagens ficam de fora; use Obter uma lista de contatos para consultá-las. Configurações inválidas retornam 422 com um 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 contatos
Retorna uma página de listas de contatos, das mais recentes para as mais antigas. As listas arquivadas ficam de fora, a menos que você as peça.
/audiencesRequer uma chave de API com escopo full. Os itens da listagem não incluem o token da lista; use Obter uma lista de contatos para obtê-lo.
Parâmetros de consulta
pageintegerpadrão: 1limitintegerpadrão: 10searchstringarchivedstringpadrão: falsefalse para as listas ativas, true apenas para as arquivadas, all para as duas.visibilitystringpublic ou private para listar apenas essas.matchstringpadrão: allall ou or. Como os filtros abaixo se combinam.orderstringname, public_name, visibility, subscribers_count ou created_at.directionstringasc ou desc.Filtros
Adicione filtros no formato key.condition=value, por exemplo name.contains=news. Consulte Filtragem.
| Chave | Tipo |
|---|---|
name |
string |
public_name |
string |
visibility |
enum: public, private |
subscribers_count |
number |
created_at |
date |
Retorno
dataobject[]object, id, name, as configurações (visibility, public_name, public_description, double_opt_in, confirmation_email, unengaged, archived, archived_at), subscribers_count, usage, created_at e updated_at. Consulte Obter uma lista de contatos. Os objetos email das listagens não incluem source.total_recordsintegerarchived.next_page_urlstring | nullnull. Consulte Paginação.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
}Mesclar listas de contatos
Copia os inscritos de outras listas de contatos para esta.
/audiences/{id}/mergeRequer uma chave de API com escopo full. As pessoas que já estão na lista de destino mantêm o status que têm nela, então ninguém que se descadastrou é inscrito de novo. Uma pessoa que está em várias das listas mescladas entra com Subscribed ativado quando está inscrita em pelo menos uma delas. Com delete_sources, as listas mescladas são excluídas em seguida, e as campanhas que ainda não terminaram de ser enviadas (rascunhos, campanhas agendadas, na fila e em envio, e testes A/B aguardando o vencedor) passam a ser enviadas à lista de destino. Se uma dessas campanhas incluía uma lista mesclada e excluía outra, a lista de destino continua incluída. Os segmentos que têm uma lista apagada como origem, ou uma regra sobre ela, passam a usar a lista de destino, assim como os gatilhos, as etapas, as condições e as condições de saída de automações que a mencionam. Isso também vale para os formulários que adicionam pessoas a ela ou a oferecem como opção, os links de double opt-in que ainda não foram confirmados e as execuções de automações que aguardam uma condição sobre ela. Cada exclusão dispara audience.deleted.
A mesclagem não dispara eventos subscriber.*, não inicia automações e não envia e-mails de double opt-in nem de confirmação. Se os novos inscritos fizerem a lista de destino ultrapassar o limite de inscritos do seu plano, nada é mesclado e a requisição retorna 422 com o seu usage. Uma entrada inválida, como mesclar uma lista nela mesma, também retorna 422. Consulte Mesclar listas.
Parâmetros de caminho
idstringobrigatórioParâmetros do corpo
source_idsstring[]obrigatóriodelete_sourcesbooleanpadrão: falseRetorno
objectstringaudience_merge.audienceobjectobject, id, name e o novo subscribers_count dela.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."]
}
}Atualizar listas de contatos em massa
Arquiva, desarquiva ou exclui várias listas de contatos de uma vez.
/audiences/bulkRequer uma chave de API com escopo full. Todos os IDs devem pertencer ao workspace; caso contrário, nada é alterado e a requisição retorna 404 com os IDs ausentes em missing. Arquivar e desarquivar disparam audience.updated; excluir dispara audience.deleted e remove os inscritos das listas, como Excluir uma lista de contatos. Consulte Arquivar uma lista.
Parâmetros do corpo
actionstringobrigatórioarchive, unarchive ou delete.idsstring[]obrigatórioRetorno
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"]
}Excluir uma lista de contatos
Exclui permanentemente uma lista de contatos e remove todas as pessoas dela.
/audiences/{id}Requer uma chave de API com escopo full. As participações de inscritos na lista são excluídas com ela, mas os contatos continuam no seu workspace e nas outras listas deles. A URL de inscrição hospedada da lista para de funcionar. Dispara um evento audience.deleted. Nenhum evento subscriber.deleted é enviado para as participações removidas.
Parâmetros de caminho
idstringobrigatórioRetorno
objectstringaudience.idstringnamestringdeletedbooleantrue.{
"object": "audience",
"id": "aud_4KOlh9t2uw5od4qypqCtyrZyDq2",
"name": "Customers",
"deleted": true
}{
"error": "Audience not found"
}