WhatsApp API Help & Tutorials

Four steps from a new account to a delivered message. Most people finish in under five minutes.

  1. 1

    Create your account

    Register with your name, email and phone number, then sign in. You land on the dashboard. If you want to use the API as well as the panel, ask us to switch API access on for your account — it is off by default.

  2. 2

    Add the WhatsApp number you want to send from

    Open Accounts and add one. This creates an instance — the connection between your WhatsApp number and our server. How many you can add depends on your plan.

    Use a number you can afford to lose. Not your personal number, and not a brand-new SIM. A number with some normal chat history behind it is the safest choice.

  3. 3

    Scan the QR code

    Click the instance to show its QR code, then on the phone holding that number:

    1. Open WhatsApp
    2. Tap SettingsLinked devices(Android: the ⋮ menu → Linked devices)
    3. Tap Link a device
    4. Point the camera at the QR code on screen

    The status turns to Connected within a few seconds. This is the step most people stop at — until it is done, nothing can be sent.

    Keep the phone online. WhatsApp linked devices stay connected for about 14 days without the phone reaching the internet, then need a rescan.

  4. 4

    Send your first message

    From the panel: open Send Message, pick the connected number, type the recipient in international format without + or spaces (for example 923001234567), write your text and send. It appears in Message History with a delivery status.

    From your own code: one HTTP call. Your API key is on the API page of your panel.

    cURL

    curl -G "https://walinkapi.com/admin/api.php" \
      --data-urlencode "do=send" \
      --data-urlencode "key=YOUR_API_KEY" \
      --data-urlencode "device=923001234567" \
      --data-urlencode "mobile=923009876543" \
      --data-urlencode "message=Your OTP is 4821"

    PHP

    $url = 'https://walinkapi.com/admin/api.php?' . http_build_query([
        'do'      => 'send',
        'key'     => 'YOUR_API_KEY',
        'device'  => '923001234567',   // the number you scanned
        'mobile'  => '923009876543',   // who you are sending to
        'message' => 'Your order #1043 has shipped',
    ]);
    $response = json_decode(file_get_contents($url), true);

    Sending an image or a PDF

    &type=media&media_url=https://yoursite.com/invoice-1043.pdf

    What comes back

    { "status": { "code": "1000", "message": "Message sent" } }

    Anything other than 1000 is a failure, and the message says why — a wrong key, an instance that is not connected, or no balance left on the plan.

Staying connected, and staying unblocked

  • Send to people who expect it. OTPs, invoices, order updates and booking reminders are what this is for. Cold marketing to bought lists is what gets numbers blocked.
  • Vary your text. Identical messages to hundreds of numbers look automated. Put the customer's name or order number in.
  • Do not send at machine speed. The plans have daily limits for this reason.
  • Give people a way out. One line telling them how to stop reduces reports, and reports are what actually get a number restricted.
  • Keep the phone charged and online. A linked device drops after roughly two weeks offline.