Toplu Şablon Mesaj API Dokümantasyonu
Bu API, WhatsApp kanalı üzerinden birden fazla alıcıya aynı anda şablon mesajı (template message) göndermenizi sağlar.
Gönderim işlemi asenkron olarak gerçekleşir; API isteği anında bir bulkMessageId döner ve mesajlar arka planda kuyruğa alınarak işlenir.
POST https://app.monochat.ai/api/:slug/custom-functions/bulk-message-api-app/api/bulk-message/send.js
Temel Özellikler
- Tek istek ile 1–5.000 alıcıya toplu şablon mesajı gönderimi
- Her alıcı için kişiselleştirilmiş değişkenler (HEADER, BODY, BUTTONS, CAROUSEL)
- Tüm alıcılar için ortak
defaultPayload+ kişiye özelpayloadbirleştirme (isMerge) - Zamanlanmış gönderim (
scheduleAt) - Alıcıları
username(telefon numarası),userIdveyasessionIdile belirtme - Gönderim sonrası konuşmaları otomatik kullanıcı veya çalışma grubuna atama (
action)
Bu API yalnızca Meta tarafından onaylanmış şablonları gönderebilir. Şablon adı ve dil kodu, Meta Business Manager'daki şablon kaydı ile tam olarak eşleşmelidir.
İstek Parametreleri
Üst Seviye Parametreler
| Parametre | Tip | Zorunlu | Açıklama |
|---|---|---|---|
channelUsername | string | Evet | Mesajın gönderileceği WhatsApp kanal numarası (örn. "908506669933") |
connectorBrand | string | Evet | Kanal bağlayıcı markası. Şu an desteklenen değer: "whatsapp" |
title | string | Hayır | Kampanya başlığı. Dashboard'da görüntüleme için kullanılır. Varsayılan: "-" |
scheduleAt | string (ISO 8601) | Hayır | Zamanlanmış gönderim tarihi ve saati (örn. "2026-06-10T10:00:00.000Z"). Belirtilmezse hemen gönderilir. |
defaultPayload | object | Koşullu* | Tüm alıcılara uygulanacak varsayılan şablon payload'ı. Kendi payload'u olmayan alıcılar için zorunludur. |
recipients | array | Evet | Alıcı listesi. Minimum 1, maksimum 5.000 alıcı. Her alıcı benzersiz olmalıdır. |
action | object | Hayır | Gönderim sonrası konuşmaya uygulanacak aksiyon. assign-to-user veya assign-to-workgroup |
*Her alıcının kendi payload'u varsa defaultPayload opsiyoneldir.
Alıcı (Recipient) Yapısı
Her alıcı için username, userId ve sessionId alanlarından yalnızca biri verilmelidir. Birden fazlası aynı anda kullanılamaz; hiçbiri verilmezse istek hata döner.
| Alan | Tip | Açıklama |
|---|---|---|
username | string | Alıcının telefon numarası (örn. "905554443322"). Kullanıcı sistemde yoksa otomatik oluşturulur. |
userId | string | Sistemdeki mevcut kullanıcının ID'si |
sessionId | string | Sistemdeki mevcut konuşma oturumunun ID'si |
payload | object | Bu alıcıya özel şablon payload'ı (opsiyonel). isMerge: true ise defaultPayload ile birleştirilir. |
isMerge | boolean | Bu alıcı için birleştirme davranışını geçersiz kılar (opsiyonel). Belirtilmezse defaultPayload.isMerge değeri kullanılır. |
Action Yapısı
| Alan | Tip | Açıklama |
|---|---|---|
action.key | string | "assign-to-user" — konuşmayı belirli bir agent'a atar; "assign-to-workgroup" — konuşmayı çalışma grubuna atar |
action.value | string | Atanacak kullanıcı veya çalışma grubunun ID'si |
Template Payload Yapısı
defaultPayload ve alıcıya özel payload aynı yapıyı paylaşır. Template türü için type: "template" belirtilmelidir.
{
"type": "template",
"template": {
"templateName": "order_confirmation", // zorunlu (defaultPayload'da)
"languageCode": "tr-TR", // opsiyonel — örn. "tr", "en", "tr-TR", "en-US"
"variables": [ ... ] // opsiyonel
},
"isMerge": true // opsiyonel
}
| Alan | Tip | Zorunlu | Açıklama |
|---|---|---|---|
type | string | Evet | Payload türü. Template için: "template" |
template.templateName | string | Evet* | Meta'da kayıtlı şablon adı. isMerge: true kullanılıyorsa alıcı payload'unda opsiyoneldir (default'tan devralınır). |
template.languageCode | string | Hayır | Şablon dil kodu (örn. "tr", "en", "tr-TR", "en-US"). Şablonun Meta'da kayıtlı dil kodu ile tam olarak eşleşmelidir. |
template.variables | array | Hayır | Şablon bileşenlerine uygulanacak değişken listesi. Aşağıda detaylı açıklanmaktadır. |
isMerge | boolean | Hayır | true: Alıcı payload'u defaultPayload ile derin birleştirme (deep merge) yapılır. false/belirtilmezse: Alıcı payload'u defaultPayload'un yerine tamamen geçer. |
defaultPayload.isMerge: true+ alıcının kendipayload'u varsa → deep merge uygulanır- Deep merge ile alıcı yalnızca
variablessağlayabilir,templateNamevelanguageCodedefault'tan gelir - Alıcının
isMergealanı,defaultPayload.isMergedeğerini geçersiz kılar - Alıcının kendi
payload'u yoksa her zamandefaultPayloadkullanılır
Variables Yapısı
variables dizisinin her elemanı bir şablon bileşenine karşılık gelir. Bir bileşen türü (type) dizide yalnızca bir kez yer almalıdır.
| type | Açıklama | parameters | cards |
|---|---|---|---|
"HEADER" | Şablon başlık bileşeni. Metin değişkeni veya medya URL'si (resim, video, doküman) | Evet | — |
"BODY" |