API Documentation
Base URL: https://api.waumfy.com
Authentication
Most endpoints require a JWT access token in the Authorization header. Custom API trigger and Phone endpoints use an API key in the X-API-Key header.
WebSocket (Socket.IO)
Connect with your JWT token for real-time QR codes, session status, and incoming messages.
qr:update{ sessionId, qr }session:status{ sessionId, status, phoneNumber? }message:received{ sessionId, from, messageId, message }Webhook Events
Events are dispatched as HTTP POST requests to your configured webhook URL. Each payload is HMAC-signed via the X-Waumfy-Signature header.
MESSAGE_RECEIVEDFired when an inbound message arrives on any connected session.sessionIdstringYour WhatsApp session IDfromstringSender JID (e.g. 919XXXXXXXXX@s.whatsapp.net)senderPhonestringSender phone number (digits only)senderNamestring | nullPush name set by the sendermessageIdstringUnique WhatsApp message IDtimestampnumberUnix timestamp (seconds)typestringtext | image | video | audio | document | sticker | location | contactbodystring | nullText content or caption; null for audio/stickerpttbooleanAudio only — true if voice note (push-to-talk), false if audio filedurationnumber | nullAudio only — length in secondsmimetypestring | nullAudio only — MIME type (e.g. audio/ogg; codecs=opus)quotedMessageIdstringPresent only when message is a replyquotedBodystring | nullText of the quoted message (replies only)MESSAGE_DELIVEREDFired when an outbound message reaches the recipient's device.messageIdstringWhatsApp message IDtostringRecipient JIDMESSAGE_READFired when the recipient opens and reads an outbound message.messageIdstringWhatsApp message IDtostringRecipient JIDAction Payload Reference
JSON body for every action type when triggering via POST /api/apis/trigger/:slug.
SEND_TEXTSend a plain text message.
{
"to": "919XXXXXXXXX",
"text": "Hello! Your order has been confirmed."
}SEND_TEXT_IMAGESend an image with a text caption.
{
"to": "919XXXXXXXXX",
"imageUrl": "https://example.com/promo.jpg",
"text": "Check out our latest offer!"
}SEND_MEDIASend an image file.
{
"to": "919XXXXXXXXX",
"mediaType": "image",
"mediaUrl": "https://example.com/photo.jpg",
"caption": "Here is your receipt"
}SEND_MEDIASend a video file.
{
"to": "919XXXXXXXXX",
"mediaType": "video",
"mediaUrl": "https://example.com/demo.mp4",
"caption": "Watch our product demo"
}SEND_MEDIASend a PDF or document file.
{
"to": "919XXXXXXXXX",
"mediaType": "document",
"mediaUrl": "https://example.com/invoice.pdf",
"fileName": "invoice.pdf"
}SEND_MEDIASend an OGG/Opus file as an inline voice note with waveform.
{
"to": "919XXXXXXXXX",
"mediaType": "audio",
"mediaUrl": "https://example.com/message.ogg",
"ptt": true
}SEND_MEDIASend an MP3/M4A/WAV as a regular audio attachment.
{
"to": "919XXXXXXXXX",
"mediaType": "audio",
"mediaUrl": "https://example.com/track.mp3",
"ptt": false
}SEND_LOCATIONSend GPS coordinates with a name and address label.
{
"to": "919XXXXXXXXX",
"latitude": "28.6139",
"longitude": "77.2090",
"name": "India Gate",
"address": "New Delhi, India"
}SEND_CONTACTSend a vCard contact that the recipient can save.
{
"to": "919XXXXXXXXX",
"contactName": "Rahul Sharma",
"contactPhone": "919876543210"
}SEND_REACTIONReact to any message with an emoji.
{
"to": "919XXXXXXXXX",
"messageId": "3A22367A5402F21231C4",
"emoji": "👍"
}REPLY_TO_MESSAGESend a quoted reply to a specific message.
{
"to": "919XXXXXXXXX",
"messageId": "3A22367A5402F21231C4",
"text": "Got it! Delivering by 5pm.",
"quotedText": "When will my order arrive?"
}DELETE_MESSAGERecall/delete a message sent by your session.
{
"to": "919XXXXXXXXX",
"messageId": "3A22367A5402F21231C4"
}CHECK_NUMBERCheck if a phone number has WhatsApp.
{
"phone": "919XXXXXXXXX"
}
// Response: { "exists": true, "jid": "919XXXXXXXXX@s.whatsapp.net" }GET_GROUP_IDFind a group ID by name (fuzzy match).
{
"groupName": "Sales Team"
}
// Response: { "groups": [{ "id": "120363...@g.us", "name": "Sales Team", "participantCount": 12 }] }GET_GROUP_MEMBERSList all members of a group with their roles.
{
"groupId": "120363408831987455@g.us"
}
// Response: { "name": "Sales Team", "memberCount": 12, "members": [{ "phone": "919...", "role": "admin" }] }GET_PROFILE_PICFetch a contact's profile picture URL.
{
"phone": "919XXXXXXXXX"
}
// Response: { "phone": "919XXXXXXXXX", "url": "https://pps.whatsapp.net/..." }MARK_AS_READMark a received message as read.
{
"to": "919XXXXXXXXX",
"messageId": "3A22367A5402F21231C4"
}CUSTOM_JSONSend any Baileys message type — no restrictions. Pass raw content in the content field.
{
"to": "919XXXXXXXXX",
"content": {
"poll": {
"name": "Preferred time?",
"values": ["Morning", "Afternoon", "Evening"],
"selectableCount": 1
}
}
}Authentication
/api/auth/register/api/auth/login/api/auth/refresh/api/auth/meAuthSessions
/api/sessionsAuth/api/sessionsAuth/api/sessions/:id/sendAuth/api/sessions/:id/disconnectAuth/api/sessions/:idAuthMessages
/api/messagesAuth/api/messages/:idAuthBroadcasts
/api/broadcastsAuth/api/broadcastsAuth/api/broadcasts/:id/pauseAuth/api/broadcasts/:id/resumeAuth/api/broadcasts/:id/cancelAuthCustom API Actions
/api/apisAuth/api/apisAuth/api/apis/:idAuth/api/apis/trigger/:slugPhones (programmatic)
/api/apis/phonesAPI Key/api/apis/phonesAPI Key/api/apis/phones/:idAPI Key/api/apis/phones/:id/qrAPI Key/api/apis/phones/:idAPI KeyWebhooks
/api/webhooksAuth/api/webhooksAuth/api/webhooks/:idAuthAPI Keys
/api/api-keysAuth/api/api-keysAuth/api/api-keys/:idAuthSubscriptions
/api/subscriptions/plans/api/subscriptions/validate-couponAuth/api/subscriptions/subscribeAuth/api/subscriptions/myAuth