Send WhatsApp messages from your own software — through your own number

Register on MySender, link your WhatsApp number once, and your website, billing / ERP software, Excel or any app can send messages (text, files, templates) from your own number with one simple web request. Your number stays in your phone; MySender only carries the messages.

अपनी वेबसाइट, बिलिंग/ERP सॉफ़्टवेयर, Excel या कोई भी सॉफ़्टवेयर — हमारी वेबसाइट पर रजिस्टर करके अपना नंबर जोड़ें और उसी नंबर से मैसेज भेजें। नीचे पूरी प्रक्रिया क्रम से लिखी है।

The same method is used by the CIGRS system to send its reports from each officer's own number. Ready-made code is below — you do not have to write it from scratch.

1. Setup — step by step (पूरी प्रक्रिया)

1

Create your account

Open https://mysender.mawanta.com/register, enter your name, email, password and the code sent to your email. A free trial starts at once.

साइनअप पेज खोलें, नाम, ईमेल और पासवर्ड भरें; ईमेल पर आया कोड "Verify OTP" से जाँचें। मुफ़्त ट्रायल तुरंत शुरू हो जाता है।

2

Link your WhatsApp number

In the panel open My Devices → Add Device. On the phone: WhatsApp → Settings → Linked devices → Link a device and scan the QR code shown on the screen. When it says Connected, your number is ready.

पैनल में My Devices → Add Device। फ़ोन में WhatsApp → Settings → Linked devices → Link a device से स्क्रीन का QR स्कैन करें। "Connected" दिखे तो नंबर तैयार है।

3

Create an App and copy the App Key

Open My Apps → Create App, give it a name (for example "My billing software") and choose the number from step 2. Open the app and copy its App Key. Create a separate App for every software, so you can switch one off without touching the others.

My Apps → Create App, नाम लिखें और वही नंबर चुनें। बन जाने पर उसकी App Key कॉपी करें। हर सॉफ़्टवेयर के लिए अलग App बनाएँ।

4

Copy your Auth Key

Open Auth Key in the panel menu (Settings) and copy it. Auth Key + App Key together are the “password” of your software — keep them private and never put them in a web page that visitors can read.

पैनल में Auth Key पेज से अपनी Auth Key कॉपी करें। Auth Key और App Key गुप्त रखें — इन्हें किसी ऐसे पेज में न रखें जिसे आगंतुक देख सकें।

5

Test it

Run the cURL example below (replace the two keys and the number with your own) or open My Apps → your app → Integration, where the same code is shown with your keys already filled in. Your own phone should receive the message within seconds.

नीचे का cURL चलाकर देखें, या My Apps → आपका App → Integration में वही कोड आपकी कुंजियों के साथ तैयार मिलेगा। मैसेज कुछ सेकंड में आपके फ़ोन पर आ जाना चाहिए।

6

Connect your software

Put the same request into your software: a website form, an order / invoice event, a billing or ERP “after save” action, an Excel / Google Sheet macro, or a no-code tool (Zapier, Make, n8n: use the HTTP / Webhook request step with the fields below). Use the ready-made client file for your language (downloads below) — it already handles number format, long texts, retries and safe pacing.

यही रिक्वेस्ट अपने सॉफ़्टवेयर में जोड़ें — वेबसाइट फ़ॉर्म, ऑर्डर/इनवॉइस बनने पर, बिलिंग या ERP में "सेव के बाद", Excel/Google Sheet मैक्रो, या Zapier/Make/n8n का HTTP स्टेप। तैयार क्लाइंट फ़ाइल (नीचे) नंबर का रूप, लंबे संदेश, दोबारा कोशिश और सुरक्षित गति अपने-आप सँभालती है।

2. The request (API)

POST https://mysender.mawanta.com/api/create-message — form fields (application/x-www-form-urlencoded or form-data):

FieldRequiredMeaning
authkeyyesYour Auth Key (step 4).
appkeyyesThe App Key of the app linked to your number (step 3).
toyesReceiver mobile number with country code and no “+” or spaces, e.g. 919876543210. (The client files add 91 to 10-digit Indian numbers for you.)
messageyes*The text (up to 4096 characters). *Not needed if you send a template.
filenoPublic link of a picture, PDF, document or video to send with the message (the text becomes the caption). Allowed types: Images (jpg, jpeg, png, webp, gif) up to 16 MB; video (mp4) up to 50 MB; documents (pdf, doc, docx, xls, xlsx, ppt, pptx, csv, txt, zip) up to 50 MB.
template_idnoId of a saved template (Templates page → “View Template ID”). Then message is not needed.
variables[{name}]noValues for the variables of the template, e.g. variables[{name}]=Ramesh.

Answer

{
  "message_status": "Success",
  "data": { "from": "919000000000", "to": "919876543210", "status_code": 200 }
}
What you getWhat it means / what to do
message_status: "Success"The message was handed to WhatsApp from your number.
HTTP 401 Invalid Auth and AppKeyA key is wrong, the app is switched off, the app’s number is not connected, or your plan has expired. Check steps 2–4.
HTTP 401 Maximum Monthly Messages Limit ExceededYour plan’s monthly messages are used up — upgrade or renew the plan.
HTTP 401 Request FailedWhatsApp could not send (number not on WhatsApp, or your device went offline). Open My Devices; if it shows disconnected, link it again.
success: false + Validation errorsA field is missing or wrong (the answer lists which). Note: this answer can come with HTTP 200 — always check message_status.
HTTP 429Too many requests (more than 120 per minute for one key). Wait and send slower.
Keep your number safe. WhatsApp watches for bursts. Send one message at a time, 10–20 seconds apart (the client files below do this for you with sendMany), message only people who expect to hear from you, and use the Bulk / Schedule pages of the panel for big lists — they pace and rotate numbers automatically.

3. Examples

Text

curl -X POST "https://mysender.mawanta.com/api/create-message" \
  -d "authkey=YOUR_AUTH_KEY" \
  -d "appkey=YOUR_APP_KEY" \
  -d "to=919876543210" \
  -d "message=Hello from my software"

With a file

curl -X POST "https://mysender.mawanta.com/api/create-message" \
  -d "authkey=YOUR_AUTH_KEY" -d "appkey=YOUR_APP_KEY" -d "to=919876543210" \
  -d "message=Your invoice is attached" \
  -d "file=https://your-site.com/invoices/INV-1001.pdf"

Template with variables

curl -X POST "https://mysender.mawanta.com/api/create-message" \
  -d "authkey=YOUR_AUTH_KEY" -d "appkey=YOUR_APP_KEY" -d "to=919876543210" \
  -d "template_id=TEMPLATE_ID" \
  --data-urlencode "variables[{name}]=Ramesh" --data-urlencode "variables[{amount}]=1500"

Needs the curl extension (normal on most hosting). Download mysender-client.php below and put it next to your script.

<?php
require 'mysender-client.php';          // download it from this page

$ms = new MySenderClient('YOUR_AUTH_KEY', 'YOUR_APP_KEY');

// one message
$r = $ms->sendText('9876543210', 'Hello from my software');
if (!$r['ok']) { error_log('WhatsApp failed: ' . $r['error']); }

// a file (public link) with a caption
$ms->sendFile('9876543210', 'Your invoice is attached', 'https://your-site.com/invoices/INV-1001.pdf');

// many messages - sent one by one, 10-20 seconds apart (keeps your number safe)
$ms->sendMany([
  ['to' => '9876543210', 'message' => 'Dear Ramesh, your order is ready'],
  ['to' => '9123456789', 'message' => 'Dear Suresh, your order is ready'],
], function ($row, $res) { echo $row['to'] . ' => ' . ($res['ok'] ? 'sent' : $res['error']) . "\n"; });

Node.js 18 or newer, no packages. Download mysender-client.cjs below.

const { MySender } = require('./mysender-client.cjs');   // download it from this page
const ms = new MySender('YOUR_AUTH_KEY', 'YOUR_APP_KEY');

(async () => {
  const r = await ms.sendText('9876543210', 'Hello from my software');
  if (!r.ok) console.error('WhatsApp failed:', r.error);

  // many messages - one by one, 10-20 seconds apart
  await ms.sendMany([
    { to: '9876543210', message: 'Dear Ramesh, your order is ready' },
    { to: '9123456789', message: 'Dear Suresh, your order is ready' },
  ], (row, res) => console.log(row.to, res.ok ? 'sent' : res.error));
})();

Python 3.7 or newer, no packages. Download mysender_client.py below.

from mysender_client import MySender          # download it from this page

ms = MySender('YOUR_AUTH_KEY', 'YOUR_APP_KEY')

r = ms.send_text('9876543210', 'Hello from my software')
if not r['ok']:
    print('WhatsApp failed:', r['error'])

# many messages - one by one, 10-20 seconds apart
ms.send_many([
    {'to': '9876543210', 'message': 'Dear Ramesh, your order is ready'},
    {'to': '9123456789', 'message': 'Dear Suresh, your order is ready'},
], lambda row, res: print(row['to'], 'sent' if res['ok'] else res['error']))

Google Sheets → Extensions → Apps Script → paste, save, then use it as a formula or from a loop.

function sendWhatsApp(to, message) {
  var res = UrlFetchApp.fetch('https://mysender.mawanta.com/api/create-message', {
    method: 'post',
    payload: { authkey: 'YOUR_AUTH_KEY', appkey: 'YOUR_APP_KEY', to: to, message: message },
    muteHttpExceptions: true
  });
  return res.getContentText();
}
// in a cell: =sendWhatsApp("919876543210", "Hello")   (for many rows use a loop with Utilities.sleep(15000) between messages)

Add an HTTP / Webhook request step: method POST, URL https://mysender.mawanta.com/api/create-message, body type Form (urlencoded), and these fields: authkey, appkey, to, message (map to and message from the previous step, for example the customer’s phone and an order text). Add a delay of 10–20 seconds between messages if the tool loops over many rows.

Billing / ERP / accounting software (for example Tally, Busy, Marg or your own): if it can call a web address after a voucher or invoice is saved, use the same POST request. If it can only export data, export to Excel/CSV and use the PHP / Python client above (a few lines read the file and call sendMany).

बिलिंग/अकाउंटिंग सॉफ़्टवेयर अगर इनवॉइस सेव होने पर कोई वेब पता बुला सकता है तो वही POST रिक्वेस्ट लगाएँ। अगर वह सिर्फ़ डेटा निकाल सकता है तो Excel/CSV में निकालकर ऊपर वाला PHP/Python क्लाइंट चलाएँ।

4. Download the ready-made code

One small file per language. Each one: adds the country code to 10-digit numbers, cuts very long texts, retries when the server is busy, reports a clear error, and can send a list safely (one by one, 10–20 s apart).

PHP — mysender-client.php Node.js — mysender-client.cjs Python — mysender_client.py

5. Common questions

Can many customers / branches use it with their own numbers?

Yes. Every person registers on MySender, links their own number and gets their own Auth Key and App Key. Your software then keeps one pair of keys per customer and sends each message with that customer’s keys, so it goes out from that customer’s own number.

Which plan do I need?

Any plan with a connected number can use this request; the plan decides how many messages you can send per month and how many numbers you can link (see Pricing). Files: pictures up to 16 MB, videos up to 50 MB and documents up to 50 MB.

Can I see what was sent?

Yes — My Apps → your app → Logs, and Message Log in the menu show every message and whether it was sent or failed.

I changed my phone / the number got disconnected

Open My Devices and link the number again (step 2). Keys stay the same, so your software keeps working.

Need help?

Write to support@mawanta.com or call 7983995511 / 9410005856.

Create your free account