EvolutionAPI multi-instance
How to run multiple WhatsApp numbers on the same EvolutionAPI installation: practical limits, isolation between instances and horizontal scaling.
EvolutionAPI supports multiple instances (numbers) on the same installation. Each instance is a paired WhatsApp number, with its own isolated session and webhooks.
How it works
Each instance is identified by an instanceName. The API routes look like this:
POST /message/sendText/{instanceName}
GET /chat/whatsappNumbers/{instanceName}
GET /instance/connectionState/{instanceName}
Each number’s session is persisted in Postgres or Redis (configurable via DATABASE_PROVIDER).
Create a new instance
curl -X POST https://sua-evolution.rollinhost.com.br/instance/create \
-H "apikey: SUA_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"instanceName": "vendas",
"qrcode": true,
"integration": "WHATSAPP-BAILEYS",
"webhook": {
"url": "https://n8n.exemplo.com/webhook/vendas-in",
"events": ["MESSAGES_UPSERT"]
}
}'
The response includes the qrcode.base64 for pairing.
Practical limits
| Resource | Per instance | 5 instances | 20 instances |
|---|---|---|---|
| RAM | ~400 MB | ~2 GB | ~8 GB |
| CPU (idle) | ~2% | ~10% | ~40% |
| CPU (at peak) | ~30% | varies | requires 8+ vCPU |
| Database | ~50 MB/month | ~250 MB | ~1 GB |
Horizontal scaling
For >50 instances, replicate EvolutionAPI across multiple servers and use a router based on instanceName:
┌─ evo-1.rollinhost.com.br (instances A-F)
NGINX/Traefik ──┼─ evo-2.rollinhost.com.br (instances G-M)
└─ evo-3.rollinhost.com.br (instances N-Z)
Postgres can be shared across nodes (watch the connection pool).
Bans and best practices
- Keep an organic ratio between sent and received messages (avoid one-way blasting)
- Warm up new numbers: start with 50 msgs/day and double it every week
- Use a random delay between messages (1-3s), do not send in bursts
Next steps
Last updated: