Documentación de la API
Referencia 4 min

Plantillas de WhatsApp: listar y usar sus variables

GET /templatesGET /templates/{id}

Las plantillas son mensajes con formato preaprobado por Meta. Son la única forma de escribirle primero a un cliente o de retomar un chat frío (ver la ventana de 24 horas).

Se crean en el panel, no por API

Crear y mandar a aprobar plantillas se hace desde FlujosChat, porque la aprobación la da Meta y puede tardar. La API es de solo lectura: sirve para descubrir qué tenés disponible antes de enviar.

Listar plantillas

GET/templatesscope: templates:read
Por defecto, solo las APPROVED.

Parámetros de consulta

CampoTipoDescripción
statusstringAPPROVED (por defecto), PENDING, REJECTED, PAUSED, DISABLED o all.
categorystringMARKETING, UTILITY o AUTHENTICATION.
limitnumber1 a 100. Por defecto 20.
cursorstringPaginación por cursor.
curl "https://www.flujoschat.foo/api/public/v1/templates?category=UTILITY" \
  -H "Authorization: Bearer fjc_live_..."
Respuesta · 200
{
  "success": true,
  "data": {
    "templates": [
      {
        "id": "b7f1c3e0-…",
        "name": "pedido_enviado",
        "displayName": "Pedido enviado",
        "category": "UTILITY",
        "language": "es",
        "status": "APPROVED",
        "headerType": null,
        "headerContent": null,
        "body": "Hola {{1}}, tu pedido #{{2}} salió y llega {{3}}.",
        "footer": "Gracias por tu compra",
        "buttons": null,
        "variableMapping": {
          "1": { "type": "system", "systemKey": "customerName" },
          "2": { "type": "manual", "fieldName": "pedido" },
          "3": { "type": "manual", "fieldName": "entrega" }
        },
        "createdAt": "2026-07-01T10:00:00.000Z",
        "updatedAt": "2026-07-02T12:00:00.000Z"
      }
    ],
    "nextCursor": null
  }
}

Cómo funcionan las variables

El body tiene marcadores {{1}}, {{2}}… y variableMapping dice de dónde sale cada uno:

  • type: "system" — lo resuelve FlujosChat (por ejemplo el nombre del cliente). No hace falta mandarlo.
  • type: "field" — sale de un campo personalizado del contacto. También se resuelve solo, si el cliente lo tiene cargado.
  • type: "manual" — lo pone tu sistema, en el objeto variables del envío.

Para la plantilla del ejemplo, alcanza con mandar las dos manuales:

curl -X POST https://www.flujoschat.foo/api/public/v1/messages \
  -H "Authorization: Bearer fjc_live_..." \
  -H "Content-Type: application/json" \
  -d '{
    "to": "+51987654321",
    "type": "template",
    "templateId": "b7f1c3e0-…",
    "variables": { "2": "4512", "3": "mañana entre 9 y 12" }
  }'

Si mandás una posición que el mapping ya resolvía, gana tu valor.

Detalle

GET/templates/{id}scope: templates:read
La misma forma, para una sola plantilla. Si no es de tu empresa: 404 TEMPLATE_NOT_FOUND.

Preguntas frecuentes

¿Cómo sé qué valores mandar en las variables de una plantilla?

GET /templates devuelve variableMapping: dice qué espera cada {{n}}. Las posiciones mapeadas a un campo del contacto o a un dato del sistema se resuelven solas; el resto las mandás en el objeto variables al enviar.

¿Puedo crear plantillas de WhatsApp desde la API?

No. La API pública es de solo lectura para plantillas: se crean en el panel y las aprueba Meta, que puede tardar. La API sirve para descubrir las que ya tenés aprobadas y enviarlas.

¿Por qué GET /templates no me devuelve todas mis plantillas?

Por defecto solo devuelve las APPROVED, porque son las únicas que Meta permite enviar. Pasá ?status=all para ver también las pendientes, rechazadas o pausadas.

Monta tu primer flujo en una tarde

Conecta tu número de WhatsApp, arma el flujo con botones y listas, y publícalo. Sin código y sin depender de nadie.

  • 7 días gratis, sin tarjeta
  • Cancela desde tu panel
  • Credenciales cifradas