ZapGo

Iniciar SesiónRegistrarse

Documentación API - ZapGo

API REST profesional para automatizar el envío de mensajes de WhatsApp. Consulta nuestros planes y precios para más información.

Rápido y Confiable

API REST optimizada para envío de mensajes de WhatsApp en tiempo real con alta disponibilidad

Seguro y Escalable

Autenticación por tokens API seguros, límites inteligentes y conexiones HTTPS encriptadas

Fácil Integración

Integra en minutos con cualquier lenguaje de programación usando nuestra API REST

Comenzar
Sigue estos pasos para empezar a usar ZapGo
1

Crear una cuenta

Regístrate en ZapGo para obtener acceso a la API

2

Conectar WhatsApp

Configura tu instancia con Meta Cloud API (Business API oficial)

3

Obtener credenciales

Copia tu User ID y API Token desde el dashboard

4

Enviar mensajes

Usa la API para enviar mensajes según tu plan. Ver precios

Endpoints Principales
Usa estos endpoints para integrar WhatsApp con tus aplicaciones
Crear Lead desde Formulario Web
Nuevo
POST

POST https://zapgo.com.co/api/leads/create-from-form

Parámetros JSON:

{
  "name": "Juan Pérez",              // Requerido
  "email": "juan@example.com",       // Requerido (o phone)
  "phone": "573001234567",           // Requerido (o email)
  "message": "Mensaje del form",     // Opcional
  "source": "Formulario Web",        // Opcional
  "company": "Empresa XYZ"           // Opcional
}

💡 Perfecto para formularios web: Crea el lead y dispara automáticamente el email de bienvenida configurado en tus automatizaciones.

Obtener Datos del Usuario
GET

GET https://zapgo.com.co/api/auth/me

Retorna tus datos de usuario y suscripción

Enviar Mensaje
POST

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
}
Crear Instancia
POST

POST https://zapgo.com.co/api/instances

Parámetros JSON:

{
  "instance_name": "Mi Instancia", // Requerido
  "phone_number": "+573001234567"  // Requerido
}
Conectar Instancia
POST

POST https://zapgo.com.co/api/instances/[id]/connect

Conecta la instancia usando Meta Cloud API. Sin parámetros.

Desconectar Instancia
POST

POST https://zapgo.com.co/api/instances/[id]/disconnect

Sin parámetros. Desconecta la instancia de WhatsApp

Actualizar Instancia
PUT

PUT https://zapgo.com.co/api/instances/[id]

Parámetros JSON:

{
  "instance_name": "Nuevo nombre",  // Opcional
  "webhook_url": "https://...",     // Opcional
  "webhook_events": ["message"]     // Opcional
}
Eliminar Instancia
DELETE

DELETE https://zapgo.com.co/api/instances/[id]

Sin parámetros. Elimina la instancia (soft delete)

Listar Instancias
GET

GET https://zapgo.com.co/api/instances

Retorna todas tus instancias activas con conteo de mensajes

Obtener Instancia Específica
GET

GET https://zapgo.com.co/api/instances/[id]

Retorna los detalles de una instancia específica

Ejemplos de Integración
Código listo para usar en diferentes lenguajes

JavaScript / Node.js

Enviar Mensaje
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!');

JavaScript - Formulario Web

Crear Lead
// Ejemplo de integración con formulario HTML
document.getElementById('contactForm').addEventListener('submit', async (e) => {
  e.preventDefault();

  const formData = {
    name: document.getElementById('name').value,
    email: document.getElementById('email').value,
    phone: document.getElementById('phone').value,
    message: document.getElementById('message').value,
    source: 'Sitio Web Principal',
    company: document.getElementById('company')?.value
  };

  try {
    const response = await fetch('https://zapgo.com.co/api/leads/create-from-form', {
      method: 'POST',
      headers: {
        'Authorization': 'Bearer YOUR_API_TOKEN',
        'Content-Type': 'application/json'
      },
      body: JSON.stringify(formData)
    });

    const result = await response.json();

    if (result.success) {
      alert('¡Gracias! Nos pondremos en contacto pronto.');
      e.target.reset();
    } else {
      alert('Error: ' + result.error);
    }
  } catch (error) {
    alert('Error al enviar el formulario');
    console.error(error);
  }
});

Python

Crear Lead
import requests

def create_lead_from_form(name, email, phone, message):
    url = "https://zapgo.com.co/api/leads/create-from-form"

    headers = {
        "Authorization": "Bearer YOUR_API_TOKEN",
        "Content-Type": "application/json"
    }

    data = {
        "name": name,
        "email": email,
        "phone": phone,
        "message": message,
        "source": "Formulario Web"
    }

    try:
        response = requests.post(url, headers=headers, json=data)
        response.raise_for_status()

        result = response.json()
        if result.get("success"):
            print(f"Lead creado: {result.get('lead_id')}")
            print(result.get("message"))
        else:
            print(f"Error: {result.get('error')}")

    except requests.exceptions.RequestException as e:
        print(f"Error: {e}")

# Uso
create_lead_from_form(
    "Juan Pérez",
    "juan@example.com",
    "573001234567",
    "Quiero más información sobre el producto"
)

Python

Enviar Mensaje
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

Enviar Mensaje
<?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!');
?>

JavaScript / Node.js

Conectar con QR
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

Conectar con QR
<?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');
?>

cURL / Terminal

Ejemplos Rápidos

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"}'

Crear Lead desde Formulario:

curl -X POST https://zapgo.com.co/api/leads/create-from-form \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"name":"Juan Pérez","email":"juan@example.com","phone":"573001234567","message":"Quiero información"}'
Códigos de Respuesta HTTP
Estados comunes que puede retornar la API
200
OK

Operación exitosa

400
Bad Request

Parámetros inválidos o instancia conectada

401
Unauthorized

Token API inválido o faltante

403
Forbidden

Función requiere suscripción Premium

404
Not Found

Recurso no encontrado

408
Timeout

Código QR expiró sin ser escaneado

429
Too Many Requests

Límite de mensajes alcanzado

500
Server Error

Error interno del servidor

Mejores Prácticas
Recomendaciones clave para integrar correctamente
Seguridad del Token

Nunca expongas tu token en el frontend. Úsalo solo en backend

Manejo de Errores

Implementa retry logic y maneja códigos HTTP apropiadamente

Conexiones QR

Desconecta la instancia antes de generar un nuevo QR. Error 400 si ya está conectada

Polling QR

Verifica estado cada 3 segundos. El QR expira después de 3 minutos

Validación de Números

Valida números antes de enviar para evitar desperdiciar mensajes

Webhooks Premium

Webhooks solo disponibles en plan Premium para notificaciones en tiempo real

ZapGo

La plataforma más confiable para integrar WhatsApp en tus aplicaciones.

Producto

  • Documentación
  • Precios

Soporte

  • Contacto
  • Estado del Servicio

Legal

  • Privacidad
  • Términos
  • Eliminación de Datos

© 2026 Zapgo S.A.S. Todos los derechos reservados.