/v1/campaigns/{id}Atualizar campanha
Altera uma campanha em draft ou queued. Só muda o que vier no corpo. Com action: "send", a campanha entra na fila de envio na hora.
Send request
Use the documented inputs to call this endpoint directly.
Parameters
Values are applied to the request and the example on the right.
ID da campanha, o id devolvido ao criar.
Request body
application/jsonrequireddraft salva como rascunho, send envia agora e schedule agenda para scheduled_at.
Values: "draft" · "send" · "schedule"
Mesclado campo a campo com o conteúdo atual.
ID de um segmento deste site. Sem ele, a campanha vai para todos os assinantes ativos.
Chave de uma categoria cadastrada no site, até 255 caracteres. Assinantes que desativaram essa categoria não recebem. Uma chave que não existe no site recebe 422.
Novo horário. Sozinho, só vale para uma campanha já agendada; nos outros casos, mande junto action: "schedule". Sem fuso, é lido no fuso do site.
Entrega no mesmo horário de relógio de scheduled_at no fuso de cada assinante (estimado pelo país).
Dá prioridade à campanha na fila de envio. Use para notícia urgente.
Repete a campanha um dia ou uma semana depois de cada envio.
Values: "none" · "daily" · "weekly"
Ativa o teste A/B. Exige variants com pelo menos duas variantes.
Fração do público, entre 0 e 1, que recebe as variantes primeiro. Duas horas depois, a variante com mais cliques vai para o restante. Com 0 ou 1 não há segunda fase.
Variantes do teste A/B, no mínimo duas. Obrigatório quando ab_test é true.
Responses
A campanha atualizada.
{
"id": 1287,
"name": "Frete grátis só hoje",
"status": "draft",
"type": "instant",
"category": "promo",
"segment_id": 42,
"segment_name": "Clientes VIP",
"scheduled_at": null,
"sent_at": null,
"send_in_user_tz": false,
"breaking": false,
"recurrence": "none",
"content": {
"title": "Frete grátis só hoje",
"body": "Em todo o site, para compras acima de R$ 99.",
"url": "https://loja.exemplo.com.br/promo",
"icon_url": "https://loja.exemplo.com.br/icone.png",
"image_url": null,
"buttons": [
{
"title": "Ver ofertas",
"action": "ver-ofertas"
}
]
},
"ab_test": false,
"test_fraction": null,
"winner_variant_id": null,
"variants": [],
"stats": null,
"created_at": "2026-10-06T14:58:02+00:00"
}Values: "draft" · "queued" · "queuing" · "sending" · "sent" · "failed" · "canceled"
Values: "instant" · "scheduled"
Nome do público. Antes do envio, o nome atual do segmento; a partir do envio, o nome que o segmento tinha quando a campanha saiu, mesmo que ele seja renomeado ou apagado depois. null quando a campanha vai para todos os assinantes.
Values: "none" · "daily" · "weekly"
null enquanto a campanha está em draft, queued ou canceled.
Chave ausente, inválida ou revogada.
{
"message": "Credencial ausente ou inválida."
}Descrição do erro, em português. Quando a causa não tem mensagem própria, vem a mensagem padrão do código HTTP. Trate pelo código, não pelo texto.
Não existe com esse ID neste site.
{
"message": "Recurso não encontrado."
}Descrição do erro, em português. Quando a causa não tem mensagem própria, vem a mensagem padrão do código HTTP. Trate pelo código, não pelo texto.
O envio já começou ou terminou, ou o status não permite a operação.
{
"message": "A campanha não pode ser alterada no status atual."
}Descrição do erro, em português. Quando a causa não tem mensagem própria, vem a mensagem padrão do código HTTP. Trate pelo código, não pelo texto.
Algum campo não passou na validação. errors traz a mensagem de cada campo.
{
"message": "O campo content.title é obrigatório.",
"errors": {
"content.title": [
"O campo content.title é obrigatório."
]
}
}Primeira mensagem de erro.
Mensagens por campo. A chave é o caminho do campo com pontos, como content.title ou definition.groups.0.rules.1.op.
Limite de requisições excedido. Espere os segundos indicados em Retry-After.
{
"message": "Muitas requisições. Tente novamente em instantes."
}Descrição do erro, em português. Quando a causa não tem mensagem própria, vem a mensagem padrão do código HTTP. Trate pelo código, não pelo texto.
Powered by heyo