Aquí encontrarás información de cómo realizar envíos de mensajes de tipo plantilla de WhatsApp Business a usuarios específicos utilizando la API de B2Chat en su versión 2, esta version soporta el envío de dos botones de tipo URL dinamicas.
Endpoint de envio de templates
https://api.b2chat.io/v2/broadcast
Envio de templates
POSThttps://api.b2chat.io/v2/broadcast
Este servicio te permitirá enviar una notificación de WhatsApp a un contacto.
Headers
Name
Type
Description
Content-Type*
application/json
Authorization*
Bearer {{token}}
Request Body
Name
Type
Description
from *
Numero movil
Número valido y operativo de una cuenta de WhatsApp Business, el formato debe ser +<codigo del país><movil del usuario> Por ejemplo +57300274206.
to *
Numero movil
Número valido y operativo de una WhatsApp account
template_name*
String
Nombre del template configurado previamente en B2Chat.
contact_name
String
Nombre del contacto al que se le enviará el template
campaign_name
String
Se utiliza para agrupar el envío de plantillas.
header_url
URL jpg/png/ pdf
URL de una imagen (jpg, png) , o pdf dependiendo de la configuración de la plantilla que vayas a enviar. Asegúrate de enviar la url correcta con el tipo de contenido esperado.
button_url_suffixes
Array
Cuando la plantilla configurada contiene unos botones dentro de una url, un fragmento de esta puede ser variable por ejemplo:
values
Array
Array de valores de plantilla en el mismo orden registrado en las variables de template registrado en B2Chat.
broadcast_target
JSON
Este campo permite direccionar la respuesta al template por parte del contacto a un departamento configurado en B2Chat o un agente en específico, debe tener dos campos:
*target: puede tener dos valores, AGENT o DEPARTAMENT
*target_id: debe incluir el ID del departamento o agente a donde deseas redirigir la respuesta del contacto.
Para conocer estos IDs, ya sean de departamentos o agentes solicitalos directamente al equipo de soporte.
{
"timestamp": "2025-04-08T20:29:56.308+00:00",
"trace": "2d8f6d68-5a9b-447d-8963-72b046b435be",
"message": "Account by filters was not found",
"code": "INVALID_ACCOUNT_CREDENTIALS",
"errors": null
}
Template inactivo
400
{
"timestamp": "2025-04-08T20:33:10.653+00:00",
"trace": "4c6c976d-24e1-4b2e-8189-0a77cebc4332",
"message": "Template is not in ACTIVE state. Current status: INACTIVE",
"code": "CONFLICT",
"errors": null
}
No se están enviando la cantidad de variables esperadas (se envían menos de los que tiene el template)
400
{
"timestamp": "2025-04-08T20:34:01.230+00:00",
"trace": "d5f43140-be88-4b8c-b925-a20d31a1ab1c",
"message": "Values don't match the expected number of parameters",
"code": "BAD_REQUEST_PAYLOAD",
"errors": null
}
Error en formato de móvil de envío “From”
400
{
"timestamp": "2025-04-08T20:39:01.705+00:00",
"trace": "a1116099-a320-4a32-8ed5-e6818f2afc46",
"message": "Found validation errors in request",
"code": "FOUND_VALIDATION_ERRORS",
"errors": [
"Required valid mobile number (from:+57 3165792339) (e.g.+573001234567) and cannot be empty"
]
}
Error en formato de móvil de recepción “To”
400
{
"timestamp": "2025-04-08T20:40:30.320+00:00",
"trace": "834f720e-2840-4431-a816-6c5aa7f451b4",
"message": "Invalid parameter: The MessageGroupId parameter can only include alphanumeric and punctuation characters. 1 to 128 in length (Service: Sns, Status Code: 400, Request ID: 058dddc9-87c4-5500-a8f1-bda60c3a9591, Extended Request ID: null)",
"code": "SYSTEM_EXCEPTION",
"errors": null
}
Error por límite de mensajes (rate limits)
400
{
"timestamp": "2025-04-08T20:40:30.320+00:00",
"trace": "834f720e-2840-4431-a816-6c5aa7f451b4",
"message": "Requests per second reached limit",
"code": "REACHED_REQUESTS_PER_SECOND_RATE_LIMIT",
"errors": null
}
El fragmento será sustituido por el valor enviado. Si envía la palabra template como valor para button_url_suffixes la url se enviará como https://www.merriam-webster.com/dictionary/template