---
title: "Crear plantilla WhatsApp"
method: POST
path: "/v1/whatsapp/{channelId}/templates"
tags: ["WhatsApp"]
---

# Crear plantilla WhatsApp

`POST /v1/whatsapp/{channelId}/templates`

Envía una nueva plantilla para aprobación del proveedor (Meta/Gupshup). El resultado inicial queda en estado `pending`; al aprobarse pasa a `approved`.

**Plantillas con media (`type` IMAGE / VIDEO / DOCUMENT) → flujo de dos pasos:**
1. Subí el archivo con `POST /v1/whatsapp/{channelId}/template-media` (multipart). Devuelve un `mediaId`.
2. Llamá a este endpoint incluyendo ese `mediaId` en el body.

Para plantillas de texto (`type: TEXT`) es un solo paso: omití `mediaId`.

## Path parameters

- `channelId` string, required

## Request body

- object
  - `name` string, required — Identificador único de la plantilla dentro del canal.
  - `languageCode` string, required
  - `category` 'MARKETING' | 'UTILITY' | 'AUTHENTICATION', required
  - `type` 'TEXT' | 'IMAGE' | 'VIDEO' | 'DOCUMENT', required
  - `text` string, required — Cuerpo de la plantilla con placeholders **posicionales** `{{1}}`, `{{2}}`, … (numerados por orden de aparición). Al enviar el mensaje se reemplazan por los valores posicionales del array `variables`. Formato válido para ambos proveedores: Meta lo exige así y Gupshup lo normaliza.
  - `mediaId` string — Handle devuelto por `POST /v1/whatsapp/{channelId}/template-media`. Requerido cuando `type` es IMAGE, VIDEO o DOCUMENT; omitir para TEXT.
  - `buttons` object[]

## Response `201`

Plantilla creada (pendiente aprobación)

- WhatsAppTemplate — Plantilla (HSM) de WhatsApp pre-aprobada por Meta para enviar mensajes fuera de la ventana de 24h.
  - `id` integer — ID interno de la plantilla
  - `elementName` string — Nombre identificador de la plantilla
  - `status` 'APPROVED' | 'PENDING' | 'REJECTED' — Estado de aprobación en Meta
  - `category` 'MARKETING' | 'UTILITY' | 'AUTHENTICATION' — Categoría de la plantilla
  - `text` string — Contenido del mensaje con variables ({name}, {1}, etc.)
  - `language` string — Código de idioma (es, en, pt, etc.)
  - `components` object[] — Componentes de la plantilla (header, body, botones) según el formato de Meta.

---

[API](https://skmtc.net/cliengo/apis/cliengo-public-api.md) · [All operations](https://skmtc.net/cliengo/apis/cliengo-public-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/cliengo/cliengo-public-api/versions/94c7ba7d6a11/schema)
