Limites e Quotas
Entenda os limites da plataforma para planejar sua integração adequadamente.
Limites por Plano
Recursos Incluídos
| Recurso | Starter | Pro | Enterprise |
|---|---|---|---|
| Instâncias WhatsApp | 1 | 5 | 50 |
| Mensagens por dia | Ilimitado | Ilimitado | Ilimitado |
| API Keys | 5 | 20 | Ilimitado |
| Webhooks | 1 por instância | 1 por instância | 1 por instância |
| Retenção de logs | 7 dias | 30 dias | 90 dias |
| Suporte | Comunidade | Prioritário | Dedicado |
| SLA | - | 99.9% | 99.95% |
| Trial | 2 dias | 2 dias | Personalizado |
Recursos Adicionais
| Recurso | Starter | Pro | Enterprise |
|---|---|---|---|
| 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:
| Endpoint | Limite | Janela |
|---|---|---|
| Mensagens | 300 | Por minuto |
| Leitura | 600 | Por minuto |
| Webhook test | 10 | Por hora |
| Criação de recursos | 60 | Por hora |
Por Instância
| Operação | Limite | Observação |
|---|---|---|
| Envio de mensagens | 5/segundo | Por instância |
| Upload de mídia | 100 MB | Por arquivo |
| Tamanho da mensagem | 65.536 caracteres | WhatsApp limite |
| Conexões simultâneas | 1 | Por número |
Limites do WhatsApp
Estes são limites impostos pelo próprio WhatsApp:
| Tipo | Limite | Período |
|---|---|---|
| Mensagens únicas | 1.000 | Por dia |
| Broadcasts | 256 contatos | Por lista |
| Grupos | 1.024 | Por conta |
| Participantes por grupo | 1.024 | - |
| Tamanho do arquivo | 16 MB | Mídia geral |
| Tamanho do documento | 100 MB | PDFs, 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: 60Exemplo 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:
- Acesse o Dashboard
- Selecione o novo plano
- Confirme o pagamento
- 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.