No approval queue, no support ticket and no removing the number from your phone: you sign in with your Meta account, point to the number already on WhatsApp Business and make your first POST. You pay Meta’s fee directly to Meta — we add no markup.
No credit cardNo lock-in contractUS$ 19 per number/monthMeta’s fee with no markupSame API as the QR code connection
$ curl -X POST https://app.whatsgw.com.br/api/WhatsGw/Send \ -H "Content-Type: application/json" \ -d '{ "apikey": "YOUR_APIKEY", "phone_number": "15550100000", "contact_phone_number": "15550100001", "message_custom_id": "order-4821", "message_type": "text", "message_body": "Hi Marina! Your order 4821 shipped today 🚚", "check_status": 1 }'
$ch = curl_init('https://app.whatsgw.com.br/api/WhatsGw/Send'); curl_setopt_array($ch, [ CURLOPT_POST => true, CURLOPT_RETURNTRANSFER => true, CURLOPT_HTTPHEADER => ['Content-Type: application/json'], CURLOPT_POSTFIELDS => json_encode([ 'apikey' => 'YOUR_APIKEY', 'phone_number' => '15550100000', 'contact_phone_number' => '15550100001', 'message_custom_id' => 'order-4821', 'message_type' => 'text', 'message_body' => 'Hi Marina! Your order 4821 shipped today 🚚', 'check_status' => 1, ]), ]); echo curl_exec($ch);
const r = await fetch('https://app.whatsgw.com.br/api/WhatsGw/Send', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ apikey: 'YOUR_APIKEY', phone_number: '15550100000', contact_phone_number: '15550100001', message_custom_id: 'order-4821', message_type: 'text', message_body: 'Hi Marina! Your order 4821 shipped today 🚚', check_status: 1 }) }); console.log(await r.json());
import requests r = requests.post('https://app.whatsgw.com.br/api/WhatsGw/Send', json={ 'apikey': 'YOUR_APIKEY', 'phone_number': '15550100000', 'contact_phone_number': '15550100001', 'message_custom_id': 'order-4821', 'message_type': 'text', 'message_body': 'Hi Marina! Your order 4821 shipped today 🚚', 'check_status': 1, }) print(r.json())
var http = new HttpClient(); var payload = new { apikey = "YOUR_APIKEY", phone_number = "15550100000", contact_phone_number = "15550100001", message_custom_id = "order-4821", message_type = "text", message_body = "Hi Marina! Your order 4821 shipped today 🚚", check_status = 1 }; var resp = await http.PostAsJsonAsync( "https://app.whatsgw.com.br/api/WhatsGw/Send", payload); Console.WriteLine(await resp.Content.ReadAsStringAsync());
{ "result": "success", "result_message": "…" }/WhatsGw/Send for official and QR code — switching the connection type doesn’t change your codeAn app in the developer dashboard, temporary tokens, system users, a webhook with verification and signatures, templates in Business Manager — and in the end the number your team uses is left out, because keeping the number on the app requires partner accreditation. Here, that’s already done.
Send.Almost every official connection that gets stuck, gets stuck because one of these three is missing. Check them before you click.
Meta charges for its messages in your business portfolio. Add a card before connecting — without a payment method, the number stays pending at Meta.
In Meta’s popup you scan a QR code with WhatsApp Business. The number stays on the device: your team keeps answering and your application sends and receives through the API.
It isn’t required to get started. Without it, Meta allows 250 unique contacts per day; verification raises the limit, which grows with the quality of your sends.
No approval queue on our side, nobody “unlocking” your account. You do it yourself, on your own schedule.
Email or Google account, no credit card. You get 25 free messages to test.
New instance → Official → Start connection with Meta. In the popup: sign in to Facebook, choose the portfolio, scan the QR code with WhatsApp Business. The number stays on the phone.
Under Administration → Phones. It’s permanent — no token that expires in 24 hours, no system user.
Copy the example above, swap in your key and the phone numbers. Ask the recipient to send you a “hi” and the free-form message goes out right away.
If the customer wrote to you in the last 24 hours, any text, image, video, PDF or location goes out through Send, as in the example at the top.
For you to start the conversation, Meta requires an approved template. You create it and submit it for approval through the API itself (NewTemplate → SendTemplateToProvider), track it with SyncTemplateStatus and send it through the same Send with the template block. Header with image, video or PDF, and variables in the body.
{
"apikey": "YOUR_APIKEY",
"phone_number": "15550100000",
"contact_phone_number": "15550100001",
"message_custom_id": "order-4821",
"message_type": "text",
"message_body": "",
"template": {
"id": 22,
"components": [
{ "type": "body",
"parameters": [ { "type": "text", "text": "Marina" } ] }
]
}
}Your team answers, replies to voice notes, sends photos — as always.
Notifications, billing, confirmations, bots — and a webhook for all of it.
The Cloud API underneath is the same. What WhatsGW takes off your plate is in the table — and so is what stays yours.
| Criterion | Directly with Meta | Through WhatsGW |
|---|---|---|
| Keep the number on WhatsApp Business on the phone | Only with Meta partner accreditation | Included — connect through the popup |
| Until the first send | App, token, system user, webhook, template | Meta popup + 1 POST |
| Authentication | Temporary token or system user | Permanent API key |
| Webhook | You host Meta’s endpoint, with verification and signatures | Your URL receives ready-to-use JSON, with your message_custom_id |
| Media | Upload to Meta and send by id | URL or base64 in the POST itself |
| Templates | Business Manager | Through the API or the dashboard |
| Official and QR code in the same integration | No | Same API, chosen per number |
| Human support, CRM and AI agent on the same number | No | Included in the dashboard |
| Owner of the WhatsApp Business Account (WABA) | You | You — it stays in your Meta portfolio |
type: 3 and get a direct_link to send to your customer.GetInstance or the webhook, and each customer pays Meta’s fee on their own account.// POST /api/WhatsGw/NewInstance { "apikey": "YOUR_APIKEY", "type": 3, "config": { "description": "Customer 4821", "webhook_url": "https://your-system.com/whatsgw" } } // response: send the direct_link to your customer { "result": "success", "w_instancia_id": 138683, "tipo": 3, "direct_link": "https://app.whatsgw.com.br/W-….aspx" }
check_status: delivered and read arrive at your webhook with your message_custom_id, to match it to the order.{ "message_custom_id": "order-4821", "status": "read", "contact_phone_number": "15550100001" }/WhatsGw/Send/WhatsGw/GetTemplates/WhatsGw/NewTemplate/WhatsGw/SendTemplateToProvider/WhatsGw/SyncTemplateStatus/WhatsGw/NewInstance/WhatsGw/GetInstance/WhatsGw/PhoneState/WhatsGw/GetEvents
Prepaid, no lock-in, no setup fee. Unlimited messages on our side; or per message, if you prefer. Billed in Brazilian reais (R$ 99) via PayPal; your bank converts to your currency.
No. The number stays on the device and your team keeps answering on it; your application sends and receives through the API on the same number (coexistence). If you prefer a dedicated cloud account, connect a number without WhatsApp installed — the API is the same.
No. You connect with your Meta Business account and a payment method on file. Without verification, Meta allows 250 unique contacts per day; verification raises the limit, which grows with the quality of your sends.
Within 24 hours of the customer’s last message, any text or media goes out through Send. To start the conversation, Meta requires an approved template: you create it and submit it for approval through the API (NewTemplate, SendTemplateToProvider), track it with SyncTemplateStatus and send it through the same Send with the template block.
US$ 19 per number/month, with unlimited messages on our side (or the per-message plan, from R$ 0,120 (≈ US$ 0.023) to R$ 0,023 (≈ US$ 0.0044)). On top of that, Meta charges its own fee directly to your account — per message, based on the recipient’s country and the category (marketing, utility, authentication); see Meta’s official rate card. WhatsGW doesn’t pass through or add anything to that part. Billed in Brazilian reais (R$ 99) via PayPal; your bank converts to your currency.
It’s yours: it lives in your Meta Business portfolio. The number, the templates and the history are yours.
Text, images, video, documents (PDF and others) and location, by URL or base64. Outside the 24-hour window, approved templates — with an image, video or document header and variables in the body.
Yes. Create the official instance, connect the number through Meta’s popup and change the phone_number in your calls. Endpoint, payload and webhook are the same — and you can keep both types in the same account.
Create the instance through the API with type: 3 in NewInstance: the response includes a direct_link. Send the link to your customer; they sign in with their Meta account and connect their number. Track it via GetInstance or the webhook. Each customer pays Meta’s fee on their own account.
Create your account, sign in with your Meta account and make your first POST. No credit card, no lock-in — and no markup on Meta’s fee.