Pular para o conteúdo principal
GET
/
api
/
v1
/
business-accounts
curl -X GET https://api.mindosoftware.com/api/v1/business-accounts/ \
  -H "X-API-Key: mindo_xxxxxxxxxxxxxxxxxxxxxxxx"
{
  "companyName": "Mi Empresa SRL",
  "apiKeyName": "Production API Key",
  "businessAccounts": [
    {
      "businessAccountId": 1,
      "businessName": "Mi Empresa WhatsApp Business",
      "phoneNumbers": [
        {
          "id": 123,
          "phoneNumberId": "813497231850626",
          "displayPhoneNumber": "+54 9 223 675-0780",
          "verifiedName": "Mi Empresa",
          "isPrimary": true,
          "messagingLimitTier": "TIER_1000",
          "quota": {
            "dailyLimit": 1000,
            "uniqueNumbersSent24h": 45,
            "remaining": 955,
            "usagePercentage": 4.5,
            "canSend": true
          }
        }
      ],
      "templates": [
        {
          "name": "welcome_message",
          "language": "es",
          "category": "MARKETING",
          "variables": [
            {
              "name": "customer_name",
              "type": "TEXT",
              "position": 1,
              "isRequired": true,
              "component": "BODY"
            }
          ]
        },
        {
          "name": "order_confirmation",
          "language": "es",
          "category": "TRANSACTIONAL",
          "variables": [
            {
              "name": "order_id",
              "type": "TEXT",
              "position": 1,
              "isRequired": true,
              "component": "BODY"
            },
            {
              "name": "total_amount",
              "type": "CURRENCY",
              "position": 2,
              "isRequired": true,
              "component": "BODY"
            },
            {
              "name": "delivery_date",
              "type": "DATE_TIME",
              "position": 3,
              "isRequired": true,
              "component": "BODY"
            }
          ]
        }
      ]
    }
  ]
}

Descrição

Este endpoint retorna todas as informações associadas à sua API Key: dados da empresa, contas do WhatsApp Business, números de telefone com suas cotas de envio e templates aprovados com suas variáveis.

Header de autenticação

X-API-Key
string
obrigatório
Sua API Key da Mindo. Formato: mindo_xxxxxxxxxxxxxxxxxxxxxxxx

Resposta

companyName
string
Nome da sua empresa.
apiKeyName
string
Nome da API Key usada na requisição.
businessAccounts
array
Lista de contas do WhatsApp Business associadas.
curl -X GET https://api.mindosoftware.com/api/v1/business-accounts/ \
  -H "X-API-Key: mindo_xxxxxxxxxxxxxxxxxxxxxxxx"
{
  "companyName": "Mi Empresa SRL",
  "apiKeyName": "Production API Key",
  "businessAccounts": [
    {
      "businessAccountId": 1,
      "businessName": "Mi Empresa WhatsApp Business",
      "phoneNumbers": [
        {
          "id": 123,
          "phoneNumberId": "813497231850626",
          "displayPhoneNumber": "+54 9 223 675-0780",
          "verifiedName": "Mi Empresa",
          "isPrimary": true,
          "messagingLimitTier": "TIER_1000",
          "quota": {
            "dailyLimit": 1000,
            "uniqueNumbersSent24h": 45,
            "remaining": 955,
            "usagePercentage": 4.5,
            "canSend": true
          }
        }
      ],
      "templates": [
        {
          "name": "welcome_message",
          "language": "es",
          "category": "MARKETING",
          "variables": [
            {
              "name": "customer_name",
              "type": "TEXT",
              "position": 1,
              "isRequired": true,
              "component": "BODY"
            }
          ]
        },
        {
          "name": "order_confirmation",
          "language": "es",
          "category": "TRANSACTIONAL",
          "variables": [
            {
              "name": "order_id",
              "type": "TEXT",
              "position": 1,
              "isRequired": true,
              "component": "BODY"
            },
            {
              "name": "total_amount",
              "type": "CURRENCY",
              "position": 2,
              "isRequired": true,
              "component": "BODY"
            },
            {
              "name": "delivery_date",
              "type": "DATE_TIME",
              "position": 3,
              "isRequired": true,
              "component": "BODY"
            }
          ]
        }
      ]
    }
  ]
}

Níveis de limite de envio

Os níveis de envio são atribuídos pela Meta e determinam quantas conversas únicas você pode iniciar por dia.
NívelLimite diárioVelocidade recomendadaTempo estimado (1000 msgs)
TIER_5050 conversas1,2s entre mensagens20 minutos
TIER_250250 conversas0,24s entre mensagens4 minutos
TIER_10001.000 conversas0,06s entre mensagens1 minuto
TIER_1000010.000 conversas0,006s entre mensagens6 segundos
TIER_100000100.000 conversas0,0006s entre mensagens< 1 segundo
TIER_UNLIMITEDSem limiteSem atrasoInstantâneo
O nível aumenta automaticamente com base no uso e na qualidade do número.

Tipos de variáveis

As variáveis do template podem ser dos seguintes tipos:
TipoDescriçãoExemplo
TEXTTexto simples"Juan Perez"
CURRENCYValor com moeda"$1.250,00"
DATE_TIMEData e/ou hora"25 de novembro", "18:30"
IMAGEURL de imagem"https://..."
VIDEOURL de vídeo"https://..."
DOCUMENTURL de documento"https://..."

Casos de uso

O campo phoneNumberId é o ID da Meta que você precisa para enviar mensagens pela API.
const data = await getBusinessAccounts();

// Obter o primeiro número do WhatsApp
const firstPhone = data.businessAccounts[0].phoneNumbers[0];
const phoneNumberId = firstPhone.phoneNumberId;

console.log('Phone Number ID:', phoneNumberId);
// Output: "813497231850626"

// Usar este ID para enviar mensagens
await sendTemplate({
  phone_number_id: phoneNumberId,
  template_name: 'welcome_message',
  recipient_phone: '+5491112345678',
  variables: { customer_name: 'Juan' }
});
Antes de enviar mensagens, verifique se o número tem cota disponível.
const data = await getBusinessAccounts();
const phone = data.businessAccounts[0].phoneNumbers[0];

if (!phone.quota.canSend) {
  console.error('Não é possível enviar: limite atingido');
  console.log(`Usado: ${phone.quota.uniqueNumbersSent24h}/${phone.quota.dailyLimit}`);
  return;
}

if (phone.quota.usagePercentage > 80) {
  console.warn('Alerta: Uso em ' + phone.quota.usagePercentage + '%');
}

console.log('Cota disponível:', phone.quota.remaining);
Obtenha a lista de templates disponíveis e suas variáveis para construir envios.
const data = await getBusinessAccounts();
const templates = data.businessAccounts[0].templates;

console.log('Templates disponíveis:');
templates.forEach(template => {
  console.log(`\n${template.name} (${template.language})`);
  console.log(`  Categoria: ${template.category}`);
  console.log(`  Variáveis:`);

  template.variables.forEach(variable => {
    const required = variable.isRequired ? '(obrigatório)' : '(opcional)';
    console.log(`  - ${variable.name} [${variable.type}] ${required}`);
  });
});
Use as informações das variáveis para construir o payload de envio automaticamente.
const data = await getBusinessAccounts();
const template = data.businessAccounts[0].templates
  .find(t => t.name === 'order_confirmation');

// Construir variáveis automaticamente
const variables = {};
template.variables.forEach(variable => {
  switch (variable.type) {
    case 'TEXT':
      variables[variable.name] = 'Valor de texto';
      break;
    case 'CURRENCY':
      variables[variable.name] = 'R$1.250,00';
      break;
    case 'DATE_TIME':
      variables[variable.name] = new Date().toLocaleDateString('pt-BR');
      break;
  }
});

console.log('Variáveis construídas:', variables);
// Output: { order_id: 'Valor de texto', total_amount: 'R$1.250,00', delivery_date: '16/11/2025' }
Se você tem múltiplos números, selecione automaticamente aquele com mais cota disponível.
const data = await getBusinessAccounts();
const phones = data.businessAccounts[0].phoneNumbers;

// Ordenar por cota restante (maior primeiro)
const sortedPhones = phones.sort((a, b) => b.quota.remaining - a.quota.remaining);

// Selecionar o que tem mais cota disponível
const bestPhone = sortedPhones.find(phone => phone.quota.canSend);

if (!bestPhone) {
  console.error('Nenhum número tem cota disponível');
  return;
}

console.log(`Usando número: ${bestPhone.displayPhoneNumber}`);
console.log(`  Cota restante: ${bestPhone.quota.remaining}`);
console.log(`  Phone Number ID: ${bestPhone.phoneNumberId}`);