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"
}
'
{
  "status": "accepted",
  "event_ids": [
    "018f06e2-4f8d-7c01-8a0d-cc6fd78f7002"
  ],
  "request_id": "018f06e2-4f8d-7c01-8a0d-cc6fd78f7001"
}

Authorizations

X-WAHA-SECRET
string
header
required

Query Parameters

userId
string
required

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.

id
string
required

WAHA event ULID.

event
enum<string>
required
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
session
string
required
timestamp
integer<int64> | null

WAHA event creation timestamp in Unix milliseconds when present.

engine
enum<string> | null
Available options:
WEBJS,
WPP,
NOWEB,
GOWS
metadata
object

Free-form metadata sent by WAHA. Watchatic currently uses it only as raw evidence.

payload
object

Raw provider payload for the WAHA event. Common message, edit, revoke, session and group fields are documented; unknown WAHA fields are preserved.

environment
object

WAHA runtime environment details.

Response

Webhook accepted or duplicate accepted.

status
enum<string>
required
Available options:
accepted,
duplicate_accepted,
rejected,
conflict,
noop
event_ids
string<uuid>[]
required
request_id
string
required
resource_id
string | null