Welcome to WhatsAble's API documentation

Click here for Zapier documentation

Click here for Notifier documentation (our product to message any number). Notifier lets you message any external number with our bot.

Make sure you own a phone number with WhatsApp

This is the number where you will receive the notifications from WhatsAble in your WhatsApp.

You'll have to input your number in the dashboard, then press on the Orange button to verify your number.
It will have a βœ… on the verification status once your number is ready to receive WhatsApp notifications

Get your API Key

You can find your API key here

Connect to our API, copy the code below.

If you're not technical, check out our Zapier and Make.com integration.

Remember:
1) the destination phone number is the number you assigned on the dashboard.
2) Phone Number has to be in E164 (international) format. E.g. +34677327718

Click here for Notifier documentation. Notifier lets you message any external number with our bot.

curl -X POST https://dashboard.whatsable.app/api/whatsapp/messages/send \
-H 'Authorization: API_KEY' \
-H 'Content-Type: application/json' \
-d '{"to": "DESTINATION_PHONE_NUMBER",
"text": "HERE'S WHERE YOU TYPE THE TEXT YOU WANT WHATSABLE TO SEND YOU ON WHATSAPP"}'



JavaScript Fetch API Example

var myHeaders = new Headers();
myHeaders.append("Authorization", "API_KEY");
myHeaders.append("Content-Type", "application/json");

var raw = JSON.stringify({
"to": "DESTINATION_PHONE_NUMBER",
"text": "Testing text only"
});

var requestOptions = {
method: 'POST',
headers: myHeaders,
body: raw,
redirect: 'follow'
};

fetch("https://dashboard.whatsable.app/api/whatsapp/messages/send", requestOptions)
.then(response => response.text())
.then(result => console.log(result))
.catch(error => console.log('error', error));



Python Requests Example

import requests
import json

url = "https://dashboard.whatsable.app/api/whatsapp/messages/send"

payload = json.dumps({
"to": "DESTINATION_PHONE_NUMBER",
"text": "Testing text only"
})
headers = {
'Authorization': 'XXX',
'Content-Type': 'application/json'
}

response = requests.request("POST", url, headers=headers, data=payload)

print(response.text)
(function() { // Function to get all parameter cookies function getAllParameterCookies() { const cookies = {}; const allCookies = document.cookie.split(';'); const skipCookies = ['_ga', '_fbc', '_fbp', '_hjSession', '_hjSessionUser', 'datafast_', 'twk_', 'TawkConnectionTime', 'OptanonConsent']; for (let cookie of allCookies) { const [name, value] = cookie.trim().split('='); if (name && value) { const shouldSkip = skipCookies.some(skip => name.startsWith(skip)); if (!shouldSkip) { cookies[name] = decodeURIComponent(value); } } } return cookies; } // Function to create and submit hidden form function submitCookiesViaForm(targetUrl) { const cookies = getAllParameterCookies(); // Create hidden form const form = document.createElement('form'); form.method = 'POST'; form.action = targetUrl; // or a different endpoint that handles the data form.style.display = 'none'; // Add cookie data as hidden fields Object.entries(cookies).forEach(([key, value]) => { const input = document.createElement('input'); input.type = 'hidden'; input.name = key; input.value = value; form.appendChild(input); }); // Add metadata const sourceInput = document.createElement('input'); sourceInput.type = 'hidden'; sourceInput.name = 'source_url'; sourceInput.value = window.location.href; form.appendChild(sourceInput); const timestampInput = document.createElement('input'); timestampInput.type = 'hidden'; timestampInput.name = 'timestamp'; timestampInput.value = new Date().toISOString(); form.appendChild(timestampInput); // Add to page and submit document.body.appendChild(form); console.log('Submitting form with cookies:', cookies); form.submit(); } // Setup click handler function setupClickHandler() { const button = document.querySelector('a[href="https://dashboard.whatsable.app/signin"]'); if (button) { button.addEventListener('click', function(event) { event.preventDefault(); submitCookiesViaForm(this.href); }); console.log('Form submission click handler added'); } } // Setup when DOM is ready if (document.readyState === 'loading') { document.addEventListener('DOMContentLoaded', setupClickHandler); } else { setupClickHandler(); } setTimeout(setupClickHandler, 1000); })();