Documentación API - WapiTool

API REST profesional para automatizar el envío de mensajes de WhatsApp con límites inteligentes y funciones premium

Plan Gratuito
  • • 20 mensajes por día
  • • Acceso básico a la API
  • • Sin webhooks
  • • Soporte por email
Plan Premium
$80,000 COP/mes
  • • Mensajes ilimitados
  • • Webhooks en tiempo real
  • • API completa sin restricciones
  • • Soporte prioritario
  • • Estadísticas avanzadas
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 WapiTool
1

Crear una cuenta

Regístrate en WapiTool 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 hasta 20 mensajes diarios (gratuito) o ilimitados (premium)

Referencia API
Documentación completa de los endpoints disponibles
POST
/api/send-message

Envía un mensaje de WhatsApp a un número específico

Límites: 20 mensajes/día (gratuito) | Ilimitados (premium)
Headers
Authorization: Bearer YOUR_API_TOKEN
Content-Type: application/json
Body Parameters
ParámetroTipoRequeridoDescripción
numberstringNúmero de teléfono con código de país (ej: 573001234567)
messagestringContenido del mensaje a enviar
Ejemplo de Request
curl -X POST https://wapitool.com/api/send-message \ -H "Authorization: Bearer YOUR_API_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "number": "573001234567", "message": "¡Hola! Este es un mensaje desde WapiTool." }'
Respuestas
200 - Éxito
{ "success": true, "message": "Mensaje enviado exitosamente", "messagesUsed": 15, "dailyLimit": 20, "isPremium": false }
429 - Límite Alcanzado
{ "success": false, "error": "Límite diario de mensajes alcanzado", "messagesUsed": 20, "dailyLimit": 20, "upgradeUrl": "https://wapitool.com/dashboard" }
POST
/api/webhooks/config
Premium

Configura webhooks para recibir notificaciones en tiempo real (solo usuarios premium)

Body Parameters
ParámetroTipoDescripción
webhookUrlstringURL donde recibir las notificaciones
secretTokenstringToken secreto para validar webhooks
Ejemplos de Código
Ejemplos en diferentes lenguajes de programación

JavaScript/Node.js

const axios = require('axios'); async function sendWhatsAppMessage(number, message) { try { const response = await axios.post('https://wapitool.com/api/send-message', { number: number, message: message }, { headers: { 'Authorization': 'Bearer YOUR_API_TOKEN', 'Content-Type': 'application/json' } }); console.log('Mensaje enviado:', response.data); console.log(`Mensajes usados: ${response.data.messagesUsed}/${response.data.dailyLimit}`); // Verificar si se alcanzó el límite if (response.data.messagesUsed >= response.data.dailyLimit && !response.data.isPremium) { console.log('¡Límite diario alcanzado! Considera actualizar a Premium'); } } catch (error) { if (error.response?.status === 429) { console.log('Límite diario alcanzado. Actualiza a Premium para mensajes ilimitados'); } else { console.error('Error:', error.response?.data || error.message); } } } // Uso sendWhatsAppMessage('573001234567', '¡Hola desde WapiTool!');

Python

import requests import json def send_whatsapp_message(number, message): url = "https://wapitool.com/api/send-message" headers = { "Authorization": "Bearer YOUR_API_TOKEN", "Content-Type": "application/json" } data = { "number": number, "message": message } try: response = requests.post(url, headers=headers, json=data) if response.status_code == 200: result = response.json() print(f"Mensaje enviado: {result['message']}") print(f"Mensajes usados: {result['messagesUsed']}/{result['dailyLimit']}") if result['messagesUsed'] >= result['dailyLimit'] and not result['isPremium']: print("¡Límite diario alcanzado! Considera actualizar a Premium") elif response.status_code == 429: print("Límite diario alcanzado. Actualiza a Premium para mensajes ilimitados") else: response.raise_for_status() except requests.exceptions.RequestException as e: print(f"Error: {e}") # Uso send_whatsapp_message("573001234567", "¡Hola desde WapiTool!")

PHP

<?php function sendWhatsAppMessage($number, $message) { $url = 'https://wapitool.com/api/send-message'; $data = array( 'number' => $number, 'message' => $message ); $options = array( 'http' => array( 'header' => "Authorization: Bearer YOUR_API_TOKEN\r\n" . "Content-Type: application/json\r\n", 'method' => 'POST', 'content' => json_encode($data) ) ); $context = stream_context_create($options); $result = file_get_contents($url, false, $context); if ($result === FALSE) { echo "Error enviando mensaje\n"; } else { $response = json_decode($result, true); if (isset($response['success']) && $response['success']) { echo "Mensaje enviado: " . $response['message'] . "\n"; echo "Mensajes usados: " . $response['messagesUsed'] . "/" . $response['dailyLimit'] . "\n"; if ($response['messagesUsed'] >= $response['dailyLimit'] && !$response['isPremium']) { echo "¡Límite diario alcanzado! Considera actualizar a Premium\n"; } } else { echo "Error: " . ($response['error'] ?? 'Error desconocido') . "\n"; } } } // Uso sendWhatsAppMessage("573001234567", "¡Hola desde WapiTool!"); ?>
Códigos de Error
Códigos de estado HTTP y sus significados
CódigoEstadoDescripción
200
OKMensaje enviado exitosamente
400
Bad RequestParámetros faltantes o inválidos
401
UnauthorizedToken API inválido o faltante
403
ForbiddenFunción requiere suscripción Premium
404
Not FoundEndpoint no encontrado
429
Too Many RequestsLímite diario de mensajes alcanzado
500
Internal Server ErrorError interno del servidor
Mejores Prácticas
Recomendaciones para usar WapiTool de manera efectiva
Manejo de Límites

Monitorea el contador de mensajes en cada respuesta y maneja el error 429 apropiadamente

Manejo de Errores

Implementa retry logic y manejo de errores robusto para todos los códigos de estado HTTP

Validación de Números

Valida los números de teléfono antes de enviar mensajes para evitar errores y desperdiciar límites

Seguridad del Token

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

Webhooks Premium

Los webhooks solo están disponibles para usuarios Premium. Actualiza tu plan para recibir notificaciones en tiempo real

Contactos Guardados

Para mejores resultados, asegúrate de que los destinatarios tengan tu número guardado