CRM Oficina Martech
ReferênciaCampanhas

Listar campanhas

GET /campaigns — lista as campanhas de disparo da organização com situação, modelo, canal e contadores acumulados.

GET/campaignsBeta

Escopo necessário: analytics:read

Lista as campanhas de disparo da organização (resolvida pela API key), da mais recente para a mais antiga (created_at decrescente). Cada linha traz a situação, o modelo, o canal e os contadores acumulados. A lista de destinatários nunca é devolvida.

Endpoint

GET https://crm.oficinamartech.com/api/v1/campaigns

Parâmetros de query

ParâmetroTipoDescrição
statusdraft | scheduled | sending | paused | completed | failed | cancelledFiltra por situação.
channel_idUUIDFiltra pelo canal de envio (channel_id de uma campanha).
created_sincedateSomente campanhas criadas a partir desta data (inclusive). ISO 8601 ou YYYY-MM-DD.
created_untildateSomente campanhas criadas antes desta data (exclusive). ISO 8601 ou YYYY-MM-DD.
limitint (1-100)Tamanho da página. Default: 50.
offsetint (0-10000)Deslocamento da página. Default: 0.

Um parâmetro fora desta lista é recusado com 400.

A paginação informa has_more e next_offset, sem total. offset vai até 10.000; além disso next_offset vem null mesmo com has_more true. Para percorrer um histórico longo, avance por janelas de created_since/created_until. Datas sem horário (YYYY-MM-DD) são lidas como meia-noite UTC. A resposta usa Cache-Control: private, no-store.

Exemplo

curl -s "https://crm.oficinamartech.com/api/v1/campaigns?status=completed&limit=1" \
  -H "Authorization: Bearer crm_live_SEU_PREFIXO_SEU_SEGREDO"

Resposta 200

{
  "data": [
    {
      "id": "ca11ca11-58cc-4372-a567-0e02b2c3d479",
      "name": "Reativação de novembro",
      "status": "completed",
      "message_type": "template",
      "template_name": "reativacao_novembro",
      "template_language": "pt_BR",
      "channel_id": "ab12ab12-58cc-4372-a567-0e02b2c3d479",
      "channel_name": "Comercial",
      "total_contacts": 1200,
      "total_sent": 1150,
      "total_delivered": 1100,
      "total_read": 640,
      "total_failed": 12,
      "total_skipped": 8,
      "total_blocked": 30,
      "created_by": "11111111-58cc-4372-a567-0e02b2c3d479",
      "scheduled_at": "2026-11-10T12:00:00.000Z",
      "started_at": "2026-11-10T12:00:03.000Z",
      "completed_at": "2026-11-10T13:10:44.000Z",
      "created_at": "2026-11-09T18:00:00.000Z",
      "updated_at": "2026-11-10T13:10:44.000Z"
    }
  ],
  "pagination": {
    "limit": 1,
    "offset": 0,
    "has_more": true,
    "next_offset": 1
  }
}

total_blocked conta os contatos barrados pelas regras de envio antes do disparo. channel_name é null quando o canal não tem nome. scheduled_at, started_at e completed_at são null enquanto o evento não ocorreu. created_by é o user_id de GET /members.

Erros

StatusCódigoQuando
400invalid_queryQuery inválida (parâmetro desconhecido, UUID malformado, situação desconhecida, data inválida).
401missing_api_key / invalid_api_keyAPI key ausente, inválida, expirada ou revogada.
403missing_scopeA chave não tem o escopo analytics:read.
429rate_limitedAcima de 120 req/min por chave ou por organização.
500—Erro interno.

On this page