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

Escanea el código QR para conectar tu cuenta de WhatsApp

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
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 con QR (Recomendado)
POST

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.

Verificar Estado de Conexión QR
GET

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

Conectar Instancia (Alternativo)
POST

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

Sin parámetros. Solo inicia conexión (usa QR-status separado)

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)

Estado QR de Conexión
GET

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

Retorna el código QR para conectar WhatsApp

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

Configurar Webhooks
Premium
POST

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

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

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

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