Ir para o conteúdo
WhatsMarketingDeveloper Hub

Relatórios

Os relatórios do painel, prontos para o seu dashboard: comercial, ciclo de vida, campanhas, wallet, equipe e conversas.

Relatório comercial

GET/reports/comercial

Oportunidades abertas, ganhas e perdidas no período (days: 7, 30 ou 90), com seu valor, a taxa de conversão e o período anterior para comparar.

Permissões: reports:read

Parâmetros

NomeOndeTipoValores
daysconsultanumberpadrão: 30 · 1 – 365
curl
curl "https://micuenta.whatsmarketing.es/api/v1/reports/comercial?days=30" \
  -H "Authorization: Bearer $WM_API_KEY"
Node.js
const res = await fetch('https://micuenta.whatsmarketing.es/api/v1/reports/comercial?days=30', {
  headers: {
    Authorization: `Bearer ${process.env.WM_API_KEY}`,
  },
});
const data = await res.json();
Python
import os, requests

r = requests.get(
    "https://micuenta.whatsmarketing.es/api/v1/reports/comercial?days=30",
    headers={"Authorization": f"Bearer {os.environ['WM_API_KEY']}"},
    timeout=30,
)
r.raise_for_status()
data = r.json()
PHP
<?php
$ch = curl_init('https://micuenta.whatsmarketing.es/api/v1/reports/comercial?days=30');
curl_setopt_array($ch, [
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_HTTPHEADER => [
    'Authorization: Bearer ' . getenv('WM_API_KEY'),
  ],
]);
$data = json_decode(curl_exec($ch), true);
Resposta 200
{
  "period": {
    "days": 30,
    "since": "2026-09-14"
  },
  "open": {
    "count": 12,
    "value": 18400
  },
  "wonInPeriod": {
    "count": 41,
    "value": 61200
  },
  "lostInPeriod": {
    "count": 9,
    "value": 7300
  },
  "conversionRate": 82,
  "previous": {
    "wonCount": 35,
    "wonValue": 50100,
    "conversionRate": 79.5
  }
}

Relatório de ciclo de vida

GET/reports/lifecycle

Quantos contatos há em cada etapa; stage: null são os que não têm etapa.

Permissões: reports:read

curl
curl "https://micuenta.whatsmarketing.es/api/v1/reports/lifecycle" \
  -H "Authorization: Bearer $WM_API_KEY"
Node.js
const res = await fetch('https://micuenta.whatsmarketing.es/api/v1/reports/lifecycle', {
  headers: {
    Authorization: `Bearer ${process.env.WM_API_KEY}`,
  },
});
const data = await res.json();
Python
import os, requests

r = requests.get(
    "https://micuenta.whatsmarketing.es/api/v1/reports/lifecycle",
    headers={"Authorization": f"Bearer {os.environ['WM_API_KEY']}"},
    timeout=30,
)
r.raise_for_status()
data = r.json()
PHP
<?php
$ch = curl_init('https://micuenta.whatsmarketing.es/api/v1/reports/lifecycle');
curl_setopt_array($ch, [
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_HTTPHEADER => [
    'Authorization: Bearer ' . getenv('WM_API_KEY'),
  ],
]);
$data = json_decode(curl_exec($ch), true);
Resposta 200
[
  {
    "stage": "Lead nuevo",
    "order": 1,
    "count": 318
  },
  {
    "stage": "En proceso",
    "order": 2,
    "count": 96
  },
  {
    "stage": "Cliente",
    "order": 3,
    "count": 204
  },
  {
    "stage": null,
    "order": null,
    "count": 12
  }
]

Relatório de campanhas

GET/reports/campanas

Campanhas do período, destinatários por status e gasto total, com o período anterior para comparar.

Permissões: reports:read

Parâmetros

NomeOndeTipoValores
daysconsultanumberpadrão: 30 · 1 – 365
curl
curl "https://micuenta.whatsmarketing.es/api/v1/reports/campanas?days=30" \
  -H "Authorization: Bearer $WM_API_KEY"
Node.js
const res = await fetch('https://micuenta.whatsmarketing.es/api/v1/reports/campanas?days=30', {
  headers: {
    Authorization: `Bearer ${process.env.WM_API_KEY}`,
  },
});
const data = await res.json();
Python
import os, requests

r = requests.get(
    "https://micuenta.whatsmarketing.es/api/v1/reports/campanas?days=30",
    headers={"Authorization": f"Bearer {os.environ['WM_API_KEY']}"},
    timeout=30,
)
r.raise_for_status()
data = r.json()
PHP
<?php
$ch = curl_init('https://micuenta.whatsmarketing.es/api/v1/reports/campanas?days=30');
curl_setopt_array($ch, [
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_HTTPHEADER => [
    'Authorization: Bearer ' . getenv('WM_API_KEY'),
  ],
]);
$data = json_decode(curl_exec($ch), true);
Resposta 200
{
  "period": {
    "days": 30,
    "since": "2026-09-14"
  },
  "campaigns": 4,
  "recipientsByStatus": {
    "SENT": 120,
    "DELIVERED": 3100,
    "READ": 2210,
    "REPLIED": 260,
    "FAILED": 48
  },
  "cost": {
    "total": 285.9
  },
  "previous": {
    "recipients": 2900,
    "costTotal": 231.4
  }
}

Relatório da wallet

GET/reports/wallet

Saldo atual e movimentações do período agrupadas por tipo (recargas, campanhas, conversas, agentes de IA…). Valores finais.

Permissões: reports:read

Parâmetros

NomeOndeTipoValores
daysconsultanumberpadrão: 30 · 1 – 365
curl
curl "https://micuenta.whatsmarketing.es/api/v1/reports/wallet?days=30" \
  -H "Authorization: Bearer $WM_API_KEY"
Node.js
const res = await fetch('https://micuenta.whatsmarketing.es/api/v1/reports/wallet?days=30', {
  headers: {
    Authorization: `Bearer ${process.env.WM_API_KEY}`,
  },
});
const data = await res.json();
Python
import os, requests

r = requests.get(
    "https://micuenta.whatsmarketing.es/api/v1/reports/wallet?days=30",
    headers={"Authorization": f"Bearer {os.environ['WM_API_KEY']}"},
    timeout=30,
)
r.raise_for_status()
data = r.json()
PHP
<?php
$ch = curl_init('https://micuenta.whatsmarketing.es/api/v1/reports/wallet?days=30');
curl_setopt_array($ch, [
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_HTTPHEADER => [
    'Authorization: Bearer ' . getenv('WM_API_KEY'),
  ],
]);
$data = json_decode(curl_exec($ch), true);
Resposta 200
{
  "period": {
    "days": 30,
    "since": "2026-09-14"
  },
  "currentBalance": 120,
  "currency": "EUR",
  "byType": [
    {
      "type": "TOPUP",
      "count": 2,
      "amount": 400
    },
    {
      "type": "CAMPAIGN",
      "count": 4,
      "amount": -285.9
    }
  ]
}

Relatório da equipe

GET/reports/agentes

Para cada pessoa da equipe: contatos dos quais é proprietária, conversas abertas e oportunidades abertas e ganhas.

Permissões: reports:read

curl
curl "https://micuenta.whatsmarketing.es/api/v1/reports/agentes" \
  -H "Authorization: Bearer $WM_API_KEY"
Node.js
const res = await fetch('https://micuenta.whatsmarketing.es/api/v1/reports/agentes', {
  headers: {
    Authorization: `Bearer ${process.env.WM_API_KEY}`,
  },
});
const data = await res.json();
Python
import os, requests

r = requests.get(
    "https://micuenta.whatsmarketing.es/api/v1/reports/agentes",
    headers={"Authorization": f"Bearer {os.environ['WM_API_KEY']}"},
    timeout=30,
)
r.raise_for_status()
data = r.json()
PHP
<?php
$ch = curl_init('https://micuenta.whatsmarketing.es/api/v1/reports/agentes');
curl_setopt_array($ch, [
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_HTTPHEADER => [
    'Authorization: Bearer ' . getenv('WM_API_KEY'),
  ],
]);
$data = json_decode(curl_exec($ch), true);
Resposta 200
[
  {
    "userId": "2b3c4d5e-6f7a-4b8c-9d0e-1f2a3b4c5d6e",
    "fullName": "Ana Gómez",
    "email": "ana@ejemplo.com",
    "contactsOwned": 140,
    "openConversations": 6,
    "dealsOpen": 4,
    "dealsWon": 17
  }
]

Relatório de conversas

GET/reports/conversaciones

Conversas por status e por canal, novas no período e o período anterior para comparar.

Permissões: reports:read

Parâmetros

NomeOndeTipoValores
daysconsultanumberpadrão: 30 · 1 – 365
curl
curl "https://micuenta.whatsmarketing.es/api/v1/reports/conversaciones?days=30" \
  -H "Authorization: Bearer $WM_API_KEY"
Node.js
const res = await fetch('https://micuenta.whatsmarketing.es/api/v1/reports/conversaciones?days=30', {
  headers: {
    Authorization: `Bearer ${process.env.WM_API_KEY}`,
  },
});
const data = await res.json();
Python
import os, requests

r = requests.get(
    "https://micuenta.whatsmarketing.es/api/v1/reports/conversaciones?days=30",
    headers={"Authorization": f"Bearer {os.environ['WM_API_KEY']}"},
    timeout=30,
)
r.raise_for_status()
data = r.json()
PHP
<?php
$ch = curl_init('https://micuenta.whatsmarketing.es/api/v1/reports/conversaciones?days=30');
curl_setopt_array($ch, [
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_HTTPHEADER => [
    'Authorization: Bearer ' . getenv('WM_API_KEY'),
  ],
]);
$data = json_decode(curl_exec($ch), true);
Resposta 200
{
  "period": {
    "days": 30,
    "since": "2026-09-14"
  },
  "byStatus": {
    "OPEN": 14,
    "PENDING": 3,
    "RESOLVED": 2193
  },
  "newInPeriod": 2210,
  "previous": {
    "newInPeriod": 1980
  },
  "byChannel": [
    {
      "channel": "5f6a7b8c-9d0e-4f1a-8b2c-3d4e5f6a7b8c",
      "name": "WhatsApp +34 600 000 000",
      "count": 2010
    },
    {
      "channel": null,
      "name": "Sin canal",
      "count": 200
    }
  ]
}