1. API
  2. Servidor
  3. Atualizar campanha
Ir para Dashboard
  • Visão geral da API
  • Erros
  • Limites
  • Paginação
  • GETListar campanhas
  • POSTCriar campanha
  • GETObter campanha
  • DELETEExcluir campanha
  • PATCHAtualizar campanha
  • POSTCancelar campanha
  • POSTCriar segmento
  • GETRelatório diário
  • GETListar assinantes
  • GETObter assinante
  • DELETEExcluir assinante
  • PATCHAtualizar assinante
  • GETObter configuração do site
  • POSTRegistrar inscrição
  • DELETECancelar inscrição do dispositivo
  • POSTRegistrar evento
  • GETObter preferências
  • PUTAtualizar preferências
PATCH/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.

API serverbase URL
Bearer tokenchaveSecretaoptional
Stored only in this browser for the chaveSecreta security scheme and reused on every API page in this group.

Parameters

Values are applied to the request and the example on the right.

idpath · integerrequired

ID da campanha, o id devolvido ao criar.

Request body

application/jsonrequired
actionenumoptional

draft salva como rascunho, send envia agora e schedule agenda para scheduled_at.

Values: "draft" · "send" · "schedule"

contentoptional

Mesclado campo a campo com o conteúdo atual.

segment_idintegeroptional

ID de um segmento deste site. Sem ele, a campanha vai para todos os assinantes ativos.

categorystringoptional

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.

scheduled_atstring · date-timeoptional

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.

send_in_user_tzbooleanoptional

Entrega no mesmo horário de relógio de scheduled_at no fuso de cada assinante (estimado pelo país).

breakingbooleanoptional

Dá prioridade à campanha na fila de envio. Use para notícia urgente.

recurrenceenumoptional

Repete a campanha um dia ou uma semana depois de cada envio.

Values: "none" · "daily" · "weekly"

ab_testbooleanoptional

Ativa o teste A/B. Exige variants com pelo menos duas variantes.

test_fractionnumberoptional

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.

variantsarray<>optional

Variantes do teste A/B, no mínimo duas. Obrigatório quando ab_test é true.

Responses

200application/json

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"
}
idintegeroptional
namestringoptional
statusenumoptional

Values: "draft" · "queued" · "queuing" · "sending" · "sent" · "failed" · "canceled"

typeenumoptional

Values: "instant" · "scheduled"

categoryobjectoptional
segment_idobjectoptional
segment_nameobjectoptional

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.

scheduled_atobject · date-timeoptional
sent_atobject · date-timeoptional
send_in_user_tzbooleanoptional
breakingbooleanoptional
recurrenceenumoptional

Values: "none" · "daily" · "weekly"

contentoptional
ab_testbooleanoptional
test_fractionobjectoptional
winner_variant_idobjectoptional
variantsarray<>optional
statsoptional

null enquanto a campanha está em draft, queued ou canceled.

created_atstring · date-timeoptional
401application/json

Chave ausente, inválida ou revogada.

{
  "message": "Credencial ausente ou inválida."
}
messagestringoptional

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.

404application/json

Não existe com esse ID neste site.

{
  "message": "Recurso não encontrado."
}
messagestringoptional

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.

409application/json

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."
}
messagestringoptional

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.

422application/json

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."
    ]
  }
}
messagestringoptional

Primeira mensagem de erro.

errorsobjectoptional

Mensagens por campo. A chave é o caminho do campo com pontos, como content.title ou definition.groups.0.rules.1.op.

429application/json

Limite de requisições excedido. Espere os segundos indicados em Retry-After.

{
  "message": "Muitas requisições. Tente novamente em instantes."
}
messagestringoptional

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.

Excluir campanha< PreviousCancelar campanhaNext >

Powered by heyo

curl --request PATCH \  'https://api.pushwi.com/v1/campaigns/1287' \  --header 'Content-Type: application/json' \  --data '{  "content": {    "body": "Agora com frete grátis também."  }}'
{  "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"}