POST /newsletters pentru a crea canale programatic și asociați payload-uri JSON dinamice în n8n sau Make pentru a automatiza postarea încrucișată fără taxe per mesaj.De ce eșuează API-ul oficial Meta (WABA) pentru canalele WhatsApp
| Caracteristică / Funcție | Meta WABA Oficial (Cloud API) | Gateway-ul API de Canale Whapi.Cloud |
|---|---|---|
| Canale WhatsApp (Buletine informative) | Nu este acceptat (0% funcționalitate) | Acces complet prin API-ul REST |
| Model de tarifare a mesajelor | Tarife variabile Meta per mesaj + suprataxe BSP | Abonament lunar fix (mesaje nelimitate) |
| Activare și verificare | Verificare complexă a afacerii în Facebook (zile/săptămâni) | Scanare instantanee a codului QR (sub 2 minute) |
| Șabloane de mesaje și HSM | Aprobare prealabilă obligatorie pentru toate difuzările | Nu sunt necesare șabloane; trimiteți liber orice conținut |
| Canale interactive (Chestionare/Sondaje) | Nu este acceptat | Sondaje native, chestionare și carduri de întrebări și răspunsuri programatice |
Cum să vă conectați WhatsApp-ul și să începeți să utilizați API-ul
- 1) Accesați panoul de control Whapi.Cloud și localizați canalul implicit.
- 2) Deschideți WhatsApp pe dispozitivul dvs. mobil.
- 3) Accesați Setări -> Dispozitive asociate -> Conectați un dispozitiv.
- 4) Scanați codul QR afișat pe ecran.
Cum se automatizează canalele WhatsApp prin API-ul REST
POST la endpoint-ul /newsletters. Acest lucru este ideal pentru platforme, SaaS sau rețele multi-canal care trebuie să furnizeze medii de difuzare separate pentru diferiți creatori sau sucursale în mod automat.name (numele) canalului și o descriere opțională description. De asemenea, puteți încărca o imagine de profil în parametrul newsletter_pic. API-ul returnează un newsletter_id unic în formatul 120363..._example@newsletter, pe care îl veți folosi pentru toate difuzările viitoare.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);
Cum să trimiteți postări pe canalele WhatsApp prin API
GET /newsletters pentru a prelua o listă cu toate canalele conectate la contul dvs.120363171744447809@newsletter. Odată ce aveți acest identificator unic, trimiterea unui mesaj este la fel de simplă ca inițierea unei solicitări POST.POST /messages/text, transmitând JID-ul canalului în parametrul to și textul simplu în parametrul body. Acest lucru vă permite să difuzați instantaneu anunțuri, link-uri sau alerte în mod programatic către întreaga bază de abonați.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);
Cum să vă abonați sesiunea sau botul la un canal WhatsApp
POST /newsletters/{NewsletterID}/subscription este conceput pentru a abona propriul număr de WhatsApp conectat la orice canal țintă. Acest lucru este extrem de util pentru a crea scraper-e, analizoare sau trackere de conținut care trebuie să urmărească automat canale de știri, feed-uri ale concurenților sau fire de anunțuri.newsletter_id complet (inclusiv sufixul @newsletter) în calea URL-ului. Odată abonat, sesiunea botului dvs. va începe să primească toate mesajele și conținutul media proaspăt publicat în timp real prin webhooks.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);
Cum se preiau și se analizează mesajele de pe canalele WhatsApp
GET /newsletters/{NewsletterID}/messages permite sistemului dvs. să interogheze difuzările istorice și să extragă text, link-uri sau resurse media în mod programatic.count, before sau after pentru a sincroniza conținutul în mod incremental. Acest lucru vă permite să rulați sarcini cron de scraping în fundal (de exemplu, la fiecare oră sau zilnic) pentru a analiza și a salva actualizările canalelor direct în CRM-ul, CMS-ul sau baza dvs. de date (cum ar fi PostgreSQL sau MongoDB) fără a genera o încărcare inutilă asupra API-ului.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);
Cum să trimiteți carduri de invitație pe canale prin API
invite_code atunci când apelați GET /newsletters sau GET /newsletters/{NewsletterID}. Codul returnat este un șir alfanumeric (de exemplu, TESTCODE12345).POST /newsletters/link/{NewsletterInviteCode}. Această metodă vă permite să trimiteți un card de invitație personalizabil către orice contact privat, cu stiluri de previzualizare de înaltă calitate și text CTA personalizat pentru a maximiza rata de conversie.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);
Siguranță și securitate: Desemnarea programatică a administratorilor de rezervă
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);
Etichetarea automată a parteneriatelor plătite pentru conformitate publicitară
POST /newsletters/{NewsletterID}/messages/{MessageID}/paid_partnership. Acest lucru obligă WhatsApp să afișeze o insignă de dezvăluire conformă deasupra corpului postării în feed-ul abonatului.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);
Creșterea angajamentului cu sondaje și chestionare native
/messages/quiz și /messages/question.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);
Ce înseamnă @lid în metadatele canalelor WhatsApp?
1524746986546@lid. Acesta este formatul JID nativ WhatsApp pentru ID-uri de contact mascate. Pentru maparea în CRM și analize, puteți încerca să rezolvați acești identificatori.GET /contacts/ids/{ContactLID}, puteți interoga Whapi.Cloud pentru a rezolva LID-ul anonim într un număr de telefon standard, cu condiția ca contul dvs. conectat să aibă permisiunea sau istoricul interacțiunilor anterioare cu acel destinatar.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);
Implementare și infrastructură pentru boții de canale WhatsApp
Integrarea canalelor fără cod (Low-Code/No-Code): Make, n8n și Zapier
- Configurare Make.com: Adăugați un modul "HTTP - Make a Request" ca acțiune. Setați URL-ul la
https://gate.whapi.cloud/messages/text. Selectați metoda:POST. În Headers, adăugațiAuthorization:Bearer YOUR_WHAPI_TOKEN. Setați tipul de corp laRaw, Content-Type laJSON (application/json). Sub Request Content, scrieți:{"to": "1203632001928471@newsletter", "body": " - Read more: "}, mapând variabilele dinamice. - Mapare flux de lucru n8n: Dacă configurați o integrare WhatsApp în n8n, creați un nod "HTTP Request". Setați URL-ul ca
https://gate.whapi.cloud/messages/text. Selectați metoda:POST. Activați "Send Headers" și adăugațiAuthorizationcu valoareaBearer YOUR_WHAPI_TOKEN. Setați tipul corpului de conținut laJSON. În editorul de parametri JSON, mapați corpul ca{ "to": "1203632001928471@newsletter", "body": "=" }. - Declanșatoare de webhooks Zapier: Creați un Zap cu acțiunea "Webhooks by Zapier" -> "Custom Request". Setați metoda la
POST. Setați URL-ul lahttps://gate.whapi.cloud/messages/text. În Data, furnizați payload-ul JSON brut mapând:{"to": "1203632001928471@newsletter", "body": "{telegram_message_text}"}. În panoul Headers, definițiAuthorizationcaBearer YOUR_WHAPI_TOKENșiContent-Typecaapplication/json.
👉 Ghid pas cu pas despre utilizarea integrării Whapi.Cloud cu Make.com
👉 Ghid pas cu pas despre integrarea Whapi.Cloud cu n8n