¡Guau! Emoji de hombre feliz Sandbox completo con todas las funciones para desarrolladores — gratis para siempre! Regístrate ahora
Capacidades de WhatsApp API

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:

3.300+ clientes 5.500+ canales activos

Documentación de la API

Whapi REST API: JSON requests, webhooks, and developer docs
Burbuja decorativa
Sin migración de número: utiliza cualquier cuenta de WhatsApp que ya tengas.

Comienza en 3 sencillos pasos

Icon

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.

Icon

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.

Icon

Añade webhooks cuando necesites eventos

Recibe mensajes y eventos de WhatsApp en tiempo real: configura únicamente los eventos que utiliza tu aplicación.

WhatsApp API Grouping Messages and Management

Automatiza Grupos y Comunidades

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 →

Publica mensajes de texto, multimedia o interactivos en grupos y lee los chats entrantes, incluidos los grupos de anuncios.

Añade o elimina participantes, cambia administradores, crea enlaces de invitación y exporta los números de los miembros.

Gestiona Comunidades con subgrupos vinculados. Envía anuncios, modera subgrupos, gestiona eventos y organiza a los miembros de forma programática.

Monitorea la unión de miembros, nuevos mensajes y otros cambios en los grupos a través de webhooks.

Canales de WhatsApp a través de la 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 →

Publica textos, fotos, videos, encuestas, cuestionarios y preguntas de forma programada o desde otra fuente de datos.

Abre nuevos canales y asigna administradores desde la API, sin necesidad de configurar cada uno manualmente en la aplicación.

Lee las publicaciones y las reacciones para poder sincronizarlas con un sitio web o un panel de control.
WhatsApp Channel API
WhatsApp API messaging, catalog, and media

Mensajería y Comercio Electrónico

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.

Muestra productos y categorías en el chat, sincroniza carritos de compra y reacciona a los pedidos que los clientes realizan en WhatsApp.

Envía texto, documentos, notas de voz, ubicación, tarjetas de contacto, stickers, botones y enlaces con vista previa, con la opción de incluir encabezados y pies de página.

Reacciones con emojis, respuestas citadas, confirmaciones de lectura e indicadores de escritura o grabación de audio.

Integra mensajes, chats, contactos y detalles de números en tu CRM. Exporta catálogos, productos y pedidos.
Pruébalo gratis

Estados e Historias (Stories)

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.

Envía imágenes, videos o texto a los Estados, incluyendo publicaciones de solo texto con fondos de colores y fuentes personalizadas. Llega a cualquier cantidad de destinatarios que elijas.

Realiza un seguimiento de las vistas de tus publicaciones de Estado y obtén las historias de tus contactos de forma programática para análisis y flujos de interacción.
Pruébalo gratis
WhatsApp Status and Stories API

También puedes automatizar

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.

WhatsApp webhooks and real-time events

Capacidades avanzadas de Webhooks

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.

  • Mensajes y estados: mensajes nuevos, editados o eliminados y estado de entrega.
  • Chats y usuarios: nuevos chats y actualizaciones de perfiles de usuario.
  • Grupos y contactos: nuevos grupos, unión de miembros y cambios en contactos.
  • Canales y comunidades: publicaciones, reacciones y actualizaciones de membresía.
  • Pedidos y productos: nuevos pedidos, carritos abandonados y cambios en productos.

Configura el método de entrega, los reintentos y la seguridad, no solo el destino de los eventos.

  • Métodos HTTP: POST, PUT, PATCH o DELETE por tipo de evento.
  • Reintentos: reenvío automático con retroceso exponencial si tu endpoint está caído.
  • Encabezado de autenticación: añade un token secreto para que solo tu servidor acepte eventos.
  • Múltiples URLs: ruta diferentes tipos de eventos a diferentes servicios.

Seguridad y salud del número

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.

Cada canal obtiene un proxy regional dedicado y un puerto de conexión único. Si una cuenta tiene problemas, las demás permanecen aisladas.

El módulo de calentamiento simula conversaciones naturales entre números en segundo plano, de modo que el número tenga un historial de uso antes de realizar envíos masivos. Incluido en el precio de la API — más información sobre el calentamiento.

Una puntuación diaria de la actividad del número, basada en el volumen de envíos y chats recientes. Utilízalo antes de escalar o haz una pausa cuando el medidor de riesgo sea alto.
Pruébalo gratis
WhatsApp number safety and channel isolation
WhatsApp API integrations and connectors

Integraciones y conectores

Un único token de API para llamadas REST, módulos Make/n8n y herramientas de agentes: conecta Whapi a cualquier pila tecnológica.

Documentación, Postman y ejemplos listos para usar. Un solo token, entrada y salida en JSON. Documentación de la API →

Módulos nativos para Make.com y n8n. Zapier, IFTTT y Pabbly Connect funcionan mediante solicitudes HTTP estándar y webhooks. También están disponibles Google Sheets y DialogFlow.

Proporciona herramientas de WhatsApp a Cursor, Claude Desktop o agentes personalizados a través de WhatsApp MCP: envía mensajes, lista chats, configura webhooks y busca IDs de chat. O carga el AI Agent Skill para que el agente utilice la API correctamente desde el principio.

Integra la API en cualquier lenguaje de programación, ¡es fácil!

                                            
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);
                                            
                                        

Usa nuestras guías con código fuente para un inicio fácil

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 →

Meta Cloud API vs Whapi.Cloud API — lo que obtienes

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

Guía de comparación completa →

Elegido por desarrolladores

Confiado por más de 3.300 desarrolladores y equipos SaaS

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.

Icono de característica

5,5K+

canales API activos

Icono de característica

21M+

solicitudes API al mes

“Todo es simple, intuitivo y fácil de usar. La documentación es clara y toda la información está justo donde la necesito. Excelente trabajo.”

Roberto K. / Desarrollador Web

“Conectamos WhatsApp a nuestros flujos en n8n en solo unos minutos. Sin código, sin complicaciones — todo funcionó a la primera.”

Martin P. / Desarrollador

“Whapi.Cloud se convirtió en una parte clave de nuestra comunicación con clientes. Automatizamos actualizaciones de productos, notificaciones de pedidos y mensajes de soporte — sin plantillas ni aprobaciones de Meta.”

Oscar T. / CTO

Burbuja decorativa
Capacidades de WhatsApp API

Preguntas Frecuentes

Whapi.Cloud cubre mensajería (texto, multimedia, catálogos, reacciones), grupos y comunidades, canales de WhatsApp, estados, contactos y chats, webhooks para eventos en tiempo real e integraciones con herramientas de automatización. Cada sección de esta página se asigna a las capacidades de la API que puede llamar a través de HTTPS.
No. Puedes comenzar sin un flujo de aprobación externo ni una biblioteca de plantillas de mensajes. Vincula tu número de WhatsApp a un canal y envía mensajes conversacionales a través de la API de inmediato.
Sí. Vincula tu número actual mediante un código QR o un código de emparejamiento en Dispositivos Vinculados de WhatsApp. No hay migración de número y puedes cambiar el número vinculado más adelante si es necesario.
Sí. Crea y gestiona grupos, añade o elimina participantes, envía mensajes grupales, trabaja con comunidades y automatiza los canales de WhatsApp: la publicación, la gestión de administradores y la lectura de datos de canales son compatibles a través de la API.
Configura una URL de webhook HTTPS en tu canal. Cuando ocurren eventos (nuevos mensajes, estado de entrega, cambios en el grupo y más), Whapi.Cloud envía una carga útil POST a tu endpoint para que tu aplicación reaccione instantáneamente sin realizar consultas continuas.
Sí. Utiliza conectores nativos para Make.com y n8n, o llama a la API REST desde cualquier lenguaje o plataforma. Zapier, IFTTT y herramientas similares funcionan mediante solicitudes HTTP estándar y webhooks.
Sí. El plan Sandbox te permite vincular un número y probar los métodos principales de la API con cuotas diarias y mensuales. Actualiza cuando necesites un volumen de producción sin los límites estrictos del sandbox.
Whapi.Cloud utiliza un precio mensual fijo por canal conectado (número), no por mensaje ni por conversación. Las solicitudes de API no se miden por separado en los planes de pago.
Cualquier automatización puede conllevar un riesgo de restricciones de WhatsApp si los patrones de envío parecen spam. El riesgo depende del volumen, el ritmo, la reputación del número y la calidad del mensaje. Proporcionamos herramientas de calentamiento, orientación de seguridad y soporte para revisar casos cuando ocurren problemas.
Whapi.Cloud - ¡Empieza gratis!

WhatsApp API Precios

Facturado mensualmente

Facturado anualmente

Developer Sandbox

Gratis Para siempre

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)

Comienza la prueba gratuita
Developer Premium

$29 / mes

$40
33% de descuento

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.

Seleccionado: 1

1

Precio por número

Comienza la prueba gratuita
Prueba de
5 días