Guía de Migración: API TakeBroadcast a la API de Growth (Active Campaign) 14 de agosto de 2026 12:36 Actualización ¿Por qué estamos haciendo este cambio? ¿Qué cambia en la práctica? ¿Cuál es el impacto para ti? Guía práctica ¿Por qué estamos haciendo este cambio?La API TakeBroadcast fue la primera solución de Blip para el envío de mensajes activos. Cumplió su función, pero fue construida fuera del ecosistema nativo de la plataforma y ya no recibe nuevas funcionalidades ni mantenimiento correctivo.Toda evolución relacionada con envíos activos ya ocurre en la API de Growth (Active Campaign), que es nativa de Blip, integrada a los dashboards, a la gestión de salud del número y al protocolo LIME — el mismo protocolo utilizado por todo el ecosistema de extensiones de la plataforma.En resumen: TakeBroadcast está en modo de descontinuación. Quienes todavía la usan están utilizando una API sin soporte activo y sin acceso a las mejoras y nuevos recursos lanzados por la plataforma. ¿Qué cambia en la práctica?El cambio principal: de API externa a comando LIMELa diferencia más importante es estructural. TakeBroadcast se llama como una API HTTP convencional en un dominio externo (takebroadcast.cs.blip.ai). La API de Growth usa el protocolo nativo de comandos LIME de tu contrato, el mismo usado por todas las extensiones de Blip. Aspecto API TakeBroadcast API de Growth (Active Campaign) Endpoint base https://takebroadcast.cs.blip.ai/api/v2/Broadcast/... https://<contrato>.http.msging.net/commands Protocolo HTTP con headers propietarios Comando LIME (method: set) Destinatario Identificado en los headers (identifier, organization) postmaster@activecampaign.msging.net Recurso (acción) Definido en la ruta HTTP (/list, /csv) Definido en el campo uri dentro del JSON Parámetros de la plantilla Query string (namespace, template, languageCode) Objeto message dentro del resource Variables y medios Campos sueltos en el payload (var1, image, url) Mapeados en audience.messageParams + message.messageParams Envío vía CSV Subida física del archivo (multipart/form-data) URL pública del archivo en campaign.fileUrl La nueva estructura: tres pilaresCualquier envío en la API de Growth se organiza en tres bloques: campaign — configuraciones generales: nombre, tipo (Individual o Batch), canal y flujo de retorno en el Builder. audience / audiences — quién recibe: número del destinatario, valores de las variables y medios por contacto. message — qué se envía: nombre de la plantilla aprobada, idioma y lista de parámetros esperados. Cómo funcionan ahora los parámetrosEn TakeBroadcast, los valores se pasaban como campos sueltos (var1, image). En la API de Growth: audience.messageParams — diccionario con los valores de las variables por destinatario. message.messageParams — arreglo con los nombres de las claves esperadas (schema). El orden aquí debe seguir el orden de los componentes de la plantilla registrada en la Meta. Importante: message.messageParams contiene nombres de claves, no valores. Pasar valores en este campo es un error común en la migración.Regla de ordenación de los parámetrosEl orden en message.messageParams debe seguir la estructura de la plantilla:Plantillas normales:[ ...header, ...botones URL, ...body ]Plantillas con Limited Time Offer: [ ...header, expiración de la oferta, ...botones, ...body ]Plantillas de Carrusel:[ ...body principal, ...card 0 (header → botones → body), ...card 1, ... ] Componente Cantidad de variables Header de texto con {{1}} 1 Header de medio (IMAGE / VIDEO / DOCUMENT) 1 (URL del medio) Botón URL con sufijo dinámico 1 por botón Botón COPY_CODE 1 (el código del cupón) Body 1 por variable {{n}} presente en el texto ¿Cuál es el impacto para ti?Qué pierdes quedándote en TakeBroadcast Los datos de envío y entrega no se actualizan en tiempo real. Los nuevos dashboards de campaña de la plataforma no leen datos de TakeBroadcast. Sin acceso a funcionalidades nuevas, como envío vía BSUID. Sin control de throughput individual por bot — riesgo de concurrencia entre envíos. Sin visibilidad de la salud del número de WhatsApp en la interfaz de Growth. Sin soporte a validaciones de negocio, como verificar si el usuario ya está en atención antes de enviar. Qué ganas migrando Datos de campaña en tiempo real, visibles directamente en la plataforma. Seguimiento completo por destinatario (estado de entrega, lectura, fallo y motivo). Control de throughput por bot sin concurrencia. Integración con flujos del Builder vía flowId y stateId para direccionamiento en respuestas de la audiencia. Programación de campañas vía campo scheduled. Acceso a todos los nuevos recursos lanzados para la API de Growth. Guía prácticaCómo identificar si usas la API TakeBroadcastRevisa las URLs que tus integraciones y scripts de envío llaman. Si aparece el dominio abajo, la integración usa la API legada: https://takebroadcast.cs.blip.ai/Los endpoints más comunes a verificar: Tipo de envío Endpoint legado Envío vía lista (JSON) /api/v2/Broadcast/list o /api/v1/Broadcast/list Envío vía CSV /api/v2/Broadcast/csv o /api/v1/Broadcast/csv Notificación individual /api/v2/Notification o /api/v1/Notification Qué y dónde necesitas cambiarPaso 1 — Cambiar el endpoint HTTP Antes Después POST https://takebroadcast.cs.blip.ai/api/v2/Broadcast/list POST https://<contrato>.http.msging.net/commands POST https://takebroadcast.cs.blip.ai/api/v2/Broadcast/csv POST https://<contrato>.http.msging.net/commands El <contrato> es tu identificador en la plataforma Blip.Paso 2 — Cambiar los headers de autenticación Antes (TakeBroadcast) Después (Growth) identifier: <ID_DEL_BOT> Authorization: Key <ACCESS_KEY_DEL_BOT> accessKey: <ACCESS_KEY_BOT> (removido) organization: <ID_ORGANIZACION> (removido) La Authorization de la API de Growth usa la clave de acceso del bot que se encuentra en el portal Blip en Configuraciones → Información de conexión.Atención para arquitectura con bot enrutador: la clave debe ser siempre la del bot enrutador, no del subbot. El campo masterState debe ser informado en estos casos.Paso 3 — Reestructurar el payloadEl payload deja de ser una lista simple y pasa a ser un comando LIME con tres bloques internos.Escenario 1 — Plantilla sin variables (individual)Antes:curl --location 'https://takebroadcast.cs.blip.ai/api/v2/Broadcast/list?phoneColumn=telefone&namespace=<NAMESPACE>&template=<TEMPLATE>&languageCode=<IDIOMA>&scheduleTime=0' \ --header 'identifier: <ID_DEL_BOT>' \ --header 'accessKey: <ACCESS_KEY_BOT>' \ --data '[{ "telefone": "<TELEFONO>" }]'Después: { "id": "{{$guid}}", "to": "postmaster@activecampaign.msging.net", "method": "set", "uri": "/campaign/full", "type": "application/vnd.iris.activecampaign.full-campaign+json", "resource": { "campaign": { "name": "Nombre de la campaña", "campaignType": "Individual", "channelType": "WhatsApp", "sourceApplication": "MiApp" }, "audience": { "recipient": "+55119999999999" }, "message": { "messageTemplate": "<TEMPLATE>", "messageTemplateLanguage": "<IDIOMA>", "channelType": "WhatsApp" } } }Escenario 2 — Plantilla con variables de texto (individual)Antes:--data '[{ "telefone": "<TELEFONO>", "var1": "<VALOR>" }]' Después: los valores van en audience.messageParams, y las claves en message.messageParams:"audience": { "recipient": "+55119999999999", "messageParams": { "1": "<VALOR>" } }, "message": { "messageTemplate": "<TEMPLATE>", "messageTemplateLanguage": "<IDIOMA>", "messageParams": ["1"], "channelType": "WhatsApp" }Escenario 3 — Plantilla con imagen en el headerAntes:--data '[{ "telefone": "<TELEFONO>", "image": "<URL_DE_LA_IMAGEN>", "var1": "<VALOR>" }]' Después: la imagen entra primero en messageParams (es el parámetro del header):"audience": { "recipient": "+55119999999999", "messageParams": { "image": "<URL_DE_LA_IMAGEN>", "username": "<VALOR>" } }, "message": { "messageTemplate": "<TEMPLATE>", "messageTemplateLanguage": "<IDIOMA>", "messageParams": ["image", "username"], "channelType": "WhatsApp" } Escenario 4 — Envío en lote (múltiples destinatarios en el payload)Cambia campaignType a Batch y usa audiences (plural) con un arreglo:"campaign": { "name": "Campaña en lote", "campaignType": "Batch", "channelType": "WhatsApp" }, "audiences": [ { "recipient": "+55119999999991", "messageParams": { "1": "Valor para contacto 1" } }, { "recipient": "+55119999999992", "messageParams": { "1": "Valor para contacto 2" } } ], "message": { "messageTemplate": "<TEMPLATE>", "messageTemplateLanguage": "<IDIOMA>", "messageParams": ["1"], "channelType": "WhatsApp" }Escenario 5 — Envío masivo vía CSVAntes, se hacía una subida física del archivo. Ahora, es necesario hospedar el CSV en una URL pública e informarla en fileUrl. El endpoint cambia a /campaign/full/v2:Antes:curl --form 'formFile=@"/ruta/del/archivo.csv"' \ 'https://takebroadcast.cs.blip.ai/api/v2/Broadcast/csv?...'Después:{ "id": "{{$guid}}", "to": "postmaster@activecampaign.msging.net", "method": "set", "uri": "/campaign/full/v2", "type": "application/vnd.iris.activecampaign.full-campaign+json", "resource": { "campaign": { "name": "Campaña vía CSV", "campaignType": "Batch", "channelType": "WhatsApp", "fileUrl": "<URL_PUBLICA_DEL_CSV>" }, "message": { "messageTemplate": "<TEMPLATE>", "messageTemplateLanguage": "<IDIOMA>", "channelType": "WhatsApp" } } }Atención: el archivo CSV debe estar accesible vía URL pública (HTTP/HTTPS). Ya no se puede enviar el archivo binario en la solicitud.Reglas del CSV: La primera columna identifica al destinatario (ej.: teléfono). Las columnas cuyos nombres estén listados en message.messageParams se usan como parámetros de la plantilla — en el mismo orden. Columnas no listadas en message.messageParams se guardan en contact.extras del contacto. Checklist de migración [ ] Identificar todas las llamadas al dominio takebroadcast.cs.blip.ai. [ ] Cambiar el endpoint a https://<contrato>.http.msging.net/commands. [ ] Sustituir los headers de autenticación por Authorization: Key <ACCESS_KEY>. [ ] Reestructurar el payload con los bloques campaign, audience/audiences y message. [ ] Mover los valores de las variables a audience.messageParams. [ ] Declarar los nombres de las claves en message.messageParams (en el orden correcto de la plantilla). [ ] Para CSV: hospedar el archivo en URL pública y usar campaign.fileUrl con uri /campaign/full/v2. [ ] Validar el idioma de la plantilla en el campo message.messageTemplateLanguage. [ ] Probar en homologación con números controlados antes de pasar a producción. Puntos de atención frecuentes Síntoma reportado Causa probable Orientación "Los parámetros aparecen en el orden incorrecto en el mensaje" Orden incorrecto en message.messageParams Verificar el orden de los componentes de la plantilla registrada en la Meta "El mensaje no se envía con CSV" Archivo no está en URL pública El CSV debe ser accesible vía HTTP/HTTPS "Error al enviar fileUrl junto con audiences" Conflicto: no pueden informarse ambos simultáneamente Usar solo uno: o fileUrl o audiences "Las variables terminan en contact.extras" Columna del CSV no está listada en message.messageParams Agregar el nombre de la columna al arreglo message.messageParams "Campaña creada pero no enviada" message.messageParams recibió valores en lugar de nombres de claves message.messageParams debe contener nombres de claves, no valores Artículos relacionados Cómo enviar notificaciones vía API Active Campaign (Growth) — Blip Help Center Configuración del archivo de audiencia — Envío de notificaciones masivas ¿Necesitas más ayuda? Explora nuestros contenidos en Blip Academy o Blip Community, mira tutoriales en nuestro canal de YouTube o resuelve tus dudas en nuestro canal de atención 😃 Artículos relacionados Envío de mensajes activos con BSUID