İçeriğe geç
Wbiztool

Mesajlaşma API'si

WhatsApp mesajı zamanlama API'si

Bir WhatsApp metnini, görselini veya belgesini seçtiğiniz tarih ve saatte bir telefon numarasına veya gruba gönderilmek üzere zamanlayın. Randevu hatırlatmaları, doğum günü kutlamaları, takip mesajları ve zamana duyarlı teklifler için kullanın.

POSThttps://wbiztool.com/api/v1/schedule_msg/

Gövde: JSON veya form alanları

Mesaj zamanlanan saate kadar kuyruğunuzda bekler ve ardından WhatsApp numaranızdan gönderilir. Yanıt, durumunu kontrol etmek veya iptal etmek için kullanabileceğiniz bir msg_id verir.

Hızlı örnek#

curl -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"
  }'

12345, YOUR_API_KEY ve 678 değerlerini kendi değerlerinizle değiştirin. Bunları nerede bulacağınız için Kimlik doğrulama bölümüne bakın.

İstek parametreleri#

Kimlik doğrulama

client_idintegerzorunlu

Ayarlar → API anahtarları sayfasındaki API Client ID'niz.

api_keystringzorunlu

Aynı sayfadaki API anahtarınız.

whatsapp_clientintegerzorunlu

Gönderimin yapılacağı WhatsApp numarasının ID'si; WhatsApp ayarları sayfasında bulunur. Mesaj gönderme endpoint'inden farklı olarak bu endpoint sizin için asla numara seçmez.

Zamanlama

datestringzorunlu

Mesajın gönderileceği gün, dd/mm/yyyy biçiminde; örneğin 24/12/2026.

timestringzorunlu

Mesajın gönderileceği saat, 24 saatlik HH:MM biçiminde; örneğin 09:00 veya 18:45. Saniye eklemeyin.

timezonestringisteğe bağlı

date ve time değerlerinin ait olduğu saat dilimi. Göndermezseniz varsayılan IST (Hindistan) olur. Bkz. Saat dilimleri.

Alıcı ve mesaj

phonestringgroup_name göndermiyorsanız zorunlu

Alıcının WhatsApp numarası, yalnızca rakamlar. Boşluklar, +, -, . ve parantezler sizin için kaldırılır. Numarayı ya ülke koduyla birlikte (919876543210) ya da ülke kodu olmadan (9876543210) country_code ile birlikte gönderin.

group_namestringphone göndermiyorsanız zorunlu

Numaranızın üyesi olduğu bir WhatsApp grubunun adı. Gruba gönderme ile aynı şekilde bulunur. phone veya group_name gönderin, asla ikisini birden göndermeyin.

country_codestringisteğe bağlı

+ olmadan ülke telefon kodu; örneğin Hindistan için 91, ABD için 1. Numara zaten bununla başlamıyorsa phone değerinin önüne eklenir. İstisna: 91 ile 10 haneli bir numaraya önek her zaman eklenir. Diğer kodlarda, aynı rakamlarla başlayan yerel numaraları ülke koduyla birlikte gönderin. Gruplarda yok sayılır.

msg_typeintegeristeğe bağlı

0 metin (varsayılan), 1 görsel, 2 dosya veya belge.

msgstringmsg_type 0 olduğunda zorunlu

Mesaj metni. Görsel ve dosyalarda açıklama metnidir ve boş olabilir. WhatsApp biçimlendirmesi çalışır: *bold*, _italic_, ~strikethrough~. message da takma ad olarak kabul edilir.

Görseller ve dosyalar

img_urlstringmsg_type 1 olduğunda zorunlu

Görselin herkese açık http veya https URL'si.

file_urlstringmsg_type 2 olduğunda zorunlu

Dosyanın doğrudan indirilebileceği herkese açık http veya https URL'si.

file_namestringisteğe bağlı

Alıcının gördüğü dosya adı, örneğin invoice-4821.pdf. Küçük harflerle gönderilir, & : ? * $ ; gibi karakterler _ ile değiştirilir ve 150 karaktere kısaltılır. Göndermezseniz ad URL'den alınır.

Teslimat seçenekleri

webhookstringisteğe bağlı

Mesaj gönderildiğinde veya başarısız olduğunda bir POST alan URL. İçerik, Mesaj gönderme ile aynıdır.

Mesaj ne zaman gönderilir#

  • Wbiztool date, time ve timezone değerlerini tek bir ana dönüştürür ve WhatsApp numaranız bağlı olduğu sürece o an geçtiğinde mesajı gönderir.
  • Geçmişteki bir saat kabul edilir. Mesaj normal bir gönderim gibi hemen gönderilir. Bir mesajı aylar önce göndermemek için tarih biçimini (dd/mm/yyyy, önce gün) iki kez kontrol edin.
  • Zamanlanan saatte numaranızın bağlantısı kesikse, mesaj bekler ve numara yeniden bağlanır bağlanmaz gönderilir; bu planlanandan çok daha sonra olsa bile. Bu endpoint'te süre sonu yoktur, bu yüzden mesaj artık geçerli değilse iptal edin. Zamanlanan saatinden 90 gün sonra hâlâ bağlantısı kesik veya silinmiş bir numarada bekleyen mesaj silinir.
  • Gönderilene kadar mesajın durumu 0 (Created – Oluşturuldu) olur ve iptal edilebilir. Beklerken kalan kredilerinizden de düşülür.

Saat dilimleri#

timezone, bir saat dilimi adını veya aşağıdaki kısaltmalardan birini kabul eder.

Saat dilimi adları: Asia/Kolkata, America/New_York, Europe/London veya Australia/Sydney gibi. IANA saat dilimi veritabanındaki her ad çalışır. En güvenilir seçenek budur. Liste için Saat dilimi referansı sayfasına bakın.

Kısaltmalar büyük harfle yazılmalıdır. Her biri bir bölgeye karşılık gelir ve o bölgenin yaz saati uygulaması otomatik olarak uygulanır:

KısaltmaKarşılığı
ISTAsia/Kolkata
UTCUTC
GMTGMT
ESTUS/Eastern
CSTUS/Central
MSTUS/Mountain
PSTUS/Pacific
CET, CESTEurope/Paris
EET, EESTEurope/Athens
JSTAsia/Tokyo
AEST, AEDTAustralia/Sydney

Örneğin temmuz ayında EST, sabit UTC−5 değil, New York yaz saati (UTC−4) anlamına gelir.

Bir grup için zamanlama#

curl -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,
    "group_name": "Sales Team Mumbai",
    "msg": "Team meeting starts in 15 minutes.",
    "date": "24/12/2026",
    "time": "14:45",
    "timezone": "Asia/Kolkata"
  }'

Yanıt#

Başarılı bir istek HTTP 200 döndürür:

{
  "msg_id": 9817263,
  "message": "Created",
  "status": 1
}
AlanTürAçıklama
statusintegerMesaj zamanlandıysa 1, istek başarısız olduysa 0.
messagestringBaşarıda Created, aksi halde hata mesajı.
msg_idintegerZamanlanan mesajın ID'si. Durumu kontrol etmek veya daha sonra iptal etmek için kaydedin. Yalnızca başarıda bulunur.

Yanıt zamanlanan saati veya saat dilimini tekrarlamaz, bu yüzden ne gönderdiğinizi kaydedin.

Hatalar#

Çoğu hata, status değeri 0 olarak HTTP 200 döndürür; bu yüzden gövdedeki status değerini her zaman kontrol edin:

{ "message": "Scheduled date & time is not in valid format", "status": 0 }
MesajNasıl düzeltilir
Auth Errorclient_id ve api_key değerlerinin ikisini de gönderin.
Invalid Client Idclient_id değerini sayı olarak gönderin. HTTP 403 ile döner.
Auth Error: invalid api keyAnahtarın mevcut olduğunu, silinmediğini ve bu client_id değerine ait olduğunu kontrol edin. HTTP 400 ile döner.
Either phone or group_name parameter is requiredphone veya group_name ekleyin.
Please provide either phone OR group_name, not bothBirini kaldırın.
Invalid phone numberphone yalnızca rakam (6–17 adet) içermeli, isteğe bağlı olarak + ile başlayabilir.
Invalid Contact Number "…"Ülke kodu eklendikten sonra numara 6–15 haneli olmalıdır.
Msg cant be nullMetin mesajları (msg_type 0) msg gerektirir.
Image Url Can't be nullmsg_type 1 için img_url gönderin.
File Url Can't be nullmsg_type 2 için file_url gönderin.
Scheduled date & time is not in valid formatdate veya time eksik ya da timezone boş bir metin.
Not enough creditsPlanınızda mesaj hakkı kalmadı.
Demo Account can not access apisNormal bir hesap kullanın.
Invalid JSON format: …JSON gövdesi geçerli değil veya form alanlarını client_id olmadan gönderdiniz.

İpuçları#

  • Tarihi dikkatle oluşturun: Python'da strftime("%d/%m/%Y") ve strftime("%H:%M") kullanın. JavaScript'te tarihi ve saati sunucunuzun yerel saatine göre değil, timezone içinde gönderdiğiniz saat dilimine göre biçimlendirin:

    const tz = "Asia/Kolkata"; // d is the Date to send at
    const date = new Intl.DateTimeFormat("en-GB", { timeZone: tz, day: "2-digit", month: "2-digit", year: "numeric" }).format(d); // "24/12/2026"
    const time = new Intl.DateTimeFormat("en-GB", { timeZone: tz, hour: "2-digit", minute: "2-digit", hourCycle: "h23" }).format(d); // "09:00"
  • Saati doğrulayın: beş dakika sonrası için bir test mesajı zamanlayın ve beklediğiniz zamanda ulaştığını kontrol edin.

  • Plan değişikliği: yeniden zamanlamak için mesajı iptal edin ve yeni bir mesaj zamanlayın.

  • Şimdilik zamanlama için resmi istemcileri kullanmayın: Python'daki schedule_message tarihi YYYY-MM-DD olarak gönderir (yanıt {} olur), Node'daki scheduleMessage ise bu endpoint'in okumadığı schedule_time alanını gönderir. Endpoint'i yukarıda gösterildiği gibi doğrudan çağırın.

  • Tekrarlanan mesajlar: aylık ödeme hatırlatmaları gibi tekrarlanan mesajlar için Hatırlatıcı oluşturma sayfasına bakın.