Skip to content

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

EncabezadoTipoObligatorioDescripción
AuthorizationString✅ SíToken de autenticación (Bearer Token).

Parámetros de consulta

ParámetroTipoObligatorioDescripción
wa_numberString✅ 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

CampoTipoDescripción
messageStringMensaje de respuesta del servidor.
data.nameStringNombre de la plantilla de mensaje.
data.languageObjectInformación sobre el idioma de la plantilla.
data.language.policyStringPolítica de selección de idioma (por ejemplo, deterministic).
data.language.codeStringCódigo del idioma de la plantilla (por ejemplo, es para español).
data.statusStringEstado de aprobación de la plantilla (por ejemplo, APPROVED, REJECTED).
data.categoryStringCategoría de la plantilla (por ejemplo, UTILITY, MARKETING).
data.componentsArrayLista de componentes que conforman la plantilla.
data.components.typeStringTipo de componente (por ejemplo, HEADER, BODY, FOOTER, BUTTONS).
data.components.formatStringFormato del componente (por ejemplo, TEXT, IMAGE, VIDEO, DOCUMENT).
data.components.textStringTexto del componente, que puede incluir marcadores de posición para variables dinámicas.
data.components.buttonsArrayLista de botones incluidos en el componente, aplicable si el tipo es BUTTONS.
data.components.buttons.typeStringTipo de botón (por ejemplo, QUICK_REPLY, URL, PHONE_NUMBER).
data.components.buttons.textStringTexto que se muestra en el botón.
data.components.buttons.payloadStringCarga útil asociada al botón, utilizada para identificar la acción cuando se selecciona.
data.idStringIdentificador único de la plantilla.
  • La variable 1 dentro del mensaje se reemplaza con valores dinámicos.
  • category indica el tipo de mensaje, en este caso UTILITY, lo que sugiere que es un mensaje informativo.

Componentes comunes

FormatoDescripción
TEXTEncabezado en texto plano
IMAGEImagen asociada al encabezado.
VIDEOVideo integrado en la plantilla.
DOCUMENTDocumento 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 HTTPTipoCausa común
401UnauthorizedEl 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.
422Unprocessable EntityLa 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).
500Server ErrorError interno del servidor. Intenta nuevamente más tarde o contacta soporte técnico.