Send WhatsApp messages with cURL
Try the WbizTool WhatsApp API from your terminal before you write any code. Each command below is one POST to https://wbiztool.com/api/v1/, and the message goes out from your own number, linked like WhatsApp Web.
Free trial: 50 messages in any 30 days, no card.
How it works
Get your API key and link your number
Sign up, then link your WhatsApp number on the WhatsApp numbers page with a QR code or a pairing code, like WhatsApp Web. On Settings → API keys, create a key and copy your Client ID (the API keys guide below shows where). The ID on the number's card (such as ID 678) is your
whatsapp_client.Test your credentials
POST your
client_idandapi_keyto/api/v1/me/."status": 1with"message": "Okay"means they work. It sends nothing and uses no messages.Send a message
POST to
/api/v1/send_msg/with the phone number and the text. A reply with"status": 1and amsg_idmeans the message is queued on your number.Check that it went out
POST to
/api/v1/message/status/<msg_id>/. Status 1 means Sent; status 2 means Failed, with the reason inerror.
cURL code examples
curl -X POST https://wbiztool.com/api/v1/me/ \
-H "Content-Type: application/json" \
-d '{
"client_id": 12345,
"api_key": "YOUR_API_KEY",
"whatsapp_client": 678
}'curl -X POST https://wbiztool.com/api/v1/send_msg/ \
-H "Content-Type: application/json" \
-d '{
"client_id": 12345,
"api_key": "YOUR_API_KEY",
"whatsapp_client": 678,
"msg_type": 0,
"country_code": "91",
"phone": "9876543210",
"msg": "Hi Aman, your order #4821 has shipped and will arrive on Thursday."
}'{"status": 1, "message": "Created", "msg_id": 9817263}curl -X POST https://wbiztool.com/api/v1/send_msg/ \
-H "Content-Type: application/json" \
-d '{
"client_id": 12345,
"api_key": "YOUR_API_KEY",
"whatsapp_client": 678,
"msg_type": 1,
"country_code": "91",
"phone": "9876543210",
"img_url": "https://example.com/offers/diwali-sale.jpg",
"msg": "Our Diwali sale starts today 🎉"
}'curl -X POST https://wbiztool.com/api/v1/send_msg/ \
-H "Content-Type: application/json" \
-d '{
"client_id": 12345,
"api_key": "YOUR_API_KEY",
"whatsapp_client": 678,
"msg_type": 2,
"country_code": "91",
"phone": "9876543210",
"file_url": "https://example.com/invoices/invoice-4821.pdf",
"file_name": "invoice-4821.pdf",
"msg": "Your invoice for order #4821 is attached."
}'curl -X POST https://wbiztool.com/api/v1/send_msg/ \
-F client_id=12345 \
-F api_key=YOUR_API_KEY \
-F whatsapp_client=678 \
-F msg_type=2 \
-F country_code=91 \
-F phone=9876543210 \
-F "msg=Your invoice for order #4821 is attached." \
-F file_name=invoice-4821.pdf \
-F file=@./invoice-4821.pdfcurl -X POST https://wbiztool.com/api/v1/schedule_msg/ \
-H "Content-Type: application/json" \
-d '{
"client_id": 12345,
"api_key": "YOUR_API_KEY",
"whatsapp_client": 678,
"msg_type": 0,
"country_code": "91",
"phone": "9876543210",
"msg": "Hi Aman, a reminder that your appointment is today at 11:30 AM.",
"date": "24/12/2026",
"time": "09:00",
"timezone": "Asia/Kolkata"
}'curl -X POST https://wbiztool.com/api/v1/message/status/9817263/ \
-H "Content-Type: application/json" \
-d '{
"client_id": 12345,
"api_key": "YOUR_API_KEY"
}'What you can do
JSON or form fields
Send the body as JSON, as form fields, or as multipart form data (
-F) when you upload a file. The examples work as they are once you put in your own IDs and key.Images and files
msg_type1 sends an image fromimg_url,msg_type2 a file fromfile_url. Linked files can be up to 100 MB, and the link must be public.Schedule with a timezone
schedule_msgtakesdate(dd/mm/yyyy),time(HH:MM) and atimezonename such asAmerica/New_Yorkor an abbreviation such as IST or EST.Webhooks for every status
Add
"webhook": "https://…"and WbizTool POSTsmsg_idandSENT,FAILED,CANCELLEDorEXPIREDto it when the message changes.The same calls from any tool
Make, Pabbly Connect and other automation tools send these same requests with their HTTP module. A Postman collection is also available in the docs.
Good to know
"status": 1means the message is queued, not delivered. Sent is the final success state; the API doesn't report whether the message was delivered or read.- Inside JSON, write a new line in
msgas\n. A raw line break or a trailing comma makes the JSON invalid. - A scheduled time in the past is accepted and sent straight away. The date is day first (24/12/2026), so check it before you send.
- Send message errors come back with HTTP 400 (429 at the daily limit); Schedule message errors usually come back with HTTP 200 and
"status": 0, so always decode the body and checkstatus. - Sending to a WhatsApp group through the API (
group_nameinstead ofphone) works on every plan, including the free trial. - The free trial has 50 messages in any 30 days and 1 number, no card. Paid plans start at $25 a month in the US (your price is on Pricing) and send unlimited messages under fair use: up to 1,000 a day per number.
- Messages go out from your own WhatsApp number, so WhatsApp's own rules apply: message people who expect to hear from you.
Questions
- What is the WhatsApp API endpoint for sending a message?
- POST
https://wbiztool.com/api/v1/send_msg/withclient_id,api_key,whatsapp_client,phone(pluscountry_codeif the number has none) andmsg. The reply hasstatusand, on success, amsg_id. - How do I schedule a WhatsApp message with cURL?
- POST to
https://wbiztool.com/api/v1/schedule_msg/with the same fields plusdate(dd/mm/yyyy),time(HH:MM) andtimezone. The reply'smsg_idlets you check or cancel it later. - How do I know the message was sent?
- A reply with
"status": 1and amsg_idmeans it's queued. Pass awebhookURL to get a POST withSENT,FAILED,CANCELLEDorEXPIRED, or call the Message status endpoint with themsg_id. Sent is the final state: the API doesn't report delivered or read. - Which phone number format should I send?
- Send the number with its country code (919876543210), or without it (9876543210) together with
country_code(91). Spaces, +, dashes and brackets are removed for you, so +91 98765-43210 works too. - Do I need the WhatsApp Business API or Meta approval?
- No. WbizTool sends from your own WhatsApp or WhatsApp Business number, linked like WhatsApp Web. There's no Meta approval and no message templates to get approved.
- Does it cost per message?
- No. The free trial includes 50 messages in any 30 days. Paid plans send unlimited messages under fair use, up to 1,000 a day per number: Lite $25, Standard $59 and Advanced $149 a month in the US; Pricing shows your country's price.
Read the guides
- Send message API
- Schedule message API
- Message status API
- Check credentials API
- Send from any automation tool
- API keys and Client ID
- Connect your WhatsApp number
Related
- PythonSend WhatsApp messages from Python with the official client or plain requests.
- PHPSend WhatsApp messages from PHP with the cURL extension – no library needed.
- MakeSend WhatsApp messages from Make scenarios with the HTTP module.
- Reminder APICreate, list and cancel recurring WhatsApp reminders on a cron schedule.
Send your first automated WhatsApp message today
Create an account, scan the QR code and send a message in under five minutes.
Start freePaid plans start at $25 a month in the US. Pricing
