Menu

Expand
Rate this page:

Programmable Messaging for WhatsApp curl Quickstart

With just a few lines of code, your application can send and receive messages with WhatsApp using the Twilio API for WhatsApp and curl.

This WhatsApp Quickstart will teach you how to do this using the Twilio Sandbox for WhatsApp, curl, the Twilio API for WhatsApp, and a web framework of your choice.

In this Quickstart, you will learn how to:

  1. Sign up for Twilio and activate the Sandbox.
  2. Set up your development environment to send and receive messages
  3. Opt-in to the Sandbox
  4. Send your first WhatsApp message
  5. Receive inbound WhatsApp messages
  6. Reply to incoming WhatsApp messages
Show me how it's done!

Sign up for Twilio and activate the Sandbox

Before you can send a WhatsApp message from your web language, you'll need to sign up for a Twilio account or sign into your existing account and activate the Twilio Sandbox for WhatsApp. It allows you to prototype with WhatsApp immediately using a shared phone number, without waiting for a dedicated number to be approved by WhatsApp.

To get started, select a number from the available sandbox numbers to activate your sandbox.

WA_Sandbox.png

Be sure to take note of the phone number you choose in the Sandbox. You will need this later when we’re ready to send some messages.

WhatsApp channel installed! What's next?

Gather your Twilio account information

Before you can send any messages, you'll need to gather your Twilio account credentials. You can find these in the Twilio Console.

  • Account SID - Used to authenticate REST API requests
  • Auth Token - Used to authenticate REST API requests

Account Credentials

For all of our code snippets and curl examples, you will need to authenticate with the Account SID and Auth Token.

OK, account credentials are in hand...

Set up your “development environment”

curl should work by default in a recent Linux or macOS terminal. If you are using Windows, you can find curl packages already compiled here.

I'm ready to write some code!

Send a message with WhatsApp and curl

Using pre-provisioned Sandbox numbers

The sandbox is pre-provisioned with three Twilio phone numbers that are shared across all sandbox users. In order to use the Sandbox, you MUST start by opt-ing in to the sandbox by sending the phone number you chose a message from WhatsApp. Once opted-in, you will only receive messages from your specific Sandbox.

These limitations do not exist on your own business identity which you can request to be provisioned on WhatsApp.

Sandbox Opt-in Message

Send “join <your sandbox keyword>” to your Sandbox number in WhatsApp to join your Sandbox, and we’ll reply with a confirmation that you’ve joined. Your sandbox keyword can be found in the console.

Once you join, you will only receive messages from your specific Sandbox. To disconnect from the sandbox, you can reply to the message from WhatsApp with `sandbox stop`, or switch to a different sandbox by messaging `join <other sandbox keyword>`.

Screen Shot 2018-08-01 at 8.31.05 AM.png

Inviting other users to your sandbox (OPTIONAL)

To invite someone else to your sandbox, create a link with the following format containing the opt-in message and send it to them:
whatsapp://send?phone=<Your Sandbox Number>&text=<your URL-encoded sandbox keyword>

You can also create a QR code with the link format above that users can scan on their phone to opt-in to your sandbox.

whatsapp-sandbox-opt-in-qr.png

To send a message, use the following code and replace the To parameter with the phone number for your personal WhatsApp account in the E.164 format. (If you haven't already, install WhatsApp on your device and register for an account.) For the From parameter, be sure to include the whatsapp: channel identifier before the Sandbox number in E.164 format.

For the From parameter, you need your Sender ID which should be shown on the installed channel in the Twilio Console, as shown previously.

Loading Code Sample...
        
        
        Use curl to send a message with WhatsApp

        Send a message with WhatsApp and curl

        Use curl to send a message with WhatsApp
        Great! Now, how do I receive messages?

        Receive and reply to messages from WhatsApp

        When someone replies to one of your messages, you will receive a webhook request from Twilio.

        You can configure webhooks by connecting your Sandbox to an app you've already built for handling incoming messages, or build a new one for WhatsApp messages.

        Configure WhatsApp Sandbox Webhook

        This webhook request also supports TwiML (the Twilio Markup Language) just like a regular Twilio SMS request.

        Although we're sure it's possible to run a server from your command line, we prefer you use a language with more of a web focus at this point. To handle this request, you need to set up a web application and expose it to the internet. The following SMS Quickstarts show you how to respond to a message and generate TwiML in your language of (second?) choice.

        If you're a Node developer, you can also host this web application with Twilio Functions.

        Although these Quickstarts show you how to receive an SMS message, the webhook that Twilio will send will include the same parameters as an incoming SMS message, with the exception that To and From addresses will be set to the WhatsApp number receiving the message (whatsapp:<E.164 formatted Twilio phone number associated with your business>) and the WhatsApp number sending the message (whatsapp:<User’s E.164 phone number>), respectively.

        Where to next?

        WhatsNext for WhatsApp and curl?

        Because the Twilio WhatsApp API is essentially the same as the Twilio Programmable SMS API, all of the documentation for that API applies to your apps sending and receiving messages with WhatsApp. To dive deeper with a WhatsApp integration, see the WhatsApp documentation overview as well as the API Reference.

        Here are some areas you might like to explore next.

        We can't wait to see what kind of WhatsApp integration you build!

        Rate this page:

        Need some help?

        We all do sometimes; code is hard. Get help now from our support team, or lean on the wisdom of the crowd by visiting Twilio's Stack Overflow Collective or browsing the Twilio tag on Stack Overflow.

        Loading Code Sample...
              
              
              

              Thank you for your feedback!

              Please select the reason(s) for your feedback. The additional information you provide helps us improve our documentation:

              Sending your feedback...
              🎉 Thank you for your feedback!
              Something went wrong. Please try again.

              Thanks for your feedback!

              thanks-feedback-gif