Ana içeriğe geç

WhatsApp Template API

WhatsApp Template API icon
Geliştirici API'si

Onaylı WhatsApp şablonlarını kendi sistemlerinizden tek bir API çağrısıyla gönderin; konuşma ardından MonoChat'te devam eder.

  • WhatsApp
  • REST API
  • Yalnızca API

Genel bakış​

WhatsApp Template API, CRM'inizin, ERP'nizin, e-ticaret sitenizin veya herhangi bir arka ucun MonoChat üzerinden müşteriye onaylı bir WhatsApp şablon mesajı göndermesini sağlar. Tek bir istek, gönderilecek WhatsApp numarasını, müşterinin telefon numarasını, şablonu ve değişkenlerini belirtir.

Müşteri yanıt verdiğinde konuşma, diğerleri gibi MonoChat gelen kutunuza düşer. Uygulamanın kendi ekranı yoktur: her şey üç API uç noktası üzerinden yapılır.

Öne çıkanlar​

  • Tek API çağrısı. Bir şablonu adı ve diliyle gönderin; başlık, gövde, düğme ve karusel değişkenleri verilerinizden doldurulur.
  • Doğrudan sohbete. Her gönderim, konuşmanın kimliğini ve MonoChat'teki doğrudan bağlantısını döndürür.
  • Yeni müşterilere açık. Telefon numarası henüz bir müşteri değilse, müşteri gönderdiğiniz adla oluşturulur.

Kurulum​

  1. WhatsApp Business numaranızı MonoChat'e bağlayın; numaranın doğrulanmış olduğundan ve Meta onaylı şablonları bulunduğundan emin olun.
  2. WhatsApp Template API uygulamasını Ayarlar › MonoStore › Uygulamalar bölümünden yükleyin ya da kurulum bağlantısını açın: app.monochat.ai/apps/K6u29LpbwCHBozZ8o. MonoChat hesabınız yoksa bağlantı önce kaydolmanızı sağlar ve uygulamayı sizin için yükler.
  3. Profil › API Tokenları altında bir API token'ı oluşturun. Token yalnızca bir kez gösterilir; hemen kopyalayın.
  4. Onaylı şablonlarınızı ve değişkenlerini görmek için template/list.js çağrısını yapın.
  5. İlk şablonunuzu göndermek için müşterinin numarası ve değişken değerleriyle template/send.js çağrısını yapın.
MonoChat ayarlarında MonoStore uygulama listesi ve WhatsApp Template API
MonoStore’da WhatsApp Template API ayrıntıları ve Yükle düğmesi
not
  • Her mesaj, MonoChat'ten gönderilen herhangi bir şablon mesajı gibi faturalandırılır.
  • Medya URL'leri, WhatsApp dosyayı alana kadar erişilebilir kalmalıdır.
  • Sizden haber almayı kabul eden müşterilere gönderin: WhatsApp, mesajları engellenen veya şikâyet edilen numaralara sınırlama getirebilir.

Ekran ekran​

WhatsApp Template API'nin kendine ait bir ekranı yoktur ve sol menüye hiçbir şey eklemez. Onu iki yerde görürsünüz: yüklerken ve yüklü uygulamalar listenizde.

Yükleme​

MonoStore Uygulama Önizleme çekmecesinde Yükle düğmesine tıklayın. Bundan sonra MonoChat içinde API token'ı dışında ayarlanacak bir şey yoktur.

Yükle düğmesiyle WhatsApp Template API için MonoStore Uygulama Önizleme çekmecesi

Yüklü uygulamalar​

Yüklendikten sonra uygulama, Ayarlar › MonoStore › Yüklü Uygulamalar altında sürümü, yayıncısı ve açıklamasıyla bir kart olarak görünür.

WhatsApp Template API kartıyla Ayarlar › MonoStore › Yüklü Uygulamalar

Geri kalan her şey API üzerinden yapılır: şablonlarınızı listeleyin, bir şablon gönderin ve başlık için medya yükleyin. Bkz. API başvurusu ve Hatalar.

Özellikler​

Şablonları listeleyin​

Bir WhatsApp numarasının onaylı şablonları; dili, kategorisi, durumu ve değişkenleriyle birlikte, böylece sisteminiz neyi gönderebileceğini bilir.

Şablon gönderin​

Şablon adı ve diliyle, başlık, gövde, düğme ve karusel değişkenleriyle. Eksik bir değer gönderimi durdurur; böylece müşteriye yarım doldurulmuş hiçbir şey ulaşmaz.

Temsilciye ata​

Bir temsilcinin e-postasını verin, konuşma onun adına açılır.

Medya başlıkları​

Kısa ömürlü bir yükleme bağlantısı alın, bir görseli, videoyu veya belgeyi MonoChat'in depolama alanına koyun ve herkese açık URL'sini şablonun başlığı olarak kullanın.

Konuşma bağlantısı​

Her gönderim oturum kimliğini, mesaj kimliğini ve konuşmayı MonoChat'te açan bir bağlantıyı döndürür.

Anlaşılır hatalar​

Başarısız bir çağrı neyin ters gittiğini söyler; örneğin “Channel not found” veya “Variable missing”.

Başlamadan önce​

  • WhatsApp Business numaranız MonoChat'e bağlı ve doğrulanmış olmalı. Bkz. Kanallar.
  • Göndermek istediğiniz şablonlar Meta tarafından onaylanmış olmalı. İlk mesajı siz yazarken ya da 24 saatlik pencerenin dışındaki bir müşteriye ulaşırken şablon kullanılır. Bkz. Şablon Mesajlar.
  • Profil › API Tokenları bölümünden alınmış bir API token'ınız olmalı. Bkz. API Tokenları.
  • Tenant slug'ınızı bilmelisiniz: MonoChat adresinizde /tenants/ sonrasındaki kısım. https://app.monochat.ai/tenants/isletmem adresinde slug isletmemdir.

API başvurusu​

Uygulamanın kendi ekranı yoktur. Her şey, her biri JSON gövdeli bir POST olan üç uç nokta üzerinden yapılır:

POST https://app.monochat.ai/api/<slug>/custom-functions/template-app/api/<endpoint>
Authorization: Bearer <API_TOKEN>
Content-Type: application/json
Uç noktaNe yapar
template/list.jsWhatsApp numaralarınızdan birinin şablonlarını değişkenleriyle listeler.
template/send.jsBir müşteriye şablon gönderir ve konuşmanın bağlantısını döndürür.
upload/get-upload-url.jsBaşlık görseli, videosu ya da belgesi için kısa ömürlü bir yükleme bağlantısı ve herkese açık URL'yi verir.

Telefon numaraları her zaman ülke koduyla ve + olmadan yazılır, örneğin 905334445566. Başarılı bir çağrı 200 ile yanıt verir ve uç noktanın verisi result altında döner.

1. Şablonları listeleme​

POST /api/<slug>/custom-functions/template-app/api/template/list.js

Belirtilen WhatsApp Business numarasının tüm şablonlarını listeler: ad, dil kodu, kategori, bileşenler (başlık, gövde, alt bilgi, düğmeler), değişken türleri ve onay durumu.

AlanZorunluAçıklama
phoneNumberevetMonoChat'teki WhatsApp Business numaranız; ülke koduyla, + olmadan.
optionshayırSayfalama ve filtreler, örneğin { "pagination": { "currentPage": 1, "pageItems": 50 } }.
POST /api/<slug>/custom-functions/template-app/api/template/list.js
Content-Type: application/json
Authorization: Bearer <API_TOKEN>

{
"phoneNumber": "905334445566"
}

Yanıt (kısaltılmış):

{
"result": {
"templateMessages": [
{
"name": "new_product_announcement",
"languageCode": "tr-TR",
"category": "MARKETING",
"components": [
{
"type": "HEADER",
"format": "IMAGE",
"variables": [
{ "type": "IMAGE", "value": null, "exampleValue": "https://.../sample-image.png" }
]
},
{
"type": "BODY",
"text": "Merhaba {{1}}, yeni ürünümüz {{2}} çıktı!",
"sampleText": "Merhaba [Ayşe], yeni ürünümüz [XYZ Telefon] çıktı.",
"variables": [
{ "type": "TEXT", "value": null, "exampleValue": "[Ayşe]" },
{ "type": "TEXT", "value": null, "exampleValue": "[XYZ Telefon]" }
]
},
{
"type": "FOOTER",
"text": "Teşekkürler",
"sampleText": "Teşekkürler"
}
],
"status": "APPROVED"
}
],
"options": {
"pagination": { "totalCount": 12, "currentPage": 1, "pageItems": 12, "totalPages": 1 }
}
}
}

Yanıtı okuma:

  • name: şablonu gönderirken kullanacağınız sistem adı.
  • languageCode: gönderimde kullanılacak dil.
  • category: WhatsApp kategorisi (MARKETING, UTILITY, AUTHENTICATION).
  • components: şablonu oluşturan bölümler.
BileşenİçerikAçıklama
HEADERIMAGE, VIDEO, DOCUMENT ya da metinMedya varsa format belirtilir; değişkenler variables içinde görünür.
BODYDeğişkenli metinMesaj gövdesi; {{1}}, {{2}} gibi yer tutucular içerir.
FOOTERMetinGenellikle değişken içermez.
BUTTONSURL, hızlı yanıt…Düğme metinleri ve varsa değişkenleri.

Yukarıdaki örnek şablon, başlık için bir görsel ve gövde için iki metin (müşteri adı ve ürün adı) ister. Alt bilgi sabittir ("Teşekkürler") ve düğme yoktur.

2. Şablon gönderme​

POST /api/<slug>/custom-functions/template-app/api/template/send.js

Onaylı bir şablonu bir müşteriye gönderir. Telefon numarası henüz bir müşteri değilse müşteri oluşturulur; konuşma açılır (ya da mevcut konuşma kullanılır) ve şablon bu konuşmada gönderilir.

AlanZorunluAçıklama
phoneNumberevetGönderimin yapılacağı WhatsApp Business numarası. MonoChat'e bağlı ve doğrulanmış olmalıdır.
templateMessageNameevetŞablonun name değeri; listede döndüğü gibi.
languageCodeevetŞablonun dili; listede döndüğü gibi (örneğin tr-TR).
customerPhoneNumberevetMüşterinin WhatsApp numarası.
variablesşablonda değişken varsaŞablon değişkenlerinin değerleri (aşağıya bakın).
customerFirstName, customerLastNamehayırMüşteri MonoChat'te yeniyse kullanılır.
agentEmailAddresshayırKonuşmayı bu e-postaya sahip temsilciye atar.

Değişkenler. variables dizisindeki her öğenin bir type değeri ve şablondaki yer tutucuların sırasıyla verilen bir parameters listesi vardır:

typeparameters
HEADERBaşlıktaki metin değişkeni ya da başlık görselinin, videosunun veya belgesinin herkese açık URL'si. Belge için parameters'ın yanında filename da verin (örneğin "filename": "Offer.pdf"): WhatsApp'ın dosya için gösterdiği ad budur.
BODYGövdedeki {{1}}, {{2}}, … sırasıyla.
BUTTONSDeğişkeni olan her düğme için bir değer (örneğin URL düğmesinin değişken kısmı ya da kupon kodu), düğme sırasıyla.
CAROUSELparameters yerine, her karusel kartı için kendi components değerleriyle bir öğe içeren cards dizisi.
{ "type": "CAROUSEL", "cards": [ { "components": [ { "type": "HEADER", "parameters": ["https://…/1.jpg"] }, { "type": "BODY", "parameters": ["…"] } ] } ] }

Eksik bir değer gönderimi Variable missing hatasıyla durdurur; böylece müşteriye yarım doldurulmuş bir mesaj gitmez. FOOTER nadiren değişken içerir.

POST /api/<slug>/custom-functions/template-app/api/template/send.js
Content-Type: application/json
Authorization: Bearer <API_TOKEN>

{
"phoneNumber": "905334445566",
"templateMessageName": "new_product_announcement",
"languageCode": "tr-TR",
"customerPhoneNumber": "905306667788",
"customerFirstName": "Ayşe",
"agentEmailAddress": "sarah@sirketiniz.com",
"variables": [
{ "type": "HEADER", "parameters": ["https://…/urun.jpg"] },
{ "type": "BODY", "parameters": ["Ayşe", "XYZ Telefon"] }
]
}

Yanıt:

{
"result": {
"url": "https://app.monochat.ai/tenants/<slug>?tab=messages&sessionTab=all&filter=…&_id=<sessionId>",
"sessionId": "…",
"messageId": "…"
}
}
  • url: konuşmayı MonoChat'te açar; oturum açmış ve konuşmayı görme yetkisi olan kişiler için.
  • sessionId: konuşmanın kimliği.
  • messageId: mesajın MonoChat'teki kimliği. İletilme ve okunma durumu, diğer mesajlarda olduğu gibi sohbette görünür.

Şablonlarda medya. WhatsApp başlık medyasını verdiğiniz URL'den indirir; bu yüzden URL geçerli ve herkese açık olmalıdır. Oturum açmayı gerektiren bağlantılar çalışmaz. Dosyayı upload/get-upload-url.js ile yüklediyseniz, o yanıttaki downloadUrl değerini kullanın.

3. Başlık için medya yükleme​

POST /api/<slug>/custom-functions/template-app/api/upload/get-upload-url.js

Bir şablonun başlığı görsel, video ya da belge olduğunda dosyanın WhatsApp'ın indirebileceği herkese açık bir adresi olmalıdır. Bu uç nokta, dosyayı MonoChat depolamasına koymanız için kısa ömürlü bir bağlantı verir.

AlanZorunluAçıklama
fileNameevetUzantısıyla dosya adı, örneğin urun.jpg ya da kampanya.pdf.
contentTypeevetDosyanın türü, örneğin image/jpeg, video/mp4 ya da application/pdf.

Dosyalar her zaman çalışma alanınızın chat-assets klasörüne kaydedilir.

POST /api/<slug>/custom-functions/template-app/api/upload/get-upload-url.js
Content-Type: application/json
Authorization: Bearer <API_TOKEN>

{
"fileName": "urun.jpg",
"contentType": "image/jpeg"
}

Yanıt (kısaltılmış):

{
"result": {
"uploadUrl": "https://s3.monochat.ai/app-monochat/store/2026/<slug>/chat-assets/…-urun.jpg?X-Amz-…",
"downloadUrl": "https://s3.monochat.ai/app-monochat/store/2026/<slug>/chat-assets/…-urun.jpg"
}
}
AlanAçıklama
uploadUrlDosyanın yükleneceği adres, 15 dakika geçerlidir.
downloadUrlDosyanın herkese açık adresi.

Dosyayı hemen düz bir PUT isteğiyle uploadUrl adresine yükleyin: gövde olarak dosyanın kendisini, Content-Type başlığı olarak da aynı contentType değerini gönderin. S3 istemcisine ya da kimlik bilgilerine gerek yoktur:

curl -X PUT -H "Content-Type: image/jpeg" --data-binary @urun.jpg "<uploadUrl>"

Ardından şablonu gönderirken downloadUrl değerini HEADER parametresi olarak verin. Çok büyük dosyalar ya da WhatsApp'ın desteklemediği biçimler (yaygın görsel, video ve PDF biçimlerini kabul eder) başarısız olur.

not

Eski entegrasyonlar upload/get-token.js çağırıyor olabilir. Yeni entegrasyonlar upload/get-upload-url.js kullanır.

Örnek: görsel başlıklı bir şablon​

Görsel başlığı ve iki gövde değişkeni (müşteri adı ve ürün adı) olan, onaylı new_product_announcement şablonunu bir müşteriye göndermek istediğinizi düşünelim.

  1. Şablonları listeleyin. WhatsApp numaranızla template/list.js çağrısı yapın ve new_product_announcement şablonunu bulun. Bileşenleri, başlıkta bir IMAGE ve gövdede iki TEXT değişkeni olduğunu gösterir.
  2. Görseli yükleyin. { "fileName": "urun.jpg", "contentType": "image/jpeg" } ile upload/get-upload-url.js çağrısı yapın, dosyayı dönen uploadUrl adresine yükleyin ve downloadUrl değerini saklayın.
  3. Şablonu gönderin. template/send.js çağrısında downloadUrl değerini HEADER parametresi, ["Ayşe", "XYZ Telefon"] dizisini de BODY parametreleri olarak verin ({{1}} → Ayşe, {{2}} → XYZ Telefon). Şablonda düğme değişkenleri olsaydı aynı şekilde bir BUTTONS öğesi eklerdiniz.
  4. Sohbeti açın. Yanıttaki url konuşmayı açar; müşteri yanıt verdiğinde konuşma MonoChat gelen kutunuzda devam eder.

Hatalar​

Başarısız bir çağrı, hata durum kodu ve neyin yanlış gittiğini söyleyen bir mesajla yanıt verir. Bu mesajları sisteminizde kaydedin ve gerektiğinde kullanıcılarınıza anlamlı bir mesaj gösterin.

MesajNedeni
phoneNumber field is requiredtemplate/list.js, phoneNumber olmadan çağrıldı.
phoneNumber, templateMessageName, customerPhoneNumber fields are requiredtemplate/send.js için zorunlu bir alan eksik.
Channel not foundphoneNumber, çalışma alanınızın bir WhatsApp numarası değil.
Channel is not verifiedWhatsApp numarası bağlı ama doğrulanmamış.
Template message not foundNumarada bu ad ve dilde onaylı bir şablon yok. Yazımı ve languageCode değerini kontrol edin.
Template message is not approvedŞablon var ama Meta tarafından onaylanmamış.
Variable missing: …variables, şablonla eşleşmiyor; örneğin şablon iki gövde değeri istiyor, siz bir tane gönderdiniz.
Agent user not foundagentEmailAddress içindeki e-postaya sahip bir temsilci yok.
Customer Channel not foundMüşterinin WhatsApp kimliği oluşturulamadı ya da bulunamadı.
fileName is required, contentType is requiredupload/get-upload-url.js için zorunlu bir alan eksik.

Karşılaşabileceğiniz HTTP durum kodları:

  • 401 Unauthorized: Authorization: Bearer <API_TOKEN> başlığı eksik ya da token yanlış veya süresi dolmuş. Hesabınızdan geçerli bir token kullanın.
  • 403 Forbidden: token'ın bu çalışma alanına ya da uygulamaya erişimi yok; örneğin tenant slug yanlış.
  • 404 Not Found: uç nokta adresi yanlış. Tam yolu kontrol edin: /api/<slug>/custom-functions/template-app/api/....
  • 500 Internal Server Error: MonoChat'te ya da WhatsApp sağlayıcısında beklenmeyen bir sorun veya WhatsApp tarafında bir ret (numara WhatsApp'ta değil, müşteri sizi engellemiş, kalite ya da hız sınırları). Daha sonra yeniden deneyin; sorun sürerse MonoChat destek ekibine başvurun.

Ekran görüntüleri​

Sık sorulan sorular​

WhatsApp Template API'nin kullanıcı arayüzü var mı?​

Hayır. Üç uç noktası olan, yalnızca API'den oluşan bir uygulamadır: şablonları listeleme, şablon gönderme ve medya başlıkları için yükleme bağlantısı alma.

Kullanmadan önce neye ihtiyacım var?​

MonoChat'e bağlı ve doğrulanmış bir WhatsApp Business numarası, Meta tarafından onaylanmış şablonlar ve Profil › API Token'ları altından alınan bir API token'ı.

Müşteri yanıt verdiğinde ne olur?​

Konuşma, diğerleri gibi MonoChat gelen kutunuza düşer. Her gönderim ayrıca konuşmanın doğrudan bağlantısını döndürür ve konuşmayı e-posta ile bir temsilciye atayabilirsiniz.

Henüz müşteri olmayan bir numaraya gönderebilir miyim?​

Evet. Telefon numarası henüz bir müşteri değilse, müşteri gönderdiğiniz adla oluşturulur.

Şablon mesajlarının maliyeti nedir?​

Her mesaj, MonoChat'ten gönderilen herhangi bir şablon mesajı gibi faturalandırılır. Meta, şablonları kategoriye ve alıcının ülkesine göre fiyatlandırır; bir gönderimin maliyetini tahmin etmek için WhatsApp toplu mesaj maliyet hesaplayıcısını kullanın.

İlgili sayfalar​