Skip to main content

Overview

Evolution API manages WhatsApp connections through instances. Each instance represents a separate WhatsApp connection with its own authentication, session, and message queue.
Connection behavior differs between providers: Baileys requires active connection management, while Business API connections are always active.

Connection Lifecycle

1

Create Instance

Initialize a new WhatsApp instance:
Response:
2

Connect to WhatsApp

For Baileys, authenticate via QR code or pairing code. For Business API, the connection is immediate.Baileys Connection:
Business API Connection:
3

Monitor Status

Track connection state through webhooks or API queries:
4

Disconnect or Delete

Gracefully disconnect or remove the instance:

Connection States

Baileys Connection States

Instance is establishing connection to WhatsApp servers.
What’s happening:
  • WebSocket connection opening
  • Authenticating session credentials
  • Syncing initial data
Typical duration: 5-30 seconds

Reconnection Strategies

Automatic Reconnection

Evolution API handles reconnections automatically for transient failures:
Automatic reconnection includes exponential backoff to avoid overwhelming WhatsApp servers.

Manual Reconnection

Force reconnection of an existing instance:
Backend implementation:

Session Persistence

Evolution API persists session data to enable seamless reconnections:

Storage Options

Store encrypted credentials in PostgreSQL or MySQL:
.env
Implementation:
Pros:
  • Persistent across restarts
  • Centralized management
  • Easy backup
Cons:
  • Database dependency
  • Slightly slower than Redis

Connection Monitoring

Webhook Events

Subscribe to connection events via webhooks:
.env
Event payload:

API Polling

Query connection status programmatically:
Response:

Health Checks

Implement health monitoring:

Multi-Instance Management

Manage multiple WhatsApp connections:

Instance Isolation

Evolution API is multi-tenant. Always scope operations by instance:

Connection Best Practices

1

Monitor Connection Events

Subscribe to connection.update webhooks to track instance health:
2

Enable Session Persistence

Always enable session storage to prevent re-authentication:
.env
3

Handle QR Code Expiration

Baileys QR codes expire after a limit:
.env
Monitor qrcode.updated events and alert users to scan promptly.
4

Implement Graceful Shutdown

Properly close connections on application shutdown:

Connection Limits

Baileys Limitations

  • Concurrent connections per number: 1 active connection
  • QR code timeout: ~45 seconds per code
  • Max QR regenerations: Configurable (default 30)
  • Reconnection delay: Automatic exponential backoff
Multiple simultaneous connections with the same WhatsApp number will cause disconnections.

Business API Limitations

  • No active connection required: Always available
  • Rate limits: Based on account tier
  • Webhook timeout: 5-second response required

Troubleshooting

Connection Keeps Closing

Check logs for disconnect reason:
Common causes:

Session Not Persisting

Verify storage configuration:
Ensure database or Redis is accessible:

Instance Not Found

Query instance existence:
If missing, recreate:

Next Steps

Baileys Connection

Learn Baileys-specific connection details

Business API

Understand Business API connection flow

Webhooks

Configure connection event webhooks

Instance Management

Create and manage instances