Capture a raw WAHA webhook event
curl --request POST \
--url https://api-v2.watchcollect.com/v2/webhooks/waha \
--header 'Content-Type: application/json' \
--header 'X-WAHA-SECRET: <api-key>' \
--data '
{
"id": "evt_123",
"event": "message",
"session": "user-user_35eh25qkkIVwab803vgofO1uSsl-receiving"
}
'const options = {
method: 'POST',
headers: {'X-WAHA-SECRET': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
id: 'evt_123',
event: 'message',
session: 'user-user_35eh25qkkIVwab803vgofO1uSsl-receiving'
})
};
fetch('https://api-v2.watchcollect.com/v2/webhooks/waha', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api-v2.watchcollect.com/v2/webhooks/waha"
payload = {
"id": "evt_123",
"event": "message",
"session": "user-user_35eh25qkkIVwab803vgofO1uSsl-receiving"
}
headers = {
"X-WAHA-SECRET": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text){
"status": "accepted",
"event_ids": [
"018f06e2-4f8d-7c01-8a0d-cc6fd78f7002"
],
"request_id": "018f06e2-4f8d-7c01-8a0d-cc6fd78f7001"
}{
"error": {
"code": "invalid_payload",
"message": "event is required",
"request_id": "018f06e2-4f8d-7c01-8a0d-cc6fd78f7001"
}
}{
"error": {
"code": "invalid_payload",
"message": "event is required",
"request_id": "018f06e2-4f8d-7c01-8a0d-cc6fd78f7001"
}
}{
"error": {
"code": "invalid_payload",
"message": "event is required",
"request_id": "018f06e2-4f8d-7c01-8a0d-cc6fd78f7001"
}
}{
"error": {
"code": "invalid_payload",
"message": "event is required",
"request_id": "018f06e2-4f8d-7c01-8a0d-cc6fd78f7001"
}
}ingest
Capture a raw WAHA webhook event
POST
/
v2
/
webhooks
/
waha
Capture a raw WAHA webhook event
curl --request POST \
--url https://api-v2.watchcollect.com/v2/webhooks/waha \
--header 'Content-Type: application/json' \
--header 'X-WAHA-SECRET: <api-key>' \
--data '
{
"id": "evt_123",
"event": "message",
"session": "user-user_35eh25qkkIVwab803vgofO1uSsl-receiving"
}
'const options = {
method: 'POST',
headers: {'X-WAHA-SECRET': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
id: 'evt_123',
event: 'message',
session: 'user-user_35eh25qkkIVwab803vgofO1uSsl-receiving'
})
};
fetch('https://api-v2.watchcollect.com/v2/webhooks/waha', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api-v2.watchcollect.com/v2/webhooks/waha"
payload = {
"id": "evt_123",
"event": "message",
"session": "user-user_35eh25qkkIVwab803vgofO1uSsl-receiving"
}
headers = {
"X-WAHA-SECRET": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text){
"status": "accepted",
"event_ids": [
"018f06e2-4f8d-7c01-8a0d-cc6fd78f7002"
],
"request_id": "018f06e2-4f8d-7c01-8a0d-cc6fd78f7001"
}{
"error": {
"code": "invalid_payload",
"message": "event is required",
"request_id": "018f06e2-4f8d-7c01-8a0d-cc6fd78f7001"
}
}{
"error": {
"code": "invalid_payload",
"message": "event is required",
"request_id": "018f06e2-4f8d-7c01-8a0d-cc6fd78f7001"
}
}{
"error": {
"code": "invalid_payload",
"message": "event is required",
"request_id": "018f06e2-4f8d-7c01-8a0d-cc6fd78f7001"
}
}{
"error": {
"code": "invalid_payload",
"message": "event is required",
"request_id": "018f06e2-4f8d-7c01-8a0d-cc6fd78f7001"
}
}Authorizations
Query Parameters
Body
application/json
Raw WAHA webhook envelope. It is intentionally flexible because WAHA can add event-specific top-level fields; stable fields are still documented here.
WAHA event ULID.
Available options:
session.status, message, message.reaction, message.any, message.ack, message.ack.group, message.waiting, message.revoked, message.edited, state.change, group.join, group.leave, group.v2.join, group.v2.leave, group.v2.update, group.v2.participants, presence.update, poll.vote, poll.vote.failed, chat.archive, call.received, call.accepted, call.rejected, label.upsert, label.deleted, label.chat.added, label.chat.deleted, event.response, event.response.failed, engine.event WAHA event creation timestamp in Unix milliseconds when present.
Available options:
WEBJS, WPP, NOWEB, GOWS Free-form metadata sent by WAHA. Watchatic currently uses it only as raw evidence.
Show child attributes
Show child attributes
Raw provider payload for the WAHA event. Common message, edit, revoke, session and group fields are documented; unknown WAHA fields are preserved.
Show child attributes
Show child attributes
WAHA runtime environment details.
Show child attributes
Show child attributes