✅ Presence
You can get presence information (online, offline with last seen, typing status) for a contact if they share their presence information.
Possible presence statuses that you can set or get for chats:
online
offline
typing
recording
paused
resets the chat presence after you weretyping
FAQ
👉 I don’t get notifications on my phone when WAHA session is connected
- You need to send
offline
after all presence you send (WhatsApp doesn’t send notifications to the device if a web client is active). - For 🏭 NOWEB Engine also mark sure to send
markOnline: false
when you create a new session.
Endpoints
See the list of engines that support the feature ->.
Set presence
You can set your global or chat-related presence with POST /api/{session}/presence
endpoint
Start typing to a chat (you can use POST /startTyping
instead)
POST /api/{session}/presence
{
"chatId": "111111111@c.us",
"presence": "typing"
}
Clear “typing” state (you can use POST /stopTyping
instead)
POST /api/{session}/presence
{
"chatId": "111111111@c.us",
"presence": "paused"
}
Set global “online”, all contacts will see it
POST /api/{session}/presence
{
"presence": "online"
}
💡 In the multi-device version of WhatsApp - if a desktop client is active, WhatsApp doesn’t send push notifications
to the device.
If you would like to receive said notifications - you need to mark a session’s presence as offline
.
POST /api/{session}/presence
{
"presence": "offline"
}
Get all chats presence
Here’s few notes about fields:
chatId
- either contact id (213213213@c.us
) or group chat id (1111111111111@g.us
).lastSeen
- contains Unix timestamps indicating when a participant was last onlinelastKnownPresence
- contains the last known presence status, which can beoffline
,online
,typing
,recording
, orpaused
You can get all presence information available for a session by calling GET /api/{session}/presence/
.
It returns both groups’ and personal chats’ presence information.
[
{
"id": "2132132130@c.us",
"presences": [
{
"participant": "2132132130@c.us",
"lastKnownPresence": "offline",
"lastSeen": 1686719326
}
]
},
{
"id": "11111111111111111111111@g.us",
"presences": [
{
"participant": "11111111111111111111111@g.us",
"lastKnownPresence": "online",
"lastSeen": null
},
{
"participant": "2132132130@c.us",
"lastKnownPresence": "offline",
"lastSeen": 1686719326
}
]
}
]
Get chat presence
To get presence information for a single chat - call GET /api/{session}/presence/{chatId}
.
For a group, you’ll get participants’ statuses.
{
"id": "2132132130@c.us",
"presences": [
{
"participant": "2132132130@c.us",
"lastKnownPresence": "online",
"lastSeen": null
}
]
}
Subscribe to presence
You can subscribe to presence information by calling POST /api/{session}/presence/{chatId}/subscribe
request
(no body required).
You can get later presence information for the chat with above GET
endpoints or by listening to presence.update
webhook.
Webhooks
See the list of engines that support the feature ->.
presence.update
You can subscribe to presence.update
webhook event to get the most recent presence information.
{
"event": "presence.update",
"session": "default",
"payload": {
"id": "111111111111111111@g.us",
"presences": [
{
"participant": "11111111111@c.us",
"lastKnownPresence": "typing",
"lastSeen": null
}
]
},
"engine": "NOWEB"
}