Free trial
Official API · Meta Cloud API

Official WhatsApp API with your own number, in minutes

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

POST /api/WhatsGw/Send
$ 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());
Click the code to select it all. Swap in your API key and phone numbers — the rest is the real payload.
response{ "result": "success", "result_message": "…" }
Hi Marina! Your order 4821 shipped today 🚚
1 popupfrom Meta itself: sign in with Facebook, pick the number, done — without opening Business Manager
0% markupon Meta’s fee: Meta bills your account directly, at its list price for the recipient’s country
1 endpoint/WhatsGw/Send for official and QR code — switching the connection type doesn’t change your code
since 20192,000+ customers, 500M+ messages processed, uptime above 99%
The tedious part

Have you tried integrating directly with Meta?

An 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.

Meta-accredited appYou sign in to the official popup with your account and connect your WhatsApp Business number — the partner setup is on us.
Token, webhook and registrationA permanent API key instead of a token that expires; Meta’s events arrive ready to use at your webhook; the number is registered on the callback.
Templates through the APICreate, submit for approval and track the status without opening Business Manager — and send through the same Send.
Before you start

Three things to have at hand — and the connection works on the first try

Almost every official connection that gets stuck, gets stuck because one of these three is missing. Check them before you click.

A Meta Business account with a payment method

Meta charges for its messages in your business portfolio. Add a card before connecting — without a payment method, the number stays pending at Meta.

Where: business.facebook.com → Settings → Payments.

The number on WhatsApp Business, with the phone nearby

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.

Alternative: a new number without WhatsApp installed becomes a dedicated cloud account — same API.

Business verification: optional to connect

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.

Tip: start verification in Meta Business in parallel, while you integrate.
How it works

From sign-up to your first POST in four steps

No approval queue on our side, nobody “unlocking” your account. You do it yourself, on your own schedule.

Create your account

Email or Google account, no credit card. You get 25 free messages to test.

Connect with Meta

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.

Copy the API key

Under Administration → Phones. It’s permanent — no token that expires in 24 hours, no system user.

Make your first POST

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.

Who starts the conversation?

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" } ] }
    ]
  }
}
Coexistence

Your number stays on your phone. The API works alongside it.

  • Nothing changes for your team: they keep answering on WhatsApp Business on the phone, while your application sends and receives through the API — on the same number.
  • Full history in your system: what your team types in the app also reaches your webhook, as a sent message.
  • No second line: no new SIM card, no number porting, no “please save our new number”.
  • Prefer a dedicated cloud account? Connect a number without WhatsApp installed and Meta registers it as Cloud API. The API is the same.
  • The account is yours: the WhatsApp Business Account lives in your Meta portfolio. The number and history are yours.

WhatsApp Business on the phone

Your team answers, replies to voice notes, sends photos — as always.

one number+1 555 010 0000

Your application via the API

Notifications, billing, confirmations, bots — and a webhook for all of it.

Directly with Meta or through WhatsGW?

What changes when you integrate through us

The Cloud API underneath is the same. What WhatsGW takes off your plate is in the table — and so is what stays yours.

CriterionDirectly with MetaThrough WhatsGW
Keep the number on WhatsApp Business on the phoneOnly with Meta partner accreditationIncluded — connect through the popup
Until the first sendApp, token, system user, webhook, templateMeta popup + 1 POST
AuthenticationTemporary token or system userPermanent API key
WebhookYou host Meta’s endpoint, with verification and signaturesYour URL receives ready-to-use JSON, with your message_custom_id
MediaUpload to Meta and send by idURL or base64 in the POST itself
TemplatesBusiness ManagerThrough the API or the dashboard
Official and QR code in the same integrationNoSame API, chosen per number
Human support, CRM and AI agent on the same numberNoIncluded in the dashboard
Owner of the WhatsApp Business Account (WABA)YouYou — it stays in your Meta portfolio
For integrators and SaaS

Connect your system’s customers without becoming an accredited partner

  • Create the instance through the API with type: 3 and get a direct_link to send to your customer.
  • The customer connects on their own: opens the link, signs in with their Meta account and picks their number. No configuring an app or token for each one.
  • You track the status via GetInstance or the webhook, and each customer pays Meta’s fee on their own account.
  • No limit on numbers per account. Over 25 numbers, special terms.
// 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"
}
Developer experience

Plain REST, living docs and people who do integrations every day

  • POST with JSON (or form-urlencoded); GET when it fits. No SDK required.
  • Async result with check_status: delivered and read arrive at your webhook with your message_custom_id, to match it to the order.
  • Text, images, video, PDF and location on the official connection; templates with a media header and variables in the body.
  • OpenAPI contract to import into Postman or generate the client; examples on GitHub in PHP, Node, Python, C# and Delphi.
  • Technical support via WhatsApp, from people who have already connected hundreds of numbers to Meta.
PHPNode.jsPythonC#Delphicurl
Webhook · event received
message_statusPOST to your endpoint
{ "message_custom_id": "order-4821", "status": "read", "contact_phone_number": "15550100001" }
✓ delivered 09:41✓✓ read 09:43
/WhatsGw/Send/WhatsGw/GetTemplates/WhatsGw/NewTemplate/WhatsGw/SendTemplateToProvider/WhatsGw/SyncTemplateStatus/WhatsGw/NewInstance/WhatsGw/GetInstance/WhatsGw/PhoneState/WhatsGw/GetEvents
Predictable pricing

US$ 19 per number/month. Meta’s fee, at Meta’s price.

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.

  • US$ 19 per number/month — official or QR code, same price
  • Or per message, tiered: from R$ 0,120 (≈ US$ 0.023) to R$ 0,023 (≈ US$ 0.0044) depending on volume
  • API, webhooks, templates and team inbox included
  • 25 free messages to test, no credit card · over 25 numbers, special terms

What Meta charges — per message, based on the recipient’s country

Marketingby country
Utility (order, billing, notice)by country
Authentication (code)by country
Service (free-form reply within the 24 h window)by country
Message received from the customerfree
Conversation started from a click-to-WhatsApp ad (72 h)free
Charged by Meta directly to your account, with no pass-through or markup from WhatsGW. Meta sets the rate per message according to the recipient’s country and the category (marketing, utility, authentication) — and it changes; check the official rate card.
FAQ

What developers ask before connecting

Do I have to remove the number from WhatsApp Business on my phone?

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.

Do I need Meta business verification to connect?

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.

Can I start the conversation, or only reply?

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.

What does it really cost?

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.

Is the WhatsApp Business Account (WABA) mine or WhatsGW’s?

It’s yours: it lives in your Meta Business portfolio. The number, the templates and the history are yours.

What message types does the official connection accept?

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.

I already use WhatsGW via QR code. Can I migrate to the official connection?

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.

I’m an integrator. How do I connect my system’s customers?

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.

Connect your number today

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.

Official API · with your own numberConnect free
WhatsApp