API Reference

Send WhatsApp messages from your code

Thirteen endpoints, one job each: text, media (by URL or upload), location, contacts, polls, stickers, reactions, edits, group invites, events, marking messages read, and forwarding. Every request needs an API key — create one in API Keys.

Want to try requests without writing code first? Use the API Playground.

Authentication

Send your API key on every request as a header:

bash
X-API-Key: YOUR_API_KEY
POST/integrations-user/whatsapp/send-message(no /api prefix)

Send Message

Send a plain text message to a WhatsApp number through one of your connected sessions.

FieldTypeRequiredDescription
tostringREQUIREDRecipient WhatsApp number, digits only with country code (e.g. "971509876543"). No "+" or leading "00".
messagestringREQUIREDText content to send.
mentionsstring[]OPTIONALGroup chats only — phone numbers or JIDs to @-mention. No-op in a 1:1 chat.
sessionIdnumberOPTIONALSpecific WhatsApp session ID to send from. Takes priority over phoneNumber when both are given.
phoneNumberstringOPTIONALYour connected session’s phone number, used to pick which session sends the message when your account has more than one connected. Ignored if sessionId is given. If neither is given, the first connected session is used.
W
447700900123

Hello from the API!

now ✓✓
bash
curl -X POST 'https://api.chatpingo.com/integrations-user/whatsapp/send-message' \
  -H 'X-API-Key: YOUR_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{ "to": "12025550147", "message": "Hello from the API!", "sessionId": null, "phoneNumber": "447476686841" }'
POST/integrations-user/whatsapp/send-media(no /api prefix)

Send Media (by URL)

Send media (image, video, document, or audio) to a WhatsApp number through one of your connected sessions, by linking to a publicly reachable URL.

FieldTypeRequiredDescription
tostringREQUIREDRecipient WhatsApp number, digits only with country code (e.g. "971509876543"). No "+" or leading "00".
mediaobject (JSON)REQUIREDShape: { url?, base64?, mimetype (required), fileName?, caption?, viewOnce? } — provide either url or base64. Images/videos only — viewOnce lets the recipient open it once before it disappears.
sessionIdnumberOPTIONALSpecific WhatsApp session ID to send from. Takes priority over phoneNumber when both are given.
phoneNumberstringOPTIONALYour connected session’s phone number, used to pick which session sends the message when your account has more than one connected. Ignored if sessionId is given. If neither is given, the first connected session is used.
W
447700900123
🖼image attachment

Check out this image

now ✓✓
bash
curl -X POST 'https://api.chatpingo.com/integrations-user/whatsapp/send-media' \
  -H 'X-API-Key: YOUR_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{ "to": "12025550147", "media": { "url": "https://www.tropicaltickets.com/cdn/shop/files/download_72.jpg?v=1691659648", "mimetype": "image/jpeg", "fileName": "photo.jpg", "caption": "Check out this image" }, "sessionId": null, "phoneNumber": "447476686841" }'
POST/integrations-user/whatsapp/send-media(no /api prefix)

Send Media (Upload File)

Same endpoint as "Send Media (by URL)". This example shows sending a file straight from your device: switch to the Form tab, click the 📎 attach icon on the "media" row, and pick a file — it's base64-encoded automatically into the shape the API expects.

FieldTypeRequiredDescription
tostringREQUIREDRecipient WhatsApp number, digits only with country code (e.g. "971509876543"). No "+" or leading "00".
mediaobject (JSON)REQUIREDAttach a file via the Form tab's 📎 icon instead of typing this by hand. Shape once attached: { base64, mimetype, fileName }. Add "viewOnce": true (images/videos only) to make it disappear after the recipient opens it once.
sessionIdnumberOPTIONALSpecific WhatsApp session ID to send from. Takes priority over phoneNumber when both are given.
phoneNumberstringOPTIONALYour connected session’s phone number, used to pick which session sends the message when your account has more than one connected. Ignored if sessionId is given. If neither is given, the first connected session is used.
W
447700900123
🖼image attachment

Check out this image

now ✓✓
bash
curl -X POST 'https://api.chatpingo.com/integrations-user/whatsapp/send-media' \
  -H 'X-API-Key: YOUR_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{ "to": "12025550147", "media": { "caption": "Check out this image" }, "sessionId": null, "phoneNumber": "447476686841" }'
POST/integrations-user/whatsapp/send-location(no /api prefix)

Send Location

Send a pinned location to a WhatsApp number through one of your connected sessions.

FieldTypeRequiredDescription
tostringREQUIREDRecipient WhatsApp number, digits only with country code (e.g. "971509876543"). No "+" or leading "00".
latitudenumberREQUIREDDegrees latitude, between -90 and 90.
longitudenumberREQUIREDDegrees longitude, between -180 and 180.
namestringOPTIONALLabel shown above the pin (e.g. a venue name).
addressstringOPTIONALAddress text shown under the pin.
sessionIdnumberOPTIONALSpecific WhatsApp session ID to send from. Takes priority over phoneNumber when both are given.
phoneNumberstringOPTIONALYour connected session’s phone number, used to pick which session sends the message when your account has more than one connected. Ignored if sessionId is given. If neither is given, the first connected session is used.
W
447700900123
📍

ChatPingo HQ

Dubai, UAE

now ✓✓
bash
curl -X POST 'https://api.chatpingo.com/integrations-user/whatsapp/send-location' \
  -H 'X-API-Key: YOUR_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{ "to": "12025550147", "latitude": 25.2048, "longitude": 55.2708, "name": "ChatPingo HQ", "address": "Dubai, UAE", "sessionId": null, "phoneNumber": "447476686841" }'
POST/integrations-user/whatsapp/send-contact(no /api prefix)

Send Contact

Send one or more contact cards (vCards) to a WhatsApp number through one of your connected sessions.

FieldTypeRequiredDescription
tostringREQUIREDRecipient WhatsApp number, digits only with country code (e.g. "971509876543"). No "+" or leading "00".
contactsarray of { name, phone }REQUIREDOne or more contact cards to send — at least one required. Each needs a display name and phone number.
sessionIdnumberOPTIONALSpecific WhatsApp session ID to send from. Takes priority over phoneNumber when both are given.
phoneNumberstringOPTIONALYour connected session’s phone number, used to pick which session sends the message when your account has more than one connected. Ignored if sessionId is given. If neither is given, the first connected session is used.
W
447700900123
J

Jane Doe

+971 50 987 6543

now ✓✓
bash
curl -X POST 'https://api.chatpingo.com/integrations-user/whatsapp/send-contact' \
  -H 'X-API-Key: YOUR_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{ "to": "12025550147", "contacts": [ { "name": "Jane Doe", "phone": "971509876543" } ], "sessionId": null, "phoneNumber": "447476686841" }'
POST/integrations-user/whatsapp/send-poll(no /api prefix)

Send Poll

Send a poll with a question and 2–12 selectable options to a WhatsApp number through one of your connected sessions.

FieldTypeRequiredDescription
tostringREQUIREDRecipient WhatsApp number, digits only with country code (e.g. "971509876543"). No "+" or leading "00".
questionstringREQUIREDThe poll question.
optionsstring[]REQUIRED2 to 12 selectable options.
selectableCountnumberOPTIONALHow many options a voter can pick. Defaults to 1 (single choice) — set higher to allow multiple.
mentionsstring[]OPTIONALGroup chats only — phone numbers or JIDs to @-mention. No-op in a 1:1 chat.
sessionIdnumberOPTIONALSpecific WhatsApp session ID to send from. Takes priority over phoneNumber when both are given.
phoneNumberstringOPTIONALYour connected session’s phone number, used to pick which session sends the message when your account has more than one connected. Ignored if sessionId is given. If neither is given, the first connected session is used.
W
447700900123

📊 What's your favorite color?

Red
Blue
Green
now ✓✓
bash
curl -X POST 'https://api.chatpingo.com/integrations-user/whatsapp/send-poll' \
  -H 'X-API-Key: YOUR_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{ "to": "12025550147", "question": "What's your favorite color?", "options": [ "Red", "Blue", "Green" ], "selectableCount": 1, "sessionId": null, "phoneNumber": "447476686841" }'
POST/integrations-user/whatsapp/send-sticker(no /api prefix)

Send Sticker

Send an image as a WhatsApp sticker through one of your connected sessions. Non-webp images are converted automatically.

FieldTypeRequiredDescription
tostringREQUIREDRecipient WhatsApp number, digits only with country code (e.g. "971509876543"). No "+" or leading "00".
mediaobject (JSON)REQUIREDShape: { url?, base64?, mimetype? } — provide either url or base64. Attach a file via the Form tab's 📎 icon, or paste a URL. Anything that isn't already image/webp is converted server-side.
sessionIdnumberOPTIONALSpecific WhatsApp session ID to send from. Takes priority over phoneNumber when both are given.
phoneNumberstringOPTIONALYour connected session’s phone number, used to pick which session sends the message when your account has more than one connected. Ignored if sessionId is given. If neither is given, the first connected session is used.
W
447700900123
🖼️
now ✓✓
bash
curl -X POST 'https://api.chatpingo.com/integrations-user/whatsapp/send-sticker' \
  -H 'X-API-Key: YOUR_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{ "to": "12025550147", "media": {}, "sessionId": null, "phoneNumber": "447476686841" }'
POST/integrations-user/whatsapp/send-reaction(no /api prefix)

Send Reaction

React to an existing message with an emoji. messageId, remoteJid, and fromMe identify the target message — you already have these from your inbound webhook payload for that message.

FieldTypeRequiredDescription
messageIdstringREQUIREDThe WhatsApp message ID being reacted to (from your webhook payload).
remoteJidstringREQUIREDThe chat the message belongs to (from your webhook payload).
fromMebooleanREQUIREDWhether that message was sent by you (true) or received from the other side (false).
emojistringREQUIREDThe reaction emoji, e.g. "👍". Send an empty string to remove a previously-set reaction.
sessionIdnumberOPTIONALSpecific WhatsApp session ID to send from. Takes priority over phoneNumber when both are given.
phoneNumberstringOPTIONALYour connected session’s phone number, used to pick which session sends the reaction when your account has more than one connected. Ignored if sessionId is given. If neither is given, the first connected session is used.
W
447700900123

Hello from the API!

now ✓✓
👍
bash
curl -X POST 'https://api.chatpingo.com/integrations-user/whatsapp/send-reaction' \
  -H 'X-API-Key: YOUR_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{ "messageId": "ABCD1234EF567890", "remoteJid": "12025550147@s.whatsapp.net", "fromMe": false, "emoji": "👍", "sessionId": null, "phoneNumber": "447476686841" }'
POST/integrations-user/whatsapp/send-edit-message(no /api prefix)

Edit Message

Edit a text message your session already sent. messageId and remoteJid identify it — you get these back in the "messageId" field of that message's send response. WhatsApp only allows editing within about 15 minutes of sending.

FieldTypeRequiredDescription
messageIdstringREQUIREDThe WhatsApp message ID of the message to edit — must be one your session sent (from that send's response).
remoteJidstringREQUIREDThe chat the message belongs to.
newTextstringREQUIREDThe corrected text.
sessionIdnumberOPTIONALSpecific WhatsApp session ID to send from. Takes priority over phoneNumber when both are given.
phoneNumberstringOPTIONALYour connected session’s phone number, used to pick which session sends from when your account has more than one connected. Ignored if sessionId is given. If neither is given, the first connected session is used.
W
447700900123

Corrected text!

Edited · now ✓✓
bash
curl -X POST 'https://api.chatpingo.com/integrations-user/whatsapp/send-edit-message' \
  -H 'X-API-Key: YOUR_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{ "messageId": "ABCD1234EF567890", "remoteJid": "12025550147@s.whatsapp.net", "newText": "Corrected text!", "sessionId": null, "phoneNumber": "447476686841" }'
POST/integrations-user/whatsapp/send-group-invite(no /api prefix)

Send Group Invite

Send a rich "join this group" message with a live invite link. Your session must already be a member/admin of the group.

FieldTypeRequiredDescription
tostringREQUIREDRecipient WhatsApp number to send the invite message to.
groupJidstringREQUIREDThe group's JID (e.g. "123456789@g.us"). Your session must already be a member/admin.
textstringOPTIONALOptional message text shown alongside the invite. Defaults to "Join {group name}".
sessionIdnumberOPTIONALSpecific WhatsApp session ID to send from. Takes priority over phoneNumber when both are given.
phoneNumberstringOPTIONALYour connected session’s phone number, used to pick which session sends from when your account has more than one connected. Ignored if sessionId is given. If neither is given, the first connected session is used.
W
447700900123
👥

Sales Team

Group invite

Join Sales Team

now ✓✓
bash
curl -X POST 'https://api.chatpingo.com/integrations-user/whatsapp/send-group-invite' \
  -H 'X-API-Key: YOUR_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{ "to": "12025550147", "groupJid": "123456789@g.us", "sessionId": null, "phoneNumber": "447476686841" }'
POST/integrations-user/whatsapp/send-event(no /api prefix)

Send Event

Send a calendar-invite-style event message to a WhatsApp number through one of your connected sessions.

FieldTypeRequiredDescription
tostringREQUIREDRecipient WhatsApp number, digits only with country code (e.g. "971509876543"). No "+" or leading "00".
namestringREQUIREDThe event name.
descriptionstringOPTIONALEvent description.
startDatestring (ISO 8601)REQUIREDStart date/time, e.g. "2026-08-01T18:00:00Z".
endDatestring (ISO 8601)OPTIONALEnd date/time. Omit for an open-ended event.
sessionIdnumberOPTIONALSpecific WhatsApp session ID to send from. Takes priority over phoneNumber when both are given.
phoneNumberstringOPTIONALYour connected session’s phone number, used to pick which session sends the message when your account has more than one connected. Ignored if sessionId is given. If neither is given, the first connected session is used.
W
447700900123
📅

Launch Party

Aug 1, 6:00 PM

now ✓✓
bash
curl -X POST 'https://api.chatpingo.com/integrations-user/whatsapp/send-event' \
  -H 'X-API-Key: YOUR_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{ "to": "12025550147", "name": "Launch Party", "description": "Come celebrate with us", "startDate": "2026-08-01T18:00:00Z", "endDate": "2026-08-01T20:00:00Z", "sessionId": null, "phoneNumber": "447476686841" }'
POST/integrations-user/whatsapp/mark-read(no /api prefix)

Mark as Read

Mark a message your session received as read — turns on the blue ticks. messageId and remoteJid come from your inbound webhook payload for that message.

FieldTypeRequiredDescription
messageIdstringREQUIREDThe WhatsApp message ID to mark read (from your webhook payload).
remoteJidstringREQUIREDThe chat the message belongs to (from your webhook payload).
fromMebooleanREQUIREDWhether that message was sent by you (true) or received (false — the usual case here).
sessionIdnumberOPTIONALSpecific WhatsApp session ID to act on. Takes priority over phoneNumber when both are given.
phoneNumberstringOPTIONALYour connected session’s phone number, used to pick which session acts when your account has more than one connected. Ignored if sessionId is given. If neither is given, the first connected session is used.
W
447700900123

Hey, are we still on for tomorrow?

✓✓ Read
bash
curl -X POST 'https://api.chatpingo.com/integrations-user/whatsapp/mark-read' \
  -H 'X-API-Key: YOUR_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{ "messageId": "ABCD1234EF567890", "remoteJid": "12025550147@s.whatsapp.net", "fromMe": false, "sessionId": null, "phoneNumber": "447476686841" }'
POST/integrations-user/whatsapp/forward-message(no /api prefix)

Forward Message

Re-sends the given text to a new recipient, marked "Forwarded" in the WhatsApp UI. This sends the text you provide — it doesn't replay an arbitrary original message you only have the ID of.

FieldTypeRequiredDescription
tostringREQUIREDRecipient WhatsApp number, digits only with country code (e.g. "971509876543"). No "+" or leading "00".
textstringREQUIREDThe text content to forward.
sessionIdnumberOPTIONALSpecific WhatsApp session ID to send from. Takes priority over phoneNumber when both are given.
phoneNumberstringOPTIONALYour connected session’s phone number, used to pick which session sends from when your account has more than one connected. Ignored if sessionId is given. If neither is given, the first connected session is used.
W
447700900123
↪ Forwarded

Forwarded content

now ✓✓
bash
curl -X POST 'https://api.chatpingo.com/integrations-user/whatsapp/forward-message' \
  -H 'X-API-Key: YOUR_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{ "to": "12025550147", "text": "Forwarded content", "sessionId": null, "phoneNumber": "447476686841" }'

Errors

Every endpoint on this page returns the same status codes.

201CreatedMessage accepted and sent.
400Bad RequestThe body failed validation — check the field table above.
401UnauthorizedMissing or invalid API key.
429Too Many RequestsRate limit is 30 requests/minute per API key.
503Service UnavailableNo connected WhatsApp session was available to send from.