Campanhas
Listas de contatos, disparos por WhatsApp e e-mail e notificações do app.
O que é
Campanhas é onde a empresa fala com muitos contatos de uma vez. As listas de contatos reúnem o público (clientes, um funil do CRM, uma planilha ou contatos avulsos); a campanha dispara mensagens por WhatsApp (template aprovado) e e-mail para essas listas, na hora ou agendado; e as notificações do app da loja chegam no celular de quem tem o app.
Pela API, tudo o que a tela faz, com as mesmas permissões de quem usa.
O que dá para fazer hoje
- Criar, editar, desativar e reativar listas de contatos e montar o público por clientes, funil do CRM, planilha ou contato avulso.
- Contar o público das listas sem repetir contatos.
- Criar, desativar e reativar campanhas e disparar por WhatsApp e e-mail, na hora, agendado ou como rascunho.
- Acompanhar o desfecho de cada destinatário do disparo.
- Criar, enviar, agendar e cancelar notificações do app da loja, com envio de teste.
Ciclo do disparo
| Situação | Significado |
|---|---|
draft | Só a configuração, sem envio |
pending ou scheduled | Na fila, agora ou no horário |
| Destinatários | Pendente, enviado, entregue, lido, falhou ou descadastrado |
Importante
- Disparar e enviar notificação são ações próprias e exigem
campaigns:dispatch. - Toda criação e ação exige
Idempotency-Key. - Quem cancelou a inscrição de marketing é pulado no envio.
- WhatsApp só com template aprovado do número.
Disponibilidade na API
Endpoints de Campanhas
Monte listas de contatos, dispare campanhas por WhatsApp e e-mail e envie notificações do app. Os exemplos abaixo são gerados pelo contrato OpenAPI oficial.
/api/v1/contact-lists
Lista as listas de contatos
Listas ativas com o total de contatos. Exige `campaigns:read` e Campanhas (ver).
Parâmetros
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
searchquery | string | Não | Parte do nome. |
per_pagequery | integer | Não | Itens por página. |
Exemplo de requisição
curl "$MICORE_BASE_URL/contact-lists" \
-H "Authorization: Bearer $MICORE_TOKEN" \
-H "Accept: application/json"Exemplo de resposta JSON
{
"data": [
{
"id": 1,
"name": "string",
"description": null,
"contacts_count": 1,
"audience": {
"whatsapp": 1,
"email": 1
},
"active": true,
"created_at": "2026-10-20T10:00:00-03:00",
"updated_at": "2026-10-20T10:00:00-03:00"
}
],
"links": [],
"meta": []
}Respostas possíveis
/api/v1/contact-lists
Cria uma lista de contatos
Cria a lista só com nome e descrição; o público é montado pelos contatos. Exige `campaigns:write` e Campanhas (criar).
Parâmetros
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
Idempotency-Keyheader | string | Sim | Identificador único da mutação, com 8 a 100 caracteres. O resultado fica reutilizável por 24 horas e a chave não pode ser reutilizada depois de expirar. |
Corpo da requisição
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
name | string | Sim | Até 255 caracteres. |
description | string | null | Não | Até 1000 caracteres. |
Exemplo de requisição
curl -X POST "$MICORE_BASE_URL/contact-lists" \
-H "Authorization: Bearer $MICORE_TOKEN" \
-H "Accept: application/json" \
-H "Idempotency-Key: board-request-0001" \
-H "Content-Type: application/json" \
-d '{"name":"string","description":null}'Exemplo de resposta JSON
{
"data": {
"id": 1,
"name": "string",
"description": null,
"contacts_count": 1,
"audience": {
"whatsapp": 1,
"email": 1
},
"active": true,
"created_at": "2026-10-20T10:00:00-03:00",
"updated_at": "2026-10-20T10:00:00-03:00"
}
}Respostas possíveis
/api/v1/contact-lists/audience-count
Conta o público das listas
Quantos contatos ativos de cada canal (e-mail e WhatsApp) as listas alcançam, sem repetir quem está em mais de uma. Exige `campaigns:read`.
Parâmetros
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
list_ids[]query | array<integer> | Sim | Listas do público. |
Exemplo de requisição
curl "$MICORE_BASE_URL/contact-lists/audience-count" \
-H "Authorization: Bearer $MICORE_TOKEN" \
-H "Accept: application/json"Exemplo de resposta JSON
{
"data": {
"whatsapp": 1,
"email": 1
}
}Respostas possíveis
/api/v1/contact-lists/{list}
Consulta uma lista
Lista ativa com o total de contatos e o público por canal. Exige `campaigns:read`.
Exemplo de requisição
curl "$MICORE_BASE_URL/contact-lists/{list}" \
-H "Authorization: Bearer $MICORE_TOKEN" \
-H "Accept: application/json"Exemplo de resposta JSON
{
"data": {
"id": 1,
"name": "string",
"description": null,
"contacts_count": 1,
"audience": {
"whatsapp": 1,
"email": 1
},
"active": true,
"created_at": "2026-10-20T10:00:00-03:00",
"updated_at": "2026-10-20T10:00:00-03:00"
}
}Respostas possíveis
/api/v1/contact-lists/{list}
Edita uma lista
Edição parcial de nome e descrição; o campo omitido fica como está. Exige `campaigns:write` e Campanhas (editar).
Corpo da requisição
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
name | string | Não | Até 255 caracteres. |
description | string | null | Não | Até 1000 caracteres. |
Exemplo de requisição
curl -X PATCH "$MICORE_BASE_URL/contact-lists/{list}" \
-H "Authorization: Bearer $MICORE_TOKEN" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{"name":"string","description":null}'Exemplo de resposta JSON
{
"data": {
"id": 1,
"name": "string",
"description": null,
"contacts_count": 1,
"audience": {
"whatsapp": 1,
"email": 1
},
"active": true,
"created_at": "2026-10-20T10:00:00-03:00",
"updated_at": "2026-10-20T10:00:00-03:00"
}
}Respostas possíveis
/api/v1/contact-lists/{list}/deactivate
Desativa uma lista
A lista sai da listagem e da escolha de público dos disparos. Exige `campaigns:write` e Campanhas (desabilitar).
Exemplo de requisição
curl -X POST "$MICORE_BASE_URL/contact-lists/{list}/deactivate" \
-H "Authorization: Bearer $MICORE_TOKEN" \
-H "Accept: application/json"Exemplo de resposta JSON
{
"data": {
"id": 1,
"name": "string",
"description": null,
"contacts_count": 1,
"audience": {
"whatsapp": 1,
"email": 1
},
"active": true,
"created_at": "2026-10-20T10:00:00-03:00",
"updated_at": "2026-10-20T10:00:00-03:00"
}
}Respostas possíveis
/api/v1/contact-lists/{list}/contacts
Lista os contatos da lista
Contatos com vínculo ativo, com filtro por canal e busca pelo nome ou identificador. Exige `campaigns:read`.
Parâmetros
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
typequery | string | Não | Canal. |
searchquery | string | Não | Nome, e-mail ou telefone. |
per_pagequery | integer | Não | Itens por página. |
Exemplo de requisição
curl "$MICORE_BASE_URL/contact-lists/{list}/contacts" \
-H "Authorization: Bearer $MICORE_TOKEN" \
-H "Accept: application/json"Exemplo de resposta JSON
{
"data": [
{
"id": 1,
"type": "whatsapp",
"send_id": "string",
"name": null,
"active": true
}
],
"links": [],
"meta": []
}Respostas possíveis
/api/v1/contact-lists/{list}/contacts
Adiciona um contato à lista
Cadastra (ou reativa) o contato pelo canal e valor e soma à lista. E-mail precisa ser válido; WhatsApp, ter dígitos. Exige `campaigns:write` e Campanhas (editar).
Parâmetros
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
Idempotency-Keyheader | string | Sim | Identificador único da mutação, com 8 a 100 caracteres. O resultado fica reutilizável por 24 horas e a chave não pode ser reutilizada depois de expirar. |
Corpo da requisição
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
type | string | Sim | Valores: whatsapp, email. |
value | string | Sim | E-mail ou telefone (com ou sem máscara). |
name | string | Sim | — |
Exemplo de requisição
curl -X POST "$MICORE_BASE_URL/contact-lists/{list}/contacts" \
-H "Authorization: Bearer $MICORE_TOKEN" \
-H "Accept: application/json" \
-H "Idempotency-Key: board-request-0001" \
-H "Content-Type: application/json" \
-d '{"type":"whatsapp","value":"string","name":"string"}'Exemplo de resposta JSON
{
"data": {
"id": 1,
"type": "whatsapp",
"send_id": "string",
"name": null,
"active": true
}
}Respostas possíveis
/api/v1/contact-lists/{list}/contacts/clients
Adiciona os contatos de clientes
Soma à lista os e-mails e WhatsApps ativos dos clientes. Cliente inativo ou sem e-mail e WhatsApp ativo recusa o lote (422). O resumo do vínculo vem em `meta`. Exige `campaigns:write` e Campanhas (editar).
Parâmetros
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
Idempotency-Keyheader | string | Sim | Identificador único da mutação, com 8 a 100 caracteres. O resultado fica reutilizável por 24 horas e a chave não pode ser reutilizada depois de expirar. |
Corpo da requisição
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
client_ids | array<integer> | Sim | — |
Exemplo de requisição
curl -X POST "$MICORE_BASE_URL/contact-lists/{list}/contacts/clients" \
-H "Authorization: Bearer $MICORE_TOKEN" \
-H "Accept: application/json" \
-H "Idempotency-Key: board-request-0001" \
-H "Content-Type: application/json" \
-d '{"client_ids":[1]}'Exemplo de resposta JSON
{
"data": {
"id": 1,
"name": "string",
"description": null,
"contacts_count": 1,
"audience": {
"whatsapp": 1,
"email": 1
},
"active": true,
"created_at": "2026-10-20T10:00:00-03:00",
"updated_at": "2026-10-20T10:00:00-03:00"
},
"meta": {
"added": 1,
"reactivated": 1,
"existing": 1,
"clients": 1
}
}Respostas possíveis
/api/v1/contact-lists/{list}/contacts/crm
Adiciona os contatos de um funil do CRM
Soma à lista os contatos ativos dos clientes com negócio no funil (e na etapa, quando informada). Segmento vazio: 422. Quantos entraram vem em `meta.added`. Exige `campaigns:write` e Campanhas (editar).
Parâmetros
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
Idempotency-Keyheader | string | Sim | Identificador único da mutação, com 8 a 100 caracteres. O resultado fica reutilizável por 24 horas e a chave não pode ser reutilizada depois de expirar. |
Corpo da requisição
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
funnel_id | integer | Sim | — |
stage_id | integer | null | Não | — |
Exemplo de requisição
curl -X POST "$MICORE_BASE_URL/contact-lists/{list}/contacts/crm" \
-H "Authorization: Bearer $MICORE_TOKEN" \
-H "Accept: application/json" \
-H "Idempotency-Key: board-request-0001" \
-H "Content-Type: application/json" \
-d '{"funnel_id":1,"stage_id":1}'Exemplo de resposta JSON
{
"data": {
"id": 1,
"name": "string",
"description": null,
"contacts_count": 1,
"audience": {
"whatsapp": 1,
"email": 1
},
"active": true,
"created_at": "2026-10-20T10:00:00-03:00",
"updated_at": "2026-10-20T10:00:00-03:00"
},
"meta": {
"added": 1
}
}Respostas possíveis
/api/v1/contact-lists/{list}/contacts/import
Importa contatos de um CSV
Arquivo .csv de até 2 MB, com `nome;contato` ou só `contato` por linha (cabeçalho opcional; ponto e vírgula ou vírgula). E-mail é reconhecido pela arroba; telefone precisa de 10 dígitos ou mais. Linhas inválidas são ignoradas; nenhum contato válido: 422. Quantos entraram vem em `meta.imported`. Exige `campaigns:write` e Campanhas (editar).
Parâmetros
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
Idempotency-Keyheader | string | Sim | Identificador único da mutação, com 8 a 100 caracteres. O resultado fica reutilizável por 24 horas e a chave não pode ser reutilizada depois de expirar. |
Corpo da requisição
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
file | string (binary) | Sim | CSV de até 2 MB. |
Exemplo de requisição
curl -X POST "$MICORE_BASE_URL/contact-lists/{list}/contacts/import" \
-H "Authorization: Bearer $MICORE_TOKEN" \
-H "Accept: application/json" \
-H "Idempotency-Key: board-request-0001" \
-H "Content-Type: application/json" \
-d '{"file":"string"}'Exemplo de resposta JSON
{
"data": {
"id": 1,
"name": "string",
"description": null,
"contacts_count": 1,
"audience": {
"whatsapp": 1,
"email": 1
},
"active": true,
"created_at": "2026-10-20T10:00:00-03:00",
"updated_at": "2026-10-20T10:00:00-03:00"
},
"meta": {
"imported": 1
}
}Respostas possíveis
/api/v1/contact-lists/{list}/contacts/{contact}
Tira um contato da lista
O contato continua no cadastro. Exige `campaigns:write` e Campanhas (editar).
Exemplo de requisição
curl -X DELETE "$MICORE_BASE_URL/contact-lists/{list}/contacts/{contact}" \
-H "Authorization: Bearer $MICORE_TOKEN" \
-H "Accept: application/json"Respostas possíveis
/api/v1/marketing-campaigns
Lista as campanhas
Campanhas ativas com os totais de contatos e disparos. Exige `campaigns:read` e Campanhas (ver).
Parâmetros
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
searchquery | string | Não | Parte do nome. |
per_pagequery | integer | Não | Itens por página. |
Exemplo de requisição
curl "$MICORE_BASE_URL/marketing-campaigns" \
-H "Authorization: Bearer $MICORE_TOKEN" \
-H "Accept: application/json"Exemplo de resposta JSON
{
"data": [
{
"id": 1,
"name": "string",
"description": null,
"contacts_count": 1,
"shots_count": 1,
"active": true,
"created_at": "2026-10-20T10:00:00-03:00",
"updated_at": "2026-10-20T10:00:00-03:00"
}
],
"links": [],
"meta": []
}Respostas possíveis
/api/v1/marketing-campaigns
Cria uma campanha
Cria a campanha só com nome e descrição; canais e público pertencem a cada disparo. Exige `campaigns:write` e Campanhas (criar).
Parâmetros
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
Idempotency-Keyheader | string | Sim | Identificador único da mutação, com 8 a 100 caracteres. O resultado fica reutilizável por 24 horas e a chave não pode ser reutilizada depois de expirar. |
Corpo da requisição
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
name | string | Sim | Até 255 caracteres. |
description | string | null | Não | Até 1000 caracteres. |
Exemplo de requisição
curl -X POST "$MICORE_BASE_URL/marketing-campaigns" \
-H "Authorization: Bearer $MICORE_TOKEN" \
-H "Accept: application/json" \
-H "Idempotency-Key: board-request-0001" \
-H "Content-Type: application/json" \
-d '{"name":"string","description":null}'Exemplo de resposta JSON
{
"data": {
"id": 1,
"name": "string",
"description": null,
"contacts_count": 1,
"shots_count": 1,
"active": true,
"created_at": "2026-10-20T10:00:00-03:00",
"updated_at": "2026-10-20T10:00:00-03:00"
}
}Respostas possíveis
/api/v1/marketing-campaigns/channels
Lista os canais de disparo
Números de WhatsApp e caixas de e-mail ativas que podem disparar. Exige `campaigns:read`.
Exemplo de requisição
curl "$MICORE_BASE_URL/marketing-campaigns/channels" \
-H "Authorization: Bearer $MICORE_TOKEN" \
-H "Accept: application/json"Exemplo de resposta JSON
{
"data": {
"whatsapp": [
{
"id": 1,
"name": "string"
}
],
"email": [
{
"id": 1,
"name": "string"
}
]
}
}Respostas possíveis
/api/v1/marketing-campaigns/whatsapp-templates
Lista os templates de WhatsApp do número
Templates aprovados e ativos do número escolhido. Exige `campaigns:read`.
Parâmetros
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
sac_idquery | integer | Sim | Número de WhatsApp (canal). |
Exemplo de requisição
curl "$MICORE_BASE_URL/marketing-campaigns/whatsapp-templates" \
-H "Authorization: Bearer $MICORE_TOKEN" \
-H "Accept: application/json"Exemplo de resposta JSON
{
"data": [
{
"id": 1,
"name": "string",
"language": null
}
]
}Respostas possíveis
/api/v1/marketing-campaigns/whatsapp-templates/{template}/variables
Consulta as variáveis do template
Cabeçalho e corpo com as variáveis ({{1}}, {{2}}...), os exemplos e os campos do cadastro do cliente que podem preenchê-las. Exige `campaigns:read`.
Exemplo de requisição
curl "$MICORE_BASE_URL/marketing-campaigns/whatsapp-templates/{template}/variables" \
-H "Authorization: Bearer $MICORE_TOKEN" \
-H "Accept: application/json"Exemplo de resposta JSON
{
"data": {
"template_id": 1,
"header_text": null,
"header_variable_map": [],
"body_text": null,
"body_examples": [],
"body_variable_map": [],
"field_options": [
[]
]
}
}Respostas possíveis
/api/v1/marketing-campaigns/{campaign}
Consulta uma campanha
Exige `campaigns:read`.
Exemplo de requisição
curl "$MICORE_BASE_URL/marketing-campaigns/{campaign}" \
-H "Authorization: Bearer $MICORE_TOKEN" \
-H "Accept: application/json"Exemplo de resposta JSON
{
"data": {
"id": 1,
"name": "string",
"description": null,
"contacts_count": 1,
"shots_count": 1,
"active": true,
"created_at": "2026-10-20T10:00:00-03:00",
"updated_at": "2026-10-20T10:00:00-03:00"
}
}Respostas possíveis
/api/v1/marketing-campaigns/{campaign}
Edita uma campanha
Edição parcial de nome e descrição. Exige `campaigns:write` e Campanhas (editar).
Corpo da requisição
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
name | string | Não | Até 255 caracteres. |
description | string | null | Não | Até 1000 caracteres. |
Exemplo de requisição
curl -X PATCH "$MICORE_BASE_URL/marketing-campaigns/{campaign}" \
-H "Authorization: Bearer $MICORE_TOKEN" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{"name":"string","description":null}'Exemplo de resposta JSON
{
"data": {
"id": 1,
"name": "string",
"description": null,
"contacts_count": 1,
"shots_count": 1,
"active": true,
"created_at": "2026-10-20T10:00:00-03:00",
"updated_at": "2026-10-20T10:00:00-03:00"
}
}Respostas possíveis
/api/v1/marketing-campaigns/{campaign}/deactivate
Desativa uma campanha
Exige `campaigns:write` e Campanhas (desabilitar).
Exemplo de requisição
curl -X POST "$MICORE_BASE_URL/marketing-campaigns/{campaign}/deactivate" \
-H "Authorization: Bearer $MICORE_TOKEN" \
-H "Accept: application/json"Exemplo de resposta JSON
{
"data": {
"id": 1,
"name": "string",
"description": null,
"contacts_count": 1,
"shots_count": 1,
"active": true,
"created_at": "2026-10-20T10:00:00-03:00",
"updated_at": "2026-10-20T10:00:00-03:00"
}
}Respostas possíveis
/api/v1/marketing-campaigns/{campaign}/contacts
Lista os contatos da campanha
Quem recebeu algum disparo da campanha. Exige `campaigns:read`.
Parâmetros
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
per_pagequery | integer | Não | Itens por página. |
Exemplo de requisição
curl "$MICORE_BASE_URL/marketing-campaigns/{campaign}/contacts" \
-H "Authorization: Bearer $MICORE_TOKEN" \
-H "Accept: application/json"Exemplo de resposta JSON
{
"data": [
{
"id": 1,
"type": "whatsapp",
"send_id": "string",
"name": null,
"active": true
}
],
"links": [],
"meta": []
}Respostas possíveis
/api/v1/marketing-campaigns/{campaign}/contacts/{contact}
Tira um contato da campanha
Exige `campaigns:write` e Campanhas (editar).
Exemplo de requisição
curl -X DELETE "$MICORE_BASE_URL/marketing-campaigns/{campaign}/contacts/{contact}" \
-H "Authorization: Bearer $MICORE_TOKEN" \
-H "Accept: application/json"Respostas possíveis
/api/v1/marketing-campaigns/{campaign}/shots
Lista os disparos da campanha
Do mais recente para o mais antigo, com as listas de origem e o total de destinatários. Exige `campaigns:read`.
Parâmetros
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
per_pagequery | integer | Não | Itens por página. |
Exemplo de requisição
curl "$MICORE_BASE_URL/marketing-campaigns/{campaign}/shots" \
-H "Authorization: Bearer $MICORE_TOKEN" \
-H "Accept: application/json"Exemplo de resposta JSON
{
"data": [
{
"id": 1,
"campaign_id": 1,
"campaign_identifier": null,
"channel_type": "whatsapp",
"status": "string",
"dispatch_mode": "draft",
"scheduled_at": "2026-10-20T10:00:00-03:00",
"whatsapp_template_id": 1,
"email_template_id": 1,
"email_integration_account_id": 1,
"variables": [],
"lists": [
{
"id": 1,
"name": "string"
}
],
"contacts_count": 1,
"created_at": "2026-10-20T10:00:00-03:00"
}
],
"links": [],
"meta": []
}Respostas possíveis
/api/v1/marketing-campaigns/{campaign}/shots
Dispara a campanha
Cria um disparo por canal ativo (WhatsApp e/ou e-mail) com o público das listas: `now` envia já (um envio por contato, na fila), `scheduled` agenda e `draft` só guarda a configuração. WhatsApp exige template aprovado do número escolhido; canal sem template válido ou sem contatos fica de fora, e nenhum canal válido responde 422. Descadastrados de marketing são pulados no envio. Exige `campaigns:dispatch` e Campanhas (editar).
Parâmetros
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
Idempotency-Keyheader | string | Sim | Identificador único da mutação, com 8 a 100 caracteres. O resultado fica reutilizável por 24 horas e a chave não pode ser reutilizada depois de expirar. |
Corpo da requisição
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
channels | object | Sim | — |
list_ids | array<integer> | Sim | — |
dispatch_mode | string | Sim | Valores: draft, now, scheduled. |
scheduled_at | string | null (date-time) | Não | — |
campaign_identifier | string | null | Não | Identificador opcional para relatórios (ex.: utm). Até 100 caracteres. |
Exemplo de requisição
curl -X POST "$MICORE_BASE_URL/marketing-campaigns/{campaign}/shots" \
-H "Authorization: Bearer $MICORE_TOKEN" \
-H "Accept: application/json" \
-H "Idempotency-Key: board-request-0001" \
-H "Content-Type: application/json" \
-d '{"channels":{"whatsapp":{"enabled":true,"sac_id":1,"template_id":1,"variables":[]},"email":{"enabled":true,"email_template_id":1,"integration_account_id":1,"variables":[]}},"list_ids":[1],"dispatch_mode":"draft","scheduled_at":"2026-10-20T10:00:00-03:00","campaign_identifier":null}'Exemplo de resposta JSON
{
"data": [
{
"id": 1,
"campaign_id": 1,
"campaign_identifier": null,
"channel_type": "whatsapp",
"status": "string",
"dispatch_mode": "draft",
"scheduled_at": "2026-10-20T10:00:00-03:00",
"whatsapp_template_id": 1,
"email_template_id": 1,
"email_integration_account_id": 1,
"variables": [],
"lists": [
{
"id": 1,
"name": "string"
}
],
"contacts_count": 1,
"created_at": "2026-10-20T10:00:00-03:00"
}
]
}Respostas possíveis
/api/v1/marketing-campaigns/{campaign}/shots/{shot}
Edita o rascunho do disparo
Substitui a configuração do rascunho (template, variáveis e listas). Com `now` ou `scheduled`, confirma e envia ou agenda; sem contatos do canal nas listas, a configuração fica salva e o disparo continua rascunho (422). Disparo já confirmado: 409. Exige `campaigns:dispatch` e Campanhas (editar).
Parâmetros
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
Idempotency-Keyheader | string | Sim | Identificador único da mutação, com 8 a 100 caracteres. O resultado fica reutilizável por 24 horas e a chave não pode ser reutilizada depois de expirar. |
Corpo da requisição
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
channels | object | Sim | — |
list_ids | array<integer> | Sim | — |
dispatch_mode | string | Sim | Valores: draft, now, scheduled. |
scheduled_at | string | null (date-time) | Não | — |
campaign_identifier | string | null | Não | Identificador opcional para relatórios (ex.: utm). Até 100 caracteres. |
Exemplo de requisição
curl -X PUT "$MICORE_BASE_URL/marketing-campaigns/{campaign}/shots/{shot}" \
-H "Authorization: Bearer $MICORE_TOKEN" \
-H "Accept: application/json" \
-H "Idempotency-Key: board-request-0001" \
-H "Content-Type: application/json" \
-d '{"channels":{"whatsapp":{"enabled":true,"sac_id":1,"template_id":1,"variables":[]},"email":{"enabled":true,"email_template_id":1,"integration_account_id":1,"variables":[]}},"list_ids":[1],"dispatch_mode":"draft","scheduled_at":"2026-10-20T10:00:00-03:00","campaign_identifier":null}'Exemplo de resposta JSON
{
"data": {
"id": 1,
"campaign_id": 1,
"campaign_identifier": null,
"channel_type": "whatsapp",
"status": "string",
"dispatch_mode": "draft",
"scheduled_at": "2026-10-20T10:00:00-03:00",
"whatsapp_template_id": 1,
"email_template_id": 1,
"email_integration_account_id": 1,
"variables": [],
"lists": [
{
"id": 1,
"name": "string"
}
],
"contacts_count": 1,
"created_at": "2026-10-20T10:00:00-03:00"
}
}Respostas possíveis
/api/v1/marketing-campaigns/{campaign}/shots/{shot}/contacts
Lista os destinatários do disparo
Desfecho de cada contato: pendente, agendado, enviando, enviado, entregue, lido, falhou ou descadastrado, com o motivo da falha traduzido quando vem da plataforma. Exige `campaigns:read`.
Exemplo de requisição
curl "$MICORE_BASE_URL/marketing-campaigns/{campaign}/shots/{shot}/contacts" \
-H "Authorization: Bearer $MICORE_TOKEN" \
-H "Accept: application/json"Exemplo de resposta JSON
{
"data": [
{
"contact_id": 1,
"name": "string",
"send_id": null,
"type": "string",
"status": "pending",
"status_label": "string",
"error_code": null,
"error_message": null,
"failed_at": "2026-10-20T10:00:00-03:00"
}
]
}Respostas possíveis
/api/v1/app-notifications
Lista as notificações do app
Notificações do app da loja, da mais recente para a mais antiga. Exige `campaigns:read` e Campanhas (ver).
Parâmetros
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
statusquery | string | Não | Situação. |
per_pagequery | integer | Não | Itens por página. |
Exemplo de requisição
curl "$MICORE_BASE_URL/app-notifications" \
-H "Authorization: Bearer $MICORE_TOKEN" \
-H "Accept: application/json"Exemplo de resposta JSON
{
"data": [
{
"id": 1,
"title": "string",
"body": "string",
"target": {
"type": "string",
"id": 1,
"url": null
},
"audience": {
"type": "string",
"ids": [
1
],
"days": 1
},
"has_image": true,
"ttl_hours": 1,
"group_mode": "string",
"status": "draft",
"status_label": "string",
"editable": true,
"scheduled_at": "2026-10-20T10:00:00-03:00",
"started_at": "2026-10-20T10:00:00-03:00",
"finished_at": "2026-10-20T10:00:00-03:00",
"recipients_count": 1,
"delivered_count": 1,
"devices_count": 1,
"opened_count": 1,
"created_at": "2026-10-20T10:00:00-03:00"
}
],
"links": [],
"meta": []
}Respostas possíveis
/api/v1/app-notifications
Cria uma notificação do app
Sempre nasce como rascunho; envie ou agende pela ação `send`. Imagem opcional (JPG, PNG ou WEBP, até 3 MB) por multipart. Exige `campaigns:write` e Campanhas (criar).
Parâmetros
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
Idempotency-Keyheader | string | Sim | Identificador único da mutação, com 8 a 100 caracteres. O resultado fica reutilizável por 24 horas e a chave não pode ser reutilizada depois de expirar. |
Corpo da requisição
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
title | string | Sim | Até 65 caracteres. |
body | string | Sim | Até 240 caracteres. |
target_type | string | Sim | Destino ao tocar (home, produto, categoria, link...). |
target_id | integer | null | Não | Produto ou categoria. |
target_url | string | null | Não | Link https. |
audience_type | string | Sim | all, inactive_days ou um grupo por ids. |
audience_ids | array<integer> | Não | — |
audience_days | integer | null | Não | — |
image | string (binary) | Não | — |
ttl_hours | integer | null | Não | — |
group_mode | string | Sim | — |
Exemplo de requisição
curl -X POST "$MICORE_BASE_URL/app-notifications" \
-H "Authorization: Bearer $MICORE_TOKEN" \
-H "Accept: application/json" \
-H "Idempotency-Key: board-request-0001" \
-H "Content-Type: application/json" \
-d '{"title":"string","body":"string","target_type":"string","target_id":1,"target_url":null,"audience_type":"string","audience_ids":[1],"audience_days":1,"image":"string","ttl_hours":1,"group_mode":"string"}'Exemplo de resposta JSON
{
"data": {
"id": 1,
"title": "string",
"body": "string",
"target": {
"type": "string",
"id": 1,
"url": null
},
"audience": {
"type": "string",
"ids": [
1
],
"days": 1
},
"has_image": true,
"ttl_hours": 1,
"group_mode": "string",
"status": "draft",
"status_label": "string",
"editable": true,
"scheduled_at": "2026-10-20T10:00:00-03:00",
"started_at": "2026-10-20T10:00:00-03:00",
"finished_at": "2026-10-20T10:00:00-03:00",
"recipients_count": 1,
"delivered_count": 1,
"devices_count": 1,
"opened_count": 1,
"created_at": "2026-10-20T10:00:00-03:00"
}
}Respostas possíveis
/api/v1/app-notifications/audience-count
Conta o público da notificação
Quantos clientes com o app o público escolhido alcança agora; escolha incompleta conta zero. Exige `campaigns:read`.
Parâmetros
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
audience_typequery | string | Não | Tipo de público. |
audience_ids[]query | array<integer> | Não | Ids do grupo (produtos, categorias, clientes...). |
audience_daysquery | integer | Não | Dias sem comprar. |
Exemplo de requisição
curl "$MICORE_BASE_URL/app-notifications/audience-count" \
-H "Authorization: Bearer $MICORE_TOKEN" \
-H "Accept: application/json"Exemplo de resposta JSON
{
"data": {
"count": 1
}
}Respostas possíveis
/api/v1/app-notifications/test
Envia um teste
Envia a notificação montada a um cliente só, sem gravar nem contar no envio. Cliente sem o app aberto em nenhum aparelho: 422. Limite de 20 por minuto. Exige `campaigns:dispatch` e Campanhas (criar).
Corpo da requisição
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
client_id | integer | Sim | — |
title | string | Sim | — |
body | string | Sim | — |
target_type | string | Sim | — |
target_id | integer | null | Não | — |
target_url | string | null | Não | — |
image | string (binary) | Não | — |
campaign_id | integer | null | Não | Usa a imagem já gravada nesta notificação. |
remove_image | boolean | Não | — |
ttl_hours | integer | null | Não | — |
group_mode | string | null | Não | — |
Exemplo de requisição
curl -X POST "$MICORE_BASE_URL/app-notifications/test" \
-H "Authorization: Bearer $MICORE_TOKEN" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{"client_id":1,"title":"string","body":"string","target_type":"string","target_id":1,"target_url":null,"image":"string","campaign_id":1,"remove_image":true,"ttl_hours":1,"group_mode":null}'Exemplo de resposta JSON
{
"data": {
"devices": 1
}
}Respostas possíveis
/api/v1/app-notifications/{notification}
Consulta uma notificação do app
Com os números de entrega e abertura. Exige `campaigns:read`.
Exemplo de requisição
curl "$MICORE_BASE_URL/app-notifications/{notification}" \
-H "Authorization: Bearer $MICORE_TOKEN" \
-H "Accept: application/json"Exemplo de resposta JSON
{
"data": {
"id": 1,
"title": "string",
"body": "string",
"target": {
"type": "string",
"id": 1,
"url": null
},
"audience": {
"type": "string",
"ids": [
1
],
"days": 1
},
"has_image": true,
"ttl_hours": 1,
"group_mode": "string",
"status": "draft",
"status_label": "string",
"editable": true,
"scheduled_at": "2026-10-20T10:00:00-03:00",
"started_at": "2026-10-20T10:00:00-03:00",
"finished_at": "2026-10-20T10:00:00-03:00",
"recipients_count": 1,
"delivered_count": 1,
"devices_count": 1,
"opened_count": 1,
"created_at": "2026-10-20T10:00:00-03:00"
}
}Respostas possíveis
/api/v1/app-notifications/{notification}
Edita uma notificação do app
Edição parcial enquanto não começou a enviar; o modo não muda (rascunho segue rascunho e agendada mantém o horário). Enviada ou cancelada: 409. Exige `campaigns:write` e Campanhas (editar).
Corpo da requisição
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
title | string | Não | — |
body | string | Não | — |
target_type | string | Não | — |
target_id | integer | null | Não | — |
target_url | string | null | Não | — |
audience_type | string | Não | — |
audience_ids | array<integer> | Não | — |
audience_days | integer | null | Não | — |
image | string (binary) | Não | — |
remove_image | boolean | Não | — |
ttl_hours | integer | null | Não | — |
group_mode | string | Não | — |
Exemplo de requisição
curl -X PATCH "$MICORE_BASE_URL/app-notifications/{notification}" \
-H "Authorization: Bearer $MICORE_TOKEN" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{"title":"string","body":"string","target_type":"string","target_id":1,"target_url":null,"audience_type":"string","audience_ids":[1],"audience_days":1,"image":"string","remove_image":true,"ttl_hours":1,"group_mode":"string"}'Exemplo de resposta JSON
{
"data": {
"id": 1,
"title": "string",
"body": "string",
"target": {
"type": "string",
"id": 1,
"url": null
},
"audience": {
"type": "string",
"ids": [
1
],
"days": 1
},
"has_image": true,
"ttl_hours": 1,
"group_mode": "string",
"status": "draft",
"status_label": "string",
"editable": true,
"scheduled_at": "2026-10-20T10:00:00-03:00",
"started_at": "2026-10-20T10:00:00-03:00",
"finished_at": "2026-10-20T10:00:00-03:00",
"recipients_count": 1,
"delivered_count": 1,
"devices_count": 1,
"opened_count": 1,
"created_at": "2026-10-20T10:00:00-03:00"
}
}Respostas possíveis
/api/v1/app-notifications/{notification}/recipients
Lista os destinatários
Clientes que entraram no envio com o resultado e a abertura; quem abriu vem primeiro. Exige `campaigns:read`.
Parâmetros
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
resultquery | string | Não | Só quem abriu ou só quem não recebeu. |
per_pagequery | integer | Não | Itens por página. |
Exemplo de requisição
curl "$MICORE_BASE_URL/app-notifications/{notification}/recipients" \
-H "Authorization: Bearer $MICORE_TOKEN" \
-H "Accept: application/json"Exemplo de resposta JSON
{
"data": [
{
"id": 1,
"client": {
"id": 1,
"name": "string",
"email": null
},
"status": "string",
"devices_count": 1,
"sent_at": "2026-10-20T10:00:00-03:00",
"opened_at": "2026-10-20T10:00:00-03:00"
}
],
"meta": []
}Respostas possíveis
/api/v1/app-notifications/{notification}/send
Envia ou agenda a notificação
`now` entra na fila na hora; `scheduled` acorda no horário. Enviada ou cancelada: 409. Exige `campaigns:dispatch` e Campanhas (editar).
Parâmetros
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
Idempotency-Keyheader | string | Sim | Identificador único da mutação, com 8 a 100 caracteres. O resultado fica reutilizável por 24 horas e a chave não pode ser reutilizada depois de expirar. |
Corpo da requisição
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
mode | string | Sim | Valores: now, scheduled. |
scheduled_at | string | null (date-time) | Não | — |
Exemplo de requisição
curl -X POST "$MICORE_BASE_URL/app-notifications/{notification}/send" \
-H "Authorization: Bearer $MICORE_TOKEN" \
-H "Accept: application/json" \
-H "Idempotency-Key: board-request-0001" \
-H "Content-Type: application/json" \
-d '{"mode":"now","scheduled_at":"2026-10-20T10:00:00-03:00"}'Exemplo de resposta JSON
{
"data": {
"id": 1,
"title": "string",
"body": "string",
"target": {
"type": "string",
"id": 1,
"url": null
},
"audience": {
"type": "string",
"ids": [
1
],
"days": 1
},
"has_image": true,
"ttl_hours": 1,
"group_mode": "string",
"status": "draft",
"status_label": "string",
"editable": true,
"scheduled_at": "2026-10-20T10:00:00-03:00",
"started_at": "2026-10-20T10:00:00-03:00",
"finished_at": "2026-10-20T10:00:00-03:00",
"recipients_count": 1,
"delivered_count": 1,
"devices_count": 1,
"opened_count": 1,
"created_at": "2026-10-20T10:00:00-03:00"
}
}Respostas possíveis
/api/v1/app-notifications/{notification}/cancel
Cancela a notificação
Só rascunho ou agendada; o envio já iniciado não para (409). Exige `campaigns:write` e Campanhas (editar).
Parâmetros
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
Idempotency-Keyheader | string | Sim | Identificador único da mutação, com 8 a 100 caracteres. O resultado fica reutilizável por 24 horas e a chave não pode ser reutilizada depois de expirar. |
Exemplo de requisição
curl -X POST "$MICORE_BASE_URL/app-notifications/{notification}/cancel" \
-H "Authorization: Bearer $MICORE_TOKEN" \
-H "Accept: application/json" \
-H "Idempotency-Key: board-request-0001"Exemplo de resposta JSON
{
"data": {
"id": 1,
"title": "string",
"body": "string",
"target": {
"type": "string",
"id": 1,
"url": null
},
"audience": {
"type": "string",
"ids": [
1
],
"days": 1
},
"has_image": true,
"ttl_hours": 1,
"group_mode": "string",
"status": "draft",
"status_label": "string",
"editable": true,
"scheduled_at": "2026-10-20T10:00:00-03:00",
"started_at": "2026-10-20T10:00:00-03:00",
"finished_at": "2026-10-20T10:00:00-03:00",
"recipients_count": 1,
"delivered_count": 1,
"devices_count": 1,
"opened_count": 1,
"created_at": "2026-10-20T10:00:00-03:00"
}
}Respostas possíveis
/api/v1/contact-lists/{list}/activate
Reativa uma lista
A lista desativada volta à listagem e à escolha de público dos disparos. Só encontra listas desativadas (ativa devolve 404). Exige `campaigns:write` e Campanhas (desabilitar).
Exemplo de requisição
curl -X POST "$MICORE_BASE_URL/contact-lists/{list}/activate" \
-H "Authorization: Bearer $MICORE_TOKEN" \
-H "Accept: application/json"Exemplo de resposta JSON
{
"data": {
"id": 1,
"name": "string",
"description": null,
"contacts_count": 1,
"audience": {
"whatsapp": 1,
"email": 1
},
"active": true,
"created_at": "2026-10-20T10:00:00-03:00",
"updated_at": "2026-10-20T10:00:00-03:00"
}
}Respostas possíveis
/api/v1/marketing-campaigns/{campaign}/activate
Reativa uma campanha
A campanha desativada volta à listagem. Só encontra campanhas desativadas (ativa devolve 404). Exige `campaigns:write` e Campanhas (desabilitar).
Exemplo de requisição
curl -X POST "$MICORE_BASE_URL/marketing-campaigns/{campaign}/activate" \
-H "Authorization: Bearer $MICORE_TOKEN" \
-H "Accept: application/json"Exemplo de resposta JSON
{
"data": {
"id": 1,
"name": "string",
"description": null,
"contacts_count": 1,
"shots_count": 1,
"active": true,
"created_at": "2026-10-20T10:00:00-03:00",
"updated_at": "2026-10-20T10:00:00-03:00"
}
}