Skip to content

Limites e Quotas

Entenda os limites da plataforma para planejar sua integração adequadamente.

Limites por Plano

Recursos Incluídos

RecursoStarterProEnterprise
Instâncias WhatsApp1550
Mensagens por diaIlimitadoIlimitadoIlimitado
API Keys520Ilimitado
Webhooks1 por instância1 por instância1 por instância
Retenção de logs7 dias30 dias90 dias
SuporteComunidadePrioritárioDedicado
SLA-99.9%99.95%
Trial2 dias2 diasPersonalizado

Recursos Adicionais

RecursoStarterProEnterprise
Upload de arquivos
Webhooks HTTPS
API pública
Dashboard web
Múltiplos usuários✅ (5)✅ (Ilimitado)
White-label

Rate Limiting

API Pública

Limites aplicados por API Key:

EndpointLimiteJanela
Mensagens300Por minuto
Leitura600Por minuto
Webhook test10Por hora
Criação de recursos60Por hora

Por Instância

OperaçãoLimiteObservação
Envio de mensagens5/segundoPor instância
Upload de mídia100 MBPor arquivo
Tamanho da mensagem65.536 caracteresWhatsApp limite
Conexões simultâneas1Por número

Limites do WhatsApp

Estes são limites impostos pelo próprio WhatsApp:

TipoLimitePeríodo
Mensagens únicas1.000Por dia
Broadcasts256 contatosPor lista
Grupos1.024Por conta
Participantes por grupo1.024-
Tamanho do arquivo16 MBMídia geral
Tamanho do documento100 MBPDFs, etc

Headers de Rate Limit

Todas as respostas incluem headers informativos:

X-RateLimit-Limit: 300
X-RateLimit-Remaining: 250
X-RateLimit-Reset: 1640995200
X-RateLimit-Window: 60

Exemplo de Tratamento

javascript
async function sendMessageWithRetry(data, maxRetries = 3) {
  for (let i = 0; i < maxRetries; i++) {
    const response = await fetch('/v1/messages/send', {
      method: 'POST',
      headers: {
        'Authorization': `Bearer ${API_KEY}`,
        'Content-Type': 'application/json'
      },
      body: JSON.stringify(data)
    });
    
    // Verificar rate limit
    const remaining = response.headers.get('X-RateLimit-Remaining');
    const reset = response.headers.get('X-RateLimit-Reset');
    
    if (response.status === 429) {
      // Rate limit excedido
      const waitTime = (reset * 1000) - Date.now();
      console.log(`Rate limit excedido. Aguardando ${waitTime}ms`);
      await sleep(waitTime);
      continue;
    }
    
    if (response.ok) {
      return response.json();
    }
    
    // Outros erros
    throw new Error(`Erro: ${response.status}`);
  }
  
  throw new Error('Máximo de tentativas excedido');
}

Boas Práticas

1. Implementar Backoff Exponencial

javascript
async function exponentialBackoff(fn, maxRetries = 5) {
  for (let i = 0; i < maxRetries; i++) {
    try {
      return await fn();
    } catch (error) {
      if (error.status !== 429) throw error;
      
      const delay = Math.min(1000 * Math.pow(2, i), 30000);
      await sleep(delay);
    }
  }
  throw new Error('Máximo de tentativas excedido');
}

2. Usar Filas para Alto Volume

javascript
class MessageQueue {
  constructor(rateLimit = 5) {
    this.queue = [];
    this.rateLimit = rateLimit;
    this.processing = false;
  }
  
  add(message) {
    this.queue.push(message);
    if (!this.processing) {
      this.process();
    }
  }
  
  async process() {
    this.processing = true;
    
    while (this.queue.length > 0) {
      const batch = this.queue.splice(0, this.rateLimit);
      
      await Promise.all(
        batch.map(msg => this.sendMessage(msg))
      );
      
      // Aguardar 1 segundo entre lotes
      await sleep(1000);
    }
    
    this.processing = false;
  }
}

3. Monitorar Uso

javascript
class UsageMonitor {
  constructor() {
    this.usage = {
      messages: 0,
      apiCalls: 0,
      errors: 0
    };
  }
  
  track(type, count = 1) {
    this.usage[type] += count;
    
    // Alertar se próximo do limite
    if (this.usage.messages > 900) {
      console.warn('Aproximando do limite diário de mensagens');
    }
  }
  
  getRemainingQuota() {
    return {
      messages: 1000 - this.usage.messages,
      apiCalls: 18000 - this.usage.apiCalls // 300/min * 60min
    };
  }
}

Aumentando Limites

Upgrade de Plano

Para aumentar limites de instâncias:

  1. Acesse o Dashboard
  2. Selecione o novo plano
  3. Confirme o pagamento
  4. Limites aplicados imediatamente

Limites Personalizados

Para necessidades especiais:

  • Entre em contato para plano Enterprise
  • Limites customizados disponíveis
  • SLA personalizado
  • Suporte dedicado

Monitoramento

Dashboard

Acompanhe seu uso em tempo real:

  • Mensagens enviadas/recebidas
  • Chamadas de API
  • Status das instâncias
  • Erros e alertas

Alertas

Configure alertas para:

  • 80% do limite atingido
  • Erros recorrentes
  • Instâncias desconectadas
  • Rate limit excedido

FAQ sobre Limites

P: O que acontece quando atinjo o limite? R: A API retorna erro 429 com informações sobre quando tentar novamente.

P: Posso comprar mensagens extras? R: Não há limite de mensagens. O limite é apenas de taxa (rate limit).

P: Como aumentar o limite de instâncias? R: Faça upgrade do plano no dashboard.

P: Os limites são por mês ou por dia? R: Rate limits são por minuto. Não há limite mensal de mensagens.

Próximos Passos

Desenvolvido com ❤️ pela equipe ZapFlare