API REST profesional para automatizar el envío de mensajes de WhatsApp. Consulta nuestros planes y precios para más información.
API REST optimizada para envío de mensajes de WhatsApp en tiempo real con alta disponibilidad
Autenticación por tokens API seguros, límites inteligentes y conexiones HTTPS encriptadas
Integra en minutos con cualquier lenguaje de programación usando nuestra API REST
Regístrate en ZapGo para obtener acceso a la API
Escanea el código QR para conectar tu cuenta de WhatsApp
Copia tu User ID y API Token desde el dashboard
Usa la API para enviar mensajes según tu plan. Ver precios
GET https://zapgo.com.co/api/auth/me
Retorna tus datos de usuario y suscripción
POST https://zapgo.com.co/api/send-message
Parámetros JSON:
{
"instance_id": "1", // Requerido
"to": "573001234567", // Requerido
"message": "Hola desde API", // Requerido
"media_url": "" // Opcional
}POST https://zapgo.com.co/api/instances
Parámetros JSON:
{
"instance_name": "Mi Instancia", // Requerido
"phone_number": "+573001234567" // Requerido
}POST https://zapgo.com.co/api/whatsapp/connect-qr
Parámetros JSON:
{
"instance_id": "1" // Requerido
}Respuesta con QR: Devuelve el QR en base64 listo para mostrar en imagen. Cuando se conecte exitosamente, retorna status: "connected"
IMPORTANTE: No se puede generar QR si la instancia ya está conectada. Primero desconéctala.
GET https://zapgo.com.co/api/whatsapp/connect-qr?instance_id=[id]
Parámetro query: instance_id. Verifica estado actual del QR y conexión
POST https://zapgo.com.co/api/instances/[id]/connect
Sin parámetros. Solo inicia conexión (usa QR-status separado)
POST https://zapgo.com.co/api/instances/[id]/disconnect
Sin parámetros. Desconecta la instancia de WhatsApp
PUT https://zapgo.com.co/api/instances/[id]
Parámetros JSON:
{
"instance_name": "Nuevo nombre", // Opcional
"webhook_url": "https://...", // Opcional
"webhook_events": ["message"] // Opcional
}DELETE https://zapgo.com.co/api/instances/[id]
Sin parámetros. Elimina la instancia (soft delete)
GET https://zapgo.com.co/api/instances/[id]/qr-status
Retorna el código QR para conectar WhatsApp
GET https://zapgo.com.co/api/instances
Retorna todas tus instancias activas con conteo de mensajes
GET https://zapgo.com.co/api/instances/[id]
Retorna los detalles de una instancia específica
POST https://zapgo.com.co/api/webhooks/config
Parámetros JSON:
{
"webhookUrl": "https://...", // Requerido
"secretToken": "tu_token_aqui" // Requerido
}Premium: Solo disponible para usuarios con suscripción Premium
const axios = require('axios');
async function sendMessage(instanceId, to, message) {
try {
const response = await axios.post(
'https://zapgo.com.co/api/send-message',
{
instance_id: instanceId,
to: to,
message: message
},
{
headers: {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Content-Type': 'application/json'
}
}
);
console.log('Mensaje enviado:', response.data);
} catch (error) {
console.error('Error:', error.response?.data || error.message);
}
}
// Uso
sendMessage('1', '573001234567', '¡Hola desde ZapGo!');import requests
def send_message(instance_id, to, message):
url = "https://zapgo.com.co/api/send-message"
headers = {
"Authorization": "Bearer YOUR_API_TOKEN",
"Content-Type": "application/json"
}
data = {
"instance_id": instance_id,
"to": to,
"message": message
}
try:
response = requests.post(url, headers=headers, json=data)
response.raise_for_status()
print("Mensaje enviado:", response.json())
except requests.exceptions.RequestException as e:
print("Error:", e)
# Uso
send_message("1", "573001234567", "¡Hola desde ZapGo!")<?php
function sendMessage($instanceId, $to, $message) {
$url = 'https://zapgo.com.co/api/send-message';
$data = json_encode([
'instance_id' => $instanceId,
'to' => $to,
'message' => $message
]);
$options = [
'http' => [
'method' => 'POST',
'header' => "Authorization: Bearer YOUR_API_TOKEN\r\n" .
"Content-Type: application/json\r\n",
'content' => $data
]
];
$context = stream_context_create($options);
$result = file_get_contents($url, false, $context);
if ($result !== FALSE) {
echo "Mensaje enviado: " . $result . "\n";
} else {
echo "Error al enviar mensaje\n";
}
}
// Uso
sendMessage('1', '573001234567', '¡Hola desde ZapGo!');
?>const axios = require('axios');
async function connectWithQR(instanceId) {
const API_TOKEN = 'YOUR_API_TOKEN';
const BASE_URL = 'https://zapgo.com.co';
try {
// Generar código QR
const response = await axios.post(
`${BASE_URL}/api/whatsapp/connect-qr`,
{ instance_id: instanceId },
{ headers: { 'Authorization': `Bearer ${API_TOKEN}` } }
);
if (response.data.status === 'qr_ready') {
console.log('Escanea el QR:');
console.log(response.data.qr_code); // Base64 del QR
// Verificar estado cada 3 segundos
const checkStatus = setInterval(async () => {
const status = await axios.get(
`${BASE_URL}/api/whatsapp/connect-qr?instance_id=${instanceId}`,
{ headers: { 'Authorization': `Bearer ${API_TOKEN}` } }
);
if (status.data.status === 'connected') {
console.log('Conectado!');
clearInterval(checkStatus);
}
}, 3000);
} else if (response.data.status === 'already_connected') {
console.log('Ya está conectada. Desconéctala primero.');
}
} catch (error) {
console.error('Error:', error.response?.data || error.message);
}
}
// Uso
connectWithQR(1);<?php
function connectWithQR($instanceId) {
$url = 'https://zapgo.com.co/api/whatsapp/connect-qr';
$data = json_encode(['instance_id' => $instanceId]);
$options = [
'http' => [
'method' => 'POST',
'header' => "Authorization: Bearer YOUR_API_TOKEN\r\n" .
"Content-Type: application/json\r\n",
'content' => $data
]
];
$context = stream_context_create($options);
$result = file_get_contents($url, false, $context);
if ($result !== FALSE) {
$response = json_decode($result, true);
if ($response['status'] === 'qr_ready') {
echo "Escanea el QR:\n";
echo "QR Base64: " . $response['qr_code'] . "\n";
// Mostrar en HTML
echo '<img src="' . $response['qr_code'] . '" alt="QR Code" />';
} elseif ($response['status'] === 'already_connected') {
echo "Ya está conectada. Desconéctala primero.\n";
}
} else {
echo "Error al generar QR\n";
}
}
// Uso
connectWithQR('1');
?>Enviar mensaje:
curl -X POST https://zapgo.com.co/api/send-message \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{"instance_id":"1","to":"573001234567","message":"Hola"}'Generar QR:
curl -X POST https://zapgo.com.co/api/whatsapp/connect-qr \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{"instance_id":"1"}'Verificar estado QR:
curl -X GET "https://zapgo.com.co/api/whatsapp/connect-qr?instance_id=1" \
-H "Authorization: Bearer YOUR_TOKEN"Operación exitosa
Parámetros inválidos o instancia conectada
Token API inválido o faltante
Función requiere suscripción Premium
Recurso no encontrado
Código QR expiró sin ser escaneado
Límite de mensajes alcanzado
Error interno del servidor
Nunca expongas tu token en el frontend. Úsalo solo en backend
Implementa retry logic y maneja códigos HTTP apropiadamente
Desconecta la instancia antes de generar un nuevo QR. Error 400 si ya está conectada
Verifica estado cada 3 segundos. El QR expira después de 3 minutos
Valida números antes de enviar para evitar desperdiciar mensajes
Webhooks solo disponibles en plan Premium para notificaciones en tiempo real