Node.js ile WhatsApp mesajı gönderin
WhatsApp Web gibi WbizTool’a bağlanan kendi numaranızdan, Node.js uygulamanızla WhatsApp metinleri, görselleri ve dosyaları gönderin. Resmi wbiztool-client paketini ya da Node.js 18 ve sonrasında yerleşik olan fetch’i kullanın.
Ücretsiz deneme: herhangi bir 30 günde 50 mesaj, kart gerekmez.
Nasıl çalışır
API anahtarınızı alın ve numaranızı bağlayın
Kaydolun, ardından WhatsApp numaranızı WhatsApp numaraları sayfasında, WhatsApp Web’deki gibi bir QR kod veya eşleştirme koduyla bağlayın. Ayarlar → API anahtarları sayfasında bir anahtar oluşturun ve Client ID’nizi kopyalayın (aşağıdaki API anahtarları kılavuzu nerede olduğunu gösterir). Numaranın kartındaki ID (örneğin ID 678) sizin
whatsapp_clientdeğerinizdir.İstemciyi kurun ya da fetch kullanın
Resmi istemci için
npm install wbiztool-clientçalıştırın. Ya da API’yi, Node.js 18 ve sonrasında paket gerektirmeyen fetch ile çağırın.Mesajı gönderin
Kimlik bilgilerinizi, telefon numarasını ve metni
https://wbiztool.com/api/v1/send_msg/adresine POST edin."status": 1ve birmsg_idiçeren yanıt, mesajın numaranızda sıraya alındığı anlamına gelir.Gittiğini kontrol edin
Mesaj gönderildiğinde veya başarısız olduğunda haber almak için bir
webhookURL’si verin ya damsg_idile Mesaj durumu endpoint’ine sorun.
Node.js kod örnekleri
npm install wbiztool-clientconst { WbizToolClient } = require("wbiztool-client");
const client = new WbizToolClient({
clientId: 12345,
apiKey: "YOUR_API_KEY",
whatsappClient: 678,
});
(async () => {
// Errors throw, with the API's response in the error message.
const result = await client.sendMessage({
phone: "9876543210",
countryCode: "91",
message: "Hi Aman, your order #4821 has shipped.",
});
console.log(result);
})().catch(console.error);// Node.js 18+ (built-in fetch). Save as .mjs to use top-level await.
const response = await fetch("https://wbiztool.com/api/v1/send_msg/", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({
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.",
}),
});
const result = await response.json(); // read the body even when the HTTP code is 400
if (result.status === 1) {
console.log("Queued with msg_id", result.msg_id);
} else {
console.error("Failed:", result.message);
}{"status": 1, "message": "Created", "msg_id": 9817263}// Node.js 20+ (built-in fetch, FormData and fs.openAsBlob). Save as .mjs to use top-level await.
import { openAsBlob } from "node:fs";
const form = new FormData();
form.append("client_id", "12345");
form.append("api_key", "YOUR_API_KEY");
form.append("whatsapp_client", "678");
form.append("msg_type", "2");
form.append("country_code", "91");
form.append("phone", "9876543210");
form.append("msg", "Your invoice for order #4821 is attached.");
form.append("file_name", "invoice-4821.pdf");
form.append("file", await openAsBlob("./invoice-4821.pdf"), "invoice-4821.pdf");
// Don't set Content-Type yourself; fetch adds the multipart boundary.
const response = await fetch("https://wbiztool.com/api/v1/send_msg/", { method: "POST", body: form });
console.log(await response.json());// Node.js 18+ (built-in fetch). Save as .mjs to use top-level await.
const msgId = 9817263;
const response = await fetch(`https://wbiztool.com/api/v1/message/status/${msgId}/`, {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({
client_id: 12345,
api_key: "YOUR_API_KEY",
}),
});
const result = await response.json(); // read the body even when the HTTP code is 400
if (result.message === "Unknown message id") {
console.log("No message with this ID in your workspace");
} else if (!("status_text" in result)) {
console.error("Request failed:", result.message ?? "no message in response");
} else if (result.status === 1) {
console.log("Sent");
} else if (result.status === 2) {
console.log("Failed:", result.error);
} else {
console.log("Status:", result.status_text);
}// Node.js 18+ (built-in fetch). Save as .mjs to use top-level await.
const tz = "Asia/Kolkata";
const sendAt = new Date(Date.now() + 2 * 60 * 60 * 1000); // two hours from now
// Format the date and time in the timezone you send, not your server's.
const date = new Intl.DateTimeFormat("en-GB", { timeZone: tz, day: "2-digit", month: "2-digit", year: "numeric" }).format(sendAt); // "24/12/2026"
const time = new Intl.DateTimeFormat("en-GB", { timeZone: tz, hour: "2-digit", minute: "2-digit", hourCycle: "h23" }).format(sendAt); // "09:00"
const response = await fetch("https://wbiztool.com/api/v1/schedule_msg/", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({
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 starts in 30 minutes.",
date,
time,
timezone: tz,
}),
});
const result = await response.json(); // schedule errors come back with HTTP 200 and "status": 0
if (result.status === 1) {
console.log("Scheduled with msg_id", result.msg_id);
} else {
console.error("Failed:", result.message ?? "no message in response");
}const express = require("express");
const app = express();
// WbizTool posts form fields, not JSON.
app.post("/wbiztool-webhook", express.urlencoded({ extended: false }), (req, res) => {
const { msg_id, status } = req.body; // status: SENT, FAILED, CANCELLED or EXPIRED
console.log(msg_id, status);
res.sendStatus(200);
});
app.listen(3000);Neler yapabilirsiniz
Metinler, görseller ve dosyalar
msg_typedeğerini metin için 0, görsel için 1, dosya için 2 yapın. Herkese açık birimg_urlveyafile_urlverin ya da dosyayıfileadlı bir alanda multipart form verisi olarak yükleyin.Verilerinizden kişisel mesajlar
msgmetnini kendi kayıtlarınızdan doldurun – bir ad, bir sipariş numarası, bir son ödeme tarihi. *Kalın* ve _italik_ gibi WhatsApp biçimlendirmeleri 3.000 karaktere kadar çalışır.Her durum için webhook’lar
webhookverin; mesaj gönderildiğinde, başarısız olduğunda, iptal edildiğinde veya süresi dolduğunda sunucunuzmsg_id=9817263&status=SENTgibi form kodlu bir POST alır.Sonraya zamanlayın
date(dd/mm/yyyy),time(HH:MM) ve birtimezoneile/api/v1/schedule_msg/adresine POST gönderin. TarihiIntl.DateTimeFormatile sunucunuzun saat diliminde değil, gönderdiğiniz saat diliminde biçimlendirin.Geç kalan mesajları bırakın
expire_after_seconds, zamanında gitmeyen bir mesajı süresi dolmuş olarak işaretler; teslimat saati tahmini gibi zamana duyarlı mesajlar için uygundur.Tekrarlayan hatırlatmalar
Hatırlatıcılar API’si bir mesajı cron zamanlamasıyla tekrarlar, örneğin her ayın 1’inde saat 10:00’da. Hatırlatıcılar ücretli plan gerektirir.
Bilmeniz gerekenler
"status": 1mesajın teslim edildiği değil, sıraya alındığı anlamına gelir. Sent son başarı durumudur; API mesajın teslim edilip edilmediğini veya okunup okunmadığını bildirmez.- Mesaj gönderme hataları HTTP 400 ile döner (günlük sınırda 429); Mesaj zamanlama hataları ise genellikle HTTP 200 ve
"status": 0ile döner; bu yüzdenresponse.okyerine her zaman gövdeyi ayrıştırıpstatusdeğerine bakın. - Resmi istemcinin
scheduleMessageyöntemi, zamanlama endpoint’inin okumadığı bir alan gönderir. Bunun yerine/api/v1/schedule_msg/endpoint’ini yukarıdaki gibi fetch ile çağırın. - API anahtarını sunucunuzda, örneğin bir ortam değişkeninde tutun. Anahtara sahip olan herkes numaralarınızdan mesaj gönderebilir; bu yüzden onu asla tarayıcıdaki JavaScript’e, bir mobil uygulamaya veya yayımladığınız koda koymayın.
- Bir numara yerine bir WhatsApp grubuna göndermek için grup mesajları örneğine bakın: ücretsiz deneme dahil tüm planlarda çalışır.
- Ücretsiz deneme herhangi bir 30 günde 50 mesaj ve 1 numara içerir, kart gerekmez. Ücretli planlar ABD’de aylık $25’dan başlar (sizin fiyatınız Fiyatlar sayfasındadır) ve adil kullanım kapsamında sınırsız mesaj gönderir: numara başına günde en fazla 1.000.
- Mesajlar kendi WhatsApp numaranızdan gider, bu yüzden WhatsApp’ın kuralları geçerlidir: sizden haber bekleyen kişilere yazın.
Sık sorulan sorular
- WbizTool API’si için resmi bir Node.js paketi var mı?
- Evet: npm’de
wbiztool-client(npm install wbiztool-client).sendMessageyöntemi mesaj gönderir. Zamanlama ve durum kontrolleri için endpoint’leri yukarıdaki gibi fetch ile çağırın. - API’yi tarayıcıdan çağırabilir miyim?
- Çağırmayın: istek API anahtarınızı taşır ve anahtara sahip olan herkes numaralarınızdan gönderebilir. API’yi Node.js sunucunuzdan çağırın ve anahtarı bir ortam değişkeninde tutun.
- Mesajın gönderildiğini nasıl anlarım?
"status": 1ve birmsg_idiçeren yanıt, mesajın sıraya alındığı anlamına gelir.SENT,FAILED,CANCELLEDveyaEXPIREDiçeren bir POST almak için birwebhookURL’si verin ya damsg_idile Mesaj durumu endpoint’ini çağırın. Sent son durumdur: API teslim edildi veya okundu bilgisi vermez.- Telefon numarasını hangi biçimde göndermeliyim?
- Numarayı ülke koduyla (919876543210) ya da ülke kodu olmadan (9876543210)
country_code(91) ile birlikte gönderin. Boşluklar, +, tireler ve parantezler sizin için kaldırılır; yani +91 98765-43210 da çalışır. - WhatsApp Business API’ye veya Meta onayına ihtiyacım var mı?
- Hayır. WbizTool, WhatsApp Web gibi bağlanan kendi WhatsApp veya WhatsApp Business numaranızdan gönderir. Meta onayı yoktur ve onaylatılması gereken mesaj şablonu yoktur.
- Mesaj başına mı ücret alınıyor?
- Hayır. Ücretsiz deneme herhangi bir 30 günde 50 mesaj içerir. Ücretli planlar adil kullanım kapsamında, numara başına günde en fazla 1.000 olmak üzere sınırsız mesaj gönderir: ABD’de aylık Lite $25, Standard $59 ve Advanced $149; Fiyatlar sayfası ülkenizin fiyatını gösterir.
Kılavuzları okuyun
- Mesaj gönderme API’si
- Mesaj durumu API’si
- Mesaj zamanlama API’si
- API anahtarları ve Client ID
- WhatsApp numaranızı bağlayın
İlgili sayfalar
- PythonResmi istemciyle veya düz requests ile Python’dan WhatsApp mesajı gönderin.
- cURLTek bir cURL komutuyla WhatsApp mesajı gönderin, zamanlayın ve takip edin.
- n8nWbizTool topluluk node’uyla n8n’den WhatsApp mesajı gönderin.
- Sipariş bildirimleriShopify, WooCommerce ve diğerleri için sipariş onayları, kargo güncellemeleri ve yeni sipariş uyarıları.
İlk otomatik WhatsApp mesajınızı bugün gönderin
Bir hesap oluşturun, QR kodu okutun ve beş dakikadan kısa sürede mesaj gönderin.
Ücretsiz başlayınÜcretli planlar ABD’de aylık $25’dan başlar. Fiyatlar
