> ## Documentation Index
> Fetch the complete documentation index at: https://docs.ycloud.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Ejemplos de creación de plantillas de WhatsApp

> Crea plantillas de autenticación, utilidad, marketing, comercio, Flows y llamadas con ejemplos de solicitudes anotados.

## Qué es

Crea plantillas de autenticación, utilidad, marketing, comercio, Flows y llamadas con ejemplos de solicitudes anotados.

## Antes de comenzar

* Guarda una clave de API de YCloud en un secreto del lado del servidor.
* Conecta la cuenta de WhatsApp Business y el número de teléfono utilizados en la solicitud.
* Crea y aprueba cualquier plantilla a la que haga referencia una solicitud de mensajería.
* Reemplaza cada marcador de posición con un valor de tu propia cuenta.

## Cómo funciona

Elige el escenario que coincida con el mensaje o la plantilla que deseas crear. Compara sus campos con la Referencia de la API, reemplaza los marcadores de posición y haz pruebas con un destinatario controlado antes de usar la solicitud en producción.

## Solicitud

Cada escenario incluye una solicitud completa de creación de plantillas. Elige la categoría de plantilla y la estructura de componentes que coincidan con tu caso de uso.

## Respuesta

Una respuesta correcta devuelve el recurso de plantilla resultante y su estado actual. Algunas plantillas requieren la revisión de Meta antes de que puedas enviarlas.

<Note>
  Usa [Administrar plantillas de WhatsApp](/es/api-reference/guides/whatsapp-platform/manage-whatsapp-templates)
  para planificar la propiedad, las versiones, los idiomas, los controles de revisión, el lanzamiento y el retiro.
  Usa la [guía de mensajería de WhatsApp](/es/api-reference/guides/whatsapp-platform/send-whatsapp-message) para el comportamiento de envío
  y la Referencia de la API para el esquema completo.
</Note>

## Elige un ejemplo

<CardGroup cols={2}>
  <Card title="Plantillas de autenticación" icon="shield-check" href="#authentication-template-with-copy-code-button">
    Crea plantillas de verificación para copiar código, de un solo toque y de cero toques.
  </Card>

  <Card title="Plantillas de marketing" icon="bullhorn" href="#marketing-template-with-image-and-quick-reply-buttons">
    Crea plantillas con archivos multimedia, ofertas, carruseles, cupones y enlaces profundos.
  </Card>

  <Card title="Plantillas de comercio" icon="cart-shopping" href="#catalog-template">
    Crea plantillas de catálogo, multiproducto, pedidos y finalización de compra.
  </Card>

  <Card title="Flows y llamadas" icon="diagram-project" href="#flow-template">
    Crea plantillas que inicien Flows o llamadas de WhatsApp.
  </Card>
</CardGroup>

### Plantilla de autenticación con botón Copiar código

En este caso, creas una plantilla de autenticación con un botón Copiar código:

* Utiliza el texto fijo *\<VERIFICATION\_CODE> is your verification code.* configurando `language` en `en_US`. Consulta también [Idiomas admitidos](https://developers.facebook.com/docs/whatsapp/api/messages/message-templates#supported-languages) para ver todos los códigos.
* Añade un descargo de responsabilidad de seguridad al final del texto.
* Contiene un aviso de vencimiento en el pie de página.

![example-template-copycode.png](https://oss-ycloud-publicread.oss-ap-southeast-1.aliyuncs.com/api-docs/sample/example-template-copycode.png)

#### Solicitud

```shell theme={"theme":{"light":"github-light","dark":"github-dark"}}
curl 'https://api.ycloud.com/v2/whatsapp/templates' \
-H 'Content-Type: application/json' \
-H 'X-API-Key: {{YOUR-API-KEY}}' \
-d '{
  "wabaId": "{{WABA-ID}}",
  "name": "otp_copy_code",
  "language": "en_US",
  "category": "AUTHENTICATION",
  "messageSendTtlSeconds": 600,
  "components": [
    {
      "type": "BODY",
      "add_security_recommendation": true
    },
    {
      "type": "FOOTER",
      "code_expiration_minutes": 5
    },
    {
      "type": "BUTTONS",
      "buttons": [
        {
          "type": "OTP",
          "otp_type": "COPY_CODE",
          "text": "Copy Code"
        }
      ]
    }
  ]
}'
```

#### Respuesta

Devuelve el texto del cuerpo y los botones reales de la plantilla. Aprobó automáticamente la plantilla (`status` es `APPROVED`).

```json theme={"theme":{"light":"github-light","dark":"github-dark"}}
{
  "wabaId": "{{WABA-ID}}",
  "name": "otp_copy_code",
  "language": "en_US",
  "category": "AUTHENTICATION",
  "messageSendTtlSeconds": 600,
  "status": "APPROVED",
  "components": [
    {
      "type": "BODY",
      "text": "*{{1}}* is your verification code. For your security, do not share this code.",
      "add_security_recommendation": true,
      "example": {
        "body_text": [
          [
            "123456"
          ]
        ]
      }
    },
    {
      "type": "FOOTER",
      "text": "This code expires in 5 minutes.",
      "code_expiration_minutes": 5
    },
    {
      "type": "BUTTONS",
      "buttons": [
        {
          "type": "URL",
          "otp_type": "COPY_CODE",
          "text": "Copy Code",
          "url": "https://www.whatsapp.com/otp/code/?otp_type=COPY_CODE&code=otp{{1}}",
          "example": [
            "https://www.whatsapp.com/otp/code/?otp_type=COPY_CODE&code=otp123456"
          ]
        }
      ]
    }
  ]
}
```

#### Explicación

* Las plantillas de autenticación con botones OTP constan de:
  * **Texto predefinido** fijo: *\<VERIFICATION\_CODE> is your verification code.*
  * Un **descargo de responsabilidad de seguridad** opcional: *For your security, do not share this code.*
  * Un **aviso de vencimiento** opcional: *This code expires in\<NUM\_MINUTES> minutes.*
  * Un botón para **copiar código** , un botón de **autocompletado con un solo toque** o ningún botón si se utiliza **cero toques**.
* El texto de Copiar código es opcional. Si se omite, el texto adoptará de forma predeterminada un valor predeterminado adaptado al idioma de la plantilla. Por ejemplo, *Copy Code* para inglés (EE. UU.).
* No se admiten URL, contenido multimedia ni emojis. Dado que las plantillas de autenticación con botones OTP solo constan de texto predeterminado y botones, el riesgo de que se pausen se reduce significativamente.
* Si no podemos entregar un mensaje durante un periodo que exceda su tiempo de vida (TTL), dejaremos de reintentarlo y descartaremos el mensaje. De forma predeterminada, los mensajes que usan una plantilla de autenticación tienen un TTL predeterminado de **10 minutos**, y los mensajes que usan una plantilla de utilidad o marketing tienen un TTL predeterminado de **30 días**.<br />
  Establece su valor entre `30` y `900` segundos (es decir, de 30 segundos a 15 minutos) para plantillas de autenticación, o entre `30` y `43200` segundos (es decir, de 30 segundos a 12 horas) para plantillas de utilidad, o entre `43200` y `2592000` segundos (es decir, de 12 horas a 30 días) para plantillas de marketing. Como alternativa, puedes establecer este valor en `-1`, lo que definirá un TTL personalizado de 30 días para cualquiera de los tipos de plantilla.
* Consulta también el envío de un [mensaje con plantilla de autenticación](/es/api-reference/guides/examples/api-examples/whatsapp-messaging-examples#authentication-template-message-with-one-time-password-buttons).

### Plantilla de autenticación con botón de un solo toque

En este caso, creas una plantilla de autenticación con un botón de un solo toque:

* Utiliza el texto fijo *\<VERIFICATION\_CODE> is your verification code.* configurando `language` en `en_US`.
* Añade un descargo de responsabilidad de seguridad al final del texto.
* Contiene un aviso de vencimiento en el pie de página.
* Contiene el texto del botón Copiar código y el texto del botón de un solo toque.
* Especifica el nombre del paquete de tu aplicación Android y el hash de la firma.

![example-template-onetap.png](https://oss-ycloud-publicread.oss-ap-southeast-1.aliyuncs.com/api-docs/sample/example-template-onetap.png)

#### Solicitud

```shell theme={"theme":{"light":"github-light","dark":"github-dark"}}
curl 'https://api.ycloud.com/v2/whatsapp/templates' \
-H 'Content-Type: application/json' \
-H 'X-API-Key: {{YOUR-API-KEY}}' \
-d '{
  "wabaId": "{{WABA-ID}}",
  "name": "otp_one_tap",
  "language": "en_US",
  "category": "AUTHENTICATION",
  "messageSendTtlSeconds": 600,
  "components": [
    {
      "type": "BODY",
      "add_security_recommendation": true
    },
    {
      "type": "FOOTER",
      "code_expiration_minutes": 5
    },
    {
      "type": "BUTTONS",
      "buttons": [
        {
          "type": "OTP",
          "otp_type": "ONE_TAP",
          "text": "Copy Code",
          "autofill_text": "Autofill",
          "supported_apps": [
            {
              "package_name": "com.example.myapplication",
              "signature_hash": "K8aFAINcGX7"
            }
          ]
        }
      ]
    }
  ]
}'
```

#### Respuesta

Devuelve el texto del cuerpo y los botones reales de la plantilla. Aprobó automáticamente la plantilla (`status` es `APPROVED`).

```json theme={"theme":{"light":"github-light","dark":"github-dark"}}
{
  "wabaId": "{{WABA-ID}}",
  "name": "otp_one_tap",
  "language": "en_US",
  "category": "AUTHENTICATION",
  "messageSendTtlSeconds": 600,
  "status": "APPROVED",
  "components": [
    {
      "type": "BODY",
      "text": "*{{1}}* is your verification code. For your security, do not share this code.",
      "add_security_recommendation": true,
      "example": {
        "body_text": [
          [
            "123456"
          ]
        ]
      }
    },
    {
      "type": "FOOTER",
      "text": "This code expires in 5 minutes.",
      "code_expiration_minutes": 5
    },
    {
      "type": "BUTTONS",
      "buttons": [
        {
          "type": "URL",
          "otp_type": "ONE_TAP",
          "text": "Copy Code",
          "autofill_text": "Autofill",
          "supported_apps": [
            {
              "package_name": "com.example.myapplication",
              "signature_hash": "K8aFAINcGX7"
            }
          ],
          "url": "https://www.whatsapp.com/otp/code/?otp_type=ONE_TAP&cta_display_name=Autofill&package_name=com.example.myapplication&signature_hash=K8aFAINcGX7&code=otp{{1}}",
          "example": [
            "https://www.whatsapp.com/otp/code/?otp_type=ONE_TAP&cta_display_name=Autofill&package_name=com.example.myapplication&signature_hash=K8aFAINcGX7&code=otp123456"
          ]
        }
      ]
    }
  ]
}
```

#### Explicación

* los botones de un solo toque son la solución preferida, ya que ofrecen la mejor experiencia de usuario. Sin embargo, los botones de un solo toque actualmente solo son compatibles con Android y requieren cambios en el código de tu aplicación para realizar un "handshake" (apretón de manos), así como el hash de la clave de firma de tu aplicación. Consulta [Hash de la clave de firma de la app](https://developers.facebook.com/docs/whatsapp/business-management-api/authentication-templates/zero-tap-authentication-templates#app-signing-key-hash) y [Handshake](https://developers.facebook.com/docs/whatsapp/business-management-api/authentication-templates/autofill-button-authentication-templates#handshake).
* Si no podemos validar tu handshake, el mensaje de plantilla de autenticación mostrará en su lugar un botón para copiar el código con este texto.
* El texto de Copiar código y el texto de Autocompletar son opcionales. Si se omiten, el texto adoptará de forma predeterminada un valor preestablecido localizado en el idioma de la plantilla.
* Consulta también cómo enviar un [mensaje de plantilla de autenticación](/es/api-reference/guides/examples/api-examples/whatsapp-messaging-examples#authentication-template-message-with-one-time-password-buttons).

### Plantilla de autenticación sin toques (zero-tap)

Las plantillas de autenticación sin toques permiten que tus usuarios reciban contraseñas de un solo uso o códigos a través de WhatsApp sin tener que salir de tu aplicación.

Cuando un usuario en tu aplicación solicita una contraseña o código y tú lo entregas mediante una plantilla de autenticación sin toques, el cliente de WhatsApp simplemente transmite la contraseña o código incluido y tu aplicación puede capturarlo de inmediato con un receptor de difusión (broadcast receiver).

Desde la perspectiva de tu usuario, solicita una contraseña o código en tu aplicación y este aparece en ella automáticamente. Si el usuario de tu aplicación consulta el mensaje en el cliente de WhatsApp, solo verá un mensaje que muestra el texto fijo predeterminado: *\<code> es tu código de verificación.*

![example-template-zerotap.webp](https://oss-ycloud-publicread.oss-ap-southeast-1.aliyuncs.com/api-docs/sample/example-template-zerotap.webp)

#### Solicitud

```shell theme={"theme":{"light":"github-light","dark":"github-dark"}}
curl 'https://api.ycloud.com/v2/whatsapp/templates' \
-H 'Content-Type: application/json' \
-H 'X-API-Key: {{YOUR-API-KEY}}' \
-d '{
  "wabaId": "{{WABA-ID}}",
  "name": "otp_zero_tap",
  "language": "en_US",
  "category": "AUTHENTICATION",
  "messageSendTtlSeconds": 600,
  "components": [
    {
      "type": "BODY",
      "add_security_recommendation": true
    },
    {
      "type": "FOOTER",
      "code_expiration_minutes": 5
    },
    {
      "type": "BUTTONS",
      "buttons": [
        {
          "type": "OTP",
          "otp_type": "ZERO_TAP",
          "text": "Copy Code",
          "autofill_text": "Autofill",
          "supported_apps": [
            {
              "package_name": "com.example.myapplication",
              "signature_hash": "K8aFAINcGX7"
            }
          ],
          "zero_tap_terms_accepted": true
        }
      ]
    }
  ]
}'
```

#### Respuesta

Devuelve el texto del cuerpo y los botones reales de la plantilla. Aprobó automáticamente la plantilla (`status` es `APPROVED`).

```json theme={"theme":{"light":"github-light","dark":"github-dark"}}
{
  "wabaId": "{{WABA-ID}}",
  "name": "otp_zero_tap",
  "language": "en_US",
  "category": "AUTHENTICATION",
  "messageSendTtlSeconds": 600,
  "status": "APPROVED",
  "components": [
    {
      "type": "BODY",
      "text": "*{{1}}* is your verification code. For your security, do not share this code.",
      "add_security_recommendation": true,
      "example": {
        "body_text": [
          [
            "123456"
          ]
        ]
      }
    },
    {
      "type": "FOOTER",
      "text": "This code expires in 5 minutes.",
      "code_expiration_minutes": 5
    },
    {
      "type": "BUTTONS",
      "buttons": [
        {
          "type": "URL",
          "otp_type": "ZERO_TAP",
          "text": "Copy Code",
          "autofill_text": "Autofill",
          "supported_apps": [
            {
              "package_name": "com.example.myapplication",
              "signature_hash": "K8aFAINcGX7"
            }
          ],
          "zero_tap_terms_accepted": true,
          "url": "https://www.whatsapp.com/otp/code/?otp_type=ZERO_TAP&cta_display_name=Autofill&package_name=com.example.myapplication&signature_hash=K8aFAINcGX7&code=otp{{1}}",
          "example": [
            "https://www.whatsapp.com/otp/code/?otp_type=ZERO_TAP&cta_display_name=Autofill&package_name=com.example.myapplication&signature_hash=K8aFAINcGX7&code=otp123456"
          ]
        }
      ]
    }
  ]
}
```

#### Explicación

* Zero-tap solo es compatible con Android. Si envías una plantilla de autenticación sin toques a un usuario de WhatsApp que utiliza un dispositivo que no es Android, el cliente de WhatsApp mostrará en su lugar un botón para copiar el código. Consulta [Hash de la clave de firma de la app](https://developers.facebook.com/docs/whatsapp/business-management-api/authentication-templates/zero-tap-authentication-templates#app-signing-key-hash) y [Handshake](https://developers.facebook.com/docs/whatsapp/business-management-api/authentication-templates/zero-tap-authentication-templates#handshake).
* El texto de Copiar código y el texto de Autocompletar son opcionales. Si se omiten, el texto adoptará de forma predeterminada un valor preestablecido localizado en el idioma de la plantilla.
* Consulta también cómo enviar un [mensaje de plantilla de autenticación](/es/api-reference/guides/examples/api-examples/whatsapp-messaging-examples#authentication-template-message-with-one-time-password-buttons).

### Plantilla de utilidad con variables en el cuerpo

En este caso, creas una plantilla para notificaciones de confirmación de pedido:

* Contiene texto con 3 variables en el cuerpo.
* Sin encabezado.
* Sin pie de página.
* Sin botones.

![example-template-body.png](https://oss-ycloud-publicread.oss-ap-southeast-1.aliyuncs.com/api-docs/sample/example-template-body.png)

#### Solicitud

```shell theme={"theme":{"light":"github-light","dark":"github-dark"}}
curl 'https://api.ycloud.com/v2/whatsapp/templates' \
-H 'Content-Type: application/json' \
-H 'X-API-Key: {{YOUR-API-KEY}}' \
-d '{
  "wabaId": "{{WABA-ID}}",
  "name": "order_confirmation",
  "language": "en_US",
  "category": "UTILITY",
  "components": [
    {
      "type": "BODY",
      "text": "Your order {{1}} for a total of {{2}} is confirmed. The expected delivery is {{3}}.",
      "example": {
        "body_text": [
          [
            "ORDER-5555",
            "99 USD",
            "February 25, 2023"
          ]
        ]
      }
    }
  ]
}'
```

#### Respuesta

Una solicitud exitosa devuelve el recurso de la plantilla y su estado de revisión actual.

```json theme={"theme":{"light":"github-light","dark":"github-dark"}}
{
  "wabaId": "WABA_ID",
  "name": "TEMPLATE_NAME",
  "language": "en_US",
  "category": "UTILITY",
  "status": "PENDING"
}
```

Usa el `status` devuelto para decidir si la plantilla se puede enviar.

#### Explicación

* Una plantilla consta de componentes `HEADER`, `BODY`, `FOOTER` y `BUTTONS`. El componente `BODY` es obligatorio, mientras que los demás son opcionales.
* Las variables de la plantilla son marcadores de posición (números entre llaves) utilizados para enviar mensajes, como `{{1}}`. Puedes reemplazar estos marcadores de posición con valores reales cuando envíes mensajes. Para ver un ejemplo de cómo usar variables al enviar mensajes de `template`, consulta también [Ejemplos de mensajería de WhatsApp](/es/api-reference/guides/examples/api-examples/whatsapp-messaging-examples).
* Los parámetros variables deben ser secuenciales en cada componente de la plantilla. Por ejemplo, no es válido que `{{1}}`, `{{2}}`, `{{4}}`, `{{5}}` estén definidos pero `{{3}}` no exista.
* Si no podemos entregar un mensaje durante un periodo que exceda su tiempo de vida (TTL), dejaremos de reintentar y descartaremos el mensaje. De forma predeterminada, los mensajes que usan una plantilla de autenticación tienen un TTL predeterminado de **10 minutos**, y los mensajes que usan una plantilla de utilidad o marketing tienen un TTL predeterminado de **30 días**.<br />
  Establece su valor entre `30` y `900` segundos (es decir, de 30 segundos a 15 minutos) para plantillas de autenticación, o entre `30` y `43200` segundos (es decir, de 30 segundos a 12 horas) para plantillas de utilidad, o entre `43200` y `2592000` segundos (es decir, de 12 horas a 30 días) para plantillas de marketing. Como alternativa, puedes establecer este valor en `-1`, lo que configurará un TTL personalizado de 30 días para cualquier tipo de plantilla.
* Consulta también los [Motivos comunes de rechazo](https://developers.facebook.com/docs/whatsapp/message-templates/guidelines#common-rejection-reasons).
* Consulta también cómo enviar un [mensaje de plantilla con variables](/es/api-reference/guides/examples/api-examples/whatsapp-messaging-examples#template-message-with-variables).

### Plantilla de marketing con imagen y botones de respuesta rápida

En este caso, creas una plantilla para una campaña específica:

* Contiene una imagen en el encabezado.
* Contiene texto con 1 variable en el cuerpo.
* Contiene texto en el pie de página.
* Contiene 2 botones de respuesta rápida.

![example-template-quickreply.png](https://oss-ycloud-publicread.oss-ap-southeast-1.aliyuncs.com/api-docs/sample/example-template-quickreply.png)

#### Solicitud

```shell theme={"theme":{"light":"github-light","dark":"github-dark"}}
curl 'https://api.ycloud.com/v2/whatsapp/templates' \
-H 'Content-Type: application/json' \
-H 'X-API-Key: {{YOUR-API-KEY}}' \
-d '{
  "wabaId": "{{WABA-ID}}",
  "name": "marketing_friday",
  "language": "en_US",
  "category": "MARKETING",
  "components": [
    {
      "type": "HEADER",
      "format": "IMAGE",
      "example": {
        "header_url": [
          "https://oss-ycloud-publicread.oss-ap-southeast-1.aliyuncs.com/api-docs/sample/sample.jpg"
        ]
      }
    },
    {
      "type": "BODY",
      "text": "Hi {{1}}, The Black Friday is coming!",
      "example": {
        "body_text": [
          [
            "Joe"
          ]
        ]
      }
    },
    {
      "type": "FOOTER",
      "text": "FOOTER-TEXT"
    },
    {
      "type": "BUTTONS",
      "buttons": [
        {
          "type": "QUICK_REPLY",
          "text": "Learn more"
        },
        {
          "type": "QUICK_REPLY",
          "text": "Unsubscribe"
        }
      ]
    }
  ]
}'
```

#### Respuesta

Una solicitud exitosa devuelve el recurso de la plantilla y su estado de revisión actual.

```json theme={"theme":{"light":"github-light","dark":"github-dark"}}
{
  "wabaId": "WABA_ID",
  "name": "TEMPLATE_NAME",
  "language": "en_US",
  "category": "UTILITY",
  "status": "PENDING"
}
```

Usa el `status` devuelto para decidir si la plantilla se puede enviar.

#### Explicación

* El formato del componente `HEADER` puede ser `TEXT`, `IMAGE`, `VIDEO` o `DOCUMENT`. Para `TEXT`, debes proporcionar un texto de ejemplo en `example.header_text`. Para los otros formatos multimedia, es decir, `IMAGE`, `VIDEO` o `DOCUMENT`, debes proporcionar una URL de ejemplo en `example.header_url`.
* El componente `FOOTER` solo puede ser texto y no admite variables.
* Para archivos multimedia de imagen en el encabezado, el `example.header_url` de la solicitud de mensajería debe terminar con uno de los siguientes: `.jpg`, `.jpeg` o `.png`. El límite de tamaño de imagen es de 5 MB.
* Para archivos multimedia de video en el encabezado, el `example.header_url` del payload de la solicitud debe terminar con `.mp4`. El límite de tamaño de video es de 16 MB.
* Para archivos multimedia de documentos en el encabezado, el `example.header_url` del payload de la solicitud debe terminar con `.pdf`. El límite de tamaño de documento es de 100 MB.
* Los botones son componentes interactivos opcionales que realizan acciones específicas al tocarlos. Las plantillas pueden tener una combinación de hasta 10 componentes de botón en total, aunque existen límites para botones individuales del mismo tipo, así como límites de combinación.
* Los botones de respuesta rápida son botones personalizados de solo texto que te envían un mensaje inmediatamente con la cadena de texto especificada cuando el usuario de la aplicación los toca. Las plantillas están limitadas a 10 botones de respuesta rápida. Si utilizas botones de respuesta rápida con otros botones, deben organizarse en dos grupos: botones de respuesta rápida y botones que no son de respuesta rápida. Si se agrupan de forma incorrecta, la API devolverá un error indicando una combinación no válida.

  Ejemplos de agrupaciones válidas:

  * Respuesta rápida, Respuesta rápida
  * Respuesta rápida, Respuesta rápida, URL, Teléfono
  * URL, Teléfono, Respuesta rápida, Respuesta rápida

  Ejemplos de agrupaciones no válidas:

  * Respuesta rápida, URL, Respuesta rápida
  * URL, Respuesta rápida, URL
* Si una plantilla tiene más de tres botones, aparecerán dos botones en el mensaje entregado y los botones restantes se reemplazarán por un botón Ver todas las opciones. Al tocar el botón Ver todas las opciones, se muestran los botones restantes.<br />
  ![](https://oss-ycloud-publicread.oss-ap-southeast-1.aliyuncs.com/api-docs/sample/example-buttons-seealloptions.webp)
* Consulta también cómo enviar un [mensaje de plantilla con imagen y botones de respuesta rápida](/es/api-reference/guides/examples/api-examples/whatsapp-messaging-examples#template-message-with-image-and-quick-reply-buttons).

### Plantilla de marketing con video y botones de llamada a la acción

En este caso, creas una plantilla para una campaña específica:

* Contiene un video en el encabezado.
* Contiene texto con 1 variable en el cuerpo.
* Contiene texto en el pie de página.
* Contiene 2 botones de llamada a la acción: 1 botón `PHONE_NUMBER` y 1 botón `URL`. El botón `URL` puede tener como máximo 1 variable al final de la URL.

![example-template-calltoaction.png](https://oss-ycloud-publicread.oss-ap-southeast-1.aliyuncs.com/api-docs/sample/example-template-calltoaction.png)

#### Solicitud

```shell theme={"theme":{"light":"github-light","dark":"github-dark"}}
curl 'https://api.ycloud.com/v2/whatsapp/templates' \
-H 'Content-Type: application/json' \
-H 'X-API-Key: {{YOUR-API-KEY}}' \
-d '{
  "wabaId": "{{WABA-ID}}",
  "name": "marketing_friday_more",
  "language": "en_US",
  "category": "MARKETING",
  "components": [
    {
      "type": "HEADER",
      "format": "VIDEO",
      "example": {
        "header_url": [
          "https://oss-ycloud-publicread.oss-ap-southeast-1.aliyuncs.com/api-docs/sample/sample.mp4"
        ]
      }
    },
    {
      "type": "BODY",
      "text": "Click the URL bellow to see more about {{1}} campaign.",
      "example": {
        "body_text": [
          [
            "The Friday"
          ]
        ]
      }
    },
    {
      "type": "FOOTER",
      "text": "FOOTER-TEXT"
    },
    {
      "type": "BUTTONS",
      "buttons": [
        {
          "type": "URL",
          "text": "Visit website",
          "url": "https://www.youtube.com/watch?v={{1}}",
          "example": [
            "https://www.youtube.com/watch?v=zvI4cVGWJhM"
          ]
        },
        {
          "type": "PHONE_NUMBER",
          "text": "Call us",
          "phone_number": "+447901614024"
        }
      ]
    }
  ]
}'
```

#### Respuesta

Una solicitud exitosa devuelve el recurso de la plantilla y su estado de revisión actual.

```json theme={"theme":{"light":"github-light","dark":"github-dark"}}
{
  "wabaId": "WABA_ID",
  "name": "TEMPLATE_NAME",
  "language": "en_US",
  "category": "UTILITY",
  "status": "PENDING"
}
```

Usa el `status` devuelto para decidir si la plantilla se puede enviar.

#### Explicación

* Los botones de número de teléfono llaman al número de teléfono comercial especificado cuando el usuario de la aplicación los toca. Las plantillas están limitadas a un botón de número de teléfono.
* Los botones de URL cargan la URL especificada en el navegador web predeterminado del dispositivo cuando el usuario de la aplicación los toca. Las plantillas están limitadas a dos botones de URL.
* **Cuando configuras un botón dinámico `URL`, que contiene una variable al final de la URL, debes proporcionar una URL completa en `example` en lugar de solo un valor de muestra para la variable.**
* Consulta también cómo enviar un [mensaje de plantilla con video y botones de llamada a la acción](/es/api-reference/guides/examples/api-examples/whatsapp-messaging-examples#template-message-with-video-and-call-to-action-buttons).

### Plantilla de cupón

Las plantillas de código de cupón son plantillas de marketing que muestran un único botón para copiar código. Al tocarlo, el código se copia en el portapapeles del cliente.

En este caso, creas una plantilla de código de cupón para una campaña específica:

* Contiene texto con 2 variables en el cuerpo.
* Contiene un botón para copiar código que permite al cliente copiar el código del cupón.

![example-template-coupon.png](https://oss-ycloud-publicread.oss-ap-southeast-1.aliyuncs.com/api-docs/sample/example-template-coupon.png)

#### Solicitud

```shell theme={"theme":{"light":"github-light","dark":"github-dark"}}
curl 'https://api.ycloud.com/v2/whatsapp/templates' \
-H 'Content-Type: application/json' \
-H 'X-API-Key: {{YOUR-API-KEY}}' \
-d '{
  "wabaId": "{{WABA-ID}}",
  "name": "marketing_coupon",
  "language": "en_US",
  "category": "MARKETING",
  "components": [
    {
      "type": "BODY",
      "text": "🎉Hi {{1}}, Welcome to our shop!\n🥰I'\''ve been waiting for so long. \n\nThis is your coupon code:\n*{{2}}*\n\nNote that this coupon will expire after 24 hours. \nPlease copy the code via the copy button below. ↓",
      "example": {
        "body_text": [
          [
            "Mike",
            "12312393"
          ]
        ]
      }
    },
    {
      "type": "BUTTONS",
      "buttons": [
        {
          "type": "COPY_CODE",
          "example": [
            "12312393"
          ]
        }
      ]
    }
  ]
}'
```

#### Respuesta

Una solicitud exitosa devuelve el recurso de la plantilla y su estado de revisión actual.

```json theme={"theme":{"light":"github-light","dark":"github-dark"}}
{
  "wabaId": "WABA_ID",
  "name": "TEMPLATE_NAME",
  "language": "en_US",
  "category": "UTILITY",
  "status": "PENDING"
}
```

Usa el `status` devuelto para decidir si la plantilla se puede enviar.

#### Explicación

* Los botones para copiar código copian una cadena de texto (definida cuando la plantilla se envía en un mensaje de plantilla) al portapapeles del dispositivo cuando el usuario de la aplicación los toca. Las plantillas están limitadas a un botón para copiar código.
* El texto del botón es un valor preestablecido y no se puede personalizar.
* Consulta también cómo enviar un [mensaje de plantilla de cupón](/es/api-reference/guides/examples/api-examples/whatsapp-messaging-examples#coupon-template-message).

### Plantilla de ubicación

Puedes agregar un encabezado de ubicación en plantillas categorizadas como `UTILITY` o `MARKETING`. Los encabezados de ubicación aparecen como mapas genéricos en la parte superior de la plantilla y son útiles para el seguimiento de pedidos, actualizaciones de entrega, recogida/entrega de transporte compartido, localización de tiendas físicas, etc.

#### Solicitud

```shell theme={"theme":{"light":"github-light","dark":"github-dark"}}
curl 'https://api.ycloud.com/v2/whatsapp/templates' \
-H 'Content-Type: application/json' \
-H 'X-API-Key: {{YOUR-API-KEY}}' \
-d '{
  "wabaId": "{{WABA-ID}}",
  "name": "location_header",
  "language": "en_US",
  "category": "UTILITY",
  "components": [
    {
      "type": "HEADER",
      "format": "LOCATION"
    },
    {
      "type": "BODY",
      "text": "Click and see our location"
    }
  ]
}'
```

#### Respuesta

Una solicitud exitosa devuelve el recurso de la plantilla y su estado de revisión actual.

```json theme={"theme":{"light":"github-light","dark":"github-dark"}}
{
  "wabaId": "WABA_ID",
  "name": "TEMPLATE_NAME",
  "language": "en_US",
  "category": "UTILITY",
  "status": "PENDING"
}
```

Usa el `status` devuelto para decidir si la plantilla se puede enviar.

#### Explicación

* Proporciona la longitud y latitud de la ubicación al enviar esta plantilla. Consulta también [mensaje de plantilla de ubicación](/es/api-reference/guides/examples/api-examples/whatsapp-messaging-examples#location-template-message).

### Plantilla de oferta por tiempo limitado

En este caso, creas una plantilla de oferta por tiempo limitado (LTO) para una campaña específica:

* Contiene una imagen en el encabezado.
* Muestra fechas de vencimiento y temporizadores de cuenta regresiva activos para el código de oferta.
* Contiene texto con 2 variables en el cuerpo.
* Contiene 2 botones: 1 botón `COPY_CODE` y 1 botón `URL`.

![example-template-coupon.png](https://oss-ycloud-publicread.oss-ap-southeast-1.aliyuncs.com/api-docs/sample/example-messaging-limitedtimeoffer.png)

#### Solicitud

```shell theme={"theme":{"light":"github-light","dark":"github-dark"}}
curl 'https://api.ycloud.com/v2/whatsapp/templates' \
-H 'Content-Type: application/json' \
-H 'X-API-Key: {{YOUR-API-KEY}}' \
-d '{
  "wabaId": "{{WABA-ID}}",
  "name": "limited_time_offer_caribbean_pkg_2023",
  "language": "en_US",
  "category": "MARKETING",
  "components": [
    {
      "type": "HEADER",
      "format": "IMAGE",
      "example": {
        "header_url": [
          "https://oss-ycloud-publicread.oss-ap-southeast-1.aliyuncs.com/api-docs/sample/sample.jpg"
        ]
      }
    },
    {
      "type": "LIMITED_TIME_OFFER",
      "limited_time_offer": {
        "text": "Expiring offer!",
        "has_expiration": true
      }
    },
    {
      "type": "BODY",
      "text": "Good news, {{1}}! Use code {{2}} to get 25% off all Caribbean Destination packages!",
      "example": {
        "body_text": [
          [
            "Pablo",
            "CARIBE25"
          ]
        ]
      }
    },
    {
      "type": "BUTTONS",
      "buttons": [
        {
          "type": "COPY_CODE",
          "example": [
            "CARIBE25"
          ]
        },
        {
          "type": "URL",
          "text": "Book now!",
          "url": "https://awesomedestinations.com/offers?code={{1}}",
          "example": [
            "https://awesomedestinations.com/offers?ref=n3mtql"
          ]
        }
      ]
    }
  ]
}'
```

#### Respuesta

Una solicitud exitosa devuelve el recurso de la plantilla y su estado de revisión actual.

```json theme={"theme":{"light":"github-light","dark":"github-dark"}}
{
  "wabaId": "WABA_ID",
  "name": "TEMPLATE_NAME",
  "language": "en_US",
  "category": "UTILITY",
  "status": "PENDING"
}
```

Usa el `status` devuelto para decidir si la plantilla se puede enviar.

#### Explicación

* Solo se admiten plantillas categorizadas como `MARKETING`.
* Los componentes de pie de página no son compatibles.
* Los usuarios que vean un mensaje de plantilla de oferta por tiempo limitado usando la aplicación web o de escritorio de WhatsApp no verán la oferta, sino que verán un mensaje indicando que han recibido un mensaje pero que no es compatible con el cliente que están utilizando.
* Consulta también cómo enviar un [mensaje de plantilla de oferta por tiempo limitado](/es/api-reference/guides/examples/api-examples/whatsapp-messaging-examples#limited-time-offer-template-message).

### Plantilla de carrusel

En este caso, creas una plantilla de carrusel para una campaña específica:

* Contiene texto con 2 variables en el cuerpo.
* Contiene 2 tarjetas de carrusel en una vista con desplazamiento horizontal.

![example-template-coupon.png](https://oss-ycloud-publicread.oss-ap-southeast-1.aliyuncs.com/api-docs/sample/example-messaging-carousel.png)

#### Solicitud

```shell theme={"theme":{"light":"github-light","dark":"github-dark"}}
curl 'https://api.ycloud.com/v2/whatsapp/templates' \
-H 'Content-Type: application/json' \
-H 'X-API-Key: {{YOUR-API-KEY}}' \
-d '{
  "wabaId": "{{WABA-ID}}",
  "name": "summer_carousel_promo_2023",
  "language": "en_US",
  "category": "MARKETING",
  "components": [
    {
      "type": "BODY",
      "text": "Summer is here, and we have the freshest produce around! Use code {{1}} to get {{2}} off your next order.",
      "example": {
        "body_text": [
          [
            "15OFF",
            "15%"
          ]
        ]
      }
    },
    {
      "type": "CAROUSEL",
      "cards": [
        {
          "components": [
            {
              "type": "HEADER",
              "format": "IMAGE",
              "example": {
                "header_url": [
                  "https://oss-ycloud-publicread.oss-ap-southeast-1.aliyuncs.com/api-docs/sample/sample.jpg"
                ]
              }
            },
            {
              "type": "BODY",
              "text": "Rare lemons for unique cocktails. Use code {{1}} to get {{2}} off all produce.",
              "example": {
                "body_text": [
                  [
                    "15OFF",
                    "15%"
                  ]
                ]
              }
            },
            {
              "type": "BUTTONS",
              "buttons": [
                {
                  "type": "QUICK_REPLY",
                  "text": "Send more like this"
                },
                {
                  "type": "URL",
                  "text": "Buy now",
                  "url": "https://www.luckyshrub.com/shop?promo={{1}}",
                  "example": [
                    "https://www.luckyshrub.com/shop?promo=summer_lemons_2023"
                  ]
                }
              ]
            }
          ]
        },
        {
          "components": [
            {
              "type": "HEADER",
              "format": "IMAGE",
              "example": {
                "header_url": [
                  "https://oss-ycloud-publicread.oss-ap-southeast-1.aliyuncs.com/api-docs/sample/sample.jpg"
                ]
              }
            },
            {
              "type": "BODY",
              "text": "Exotic fruit for unique cocktails! Use code {{1}} to get {{2}} off all exotic produce.",
              "example": {
                "body_text": [
                  [
                    "20OFFEXOTIC",
                    "20%"
                  ]
                ]
              }
            },
            {
              "type": "BUTTONS",
              "buttons": [
                {
                  "type": "QUICK_REPLY",
                  "text": "Send more like this"
                },
                {
                  "type": "URL",
                  "text": "Buy now",
                  "url": "https://www.luckyshrub.com/shop?promo={{1}}",
                  "example": [
                    "https://www.luckyshrub.com/shop?promo=exotic_produce_2023"
                  ]
                }
              ]
            }
          ]
        }
      ]
    }
  ]
}'
```

#### Respuesta

Una solicitud exitosa devuelve el recurso de la plantilla y su estado de revisión actual.

```json theme={"theme":{"light":"github-light","dark":"github-dark"}}
{
  "wabaId": "WABA_ID",
  "name": "TEMPLATE_NAME",
  "language": "en_US",
  "category": "UTILITY",
  "status": "PENDING"
}
```

Usa el `status` devuelto para decidir si la plantilla se puede enviar.

#### Explicación

* Se requiere una burbuja de mensaje. Las burbujas de mensaje son solo de texto y admiten variables. No hay un límite máximo de caracteres en las variables, pero cuenta para el límite de la burbuja de mensaje de 1024 caracteres.
* El texto del cuerpo de la tarjeta admite variables. Máximo 160 caracteres.
* Las plantillas de carrusel admiten hasta 10 tarjetas de carrusel. Las tarjetas deben tener un encabezado multimedia (imagen o video), texto en el cuerpo y al menos un botón. Admite 2 botones. Los botones pueden ser del mismo tipo o una combinación de botones de respuesta rápida, botones de número de teléfono o botones de URL.
* El formato del encabezado multimedia y los botones deben ser los mismos en todas las tarjetas que componen una plantilla de carrusel.
* Los recursos multimedia se recortarán a una proporción panorámica según el dispositivo del cliente.
* Consulta también cómo enviar un [mensaje de plantilla de carrusel](/es/api-reference/guides/examples/api-examples/whatsapp-messaging-examples#carousel-template-message).

### Plantilla de catálogo

Las plantillas de catálogo son plantillas de marketing que te permiten mostrar tu catálogo de productos completamente dentro de WhatsApp. Las plantillas de catálogo muestran una imagen de encabezado de miniatura de producto de tu elección y texto de cuerpo personalizado, junto con un encabezado de texto fijo y un subencabezado de texto fijo.

![example-messaging-catalog.webp](https://oss-ycloud-publicread.oss-ap-southeast-1.aliyuncs.com/api-docs/sample/example-messaging-catalog.webp)

Cuando un cliente toca el botón **Ver catálogo** en un mensaje de plantilla de catálogo, tu catálogo de productos aparece dentro de WhatsApp.

![example-messaging-catalog-view.webp](https://oss-ycloud-publicread.oss-ap-southeast-1.aliyuncs.com/api-docs/sample/example-messaging-catalog-view.webp)

#### Solicitud

```shell theme={"theme":{"light":"github-light","dark":"github-dark"}}
curl 'https://api.ycloud.com/v2/whatsapp/templates' \
-H 'Content-Type: application/json' \
-H 'X-API-Key: {{YOUR-API-KEY}}' \
-d '{
  "wabaId": "{{WABA-ID}}",
  "name": "intro_catalog_offer",
  "language": "en_US",
  "category": "MARKETING",
  "components": [
    {
      "type": "BODY",
      "text": "Now shop for your favourite products right here on WhatsApp! Get Rs {{1}} off on all orders above {{2}}Rs! Valid for your first {{3}} orders placed on WhatsApp!",
      "example": {
        "body_text": [
          [
            "100",
            "400",
            "3"
          ]
        ]
      }
    },
    {
      "type": "FOOTER",
      "text": "Best grocery deals on WhatsApp!"
    },
    {
      "type": "BUTTONS",
      "buttons": [
        {
          "type": "CATALOG",
          "text": "View catalog"
        }
      ]
    }
  ]
}'
```

#### Respuesta

Una solicitud exitosa devuelve el recurso de la plantilla y su estado de revisión actual.

```json theme={"theme":{"light":"github-light","dark":"github-dark"}}
{
  "wabaId": "WABA_ID",
  "name": "TEMPLATE_NAME",
  "language": "en_US",
  "category": "UTILITY",
  "status": "PENDING"
}
```

Usa el `status` devuelto para decidir si la plantilla se puede enviar.

#### Explicación

* Debes tener [inventario subido a Meta](https://developers.facebook.com/docs/whatsapp/cloud-api/guides/sell-products-and-services/upload-inventory) en un catálogo de comercio electrónico [conectado a tu cuenta de WhatsApp Business](https://www.facebook.com/business/help/158662536425974).
* Habilita el carrito de compras y el catálogo de productos por cada número de teléfono comercial. De forma predeterminada, el carrito de compras está habilitado y el ícono de la tienda está oculto para todos los números de teléfono comerciales asociados con una cuenta de WhatsApp Business. Usa el endpoint [Actualizar configuración de comercio](https://docs.ycloud.com/reference/whatsapp_phone_number-update-commerce-settings) para habilitar o deshabilitar estas funciones.
* El texto de los botones `CATALOG` no se puede modificar y siempre debe ser **Ver catálogo**.
* Consulta también cómo enviar un [mensaje de plantilla de catálogo](/es/api-reference/guides/examples/api-examples/whatsapp-messaging-examples#catalog-template-message).

### Plantilla de mensaje multiproducto

Las plantillas MPM se pueden usar para iniciar conversaciones de marketing. Te permiten mostrar hasta 30 productos de tu catálogo de comercio electrónico, organizados en hasta 10 secciones, en un solo mensaje.

![example-messaging-mpm.webp](https://oss-ycloud-publicread.oss-ap-southeast-1.aliyuncs.com/api-docs/sample/example-messaging-mpm.webp)

Los clientes pueden explorar productos y secciones dentro del mensaje, ver detalles de cada producto, agregar y eliminar productos de su carrito y enviar su carrito para realizar un pedido. Luego, los pedidos se te envían a través de un webhook.

![example-messaging-mpm-browse.webp](https://oss-ycloud-publicread.oss-ap-southeast-1.aliyuncs.com/api-docs/sample/example-messaging-mpm-browse.webp)

#### Solicitud

```shell theme={"theme":{"light":"github-light","dark":"github-dark"}}
curl 'https://api.ycloud.com/v2/whatsapp/templates' \
-H 'Content-Type: application/json' \
-H 'X-API-Key: {{YOUR-API-KEY}}' \
-d '{
  "wabaId": "{{WABA-ID}}",
  "name": "abandoned_cart",
  "language": "en_US",
  "category": "MARKETING",
  "components": [
    {
      "type": "HEADER",
      "format": "TEXT",
      "text": "Forget something, {{1}}?",
      "example": {
        "header_text": [
          "Pablo"
        ]
      }
    },
    {
      "type": "BODY",
      "text": "Looks like you left these items in your cart, still interested? Use code {{1}} to get 10% off!",
      "example": {
        "body_text": [
          [
            "10OFF"
          ]
        ]
      }
    },
    {
      "type": "BUTTONS",
      "buttons": [
        {
          "type": "MPM",
          "text": "View items"
        }
      ]
    }
  ]
}'
```

#### Respuesta

Una solicitud exitosa devuelve el recurso de la plantilla y su estado de revisión actual.

```json theme={"theme":{"light":"github-light","dark":"github-dark"}}
{
  "wabaId": "WABA_ID",
  "name": "TEMPLATE_NAME",
  "language": "en_US",
  "category": "UTILITY",
  "status": "PENDING"
}
```

Usa el `status` devuelto para decidir si la plantilla se puede enviar.

#### Explicación

* Debes tener [inventario subido a Meta](https://developers.facebook.com/docs/whatsapp/cloud-api/guides/sell-products-and-services/upload-inventory) en un catálogo de comercio electrónico [conectado a tu cuenta de WhatsApp Business](https://www.facebook.com/business/help/158662536425974).
* Habilita el carrito de compras y el catálogo de productos por cada número de teléfono comercial. De forma predeterminada, el carrito de compras está habilitado y el ícono de la tienda está oculto para todos los números de teléfono comerciales asociados con una cuenta de WhatsApp Business. Usa el endpoint [Actualizar configuración de comercio](https://docs.ycloud.com/reference/whatsapp_phone_number-update-commerce-settings) para habilitar o deshabilitar estas funciones.
* El valor de `components` debe ser un arreglo de objetos que describan cada componente que conforma la plantilla. Las plantillas MPM deben tener los siguientes componentes:
  * un único componente de encabezado
  * un único componente de cuerpo
  * un único componente de pie de página (opcional)
  * un único componente de botón MPM
* El texto de los botones `MPM` no se puede modificar y siempre debe ser **Ver artículos**.
* Consulta también cómo enviar un [mensaje de plantilla MPM](/es/api-reference/guides/examples/api-examples/whatsapp-messaging-examples#mpm-template-message).

### Plantilla de Flow

[WhatsApp Flows](https://developers.facebook.com/docs/whatsapp/flows) es una forma de crear interacciones estructuradas para la mensajería empresarial. Con Flows, las empresas pueden definir, configurar y personalizar mensajes con interacciones enriquecidas que ofrecen a los clientes una mayor estructura en su forma de comunicarse.

Puedes usar Flows para generar clientes potenciales, recomendar productos, obtener nuevos prospectos de ventas o cualquier otra interacción en la que una comunicación estructurada resulte más natural o cómoda para tus clientes.

![example-flow-intro.png](https://oss-ycloud-publicread.oss-ap-southeast-1.aliyuncs.com/api-docs/sample/example-flow-intro.png)

#### Solicitud

```shell theme={"theme":{"light":"github-light","dark":"github-dark"}}
curl 'https://api.ycloud.com/v2/whatsapp/templates' \
-H 'Content-Type: application/json' \
-H 'X-API-Key: {{YOUR-API-KEY}}' \
-d '{
  "wabaId": "{{WABA-ID}}",
  "name": "example_template_name",
  "language": "en_US",
  "category": "MARKETING",
  "components": [
    {
      "type": "BODY",
      "text": "This is a flows as template demo"
    },
    {
      "type": "BUTTONS",
      "buttons": [
        {
          "type": "FLOW",
          "text": "Open flow!",
          "flow_id": "{{FLOW-ID}}",
          "navigate_screen": "{{SCREEN-ID}}",
          "flow_action": "navigate"
        }
      ]
    }
  ]
}'
```

#### Respuesta

Una solicitud exitosa devuelve el recurso de la plantilla y su estado de revisión actual.

```json theme={"theme":{"light":"github-light","dark":"github-dark"}}
{
  "wabaId": "WABA_ID",
  "name": "TEMPLATE_NAME",
  "language": "en_US",
  "category": "UTILITY",
  "status": "PENDING"
}
```

Usa el `status` devuelto para determinar si la plantilla se puede enviar.

#### Explicación

* Para utilizar [WhatsApp Flows](https://developers.facebook.com/docs/whatsapp/flows), deberás [verificar tu empresa](https://developers.facebook.com/docs/development/release/business-verification), completar el [proceso de revisión del nombre para mostrar](https://developers.facebook.com/docs/whatsapp/cloud-api/phone-numbers#display-names) y mantener una [alta calidad de mensajes](https://developers.facebook.com/docs/whatsapp/messaging-limits#messaging-quality).
* Necesitarás un Flow ID para crear la plantilla. Para crear un nuevo WhatsApp Flow utilizando la interfaz de Flows Builder, consulta [este video](https://www.youtube.com/watch?v=gx_QGaSLoOA).
* Para enviar un mensaje de plantilla de Flow, consulta [Mensaje de plantilla de Flow](/es/api-reference/guides/examples/api-examples/whatsapp-messaging-examples#flow-template-message).

### Plantilla de detalles del pedido

La plantilla de mensaje de detalles del pedido es una plantilla de mensaje interactiva que amplía el botón de llamada a la acción para permitir el envío de los detalles del pedido como plantilla, proporcionando una experiencia más enriquecida en comparación con las plantillas de mensaje estándar.

La plantilla de detalles del pedido se clasifica como plantilla `UTILITY` y, además del nombre y el idioma elegido, cuenta con componentes generales de plantilla como `HEADER`, `BODY`, `FOOTER` y un `BUTTON` fijo con tipo `ORDER_DETAILS` y texto `Review and Pay`.

#### Solicitud

```shell theme={"theme":{"light":"github-light","dark":"github-dark"}}
curl 'https://api.ycloud.com/v2/whatsapp/templates' \
-H 'Content-Type: application/json' \
-H 'X-API-Key: {{YOUR-API-KEY}}' \
-d '{
  "wabaId": "{{WABA-ID}}",
  "name": "order_details_example",
  "language": "en_US",
  "category": "UTILITY",
  "components": [
    {
      "type": "HEADER",
      "format": "TEXT",
      "text": "Header text"
    },
    {
      "type": "BODY",
      "text": "Template Body text"
    },
    {
      "type": "FOOTER",
      "text": "Footer text"
    },
    {
      "type": "BUTTONS",
      "buttons": [
        {
          "type": "ORDER_DETAILS",
          "text": "Review and Pay"
        }
      ]
    }
  ]
}'
```

#### Respuesta

Una solicitud exitosa devuelve el recurso de la plantilla y su estado de revisión actual.

```json theme={"theme":{"light":"github-light","dark":"github-dark"}}
{
  "wabaId": "WABA_ID",
  "name": "TEMPLATE_NAME",
  "language": "en_US",
  "category": "UTILITY",
  "status": "PENDING"
}
```

Usa el `status` devuelto para determinar si la plantilla se puede enviar.

#### Explicación

* Debe contener un botón donde `type` sea `ORDER_DETAILS` y `text` sea `Review and Pay`.
* Consulta también cómo enviar un [mensaje de plantilla de detalles del pedido](/es/api-reference/guides/examples/api-examples/whatsapp-messaging-examples#order-details-template-message).

### Plantilla de estado del pedido

La plantilla de estado del pedido es una plantilla de mensaje interactiva que amplía el botón de llamada a la acción para permitir la actualización del estado del pedido mediante una plantilla. Permite a las empresas actualizar el estado del pedido fuera de la ventana de sesión del cliente en casos de uso como el cobro con tarjeta de un pedido anterior o la actualización sobre el envío de un pedido realizado en el pasado.

#### Solicitud

```shell theme={"theme":{"light":"github-light","dark":"github-dark"}}
curl 'https://api.ycloud.com/v2/whatsapp/templates' \
-H 'Content-Type: application/json' \
-H 'X-API-Key: {{YOUR-API-KEY}}' \
-d '{
  "wabaId": "{{WABA-ID}}",
  "name": "order_status_example",
  "language": "en_US",
  "category": "UTILITY",
  "subCategory": "ORDER_STATUS",
  "components": [
    {
      "type": "BODY",
      "text": "Template Body text"
    },
    {
      "type": "FOOTER",
      "text": "Footer text"
    }
  ]
}'
```

#### Respuesta

Una solicitud exitosa devuelve el recurso de la plantilla y su estado de revisión actual.

```json theme={"theme":{"light":"github-light","dark":"github-dark"}}
{
  "wabaId": "WABA_ID",
  "name": "TEMPLATE_NAME",
  "language": "en_US",
  "category": "UTILITY",
  "status": "PENDING"
}
```

Usa el `status` devuelto para determinar si la plantilla se puede enviar.

#### Explicación

* Se debe establecer `category` en `UTILITY`, y `subCategory` en `ORDER_STATUS`.
* Consulta también cómo enviar un [mensaje de plantilla de estado del pedido](/es/api-reference/guides/examples/api-examples/whatsapp-messaging-examples#order-status-template-message).

### Plantilla de llamada de voz

Admite un nuevo tipo de botón `VOICE_CALL` que iniciará una llamada de WhatsApp cuando un usuario de WhatsApp haga clic en él. En general, este botón se puede usar en cualquier lugar donde sea posible utilizar el botón de número de teléfono existente.

#### Solicitud

```shell theme={"theme":{"light":"github-light","dark":"github-dark"}}
curl 'https://api.ycloud.com/v2/whatsapp/templates' \
-H 'Content-Type: application/json' \
-H 'X-API-Key: {{YOUR-API-KEY}}' \
-d '{
  "wabaId": "{{WABA-ID}}",
  "name": "voice_call_example",
  "language": "en_US",
  "category": "UTILITY",
  "components": [
    {
      "type": "BODY",
      "text": "You can call us on WhatsApp now for faster service!"
    },
    {
      "type": "BUTTONS",
      "buttons": [
        {
          "type": "VOICE_CALL",
          "text": "Call Now"
        },
        {
          "type": "URL",
          "text": "Contact Support",
          "url": "https://www.luckyshrub.com/support"
        }
      ]
    }
  ]
}'
```

#### Respuesta

Una solicitud exitosa devuelve el recurso de la plantilla y su estado de revisión actual.

```json theme={"theme":{"light":"github-light","dark":"github-dark"}}
{
  "wabaId": "WABA_ID",
  "name": "TEMPLATE_NAME",
  "language": "en_US",
  "category": "UTILITY",
  "status": "PENDING"
}
```

Usa el `status` devuelto para determinar si la plantilla se puede enviar.

#### Explicación

* Una vez que crees una plantilla con el botón de llamada de voz de WhatsApp, podrás usar la API existente sin cambios, ya que el botón `voice_call` no se puede configurar al momento de enviar el mensaje.
* Consulta también cómo enviar un [mensaje interactivo de llamada de voz](/es/api-reference/guides/examples/api-examples/whatsapp-messaging-examples#interactive-voice-call-message)

<br />

### Plantilla con botón de pago

Las plantillas con botón de pago son plantillas de marketing que pueden mostrar uno o más productos junto con los botones de pago correspondientes que los usuarios de WhatsApp pueden utilizar para realizar compras sin salir del cliente de WhatsApp. Las plantillas con botón de pago pueden mostrar un encabezado con una sola imagen o video de producto, junto con el texto del cuerpo del mensaje, el pie de página del mensaje, un único botón de pago y hasta 9 botones de respuesta rápida.

![aa041611659855f2a14d99c2e9c239b4529cc3ed795b9deecc5135af341f9973-sss.png](https://files.readme.io/aa041611659855f2a14d99c2e9c239b4529cc3ed795b9deecc5135af341f9973-sss.png)

Los usuarios de WhatsApp que toquen el botón verán los detalles del pedido:

![48e4a7a5f7bef3cd2e6317f0733023ec3b65e2c92eb49a5b853a627c5f034f50-order.png](https://files.readme.io/48e4a7a5f7bef3cd2e6317f0733023ec3b65e2c92eb49a5b853a627c5f034f50-order.png)

Los usuarios pueden continuar seleccionando la información de envío que proporciones (si dispones de sus datos y los incluiste en el payload de envío del mensaje)...

![1c9546905f60a95bdb6344fdefcaa5ca80b6e64a0afc97bbdb20972c5da70c6b-address.png](https://files.readme.io/1c9546905f60a95bdb6344fdefcaa5ca80b6e64a0afc97bbdb20972c5da70c6b-address.png)

o pueden agregar su propia información de envío:

![7a2fb58e8f26f770276ed5c36dbff2812d575e1cc1dec4568aa376d8e31ba135-info.png](https://files.readme.io/7a2fb58e8f26f770276ed5c36dbff2812d575e1cc1dec4568aa376d8e31ba135-info.png)

#### Solicitud

Esta solicitud de ejemplo crea una plantilla con botón de pago que incluye un encabezado de mensaje con una sola imagen, un texto de cuerpo de mensaje que utiliza dos variables, un pie de página, un único botón de pago y un botón de respuesta rápida.

```shell Shell theme={"theme":{"light":"github-light","dark":"github-dark"}}
curl 'https://api.ycloud.com/v2/whatsapp/templates' \
-H 'Content-Type: application/json' \
-H 'X-API-Key: {{YOUR-API-KEY}}' \
-d '{
  "wabaId": "{{WABA-ID}}",
  "name": "item_back_in_stock_v1",
  "language": "en_US",
  "category": "MARKETING",
  "components": [
    {
      "type": "header",
      "format": "image",
      "example": {
        "header_url": [
          "https://oss-ycloud-publicread.oss-ap-southeast-1.aliyuncs.com/api-docs/sample/sample.jpg"
        ]
      }
    },
    {
      "type": "body",
      "text": "Hi {{1}}! The {{2}} is back in stock! Order now before it\'s gone!",
      "example": {
        "body_text": [
          [
            "Pablo",
            "Blue Elf Aloe"
          ]
        ]
      }
    },
    {
      "type": "footer",
      "text": "Tap \'Stop\' below to stop back-in-stock reminders."
    },
    {
      "type": "buttons",
      "buttons": [
        {
          "type": "order_details",
          "text": "Buy now"
        },
        {
          "type": "quick_reply",
          "text": "Stop"
        }
      ]
    }
  ]
}'
```

#### Respuesta

Una solicitud exitosa devuelve el recurso de la plantilla y su estado de revisión actual.

```json theme={"theme":{"light":"github-light","dark":"github-dark"}}
{
  "wabaId": "WABA_ID",
  "name": "TEMPLATE_NAME",
  "language": "en_US",
  "category": "UTILITY",
  "status": "PENDING"
}
```

Usa el `status` devuelto para determinar si la plantilla se puede enviar.

<br />

#### Explicación

Mantén los componentes de la plantilla coherentes con su categoría y espera a que tenga un estado aprobado antes de enviarla.

### Plantilla de solicitud de permiso de llamada

Si deseas realizar una llamada a un usuario de WhatsApp, tu empresa debe recibir primero el permiso del usuario. Cuando un usuario de WhatsApp otorga permisos de llamada, estos pueden ser temporales o permanentes.

La empresa no tiene control sobre este permiso, ya que solo lo otorga el usuario y solo el usuario puede revocarlo en cualquier momento. Los datos de permisos permanentes se almacenarán hasta que se revoquen.

Puedes obtener el permiso de llamada de un usuario de WhatsApp de cualquiera de las siguientes formas:

1. Enviar una solicitud de permiso de llamada al usuario — Envía un mensaje de formato libre o con plantilla solicitando el permiso de llamada al usuario. El usuario tiene la opción de elegir entre temporal o permanente.
2. El usuario de WhatsApp proporciona el permiso de devolución de llamada — El usuario de WhatsApp otorga automáticamente permisos de llamada temporales al realizar una llamada a la empresa. La opción de devolución de llamada debe estar habilitada en el número de teléfono de la empresa.
3. El usuario de WhatsApp otorga el permiso de llamada a través del perfil de empresa — El usuario de WhatsApp proporciona permisos de llamada a la empresa a través de su perfil de empresa.

![](https://files.readme.io/4c5eae96f139734bfaa0b2af4d153fb124412009372fb44fecfdd2991988254f-image.png)

#### Solicitud

A continuación se muestra un ejemplo de cómo crear un tipo de plantilla de solicitud de permiso de llamada

```shell Shell theme={"theme":{"light":"github-light","dark":"github-dark"}}
curl 'https://api.ycloud.com/v2/whatsapp/templates' \
-H 'Content-Type: application/json' \
-H 'X-API-Key: {{YOUR-API-KEY}}' \
-d '{
  "wabaId": "{{WABA-ID}}",
  "name": "calling_permisson_request_example",
  "language": "en_US",
  "category": "MARKETING",
  "components": [
   {
      "type": "HEADER",
      "text": "Support of Order No: {{1}}",
      "example": {
        "body_text": [
          [
            "ON-12345"
          ]
        ]
      }
    },
    {
      "type": "BODY",
      "text": "We would like to call you to help support your query on Order No: {{1}} for the item {{2}}.",
      "example": {
        "body_text": [
          [
            "ON-12345",
            "Avocados"
          ]
        ]
      }
    },
    {
      "type": "FOOTER",
      "text": "Talk to you soon!"
    },
    {
      "type": "call_permission_request"
    }
  ]
}'
```

#### Respuesta

Una solicitud exitosa devuelve el recurso de la plantilla y su estado de revisión actual.

```json theme={"theme":{"light":"github-light","dark":"github-dark"}}
{
  "wabaId": "WABA_ID",
  "name": "TEMPLATE_NAME",
  "language": "en_US",
  "category": "UTILITY",
  "status": "PENDING"
}
```

Utiliza el `status` devuelto para determinar si la plantilla se puede enviar.

#### Explicación

Mantén los componentes de la plantilla coherentes con su categoría y espera a que tenga un estado aprobado antes de enviarla.

### Plantilla con enlace profundo (deep link) de Android

Puedes asignar un enlace profundo de Android a un botón URL de una plantilla de marketing que, al pulsarlo, carga una ubicación o contenido específico dentro de tu aplicación.

![f8de09eb375b59830fce619f98dfe89e7cf23090c3c3c661b3f1a218a080458b-android\_deep\_link.png](https://files.readme.io/f8de09eb375b59830fce619f98dfe89e7cf23090c3c3c661b3f1a218a080458b-android_deep_link.png)

#### Solicitud

A continuación se muestra un ejemplo de cómo crear una plantilla con enlace profundo.

```shell theme={"theme":{"light":"github-light","dark":"github-dark"}}
curl 'https://api.ycloud.com/v2/whatsapp/templates' \
-H 'Content-Type: application/json' \
-H 'X-API-Key: {{YOUR-API-KEY}}' \
-d '{
  "wabaId": "{{WABA-ID}}",
  "name": "calling_permisson_request_example",
  "language": "en_US",
  "category": "MARKETING",
  "components": [
    {
      "type": "BODY",
      "text": "hello"
    },
    {
      "type": "BUTTONS",
      "buttons": [
        {
          "type": "url",
          "text": "View Deals",
          "url": "https://www.luckyshrub.com/deals/summer/",
          "app_deep_link": {
            "meta_app_id": 2892949377516980,
            "android_deep_link": "luckyshrub://deals/summer/",
            "android_fallback_playstore_url": "https://www.luckyshrub.com/deals/summer/"
          }
        }
      ]
    }
  ]
}'
```

#### Respuesta

Una solicitud exitosa devuelve el recurso de la plantilla y su estado de revisión actual.

```json theme={"theme":{"light":"github-light","dark":"github-dark"}}
{
  "wabaId": "WABA_ID",
  "name": "TEMPLATE_NAME",
  "language": "en_US",
  "category": "UTILITY",
  "status": "PENDING"
}
```

Utiliza el `status` devuelto para determinar si la plantilla se puede enviar.

#### Explicación

Mantén los componentes de la plantilla coherentes con su categoría y espera a que tenga un estado aprobado antes de enviarla.

### Plantilla de marketing con gif

En este caso, creas una plantilla para una campaña específica:

* Contiene un gif en el encabezado.

![57140f01b2e446fb7bb2288849604f0a944abad66b177b87cf16597296ea79e5-Screen\_Recording\_2026-01-28\_at\_15.50.00.gif](https://files.readme.io/57140f01b2e446fb7bb2288849604f0a944abad66b177b87cf16597296ea79e5-Screen_Recording_2026-01-28_at_15.50.00.gif)

#### Solicitud

A continuación se muestra un ejemplo de cómo crear una plantilla con gif.

```shell theme={"theme":{"light":"github-light","dark":"github-dark"}}
curl 'https://api.ycloud.com/v2/whatsapp/templates' \
-H 'Content-Type: application/json' \
-H 'X-API-Key: {{YOUR-API-KEY}}' \
-d '{
  "wabaId": "{{WABA-ID}}",
  "name": "marketing_friday_more",
  "language": "en_US",
  "category": "MARKETING",
  "components": [
    {
      "type": "HEADER",
      "format": "GIF",
      "example": {
        "header_url": [
          "https://oss-ycloud-publicread.oss-ap-southeast-1.aliyuncs.com/api-docs/sample/sample.mp4"
        ]
      }
    },
    {
      "type": "BODY",
      "text": "hello"
    }
  ]
}'
```

#### Respuesta

Una solicitud exitosa devuelve el recurso de la plantilla y su estado de revisión actual.

```json theme={"theme":{"light":"github-light","dark":"github-dark"}}
{
  "wabaId": "WABA_ID",
  "name": "TEMPLATE_NAME",
  "language": "en_US",
  "category": "UTILITY",
  "status": "PENDING"
}
```

Utiliza el `status` devuelto para determinar si la plantilla se puede enviar.

<br />

#### Explicación

Mantén los componentes de la plantilla coherentes con su categoría y espera a que tenga un estado aprobado antes de enviarla.

### &#x20;Plantilla para solicitar número de teléfono

Para agregar un botón de solicitud de información de contacto a una plantilla de utilidad o marketing, incluye un botón REQUEST\_CONTACT\_INFO en el array de componentes al crear la plantilla:

![5ef3fb68df39ec17bf6e7372e7d9277cb3ec7e129c3514fed346dcf6f4d1fd97-screenshot-20260528-162510.png](https://files.readme.io/5ef3fb68df39ec17bf6e7372e7d9277cb3ec7e129c3514fed346dcf6f4d1fd97-screenshot-20260528-162510.png)

#### Solicitud

A continuación se muestra un ejemplo de cómo crear una plantilla de `REQUEST_CONTACT_INFO`

* `Share Contact Info` es el texto fijo del botón y no se puede modificar

```shell theme={"theme":{"light":"github-light","dark":"github-dark"}}
curl 'https://api.ycloud.com/v2/whatsapp/templates' \
-H 'Content-Type: application/json' \
-H 'X-API-Key: {{YOUR-API-KEY}}' \
-d '{
  "wabaId": "{{WABA-ID}}",
  "name": "{{TEMPLATE_NAME}}",
  "language": "en",
  "category": "utility",
  "components": [
    {
      "type": "body",
      "text": "<BODY_TEXT>"
    },
    {
      "type": "buttons",
      "buttons": [
        {
          "type": "REQUEST_CONTACT_INFO",
          "text": "Share Contact Info"
        }
      ]
    }
  ]
}'
```

#### Respuesta

Una solicitud exitosa devuelve el recurso de la plantilla y su estado de revisión actual.

```json theme={"theme":{"light":"github-light","dark":"github-dark"}}
{
  "wabaId": "WABA_ID",
  "name": "TEMPLATE_NAME",
  "language": "en_US",
  "category": "UTILITY",
  "status": "PENDING"
}
```

Utiliza el `status` devuelto para determinar si la plantilla se puede enviar.

<br />

#### Explicación

Mantén los componentes de la plantilla coherentes con su categoría y espera a que tenga un estado aprobado antes de enviarla.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.