Saltar a contenido

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:

  1. Ingresá a Configuraciones > Canales/API
  2. Agregá o seleccioná tu canal
  3. 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 externalKey para poder rastrear mensajes entre sistemas
  • Validá que queueId y userId existan 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