POST /newsletters uç noktasını kullanın ve mesaj başına ücret ödemeden otomatik çapraz gönderim yapmak için n8n veya Make'te dinamik JSON gövdelerini eşleştirin.WhatsApp Kanalları için Resmi Meta API'si (WABA) Neden Yetersiz Kalıyor
| Özellik / Yetenek | Resmi Meta WABA (Bulut API) | Whapi.Cloud Kanallar API Geçidi |
|---|---|---|
| WhatsApp Kanalları (Bültenler) | Desteklenmiyor (%0 işlevsellik) | REST API Üzerinden Tam Erişim |
| Mesaj Fiyatlandırma Modeli | Meta'nın değişken mesaj başına ücretleri + BSP ek ücretleri | Sabit Aylık Abonelik (Sınırsız Mesaj) |
| Bağlantı ve Doğrulama | Karmaşık Facebook İşletme Doğrulaması (günler veya haftalar) | Anında QR Kod Tarama (2 dakikadan kısa) |
| Mesaj Şablonları ve HSM | Tüm yayınlar için zorunlu ön onay | Şablon gerekmez; her türlü içeriği özgürce gönderin |
| Etkileşimli Kanallar (Yarışmalar/Anketler) | Desteklenmiyor | Yerel programlı anketler, bilgi yarışmaları ve soru-cevap kartları |
Como conectar seu WhatsApp e começar a usar a API
- 1) Whapi.Cloud kontrol panelinize gidin ve varsayılan kanalınızı bulun.
- 2) Mobil cihazınızda WhatsApp'ı açın.
- 3) Ayarlar -> Bağlı Cihazlar -> Cihaz Bağla seçeneğine gidin.
- 4) Ekranda gösterilen QR kodunu taratın.
WhatsApp Kanalları REST API Üzerinden Nasıl Otomatikleştirilir
POST isteğini /newsletters uç noktasına gönderin. Bu, farklı yazarlar veya şubeler için otomatik olarak ayrı yayın ortamları sağlaması gereken platformlar, SaaS veya çok kanallı ağlar için mükemmel bir çözümdür.name ve isteğe bağlı bir açıklamasını description belirtin. Ayrıca newsletter_pic parametresinde bir profil resmi yükleyebilirsiniz. API, gelecekteki tüm yayınları yönlendirmek için kullanacağınız 120363..._example@newsletter biçiminde benzersiz bir kanal kimliği olan newsletter_id döndürür.curl --request POST \
--url https://gate.whapi.cloud/newsletters \
--header 'accept: application/json' \
--header 'authorization: Bearer YOUR_API_TOKEN' \
--header 'content-type: application/json' \
--data '
{
"name": "Developer Channel",
"description": "Tech newsletters & API updates"
}
'
<?php
// composer require guzzlehttp/guzzle
require_once('vendor/autoload.php');
$client = new \GuzzleHttp\Client();
$response = $client->request('POST', 'https://gate.whapi.cloud/newsletters', [
'body' => '{"name":"Developer Channel","description":"Tech newsletters & API updates"}',
'headers' => [
'accept' => 'application/json',
'authorization' => 'Bearer YOUR_API_TOKEN',
'content-type' => 'application/json',
],
]);
echo $response->getBody();
# python -m pip install requests
import requests
url = "https://gate.whapi.cloud/newsletters"
payload = {
"name": "Developer Channel",
"description": "Tech newsletters & API updates"
}
headers = {
"accept": "application/json",
"content-type": "application/json",
"authorization": "Bearer YOUR_API_TOKEN"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)
// POST https://gate.whapi.cloud/newsletters
// Programmatic creation of a brand new broadcast channel on WhatsApp
const createNewsletter = async (channelName, channelDescription) => {
// if you omit the 'name' parameter, gate.whapi.cloud returns a 400 schema validation error
const response = await fetch('https://gate.whapi.cloud/newsletters', {
method: 'POST',
headers: {
'Authorization': `Bearer ${process.env.WHAPI_TOKEN}`,
'Content-Type': 'application/json'
},
body: JSON.stringify({
name: channelName,
description: channelDescription,
newsletter_pic: "https://whapi.cloud/assets/img/whapi/logo-text.svg"
})
});
if (!response.ok) {
throw new Error(`API Error: ${response.status} ${await response.text()}`);
}
const data = await response.json();
console.log(`Channel Created Successfully. NewsletterID: ${data.id}`);
return data.id; // Returns format: newsletter_id_example@newsletter
};
OkHttpClient client = new OkHttpClient();
MediaType mediaType = MediaType.parse("application/json");
RequestBody body = RequestBody.create(mediaType, "{\"name\":\"Developer Channel\",\"description\":\"Tech newsletters & API updates\"}");
Request request = new Request.Builder()
.url("https://gate.whapi.cloud/newsletters")
.post(body)
.addHeader("accept", "application/json")
.addHeader("content-type", "application/json")
.addHeader("authorization", "Bearer YOUR_API_TOKEN")
.build();
Response response = client.newCall(request).execute();
// dotnet add package RestSharp
using RestSharp;
var options = new RestClientOptions("https://gate.whapi.cloud/newsletters");
var client = new RestClient(options);
var request = new RestRequest("");
request.AddHeader("accept", "application/json");
request.AddHeader("authorization", "Bearer YOUR_API_TOKEN");
request.AddJsonBody("{\"name\":\"Developer Channel\",\"description\":\"Tech newsletters & API updates\"}", false);
var response = await client.PostAsync(request);
Console.WriteLine("{0}", response.Content);
API Üzerinden WhatsApp Kanallarına Nasıl Gönderi Gönderilir
GET /newsletters uç noktasını kullanın.120363171744447809@newsletter. Bu benzersiz tanımlayıcıya sahip olduğunuzda, mesaj göndermek bir POST isteği başlatmak kadar basittir.to parametresinde ve düz metni body parametresinde geçirerek POST /messages/text uç noktasını kullanın. Bu, duyuruları, bağlantıları veya uyarıları tüm abone tabanınıza anında programlı olarak yayınlamanıza olanak tanır.curl --request POST \
--url https://gate.whapi.cloud/messages/text \
--header 'accept: application/json' \
--header 'authorization: Bearer YOUR_API_TOKEN' \
--header 'content-type: application/json' \
--data '
{
"to": "120363171744447809@newsletter",
"body": "Hello subscribers, this is an automated update!"
}
'
<?php
require_once('vendor/autoload.php');
$client = new \GuzzleHttp\Client();
$response = $client->request('POST', 'https://gate.whapi.cloud/messages/text', [
'body' => '{"to":"120363171744447809@newsletter","body":"Hello subscribers, this is an automated update!"}',
'headers' => [
'accept' => 'application/json',
'authorization' => 'Bearer YOUR_API_TOKEN',
'content-type' => 'application/json',
],
]);
echo $response->getBody();
import requests
url = "https://gate.whapi.cloud/messages/text"
payload = {
"to": "120363171744447809@newsletter",
"body": "Hello subscribers, this is an automated update!"
}
headers = {
"accept": "application/json",
"content-type": "application/json",
"authorization": "Bearer YOUR_API_TOKEN"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)
// POST https://gate.whapi.cloud/messages/text
// Send a text message post to a public WhatsApp Channel
const sendPostToChannel = async (newsletterId, postContent) => {
// Pass your channel ID in the "to" parameter (format: 120363...@newsletter)
const response = await fetch('https://gate.whapi.cloud/messages/text', {
method: 'POST',
headers: {
'Authorization': `Bearer ${process.env.WHAPI_TOKEN}`,
'Content-Type': 'application/json'
},
body: JSON.stringify({
to: newsletterId,
body: postContent
})
});
if (!response.ok) {
throw new Error(`Failed to send post: ${response.status} ${await response.text()}`);
}
const data = await response.json();
console.log(`Post sent successfully! Message ID: ${data.message.id}`);
return data.message.id;
};
OkHttpClient client = new OkHttpClient();
MediaType mediaType = MediaType.parse("application/json");
RequestBody body = RequestBody.create(mediaType, "{\"to\":\"120363171744447809@newsletter\",\"body\":\"Hello subscribers, this is an automated update!\"}");
Request request = new Request.Builder()
.url("https://gate.whapi.cloud/messages/text")
.post(body)
.addHeader("accept", "application/json")
.addHeader("content-type", "application/json")
.addHeader("authorization", "Bearer YOUR_API_TOKEN")
.build();
Response response = client.newCall(request).execute();
using RestSharp;
var options = new RestClientOptions("https://gate.whapi.cloud/messages/text");
var client = new RestClient(options);
var request = new RestRequest("");
request.AddHeader("accept", "application/json");
request.AddHeader("authorization", "Bearer YOUR_API_TOKEN");
request.AddJsonBody("{\"to\":\"120363171744447809@newsletter\",\"body\":\"Hello subscribers, this is an automated update!\"}", false);
var response = await client.PostAsync(request);
Console.WriteLine("{0}", response.Content);
WhatsApp Kanalına Kendi Oturumunuzu veya Botunuzu Nasıl Abone Yaparsınız
POST /newsletters/{NewsletterID}/subscription uç noktası, kendi bağlı WhatsApp numaranızı herhangi bir hedef kanala abone yapmak için tasarlanmıştır. Bu, haber kanallarını, rakip akışlarını veya duyuru başlıklarını otomatik olarak takip etmesi gereken scraper'lar, içerik toplayıcılar veya etkinlik izleyiciler oluşturmak için son derece yararlıdır.newsletter_id değerini (@newsletter son eki dahil) geçirdiğinizden emin olun. Abone olunduktan sonra, bot oturumunuz webhooks aracılığıyla gerçek zamanlı olarak yeni yayınlanan tüm mesajları ve medyaları almaya başlayacaktır.curl --request POST \
--url https://gate.whapi.cloud/newsletters/120363171744447809@newsletter/subscription \
--header 'accept: application/json' \
--header 'authorization: Bearer YOUR_API_TOKEN'
<?php
require_once('vendor/autoload.php');
$client = new \GuzzleHttp\Client();
$response = $client->request('POST', 'https://gate.whapi.cloud/newsletters/120363171744447809@newsletter/subscription', [
'headers' => [
'accept' => 'application/json',
'authorization' => 'Bearer YOUR_API_TOKEN',
],
]);
echo $response->getBody();
import requests
url = "https://gate.whapi.cloud/newsletters/120363171744447809@newsletter/subscription"
headers = {
"accept": "application/json",
"authorization": "Bearer YOUR_API_TOKEN"
}
response = requests.post(url, headers=headers)
print(response.text)
// POST https://gate.whapi.cloud/newsletters/{NewsletterID}/subscription
// Subscribes your connected WhatsApp session to a specific target channel
const autoSubscribeSession = async (newsletterId) => {
// if you pass a malformed newsletterId (e.g. missing '@newsletter'), the API will fail to match the channel
const response = await fetch(`https://gate.whapi.cloud/newsletters/${newsletterId}/subscription`, {
method: 'POST',
headers: {
'Authorization': `Bearer ${process.env.WHAPI_TOKEN}`,
'Content-Type': 'application/json'
}
});
if (!response.ok) {
throw new Error(`Subscription Failed: ${response.status}`);
}
console.log(`Successfully subscribed connection to channel: ${newsletterId}`);
};
OkHttpClient client = new OkHttpClient();
RequestBody body = RequestBody.create(null, new byte[0]);
Request request = new Request.Builder()
.url("https://gate.whapi.cloud/newsletters/120363171744447809@newsletter/subscription")
.post(body)
.addHeader("accept", "application/json")
.addHeader("authorization", "Bearer YOUR_API_TOKEN")
.build();
Response response = client.newCall(request).execute();
using RestSharp;
var options = new RestClientOptions("https://gate.whapi.cloud/newsletters/120363171744447809@newsletter/subscription");
var client = new RestClient(options);
var request = new RestRequest("");
request.AddHeader("accept", "application/json");
request.AddHeader("authorization", "Bearer YOUR_API_TOKEN");
var response = await client.PostAsync(request);
Console.WriteLine("{0}", response.Content);
WhatsApp Kanallarından Gelen Mesajlar Nasıl Alınır ve Ayrıştırılır
GET /newsletters/{NewsletterID}/messages uç noktası, sisteminizin geçmiş yayınları sorgulamasına ve metin, bağlantı veya medya varlıklarını programlı olarak ayıklamasına olanak tanır.count, before veya after gibi sayfalama parametrelerini kullanmanızı şiddetle tavsiye ederiz. Bu, kanal güncellemelerini API'de gereksiz yük oluşturmadan doğrudan CRM, CMS or veritabanınıza (PostgreSQL veya MongoDB gibi) ayrıştırıp kaydetmek için arka planda cron scraping görevleri çalıştırmanıza olanak tanır.curl --request GET \
--url 'https://gate.whapi.cloud/newsletters/120363171744447809@newsletter/messages?count=50' \
--header 'accept: application/json' \
--header 'authorization: Bearer YOUR_API_TOKEN'
<?php
require_once('vendor/autoload.php');
$client = new \GuzzleHttp\Client();
$response = $client->request('GET', 'https://gate.whapi.cloud/newsletters/120363171744447809@newsletter/messages?count=50', [
'headers' => [
'accept' => 'application/json',
'authorization' => 'Bearer YOUR_API_TOKEN',
],
]);
echo $response->getBody();
import requests
url = "https://gate.whapi.cloud/newsletters/120363171744447809@newsletter/messages"
params = {"count": "50"}
headers = {
"accept": "application/json",
"authorization": "Bearer YOUR_API_TOKEN"
}
response = requests.get(url, params=params, headers=headers)
print(response.text)
// GET https://gate.whapi.cloud/newsletters/{NewsletterID}/messages
// Pulls channel historical feed data with pagination
const syncChannelHistory = async (newsletterId, limitCount = 50) => {
const url = `https://gate.whapi.cloud/newsletters/${newsletterId}/messages?count=${limitCount}`;
const response = await fetch(url, {
method: 'GET',
headers: {
'Authorization': `Bearer ${process.env.WHAPI_TOKEN}`
}
});
if (!response.ok) {
throw new Error(`Failed to fetch history: ${response.status}`);
}
const { messages } = await response.json();
// We recommend enforcing database upserts using the message.id as unique constraint to avoid duplicates
messages.forEach(msg => {
console.log(`[${msg.timestamp}] Message ID: ${msg.id} - Content: ${msg.body || 'Media Post'}`);
});
return messages;
};
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url("https://gate.whapi.cloud/newsletters/120363171744447809@newsletter/messages?count=50")
.get()
.addHeader("accept", "application/json")
.addHeader("authorization", "Bearer YOUR_API_TOKEN")
.build();
Response response = client.newCall(request).execute();
using RestSharp;
var options = new RestClientOptions("https://gate.whapi.cloud/newsletters/120363171744447809@newsletter/messages?count=50");
var client = new RestClient(options);
var request = new RestRequest("");
request.AddHeader("accept", "application/json");
request.AddHeader("authorization", "Bearer YOUR_API_TOKEN");
var response = await client.GetAsync(request);
Console.WriteLine("{0}", response.Content);
API Üzerinden Davet Kartları Nasıl Gönderilir
GET /newsletters veya GET /newsletters/{NewsletterID} çağrısı yaptığınızda bu kodu invite_code parametresi içinde bulabilirsiniz. Döndürülen kod alfasayısal bir dizedir (örneğin TESTCODE12345).POST /newsletters/link/{NewsletterInviteCode} uç noktasına bir POST isteği başlatın. Bu yöntem, dönüşüm oranını en üst düzeye çıkarmak için yüksek kaliteli önizleme stilleri ve özel CTA metniyle herhangi bir özel kişiye özelleştirilebilir bir davet kartı göndermenize olanak tanır.curl --request POST \
--url https://gate.whapi.cloud/newsletters/link/TESTCODE12345 \
--header 'accept: application/json' \
--header 'authorization: Bearer YOUR_API_TOKEN' \
--header 'content-type: application/json' \
--data '
{
"to": "4915155985667",
"body": "Follow this link to join our automated developer newsletter on WhatsApp: %URL%",
"title": "Join Developer Updates",
"preview_type": "style2"
}
'
<?php
require_once('vendor/autoload.php');
$client = new \GuzzleHttp\Client();
$response = $client->request('POST', 'https://gate.whapi.cloud/newsletters/link/TESTCODE12345', [
'body' => '{"to":"4915155985667","body":"Follow this link to join our automated developer newsletter on WhatsApp: %URL%","title":"Join Developer Updates","preview_type":"style2"}',
'headers' => [
'accept' => 'application/json',
'authorization' => 'Bearer YOUR_API_TOKEN',
'content-type' => 'application/json',
],
]);
echo $response->getBody();
import requests
url = "https://gate.whapi.cloud/newsletters/link/TESTCODE12345"
payload = {
"to": "4915155985667",
"body": "Follow this link to join our automated developer newsletter on WhatsApp: %URL%",
"title": "Join Developer Updates",
"preview_type": "style2"
}
headers = {
"accept": "application/json",
"content-type": "application/json",
"authorization": "Bearer YOUR_API_TOKEN"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)
// POST https://gate.whapi.cloud/newsletters/link/{NewsletterInviteCode}
// Distribute a newsletter invite card programmatically with a customized visual preview
const distributeInviteCard = async (inviteCode, recipientPhone) => {
const response = await fetch(`https://gate.whapi.cloud/newsletters/link/${inviteCode}`, {
method: 'POST',
headers: {
'Authorization': `Bearer ${process.env.WHAPI_TOKEN}`,
'Content-Type': 'application/json'
},
body: JSON.stringify({
to: recipientPhone,
body: "Follow this link to join our automated developer newsletter on WhatsApp: %URL%",
title: "Join Developer Updates",
preview_type: "style2" // Applies clean, flat infographic preview style to invitation card
})
});
if (!response.ok) {
throw new Error(`Failed to send invite card: ${response.status}`);
}
console.log(`Invite card successfully dispatched to ${recipientPhone}`);
};
OkHttpClient client = new OkHttpClient();
MediaType mediaType = MediaType.parse("application/json");
RequestBody body = RequestBody.create(mediaType, "{\"to\":\"4915155985667\",\"body\":\"Follow this link to join our automated developer newsletter on WhatsApp: %URL%\",\"title\":\"Join Developer Updates\",\"preview_type\":\"style2\"}");
Request request = new Request.Builder()
.url("https://gate.whapi.cloud/newsletters/link/TESTCODE12345")
.post(body)
.addHeader("accept", "application/json")
.addHeader("content-type", "application/json")
.addHeader("authorization", "Bearer YOUR_API_TOKEN")
.build();
Response response = client.newCall(request).execute();
using RestSharp;
var options = new RestClientOptions("https://gate.whapi.cloud/newsletters/link/TESTCODE12345");
var client = new RestClient(options);
var request = new RestRequest("");
request.AddHeader("accept", "application/json");
request.AddHeader("authorization", "Bearer YOUR_API_TOKEN");
request.AddJsonBody("{\"to\":\"4915155985667\",\"body\":\"Follow this link to join our automated developer newsletter on WhatsApp: %URL%\",\"title\":\"Join Developer Updates\",\"preview_type\":\"style2\"}", false);
var response = await client.PostAsync(request);
Console.WriteLine("{0}", response.Content);
Güvenlik ve Koruma: Programlı Olarak Yedek Yöneticiler Atama
curl --request POST \
--url https://gate.whapi.cloud/newsletters/120363171744447809@newsletter/invite/4915155985667 \
--header 'accept: application/json' \
--header 'authorization: Bearer YOUR_API_TOKEN' \
--header 'content-type: application/json' \
--data '
{
"message": "You are invited to become a channel administrator."
}
'
<?php
require_once('vendor/autoload.php');
$client = new \GuzzleHttp\Client();
$response = $client->request('POST', 'https://gate.whapi.cloud/newsletters/120363171744447809@newsletter/invite/4915155985667', [
'body' => '{"message":"You are invited to become a channel administrator."}',
'headers' => [
'accept' => 'application/json',
'authorization' => 'Bearer YOUR_API_TOKEN',
'content-type' => 'application/json',
],
]);
echo $response->getBody();
import requests
url = "https://gate.whapi.cloud/newsletters/120363171744447809@newsletter/invite/4915155985667"
payload = {
"message": "You are invited to become a channel administrator."
}
headers = {
"accept": "application/json",
"content-type": "application/json",
"authorization": "Bearer YOUR_API_TOKEN"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)
// Node.js Implementation of the Dynamic Invitation Pipeline
const adminOnboardingPipeline = async (newsletterId, contactId) => {
try {
// Step 1: Send an administrator invitation to the contact
// POST /newsletters/{NewsletterID}/invite/{ContactID}
const inviteResponse = await fetch(`https://gate.whapi.cloud/newsletters/${newsletterId}/invite/${contactId}`, {
method: 'POST',
headers: {
'Authorization': `Bearer ${process.env.WHAPI_TOKEN}`,
'Content-Type': 'application/json'
},
body: JSON.stringify({
message: "You have been invited to manage our automated broadcast feed. Click accept."
})
});
if (!inviteResponse.ok) {
throw new Error(`Admin Invitation Failed: ${inviteResponse.status}`);
}
console.log(`Step 1 Complete: Admin invite dispatched to ${contactId}`);
// Step 2: Auto-confirm and accept the admin request
// PUT /newsletters/{NewsletterID}/admins/{ContactID}
// Note: In real production systems, you should trigger this second call in your webhook handler
// once you receive the user's acceptance notification from WhatsApp.
const acceptResponse = await fetch(`https://gate.whapi.cloud/newsletters/${newsletterId}/admins/${contactId}`, {
method: 'PUT',
headers: {
'Authorization': `Bearer ${process.env.WHAPI_TOKEN}`,
'Content-Type': 'application/json'
}
});
if (!acceptResponse.ok) {
throw new Error(`Admin Activation Failed: ${acceptResponse.status}`);
}
console.log(`Step 2 Complete: Administrative access fully activated for ${contactId}`);
} catch (error) {
console.error(`Dynamic Invitation Pipeline broke: ${error.message}`);
}
};
OkHttpClient client = new OkHttpClient();
MediaType mediaType = MediaType.parse("application/json");
RequestBody body = RequestBody.create(mediaType, "{\"message\":\"You are invited to become a channel administrator.\"}");
Request request = new Request.Builder()
.url("https://gate.whapi.cloud/newsletters/120363171744447809@newsletter/invite/4915155985667")
.post(body)
.addHeader("accept", "application/json")
.addHeader("content-type", "application/json")
.addHeader("authorization", "Bearer YOUR_API_TOKEN")
.build();
Response response = client.newCall(request).execute();
using RestSharp;
var options = new RestClientOptions("https://gate.whapi.cloud/newsletters/120363171744447809@newsletter/invite/4915155985667");
var client = new RestClient(options);
var request = new RestRequest("");
request.AddHeader("accept", "application/json");
request.AddHeader("authorization", "Bearer YOUR_API_TOKEN");
request.AddJsonBody("{\"message\":\"You are invited to become a channel administrator.\"}", false);
var response = await client.PostAsync(request);
Console.WriteLine("{0}", response.Content);
Reklam Uyumluluğu İçin Ücretli Ortaklıkları Otomatik Olarak Etiketleme
POST /newsletters/{NewsletterID}/messages/{MessageID}/paid_partnership uç noktasını kullanın. Bu, WhatsApp'ın abonenin akışındaki gönderi gövdesinin üzerinde uyumlu bir açıklama etiketi görüntülemesini sağlar.curl --request POST \
--url https://gate.whapi.cloud/newsletters/120363171744447809@newsletter/messages/MESSAGE_ID_12345/paid_partnership \
--header 'accept: application/json' \
--header 'authorization: Bearer YOUR_API_TOKEN'
<?php
require_once('vendor/autoload.php');
$client = new \GuzzleHttp\Client();
$response = $client->request('POST', 'https://gate.whapi.cloud/newsletters/120363171744447809@newsletter/messages/MESSAGE_ID_12345/paid_partnership', [
'headers' => [
'accept' => 'application/json',
'authorization' => 'Bearer YOUR_API_TOKEN',
],
]);
echo $response->getBody();
import requests
url = "https://gate.whapi.cloud/newsletters/120363171744447809@newsletter/messages/MESSAGE_ID_12345/paid_partnership"
headers = {
"accept": "application/json",
"authorization": "Bearer YOUR_API_TOKEN"
}
response = requests.post(url, headers=headers)
print(response.text)
// POST https://gate.whapi.cloud/newsletters/{NewsletterID}/messages/{MessageID}/paid_partnership
// Programmatically applies paid partnership label for legal ad compliance
const applyComplianceTag = async (newsletterId, messageId) => {
const response = await fetch(`https://gate.whapi.cloud/newsletters/${newsletterId}/messages/${messageId}/paid_partnership`, {
method: 'POST',
headers: {
'Authorization': `Bearer ${process.env.WHAPI_TOKEN}`,
'Content-Type': 'application/json'
}
});
if (!response.ok) {
throw new Error(`Compliance tag assignment failed: ${response.status}`);
}
console.log(`Paid partnership badge successfully stamped on message: ${messageId}`);
};
OkHttpClient client = new OkHttpClient();
RequestBody body = RequestBody.create(null, new byte[0]);
Request request = new Request.Builder()
.url("https://gate.whapi.cloud/newsletters/120363171744447809@newsletter/messages/MESSAGE_ID_12345/paid_partnership")
.post(body)
.addHeader("accept", "application/json")
.addHeader("authorization", "Bearer YOUR_API_TOKEN")
.build();
Response response = client.newCall(request).execute();
using RestSharp;
var options = new RestClientOptions("https://gate.whapi.cloud/newsletters/120363171744447809@newsletter/messages/MESSAGE_ID_12345/paid_partnership");
var client = new RestClient(options);
var request = new RestRequest("");
request.AddHeader("accept", "application/json");
request.AddHeader("authorization", "Bearer YOUR_API_TOKEN");
var response = await client.PostAsync(request);
Console.WriteLine("{0}", response.Content);
Etkileşimi Artırma: Yerel Anketler ve Bilgi Yarışmaları
/messages/quiz ve /messages/question uç noktalarını kullanarak metin, resim, video ve belgelerin yanı sıra bilgi yarışmaları ve soru-cevap kartları gibi yerel etkileşimli varlıklar gönderebilirsiniz.curl --request POST \
--url https://gate.whapi.cloud/messages/quiz \
--header 'accept: application/json' \
--header 'authorization: Bearer YOUR_API_TOKEN' \
--header 'content-type: application/json' \
--data '
{
"to": "120363171744447809@newsletter",
"title": "Does the official Meta WABA support WhatsApp Channels programmatically?",
"options": ["Yes, fully supported", "Only via BSP partners", "No, it completely lacks support"],
"correct_option_index": 2
}
'
<?php
require_once('vendor/autoload.php');
$client = new \GuzzleHttp\Client();
$response = $client->request('POST', 'https://gate.whapi.cloud/messages/quiz', [
'body' => '{"to":"120363171744447809@newsletter","title":"Does the official Meta WABA support WhatsApp Channels programmatically?","options":["Yes, fully supported","Only via BSP partners","No, it completely lacks support"],"correct_option_index":2}',
'headers' => [
'accept' => 'application/json',
'authorization' => 'Bearer YOUR_API_TOKEN',
'content-type' => 'application/json',
],
]);
echo $response->getBody();
import requests
url = "https://gate.whapi.cloud/messages/quiz"
payload = {
"to": "120363171744447809@newsletter",
"title": "Does the official Meta WABA support WhatsApp Channels programmatically?",
"options": ["Yes, fully supported", "Only via BSP partners", "No, it completely lacks support"],
"correct_option_index": 2
}
headers = {
"accept": "application/json",
"content-type": "application/json",
"authorization": "Bearer YOUR_API_TOKEN"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)
// Node.js implementation for native interactive Channel Quizzes and Questions
const sendInteractivePolls = async (newsletterId) => {
// 1. Send Question message to Channel
// POST https://gate.whapi.cloud/messages/question
const questionResponse = await fetch('https://gate.whapi.cloud/messages/question', {
method: 'POST',
headers: {
'Authorization': `Bearer ${process.env.WHAPI_TOKEN}`,
'Content-Type': 'application/json'
},
body: JSON.stringify({
to: newsletterId,
body: "What is your primary bottleneck when integrating the official WhatsApp Business API?"
})
});
if (questionResponse.ok) {
console.log("Interactive Q&A card published to channel.");
}
// 2. Send Quiz message with a validated correct answer to Channel
// POST https://gate.whapi.cloud/messages/quiz
const quizResponse = await fetch('https://gate.whapi.cloud/messages/quiz', {
method: 'POST',
headers: {
'Authorization': `Bearer ${process.env.WHAPI_TOKEN}`,
'Content-Type': 'application/json'
},
body: JSON.stringify({
to: newsletterId,
title: "Does the official Meta WABA support WhatsApp Channels programmatically?",
options: ["Yes, fully supported", "Only via BSP partners", "No, it completely lacks support"],
correct_option_index: 2 // Option 3 is marked correct
})
});
if (quizResponse.ok) {
console.log("Interactive trivia Quiz published to channel.");
}
};
OkHttpClient client = new OkHttpClient();
MediaType mediaType = MediaType.parse("application/json");
RequestBody body = RequestBody.create(mediaType, "{\"to\":\"120363171744447809@newsletter\",\"title\":\"Does the official Meta WABA support WhatsApp Channels programmatically?\",\"options\":[\"Yes, fully supported\",\"Only via BSP partners\",\"No, it completely lacks support\"],\"correct_option_index\":2}");
Request request = new Request.Builder()
.url("https://gate.whapi.cloud/messages/quiz")
.post(body)
.addHeader("accept", "application/json")
.addHeader("content-type", "application/json")
.addHeader("authorization", "Bearer YOUR_API_TOKEN")
.build();
Response response = client.newCall(request).execute();
using RestSharp;
var options = new RestClientOptions("https://gate.whapi.cloud/messages/quiz");
var client = new RestClient(options);
var request = new RestRequest("");
request.AddHeader("accept", "application/json");
request.AddHeader("authorization", "Bearer YOUR_API_TOKEN");
request.AddJsonBody("{\"to\":\"120363171744447809@newsletter\",\"title\":\"Does the official Meta WABA support WhatsApp Channels programmatically?\",\"options\":[\"Yes, fully supported\",\"Only via BSP partners\",\"No, it completely lacks support\"],\"correct_option_index\":2}", false);
var response = await client.PostAsync(request);
Console.WriteLine("{0}", response.Content);
WhatsApp Kanal Meta Verilerindeki @lid Ne Anlama Geliyor?
1524746986546@lid biçimini takip eder. Bu, maskelenmiş kişi kimlikleri için WhatsApp'ın yerel JID biçimidir. CRM eşleme ve analiz için bu tanımlayıcıları çözümlemeyi deneyebilirsiniz.GET /contacts/ids/{ContactLID} uç noktasını kullanarak, bağlı hesabınızın o alıcıyla önceden etkileşim geçmişi veya izni olması koşuluyla, anonim LID'yi standart bir telefon numarasına çözümlemek için Whapi.Cloud'u sorgulayabilirsiniz.curl --request GET \
--url https://gate.whapi.cloud/contacts/ids/1524746986546@lid \
--header 'accept: application/json' \
--header 'authorization: Bearer YOUR_API_TOKEN'
<?php
require_once('vendor/autoload.php');
$client = new \GuzzleHttp\Client();
$response = $client->request('GET', 'https://gate.whapi.cloud/contacts/ids/1524746986546@lid', [
'headers' => [
'accept' => 'application/json',
'authorization' => 'Bearer YOUR_API_TOKEN',
],
]);
echo $response->getBody();
import requests
url = "https://gate.whapi.cloud/contacts/ids/1524746986546@lid"
headers = {
"accept": "application/json",
"authorization": "Bearer YOUR_API_TOKEN"
}
response = requests.get(url, headers=headers)
print(response.text)
// GET https://gate.whapi.cloud/contacts/ids/{contactLid}
// Query standard phone numbers and identities using the anonymized JID lid
const resolveContactLid = async (contactLid) => {
const response = await fetch(`https://gate.whapi.cloud/contacts/ids/${contactLid}`, {
method: 'GET',
headers: {
'Authorization': `Bearer ${process.env.WHAPI_TOKEN}`
}
});
if (!response.ok) {
throw new Error(`Failed to resolve LID: ${response.status}`);
}
const { phone } = await response.json();
console.log(`Successfully mapped LID ${contactLid} to Phone: ${phone}`);
return phone; // Returns standard phone number without the '+' sign
};
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url("https://gate.whapi.cloud/contacts/ids/1524746986546@lid")
.get()
.addHeader("accept", "application/json")
.addHeader("authorization", "Bearer YOUR_API_TOKEN")
.build();
Response response = client.newCall(request).execute();
using RestSharp;
var options = new RestClientOptions("https://gate.whapi.cloud/contacts/ids/1524746986546@lid");
var client = new RestClient(options);
var request = new RestRequest("");
request.AddHeader("accept", "application/json");
request.AddHeader("authorization", "Bearer YOUR_API_TOKEN");
var response = await client.GetAsync(request);
Console.WriteLine("{0}", response.Content);
WhatsApp Kanal Botları İçin Dağıtım ve Altyapı
Kodsuz Kanal Entegrasyonu: Make, n8n ve Zapier
- Make.com Yapılandırması: İşleminiz olarak bir "HTTP - Make a Request" modülü ekleyin. URL'yi
https://gate.whapi.cloud/messages/textolarak ayarlayın. Yöntemi seçin:POST. Headers kısmındaAuthorization:Bearer YOUR_WHAPI_TOKENekleyin. Gövde türünüRaw, Content-Type değeriniJSON (application/json)olarak ayarlayın. Request Content alanına, dinamik değişkenleri eşleştirerek JSON yazın:{"to": "1203632001928471@newsletter", "body": " - Read more: "}. - n8n İş Akışı Eşleştirmesi: n8n'de bir WhatsApp entegrasyonu kuruyorsanız, bir "HTTP Request" düğümü oluşturun. URL'yi
https://gate.whapi.cloud/messages/textolarak yapılandırın. Yöntemi seçin:POST. "Send Headers" seçeneğini etkinleştirin ve değeriBearer YOUR_WHAPI_TOKENolanAuthorizationbaşlığını ekleyin. İçerik gövde türünüJSONolarak ayarlayın. JSON parametreleri düzenleyicisinde gövdeyi şu şekilde eşleştirin:{ "to": "1203632001928471@newsletter", "body": "=" }. - Zapier Webhook Tetikleyicileri: "Webhooks by Zapier" -> "Custom Request" işlemiyle bir Zap oluşturun. Yöntemi
POSTolarak ayarlayın. URL'yihttps://gate.whapi.cloud/messages/textolarak belirleyin. Data alanına şu JSON gövdesini sağlayın:{"to": "1203632001928471@newsletter", "body": "{telegram_message_text}"}. Headers panelindeAuthorizationdeğeriniBearer YOUR_WHAPI_TOKENveContent-Typedeğeriniapplication/jsonolarak tanımlayın.
👉 Whapi.Cloud entegrasyonunun Make.com ile nasıl kullanılacağına ilişkin adım adım kılavuz
👉 Whapi.Cloud'u n8n ile nasıl entegre edeceğinize dair adım adım kılavuz