1. API
  2. Servidor
  3. Listar campanhas
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
GET/v1/campaigns

Listar campanhas

Lista as campanhas do site, da mais nova para a mais antiga, com paginação por número de página. Cada item traz as métricas de envio quando a campanha já começou a sair.

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.

statusquery · stringoptional

Só campanhas neste status.

Valuesenum

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

per_pagequery · integeroptional

Itens por página. Padrão 50; valores fora de 1 a 100 são ajustados para o limite mais próximo.

pagequery · integeroptional

Número da página, começando em 1.

Responses

200application/json

Página de campanhas.

{
  "data": [
    {
      "id": 1287,
      "name": "Frete grátis só hoje",
      "status": "sent",
      "type": "instant",
      "category": "promo",
      "segment_id": 42,
      "segment_name": "Clientes VIP",
      "scheduled_at": null,
      "sent_at": "2026-10-06T15:20:40+00:00",
      "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": {
        "recipients": 18430,
        "sent": 18102,
        "delivered": 16877,
        "clicked": 905,
        "click_rate": 5
      },
      "created_at": "2026-10-06T14:58:02+00:00"
    }
  ],
  "links": {
    "first": "https://api.pushwi.com/v1/campaigns?page=1",
    "last": "https://api.pushwi.com/v1/campaigns?page=4",
    "prev": null,
    "next": "https://api.pushwi.com/v1/campaigns?page=2"
  },
  "meta": {
    "current_page": 1,
    "from": 1,
    "last_page": 4,
    "path": "https://api.pushwi.com/v1/campaigns",
    "per_page": 50,
    "to": 50,
    "total": 173
  }
}
dataarray<>optional
linksoptional

Links prontos para outras páginas. Repetem os parâmetros da requisição (tag, external_id, per_page).

metaoptional
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.

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.

Paginação< PreviousCriar campanhaNext >

Powered by heyo

curl --request GET \  'https://api.pushwi.com/v1/campaigns?status=queued&per_page=50&page=1'
{  "data": [    {      "id": 1287,      "name": "Frete grátis só hoje",      "status": "sent",      "type": "instant",      "category": "promo",      "segment_id": 42,      "segment_name": "Clientes VIP",      "scheduled_at": null,      "sent_at": "2026-10-06T15:20:40+00:00",      "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": {        "recipients": 18430,        "sent": 18102,        "delivered": 16877,        "clicked": 905,        "click_rate": 5      },      "created_at": "2026-10-06T14:58:02+00:00"    }  ],  "links": {    "first": "https://api.pushwi.com/v1/campaigns?page=1",    "last": "https://api.pushwi.com/v1/campaigns?page=4",    "prev": null,    "next": "https://api.pushwi.com/v1/campaigns?page=2"  },  "meta": {    "current_page": 1,    "from": 1,    "last_page": 4,    "path": "https://api.pushwi.com/v1/campaigns",    "per_page": 50,    "to": 50,    "total": 173  }}