Todo lo que puedes automatizar en WhatsApp
Una sola REST API para cada superficie de automatización de WhatsApp: endpoints JSON, eventos en tiempo real y documentación completa.
Saltar a una sección:
Una sola REST API para cada superficie de automatización de WhatsApp: endpoints JSON, eventos en tiempo real y documentación completa.
Saltar a una sección:
Vincula tu número mediante código QR
Conecta cualquier WhatsApp personal o Business, igual que en WhatsApp Web. Comienza en el sandbox gratuito para conectar y realizar pruebas.
Envía tu primera solicitud de API
Utiliza tu token en el sandbox, curl o Postman. Una sola REST API para mensajes, grupos, canales y más.
Añade webhooks cuando necesites eventos
Recibe mensajes y eventos de WhatsApp en tiempo real: configura únicamente los eventos que utiliza tu aplicación.
Automatiza los grupos de WhatsApp desde tu backend: publica mensajes, lee chats grupales, añade o elimina participantes y gestiona administradores sin abrir la aplicación. Exporta los números de teléfono de los miembros para sincronizarlos con tu CRM y escala el onboarding de tus usuarios. Cuando un solo grupo te quede pequeño, gestiona Comunidades con subgrupos vinculados utilizando la misma REST API para ambos. Guía de Groups API →
Crea y gestiona Canales de WhatsApp desde tu backend: publica mensajes, asigna administradores y lee reacciones sin abrir la aplicación. Publica de forma cruzada noticias, notas de lanzamiento y alertas de ofertas desde tu sitio web, Telegram o CRM. Las publicaciones en canales no tienen tarifas por mensaje. Descripción general de Channel API →
Interactúa con tus clientes mediante mensajería directa ilimitada y herramientas integradas de comercio electrónico. Envía archivos multimedia, botones interactivos y catálogos de productos directamente en el chat, sin tarifas por mensaje y sin necesidad de preaprobar plantillas. Crea chatbots inteligentes, sincroniza pedidos con tu CRM y gestiona todo el embudo de ventas con una sola API.
Atrae a tu audiencia con actualizaciones automatizadas de Estados de WhatsApp (Stories). Publica imágenes, videos o texto con fondos de colores personalizados de forma programática. Desbloquea un potente canal de marketing que no está disponible en la mayoría de las API oficiales de WhatsApp.
Herramientas de utilidad integradas en una API clara y amigable para desarrolladores: comienza rápidamente con cualquier acción. Automatiza llamadas de voz, encuestas, verificación de números y etiquetas de chat, todo incluido en tu suscripción y sin tarifas adicionales.
Eventos de llamadas
Inicia llamadas grupales, lanza llamadas salientes, rechaza llamadas entrantes y recibe eventos de llamadas en webhooks: perdidas, contestadas y sonando.
Encuestas
Crea encuestas en chats y grupos y reacciona cuando la gente vote.
Verificación de números
Comprueba si un número de teléfono tiene una cuenta activa de WhatsApp antes de realizar un envío.
Etiquetas comerciales
Etiqueta chats desde la API: ideal para etapas de CRM y colas de soporte técnico.
Recibe eventos de WhatsApp en tu servidor en tiempo real: nuevos mensajes, cambios en grupos, publicaciones en canales y pedidos. Conecta múltiples URLs para distribuir la carga de trabajo entre diferentes servicios y suscríbete únicamente a los eventos que necesitas. Si tu servidor se cae, reintentamos la entrega automáticamente. Documentación de Webhooks →
Elige únicamente los tipos de eventos que necesita tu aplicación.
Configura el método de entrega, los reintentos y la seguridad, no solo el destino de los eventos.
Protege tus números con herramientas de seguridad proactivas e infraestructura dedicada. El sistema antispam basado en IA de WhatsApp es agresivo: los bloqueos temporales y permanentes son comunes y dependen de cómo utilices el número (envíos masivos, prospección en frío y cómo reaccionen los destinatarios). No prometemos un riesgo cero: te ofrecemos herramientas para escalar de forma más segura, como proxies regionales aislados, un módulo de calentamiento integrado y un Medidor de Seguridad de Actividad en tiempo real.
Un único token de API para llamadas REST, módulos Make/n8n y herramientas de agentes: conecta Whapi a cualquier pila tecnológica.
curl --request POST \
--url 'https://gate.whapi.cloud/messages/text' \
--header 'accept: application/json' \
--header 'authorization: Bearer {your_token}' \
--header 'content-type: application/json' \
--data '
{
"to": "15056482143",
"body": "Hello, world!"
}
'
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://gate.whapi.cloud/messages/text",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'to' => '15056482143',
'body' => 'Hello, world!'
]),
CURLOPT_HTTPHEADER => [
"accept: application/json",
"authorization: Bearer {your_token}",
"content-type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}
import requests
url = "https://gate.whapi.cloud/messages/text"
payload = {
"to": "15056482143",
"body": "Hello, world!"
}
headers = {
"accept": "application/json",
"authorization": "Bearer {your_token}",
"content-type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)
const url = 'https://gate.whapi.cloud/messages/text';
const payload = { to: '15056482143', body: 'Hello, world!' };
const response = await fetch(url, {
method: 'POST',
headers: {
accept: 'application/json',
authorization: 'Bearer {your_token}',
'content-type': 'application/json',
},
body: JSON.stringify(payload),
});
console.log(await response.text());
OkHttpClient client = new OkHttpClient();
MediaType mediaType = MediaType.parse("application/json");
RequestBody body = RequestBody.create("{"to":"15056482143","body":"Hello, world!"}", mediaType);
Request request = new Request.Builder()
.url("https://gate.whapi.cloud/messages/text")
.post(body)
.addHeader("accept", "application/json")
.addHeader("authorization", "Bearer {your_token}")
.addHeader("content-type", "application/json")
.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_token}");
request.AddJsonBody("{"to":"15056482143","body":"Hello, world!"}", false);
var response = await client.PostAsync(request);
Console.WriteLine("{0}", response.Content);
# First get chat_id via GET /chats, GET /groups, or GET /newsletters
curl --request POST \
--url 'https://gate.whapi.cloud/messages/text' \
--header 'accept: application/json' \
--header 'authorization: Bearer {your_token}' \
--header 'content-type: application/json' \
--data '
{
"to": "[email protected]",
"body": "Hello, group!"
}
'
// First get chat_id via GET /chats, GET /groups, or GET /newsletters
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://gate.whapi.cloud/messages/text",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'to' => '[email protected]',
'body' => 'Hello, group!'
]),
CURLOPT_HTTPHEADER => [
"accept: application/json",
"authorization: Bearer {your_token}",
"content-type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}
# First get chat_id via GET /chats, GET /groups, or GET /newsletters
import requests
url = "https://gate.whapi.cloud/messages/text"
payload = {
"to": "[email protected]",
"body": "Hello, group!"
}
headers = {
"accept": "application/json",
"authorization": "Bearer {your_token}",
"content-type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)
// First get chat_id via GET /chats, GET /groups, or GET /newsletters
const url = 'https://gate.whapi.cloud/messages/text';
const payload = { to: '[email protected]', body: 'Hello, group!' };
const response = await fetch(url, {
method: 'POST',
headers: {
accept: 'application/json',
authorization: 'Bearer {your_token}',
'content-type': 'application/json',
},
body: JSON.stringify(payload),
});
console.log(await response.text());
// First get chat_id via GET /chats, GET /groups, or GET /newsletters
OkHttpClient client = new OkHttpClient();
MediaType mediaType = MediaType.parse("application/json");
RequestBody body = RequestBody.create("{\"to\":\"[email protected]\",\"body\":\"Hello, group!\"}", mediaType);
Request request = new Request.Builder()
.url("https://gate.whapi.cloud/messages/text")
.post(body)
.addHeader("accept", "application/json")
.addHeader("authorization", "Bearer {your_token}")
.addHeader("content-type", "application/json")
.build();
Response response = client.newCall(request).execute();
// First get chat_id via GET /chats, GET /groups, or GET /newsletters
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_token}");
request.AddJsonBody("{\"to\":\"[email protected]\",\"body\":\"Hello, group!\"}", false);
var response = await client.PostAsync(request);
Console.WriteLine("{0}", response.Content);
curl --request GET \
--url 'https://gate.whapi.cloud/chats?count=100' \
--header 'accept: application/json' \
--header 'authorization: Bearer {your_token}'
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://gate.whapi.cloud/chats?count=100",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"accept: application/json",
"authorization: Bearer {your_token}"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}
import requests
url = "https://gate.whapi.cloud/chats?count=100"
headers = {
"accept": "application/json",
"authorization": "Bearer {your_token}"
}
response = requests.get(url, headers=headers)
print(response.text)
const url = 'https://gate.whapi.cloud/chats?count=100';
const response = await fetch(url, {
method: 'GET',
headers: {
accept: 'application/json',
authorization: 'Bearer {your_token}',
},
});
console.log(await response.text());
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url("https://gate.whapi.cloud/chats?count=100")
.get()
.addHeader("accept", "application/json")
.addHeader("authorization", "Bearer {your_token}")
.build();
Response response = client.newCall(request).execute();
using RestSharp;
var options = new RestClientOptions("https://gate.whapi.cloud/chats?count=100");
var client = new RestClient(options);
var request = new RestRequest("");
request.AddHeader("accept", "application/json");
request.AddHeader("Authorization", "Bearer {your_token}");
var response = await client.GetAsync(request);
Console.WriteLine("{0}", response.Content);
curl --request GET \
--url 'https://gate.whapi.cloud/messages/list?count=100' \
--header 'accept: application/json' \
--header 'authorization: Bearer {your_token}'
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://gate.whapi.cloud/messages/list?count=100",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"accept: application/json",
"authorization: Bearer {your_token}"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}
import requests
url = "https://gate.whapi.cloud/messages/list?count=100"
headers = {
"accept": "application/json",
"authorization": "Bearer {your_token}"
}
response = requests.get(url, headers=headers)
print(response.text)
const url = 'https://gate.whapi.cloud/messages/list?count=100';
const response = await fetch(url, {
method: 'GET',
headers: {
accept: 'application/json',
authorization: 'Bearer {your_token}',
},
});
console.log(await response.text());
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url("https://gate.whapi.cloud/messages/list?count=100")
.get()
.addHeader("accept", "application/json")
.addHeader("authorization", "Bearer {your_token}")
.build();
Response response = client.newCall(request).execute();
using RestSharp;
var options = new RestClientOptions("https://gate.whapi.cloud/messages/list?count=100");
var client = new RestClient(options);
var request = new RestRequest("");
request.AddHeader("accept", "application/json");
request.AddHeader("Authorization", "Bearer {your_token}");
var response = await client.GetAsync(request);
Console.WriteLine("{0}", response.Content);
curl --request GET \
--url 'https://gate.whapi.cloud/groups' \
--header 'accept: application/json' \
--header 'authorization: Bearer {your_token}'
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://gate.whapi.cloud/groups",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"accept: application/json",
"authorization: Bearer {your_token}"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}
import requests
url = "https://gate.whapi.cloud/groups"
headers = {
"accept": "application/json",
"authorization": "Bearer {your_token}"
}
response = requests.get(url, headers=headers)
print(response.text)
const url = 'https://gate.whapi.cloud/groups';
const response = await fetch(url, {
method: 'GET',
headers: {
accept: 'application/json',
authorization: 'Bearer {your_token}',
},
});
console.log(await response.text());
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url("https://gate.whapi.cloud/groups")
.get()
.addHeader("accept", "application/json")
.addHeader("authorization", "Bearer {your_token}")
.build();
Response response = client.newCall(request).execute();
using RestSharp;
var options = new RestClientOptions("https://gate.whapi.cloud/groups");
var client = new RestClient(options);
var request = new RestRequest("");
request.AddHeader("accept", "application/json");
request.AddHeader("Authorization", "Bearer {your_token}");
var response = await client.GetAsync(request);
Console.WriteLine("{0}", response.Content);
curl --request POST \
--url https://gate.whapi.cloud/contacts \
--header 'accept: application/json' \
--header 'authorization: Bearer {your_token}' \
--header 'content-type: application/json' \
--data '
{
"force_check": false,
"contacts": [
"919984351847",
"61371989950"
]
}
'
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://gate.whapi.cloud/contacts",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'force_check' => false,
'contacts' => ['919984351847', '61371989950']
]),
CURLOPT_HTTPHEADER => [
"accept: application/json",
"authorization: Bearer {your_token}",
"content-type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}
import requests
url = "https://gate.whapi.cloud/contacts"
payload = {
"force_check": False,
"contacts": ["919984351847", "61371989950"]
}
headers = {
"accept": "application/json",
"authorization": "Bearer {your_token}",
"content-type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)
const url = 'https://gate.whapi.cloud/contacts';
const payload = {
force_check: false,
contacts: ['919984351847', '61371989950'],
};
const response = await fetch(url, {
method: 'POST',
headers: {
accept: 'application/json',
authorization: 'Bearer {your_token}',
'content-type': 'application/json',
},
body: JSON.stringify(payload),
});
console.log(await response.text());
OkHttpClient client = new OkHttpClient();
MediaType mediaType = MediaType.parse("application/json");
RequestBody body = RequestBody.create("{"force_check":false,"contacts":["919984351847","61371989950"]}", mediaType);
Request request = new Request.Builder()
.url("https://gate.whapi.cloud/contacts")
.post(body)
.addHeader("accept", "application/json")
.addHeader("authorization", "Bearer {your_token}")
.addHeader("content-type", "application/json")
.build();
Response response = client.newCall(request).execute();
using RestSharp;
var options = new RestClientOptions("https://gate.whapi.cloud/contacts");
var client = new RestClient(options);
var request = new RestRequest("");
request.AddHeader("accept", "application/json");
request.AddHeader("Authorization", "Bearer {your_token}");
request.AddJsonBody("{"force_check":false,"contacts":["919984351847","61371989950"]}", false);
var response = await client.PostAsync(request);
Console.WriteLine("{0}", response.Content);
curl --request GET \
--url https://gate.whapi.cloud/contacts/ids/118876465958956%40lid \
--header 'accept: application/json' \
--header 'authorization: Bearer {your_token}'
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://gate.whapi.cloud/contacts/ids/118876465958956%40lid",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"accept: application/json",
"authorization: Bearer {your_token}"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}
import requests
url = "https://gate.whapi.cloud/contacts/ids/118876465958956%40lid"
headers = {
"accept": "application/json",
"authorization": "Bearer {your_token}"
}
response = requests.get(url, headers=headers)
print(response.text)
const url = 'https://gate.whapi.cloud/contacts/ids/118876465958956%40lid';
const response = await fetch(url, {
method: 'GET',
headers: {
accept: 'application/json',
authorization: 'Bearer {your_token}',
},
});
console.log(await response.text());
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url("https://gate.whapi.cloud/contacts/ids/118876465958956%40lid")
.get()
.addHeader("accept", "application/json")
.addHeader("authorization", "Bearer {your_token}")
.build();
Response response = client.newCall(request).execute();
using RestSharp;
var options = new RestClientOptions("https://gate.whapi.cloud/contacts/ids/118876465958956%40lid");
var client = new RestClient(options);
var request = new RestRequest("");
request.AddHeader("accept", "application/json");
request.AddHeader("Authorization", "Bearer {your_token}");
var response = await client.GetAsync(request);
Console.WriteLine("{0}", response.Content);
curl --request PATCH \
--url 'https://gate.whapi.cloud/settings' \
--header 'accept: application/json' \
--header 'authorization: Bearer {your_token}' \
--header 'content-type: application/json' \
--data '
{
"callback_backoff_delay_ms": 3000,
"max_callback_backoff_delay_ms": 900000,
"callback_persist": true,
"webhooks": [
{
"headers": {
"myKey": "secret-key"
},
"mode": "body",
"events": [
{
"type": "messages",
"method": "post"
},
{
"type": "statuses",
"method": "post"
},
{
"type": "groups",
"method": "patch"
}
],
"url": ""
}
]
}
'
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://gate.whapi.cloud/settings",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PATCH",
CURLOPT_POSTFIELDS => json_encode([
'callback_backoff_delay_ms' => 3000,
'max_callback_backoff_delay_ms' => 900000,
'callback_persist' => true,
'webhooks' => [
[
'headers' => ['myKey' => 'secret-key'],
'mode' => 'body',
'events' => [
['type' => 'messages', 'method' => 'post'],
['type' => 'statuses', 'method' => 'post'],
['type' => 'groups', 'method' => 'patch']
],
'url' => ''
]
]
]),
CURLOPT_HTTPHEADER => [
"accept: application/json",
"authorization: Bearer {your_token}",
"content-type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}
import requests
url = "https://gate.whapi.cloud/settings"
payload = {
"callback_backoff_delay_ms": 3000,
"max_callback_backoff_delay_ms": 900000,
"callback_persist": True,
"webhooks": [
{
"headers": {"myKey": "secret-key"},
"mode": "body",
"events": [
{"type": "messages", "method": "post"},
{"type": "statuses", "method": "post"},
{"type": "groups", "method": "patch"}
],
"url": ""
}
]
}
headers = {
"accept": "application/json",
"authorization": "Bearer {your_token}",
"content-type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)
const url = 'https://gate.whapi.cloud/settings';
const payload = {
callback_backoff_delay_ms: 3000,
max_callback_backoff_delay_ms: 900000,
callback_persist: true,
webhooks: [
{
headers: { myKey: 'secret-key' },
mode: 'body',
events: [
{ type: 'messages', method: 'post' },
{ type: 'statuses', method: 'post' },
{ type: 'groups', method: 'patch' },
],
url: '',
},
],
};
const response = await fetch(url, {
method: 'PATCH',
headers: {
accept: 'application/json',
authorization: 'Bearer {your_token}',
'content-type': 'application/json',
},
body: JSON.stringify(payload),
});
console.log(await response.text());
OkHttpClient client = new OkHttpClient();
MediaType mediaType = MediaType.parse("application/json");
RequestBody body = RequestBody.create("{\"callback_backoff_delay_ms\":3000,\"max_callback_backoff_delay_ms\":900000,\"callback_persist\":true,\"webhooks\":[{\"headers\":{\"myKey\":\"secret-key\"},\"mode\":\"body\",\"events\":[{\"type\":\"messages\",\"method\":\"post\"},{\"type\":\"statuses\",\"method\":\"post\"},{\"type\":\"groups\",\"method\":\"patch\"}],\"url\":\"\"}]}", mediaType);
Request request = new Request.Builder()
.url("https://gate.whapi.cloud/settings")
.patch(body)
.addHeader("accept", "application/json")
.addHeader("authorization", "Bearer {your_token}")
.addHeader("content-type", "application/json")
.build();
Response response = client.newCall(request).execute();
using RestSharp;
var options = new RestClientOptions("https://gate.whapi.cloud/settings");
var client = new RestClient(options);
var request = new RestRequest("");
request.AddHeader("accept", "application/json");
request.AddHeader("Authorization", "Bearer {your_token}");
request.AddJsonBody("{\"callback_backoff_delay_ms\":3000,\"max_callback_backoff_delay_ms\":900000,\"callback_persist\":true,\"webhooks\":[{\"headers\":{\"myKey\":\"secret-key\"},\"mode\":\"body\",\"events\":[{\"type\":\"messages\",\"method\":\"post\"},{\"type\":\"statuses\",\"method\":\"post\"},{\"type\":\"groups\",\"method\":\"patch\"}],\"url\":\"\"}]}", false);
var response = await client.PatchAsync(request);
Console.WriteLine("{0}", response.Content);
Guías paso a paso con código para copiar y pegar para Python, PHP, Node.js y Java, además de bots de código abierto, verificadores y plantillas de automatización en GitHub. Haz un fork de un repositorio y lanza más rápido. Explora más de 20 repositorios en GitHub →
Los mismos criterios de decisión que en nuestra guía completa: modelo de costos, onboarding, alcance de funciones y compensaciones operativas entre la Cloud API de Meta y Whapi.Cloud.
| Meta Cloud API | Whapi.Cloud API | |
|---|---|---|
| Precios y onboarding | ||
| Modelo de costo de salida | Tarifas por mensaje (categoría + mercado) | Suscripción fija, sin tarifas de Meta |
| Predecibilidad de precios | Variable (límites, subastas) | Costo mensual predecible |
| Velocidad de onboarding | Verificación de múltiples pasos y plantillas | Escaneo QR: minutos para el primer mensaje |
| Plantillas de mensajes | Requerido para la mayoría de los mensajes salientes | No requerido: envía cualquier tipo de mensaje a cualquier persona |
| Funciones y acceso | ||
| Grupos de WhatsApp | Limitado: 8 miembros, enterprise | Grupos de API completos (1024–2048) |
| Canales y estados | No disponible | Acceso completo a la API |
| Verificación de existencia de número | No disponible | Disponible |
| Aplicación de teléfono + API en el mismo número | Coexistencia limitada | Multidispositivo, la aplicación sigue siendo utilizable |
| Funciones nativas (catálogos, carritos) | Mensajería básica únicamente | Grupos, canales, estados, catálogos |
| Riesgo y operaciones | ||
| Restricciones de categoría comercial | Puertas de categoría de Meta | Usa cualquier número que ya tengas |
| Moderación de mensajes | Pre/post-moderación de Meta | Sin pre-moderación |
| Perfil de baneo / restricción | Restricciones de múltiples pasos | Baneos suaves, a menudo recuperables |
| Herramientas de calentamiento y seguridad | No disponible | Calentamiento + Medidor de Seguridad |
| API de VoIP / llamadas | Telefonía en la nube de Meta | Mensajería REST únicamente |
Desarrolladores de todo el mundo confían en Whapi.Cloud para crear automatizaciones, bots, integraciones con CRM, herramientas de mensajería masiva y flujos avanzados de WhatsApp. Nuestra infraestructura procesa millones de solicitudes API con alta estabilidad, y este número crece cada mes.
canales API activos
solicitudes API al mes
Roberto K. / Desarrollador Web
Martin P. / Desarrollador
Oscar T. / CTO
Facturado mensualmente
Facturado anualmente
Funcionalidad completa de la API para pruebas y desarrollo, con límites de uso aplicados
Hasta 5 conversaciones activas por mes
Hasta 150 mensajes por día
Hasta 30 verificaciones de números de WhatsApp por día
Hasta 1.000 solicitudes a la API por mes
Se requiere actividad periódica
Soporte estándar (no prioritario)
Un servicio estable y confiable para cargas de trabajo en producción con soporte prioritario
Mensajería y medios ilimitados
Acceso completo a Grupos, Canales y Webhooks
Sin cargos por mensaje
Soporte en vivo prioritario y gestión de incidentes más rápida
Módulo automático de calentamiento de números
Herramientas integradas e integraciones de automatización
Adecuado para flujos de trabajo de producción estables y a largo plazo
Precio por número de WhatsApp. Descuentos al conectar varios números.