Skip to content

Chats and Contacts

Evolution API Lite provides comprehensive functionality for managing chats, contacts, and user profiles. This guide covers fetching conversations, managing contact information, handling message states, and updating profile settings.

Verify if phone numbers are registered on WhatsApp.

POST /chat/{instanceName}/whatsappNumbers
{
"numbers": ["5511999999999", "5511888888888", "5511777777777"]
}
Terminal window
curl -X POST "https://your-api-url/chat/your-instance/whatsappNumbers" \
-H "Content-Type: application/json" \
-H "apikey: your-api-key" \
-d '{
"numbers": ["5511999999999", "5511888888888"]
}'
[
{
"jid": "5511999999999@s.whatsapp.net",
"exists": true,
"number": "5511999999999",
"name": "John Doe"
},
{
"jid": "5511888888888@s.whatsapp.net",
"exists": false,
"number": "5511888888888"
}
]

Retrieve contacts from the instance with optional filtering.

POST /chat/{instanceName}/findContacts
{
"where": {}
}
Terminal window
curl -X POST "https://your-api-url/chat/your-instance/findContacts" \
-H "Content-Type: application/json" \
-H "apikey: your-api-key" \
-d '{
"where": {
"pushName": "John"
}
}'
[
{
"_id": "contact_id_123",
"id": "5511999999999@s.whatsapp.net",
"pushName": "John Doe",
"profilePictureUrl": "https://example.com/profile.jpg",
"isGroup": false,
"isUser": true,
"isWAContact": true
}
]

Retrieve all chats (conversations) with optional filtering.

POST /chat/{instanceName}/findChats
{
"where": {}
}
Terminal window
curl -X POST "https://your-api-url/chat/your-instance/findChats" \
-H "Content-Type: application/json" \
-H "apikey: your-api-key" \
-d '{
"where": {},
"limit": 20
}'
[
{
"_id": "chat_id_123",
"id": "5511999999999@s.whatsapp.net",
"name": "John Doe",
"isGroup": false,
"unreadCount": 3,
"archived": false,
"pinned": false,
"muteExpiration": 0,
"lastMessageTimestamp": 1640995200
}
]

Archive or unarchive chat conversations.

POST /chat/{instanceName}/archiveChat
{
"chat": "5511999999999@s.whatsapp.net",
"archive": true
}
Terminal window
curl -X POST "https://your-api-url/chat/your-instance/archiveChat" \
-H "Content-Type: application/json" \
-H "apikey: your-api-key" \
-d '{
"chat": "5511999999999@s.whatsapp.net",
"archive": true
}'

Control chat notifications by muting for a specified duration or unmuting.

POST /chat/{instanceName}/muteChat
{
"chat": "5511999999999@s.whatsapp.net",
"muteExpiration": 86400
}
Terminal window
curl -X POST "https://your-api-url/chat/your-instance/muteChat" \
-H "Content-Type: application/json" \
-H "apikey: your-api-key" \
-d '{
"chat": "5511999999999@s.whatsapp.net",
"muteExpiration": 86400
}'

Pin important conversations to the top or unpin them.

POST /chat/{instanceName}/pinChat
{
"chat": "5511999999999@s.whatsapp.net",
"pinned": true
}
Terminal window
curl -X POST "https://your-api-url/chat/your-instance/pinChat" \
-H "Content-Type: application/json" \
-H "apikey: your-api-key" \
-d '{
"chat": "5511999999999@s.whatsapp.net",
"pinned": true
}'

Update the read status of chats.

POST /chat/{instanceName}/markRead
{
"chat": "5511999999999@s.whatsapp.net",
"read": true
}
Terminal window
curl -X POST "https://your-api-url/chat/your-instance/markRead" \
-H "Content-Type: application/json" \
-H "apikey: your-api-key" \
-d '{
"chat": "5511999999999@s.whatsapp.net",
"read": true
}'

Retrieve the delivery/read status of a specific message.

POST /chat/{instanceName}/messageStatus
{
"key": {
"id": "message_id_here",
"remoteJid": "5511999999999@s.whatsapp.net",
"fromMe": false
}
}
Terminal window
curl -X POST "https://your-api-url/chat/your-instance/messageStatus" \
-H "Content-Type: application/json" \
-H "apikey: your-api-key" \
-d '{
"key": {
"id": "message_id_here",
"remoteJid": "5511999999999@s.whatsapp.net",
"fromMe": false
}
}'

Retrieve delivery status for a message in a specific chat.

POST /chat/{instanceName}/messageDeliveryStatus
{
"remoteJid": "5511999999999@s.whatsapp.net",
"fromMe": true,
"id": "message_id_here"
}
Terminal window
curl -X POST "https://your-api-url/chat/your-instance/messageDeliveryStatus" \
-H "Content-Type: application/json" \
-H "apikey: your-api-key" \
-d '{
"remoteJid": "5511999999999@s.whatsapp.net",
"fromMe": true,
"id": "message_id_here"
}'

Change the profile “About” status message.

POST /profile/{instanceName}/updateStatus
{
"status": "Available for chat"
}
Terminal window
curl -X POST "https://your-api-url/profile/your-instance/updateStatus" \
-H "Content-Type: application/json" \
-H "apikey: your-api-key" \
-d '{
"status": "Available for chat"
}'

Change the account’s profile picture.

POST /profile/{instanceName}/updateProfilePicture
{
"image": "https://example.com/new-profile-picture.jpg"
}
Terminal window
curl -X POST "https://your-api-url/profile/your-instance/updateProfilePicture" \
-H "Content-Type: application/json" \
-H "apikey: your-api-key" \
-d '{
"image": "https://example.com/profile.png"
}'

Change the account’s display name.

POST /profile/{instanceName}/updateDisplayName
{
"name": "New Display Name"
}
Terminal window
curl -X POST "https://your-api-url/profile/your-instance/updateDisplayName" \
-H "Content-Type: application/json" \
-H "apikey: your-api-key" \
-d '{
"name": "Support Account"
}'

Control typing indicators and online presence.

POST /chat/{instanceName}/presence
{
"id": "5511999999999@s.whatsapp.net",
"type": "typing"
}
Terminal window
curl -X POST "https://your-api-url/chat/your-instance/presence" \
-H "Content-Type: application/json" \
-H "apikey: your-api-key" \
-d '{
"id": "5511999999999@s.whatsapp.net",
"type": "typing"
}'
  • Invalid JID format
  • Instance not connected
  • Permission denied for group operations
  • Invalid media/base64 encoding
  • Rate limit exceeded
{
"error": true,
"message": "Error description",
"details": {
"code": "VALIDATION_ERROR",
"field": "id"
}
}
  1. Validate JIDs

    Use the correct JID format for users (s.whatsapp.net) and groups (g.us).

  2. Use Efficient Filters

    Apply filters when fetching contacts/chats to reduce payload size and improve performance.

  3. Respect Privacy Settings

    Be mindful of user privacy and avoid intrusive presence updates.

  4. Monitor Message States

    Track message delivery and read status for reliable communication flows.

  5. Webhooks Integration

    Set up webhooks to receive real-time updates for chats, contacts, and messages.