API de Funnel+
La API permite que sistemas externos se comuniquen con Funnel+ para enviar mensajes, gestionar tickets y contactos de forma programática.
Autenticación
Todas las llamadas requieren un token Bearer en el header:
Authorization: Bearer tu-token-aqui
Obtener el token:
- Ingresá a Configuraciones > Canales/API
- Agregá o seleccioná tu canal
- Copiá el token generado
Importante: Guardá tu token de forma segura. No lo compartas ni lo expongas en código público.
Formato de Números
Los números de teléfono deben seguir el formato: código de país + código de área + número
| País | Formato | Ejemplo |
|---|---|---|
| Argentina | 54 + área + número | 5491155551234 |
| Brasil | 55 + área + número | 5511999999999 |
| México | 52 + área + número | 5215551234567 |
Para grupos de WhatsApp, usá el formato: id_grupo@grupo
Endpoints de Mensajes
Enviar mensaje de texto
POST /api/messages/send
{
"number": "5491155551234",
"body": "Hola, te confirmamos tu pedido #12345",
"externalKey": "pedido-12345"
}
Enviar archivo (multipart/form-data)
POST /api/messages/send
Content-Type: multipart/form-data
number: 5491155551234
media: [archivo]
body: "Acá va tu factura adjunta"
externalKey: "factura-12345"
Enviar imagen por URL
POST /api/messages/send
{
"number": "5491155551234",
"body": "Mirá nuestro nuevo producto:",
"mediaUrl": "https://tudominio.com/imagen-producto.jpg",
"externalKey": "promo-001"
}
Enviar archivo en Base64
POST /api/messages/send
{
"number": "5491155551234",
"body": "Tu comprobante:",
"mediaMessage": {
"base64": "data:application/pdf;base64,JVBERi0xLjQK...",
"mimetype": "application/pdf"
}
}
Enviar ubicación
POST /api/messages/location
{
"number": "5491155551234",
"contents": {
"latitude": "-34.6037",
"longitude": "-58.3816",
"name": "TechStore - Sucursal Centro",
"address": "Av. Corrientes 1234, CABA"
}
}
Enviar contacto
POST /api/messages/sendcontact
{
"number": "5491155551234",
"contactName": "Soporte TechStore",
"contactPhone": "5491188887777"
}
Enviar sticker
POST /api/messages/send
Content-Type: multipart/form-data
number: 5491155551234
media: [imagen.png]
sticker: "true"
Mensajes Interactivos (API Oficial)
Botones de respuesta (máximo 3)
POST /api/messages/apioficial
{
"number": "5491155551234",
"body": "Tu pedido está listo. ¿Cómo querés recibirlo?",
"buttons": [
{"type": "reply", "reply": {"id": "1", "title": "Retiro en local"}},
{"type": "reply", "reply": {"id": "2", "title": "Envío a domicilio"}},
{"type": "reply", "reply": {"id": "3", "title": "Envío por correo"}}
]
}
Lista de opciones
POST /api/messages/apioficial
{
"number": "5491155551234",
"body": "Seleccioná el producto que te interesa:",
"sections": [
{
"title": "Notebooks",
"rows": [
{"id": "nb1", "title": "Lenovo IdeaPad", "description": "$489.000"},
{"id": "nb2", "title": "HP 15", "description": "$520.000"},
{"id": "nb3", "title": "MacBook Air M2", "description": "$1.150.000"}
]
},
{
"title": "Celulares",
"rows": [
{"id": "cel1", "title": "Samsung Galaxy A55", "description": "$320.000"},
{"id": "cel2", "title": "iPhone 15", "description": "$680.000"}
]
}
]
}
Botón con URL
POST /api/messages/apioficial
{
"number": "5491155551234",
"body": "Seguí tu envío en tiempo real:",
"cta_url": {
"display_text": "Ver seguimiento",
"url": "https://tudominio.com/tracking/12345"
}
}
Solicitar ubicación
POST /api/messages/apioficial
{
"number": "5491155551234",
"body": "Para calcular el envío, compartinos tu ubicación:"
}
Parámetros Importantes
| Parámetro | Descripción |
|---|---|
number |
Número del destinatario (con código de país) |
ticketId |
Alternativa a number: enviar a un ticket existente |
body |
Texto del mensaje |
externalKey |
Identificador único para rastreo (vincula con tu sistema) |
mediaUrl |
URL de archivo a enviar |
media |
Archivo adjunto (multipart) |
Valores de estado para tickets:
"pending"— Pendiente"open"— Abierto"closed"— Cerrado
Casos de Uso Comunes
E-Commerce: Confirmación de pedido
Tu sistema de ventas llama a la API al confirmar un pedido para enviar la confirmación por WhatsApp.
CRM propio: Crear ticket automáticamente
Cuando un lead se registra en tu CRM, se crea un ticket en Funnel+ y se asigna al vendedor correspondiente.
ERP: Avisos de facturación
Tu sistema contable envía recordatorios de facturas vencidas por WhatsApp.
Logística: Estado de envío
Tu sistema de despacho notifica automáticamente cada cambio de estado del envío.
Soporte: Actualización de ticket
Cuando un técnico resuelve un ticket en tu sistema interno, se notifica al cliente por WhatsApp.
Buenas Prácticas
- Usá siempre
externalKeypara poder rastrear mensajes entre sistemas - Validá que
queueIdyuserIdexistan antes de enviarlos - Solo enviá formatos de archivo soportados por WhatsApp
- Para mensajes con templates de WhatsApp, necesitás aprobación previa de Meta
- Guardá tu token de forma segura y rotalo periódicamente