Appearance
Listar plantillas de mensaje
GET /api/v1/message_templates
Este endpoint permite obtener el listado completo de plantillas de mensajes registradas y aprobadas para un número de WhatsApp autorizado en la plataforma.
Estas plantillas, son compatibles con la API de WhatsApp Business, están diseñadas para estandarizar comunicaciones salientes, asegurando consistencia, cumplimiento de políticas y eficiencia en flujos automatizados.
Cada plantilla puede estar compuesta por distintos bloques estructurales: encabezado (HEADER
), cuerpo (BODY
), pie de mensaje (FOOTER
) y botones (BUTTONS
). Además, puede incluir variables dinámicas que permiten personalizar el contenido al momento del envío.
La consulta se realiza mediante una solicitud GET
, indicando el número de WhatsApp correspondiente. La respuesta devuelve un conjunto de plantillas con sus propiedades: nombre, categoría, estructura de componentes, estado y ejemplos de uso.
A continuación, se describen los parámetros requeridos, un ejemplo de solicitud y la estructura detallada de la respuesta esperada.
ℹ Recuerda que:
La URL base para todas las solicitudes es: https://tu-dominio.c3.pe
Importante: reemplaza tu-dominio
por el nombre de dominio específico que te haya proporcionado C3.
Solicitud
Cabeceras
Encabezado | Tipo | Obligatorio | Descripción |
---|---|---|---|
Authorization | String | ✅ Sí | Token de autenticación (Bearer Token). |
Parámetros de consulta
Parámetro | Tipo | Obligatorio | Descripción |
---|---|---|---|
wa_number | String | ✅ Sí | Número de WhatsApp autorizado para el cual se recuperarán las plantillas. |
Ejemplo de solicitud
http
GET /api/v1/message_templates?wa_number=5117484531
Respuesta
La API devuelve un json con la siguiente estructura.
Respuesta base 200
json
{
"message": "Templates obtenidos correctamente",
"data": [
{
"name": "recuperacion_de_atencion",
"status": "APPROVED",
"category": "UTILITY",
"components": [
{
"type": "HEADER",
"format": "TEXT",
"text": "Recordatorio de Atención"
},
{
"type": "BODY",
"text": "Hola {{1}}, disculpe si no pudimos responderle😪. Estaremos más atentos para sus dudas o preguntas."
},
{
"type": "FOOTER",
"text": "Gracias por su comprensión."
},
{
"type": "BUTTONS",
"buttons": [
{
"type": "QUICK_REPLY",
"text": "Hablar con soporte",
"payload": "soporte"
},
{
"type": "QUICK_REPLY",
"text": "Programar una llamada",
"payload": "programar_llamada"
}
]
}
],
"id": "1242001217077846"
}
]
}
Definición de atributos
Campo | Tipo | Descripción |
---|---|---|
message | String | Mensaje de respuesta del servidor. |
data.name | String | Nombre de la plantilla de mensaje. |
data.language | Object | Información sobre el idioma de la plantilla. |
data.language.policy | String | Política de selección de idioma (por ejemplo, deterministic ). |
data.language.code | String | Código del idioma de la plantilla (por ejemplo, es para español). |
data.status | String | Estado de aprobación de la plantilla (por ejemplo, APPROVED , REJECTED ). |
data.category | String | Categoría de la plantilla (por ejemplo, UTILITY , MARKETING ). |
data.components | Array | Lista de componentes que conforman la plantilla. |
data.components.type | String | Tipo de componente (por ejemplo, HEADER , BODY , FOOTER , BUTTONS ). |
data.components.format | String | Formato del componente (por ejemplo, TEXT , IMAGE , VIDEO , DOCUMENT ). |
data.components.text | String | Texto del componente, que puede incluir marcadores de posición para variables dinámicas. |
data.components.buttons | Array | Lista de botones incluidos en el componente, aplicable si el tipo es BUTTONS . |
data.components.buttons.type | String | Tipo de botón (por ejemplo, QUICK_REPLY , URL , PHONE_NUMBER ). |
data.components.buttons.text | String | Texto que se muestra en el botón. |
data.components.buttons.payload | String | Carga útil asociada al botón, utilizada para identificar la acción cuando se selecciona. |
data.id | String | Identificador único de la plantilla. |
- La variable
1
dentro del mensaje se reemplaza con valores dinámicos. category
indica el tipo de mensaje, en este casoUTILITY
, lo que sugiere que es un mensaje informativo.
Componentes comunes
HEADER
Formato | Descripción |
---|---|
TEXT | Encabezado en texto plano |
IMAGE | Imagen asociada al encabezado. |
VIDEO | Video integrado en la plantilla. |
DOCUMENT | Documento adjunto (PDF, etc.). |
Ejemplo con texto
json
{
"type": "HEADER",
"format": "TEXT",
"text": "Aviso importante"
}
Ejemplo con imagen/video/documento
json
{
"type": "HEADER",
"format": "IMAGE | VIDEO | DOCUMENT",
"example": {
"header_handle": ["<HEADER_HANDLE>"]
}
}
BUTTONS
json
{
"type": "BUTTONS",
"buttons": [
{
"type": "PHONE_NUMBER",
"text": "Call",
"phone_number": "15550051310"
},
{
"type": "URL",
"text": "Shop Now",
"url": "https://www.luckyshrub.com/shop/"
},
{
"type": "QUICK_REPLY",
"text": "Response"
}
]
}
Errores generales
Código HTTP | Tipo | Causa común |
---|---|---|
401 | Unauthorized | El token de acceso no fue proporcionado en el encabezado Authorization , es inválido o ha sido revocado. Verifique que el token sea correcto y esté activo. |
422 | Unprocessable Entity | La solicitud fue entendida, pero contiene errores semánticos que impiden su procesamiento. Esto puede deberse a: 1. Parámetros faltantes o inválidos (ej, from_date no es una fecha válida); 2. Recurso inexistente ( wa_number no registrado en el sistema); 3. Violación de reglas de negocio (el rango de fechas excede el límite permitido). |
500 | Server Error | Error interno del servidor. Intenta nuevamente más tarde o contacta soporte técnico. |