> ## 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.

# Exemplos de criação de modelos do WhatsApp

> Crie modelos de autenticação, utilidade, marketing, comércio, Flow e chamadas com exemplos de requisição anotados.

## O que é

Crie modelos de autenticação, utilidade, marketing, comércio, Flow e chamadas com exemplos de requisição anotados.

## Antes de começar

* Armazene uma chave de API da YCloud em um segredo no lado do servidor.
* Conecte a conta do WhatsApp Business e o número de telefone usados pela requisição.
* Crie e aprove qualquer modelo referenciado por uma requisição de mensagens.
* Substitua todos os espaços reservados por valores da sua própria conta.

## Como funciona

Escolha o cenário correspondente à mensagem ou modelo que deseja criar. Compare os campos com a Referência da API, substitua os espaços reservados e teste com um destinatário de teste antes de usar a requisição em produção.

## Requisição

Cada cenário inclui uma requisição completa de criação de modelo. Escolha a categoria do modelo e a estrutura de componentes que atendam ao seu caso de uso.

## Resposta

Uma resposta bem-sucedida retorna o recurso do modelo resultante e seu status atual. Alguns modelos exigem análise da Meta antes de poderem ser enviados.

<Note>
  Use [Gerenciar modelos do WhatsApp](/pt/api-reference/guides/whatsapp-platform/manage-whatsapp-templates)
  para planejar propriedade, versões, localidades, etapas de análise, lançamento e desativação.
  Use o [guia de mensagens do WhatsApp](/pt/api-reference/guides/whatsapp-platform/send-whatsapp-message) para entender o comportamento de envio
  e a Referência da API para obter o esquema completo.
</Note>

## Escolha um exemplo

<CardGroup cols={2}>
  <Card title="Modelos de autenticação" icon="shield-check" href="#authentication-template-with-copy-code-button">
    Crie modelos de verificação com botão de copiar código, um toque (one-tap) e sem toque (zero-tap).
  </Card>

  <Card title="Modelos de marketing" icon="bullhorn" href="#marketing-template-with-image-and-quick-reply-buttons">
    Crie modelos com mídia, ofertas, carrossel, cupons e links diretos.
  </Card>

  <Card title="Modelos de comércio" icon="cart-shopping" href="#catalog-template">
    Crie modelos de catálogo, multiproduto, pedido e checkout.
  </Card>

  <Card title="Flows e chamadas" icon="diagram-project" href="#flow-template">
    Crie modelos que iniciam Flows ou chamadas do WhatsApp.
  </Card>
</CardGroup>

### Modelo de autenticação com botão Copiar código

Neste caso, você cria um modelo de autenticação com um botão Copiar código:

* Usa o texto fixo *\<VERIFICATION\_CODE> is your verification code.* definindo `language` como `en_US`. Consulte também [Idiomas suportados](https://developers.facebook.com/docs/whatsapp/api/messages/message-templates#supported-languages) para todos os códigos.
* Adiciona aviso de segurança ao final do texto.
* Contém aviso de expiração no rodapé.

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

#### Requisição

```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"
        }
      ]
    }
  ]
}'
```

#### Resposta

Retorna o corpo do texto e os botões reais do modelo. O modelo é aprovado automaticamente (`status` é `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"
          ]
        }
      ]
    }
  ]
}
```

#### Explicação

* Modelos de autenticação com botões OTP consistem em:
  * **Texto predefinido** fixo: *\<VERIFICATION\_CODE> is your verification code.*
  * Um **aviso de segurança** opcional: *For your security, do not share this code.*
  * Um **aviso de expiração** opcional: *This code expires in\<NUM\_MINUTES> minutes.*
  * Um botão para **copiar código** , um botão de **preenchimento automático com um toque** , ou nenhum botão se for usado o método **sem toque (zero-tap)**.
* O texto do botão Copiar código é opcional. Se for omitido, o texto adotará como padrão um valor pré-definido localizado para o idioma do modelo. Por exemplo, *Copy Code* para inglês (EUA).
* URLs, mídias e emojis não são suportados. Como os modelos de autenticação com botões OTP contêm apenas texto e botões pré-definidos, o risco de serem pausados é significativamente minimizado.
* Se não for possível entregar uma mensagem por um tempo superior ao seu time-to-live (TTL), interromperemos as tentativas e descartaremos a mensagem. Por padrão, as mensagens que usam um modelo de autenticação têm um TTL padrão de **10 minutos**, e as mensagens que usam um modelo de utilidade ou marketing têm um TTL padrão de **30 dias**.<br />
  Defina o valor entre `30` e `900` segundos (ou seja, de 30 segundos a 15 minutos) para modelos de autenticação, entre `30` e `43200` segundos (ou seja, de 30 segundos a 12 horas) para modelos de utilidade, ou entre `43200` e `2592000` segundos (ou seja, de 12 horas a 30 dias) para modelos de marketing. Como alternativa, você pode definir esse valor como `-1`, o que definirá um TTL personalizado de 30 dias para qualquer um dos tipos de modelo.
* Consulte também o envio de uma [mensagem de modelo de autenticação](/pt/api-reference/guides/examples/api-examples/whatsapp-messaging-examples#authentication-template-message-with-one-time-password-buttons).

### Modelo de autenticação com botão de um toque

Neste caso, você cria um modelo de autenticação com um botão de um toque:

* Usa o texto fixo *\<VERIFICATION\_CODE> is your verification code.* definindo `language` como `en_US`.
* Adiciona aviso de segurança ao final do texto.
* Contém aviso de expiração no rodapé.
* Contém o texto do botão de copiar código e o texto do botão de um toque.
* Especifica o nome do pacote e o hash de assinatura do seu aplicativo Android.

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

#### Requisição

```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"
            }
          ]
        }
      ]
    }
  ]
}'
```

#### Resposta

Retorna o corpo do texto e os botões reais do modelo. O modelo é aprovado automaticamente (`status` é `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"
          ]
        }
      ]
    }
  ]
}
```

#### Explicação

* os botões de um toque (one-tap) são a solução preferida, pois oferecem a melhor experiência do usuário. No entanto, os botões de um toque atualmente são suportados apenas no Android e exigem alterações no código do seu aplicativo para realizar um "handshake", além do hash da chave de assinatura do seu aplicativo. Consulte [Hash da Chave de Assinatura do Aplicativo](https://developers.facebook.com/docs/whatsapp/business-management-api/authentication-templates/zero-tap-authentication-templates#app-signing-key-hash) e [Handshake](https://developers.facebook.com/docs/whatsapp/business-management-api/authentication-templates/autofill-button-authentication-templates#handshake).
* Se não conseguirmos validar seu handshake, a mensagem de modelo de autenticação exibirá um botão de copiar código com este texto em substituição.
* O texto de Copiar Código e o texto de Preenchimento Automático são opcionais. Se forem omitidos, o texto assumirá um valor padrão predefinido e localizado no idioma do modelo.
* Consulte também como enviar uma [mensagem de modelo de autenticação](/pt/api-reference/guides/examples/api-examples/whatsapp-messaging-examples#authentication-template-message-with-one-time-password-buttons).

### Modelo de autenticação com zero toque (zero-tap)

Modelos de autenticação com zero toque permitem que seus usuários recebam senhas ou códigos descartáveis via WhatsApp sem precisar sair do seu aplicativo.

Quando um usuário no seu aplicativo solicita uma senha ou código e você o entrega usando um modelo de autenticação com zero toque, o cliente do WhatsApp simplesmente transmite a senha ou código incluído e seu aplicativo pode capturá-lo imediatamente com um broadcast receiver.

Do ponto de vista do usuário, ele solicita uma senha ou código no seu aplicativo e ele aparece no aplicativo automaticamente. Se o usuário do aplicativo abrir e verificar a mensagem no cliente do WhatsApp, verá apenas uma mensagem exibindo o texto fixo padrão: *\<code> é o seu código de verificação.*

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

#### Requisição

```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
        }
      ]
    }
  ]
}'
```

#### Resposta

Retorna o texto do corpo real do modelo e os botões. Aprovou o modelo automaticamente (`status` é `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"
          ]
        }
      ]
    }
  ]
}
```

#### Explicação

* O zero toque é suportado apenas no Android. Se você enviar um modelo de autenticação com zero toque para um usuário do WhatsApp que esteja usando um dispositivo não Android, o cliente do WhatsApp exibirá um botão de copiar código em substituição. Consulte [Hash da Chave de Assinatura do Aplicativo](https://developers.facebook.com/docs/whatsapp/business-management-api/authentication-templates/zero-tap-authentication-templates#app-signing-key-hash) e [Handshake](https://developers.facebook.com/docs/whatsapp/business-management-api/authentication-templates/zero-tap-authentication-templates#handshake).
* O texto de Copiar Código e o texto de Preenchimento Automático são opcionais. Se forem omitidos, o texto assumirá um valor padrão predefinido e localizado no idioma do modelo.
* Consulte também como enviar uma [mensagem de modelo de autenticação](/pt/api-reference/guides/examples/api-examples/whatsapp-messaging-examples#authentication-template-message-with-one-time-password-buttons).

### Modelo de utilidade com variáveis no corpo

Neste caso, você cria um modelo para notificações de confirmação de pedido:

* Contém texto com 3 variáveis no corpo.
* Sem cabeçalho.
* Sem rodapé.
* Sem botões.

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

#### Requisição

```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"
          ]
        ]
      }
    }
  ]
}'
```

#### Resposta

Uma solicitação bem-sucedida retorna o recurso do modelo e seu status atual de análise.

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

Use o `status` retornado para decidir se o modelo pode ser enviado.

#### Explicação

* Um modelo consiste nos componentes `HEADER`, `BODY`, `FOOTER` e `BUTTONS`. O componente `BODY` é obrigatório, enquanto os outros são opcionais.
* As variáveis do modelo são marcadores de posição (números entre chaves) usados para enviar mensagens, como `{{1}}`. Você pode substituir esses marcadores por valores reais ao enviar mensagens. Para obter um exemplo de como usar variáveis ao enviar mensagens `template`, consulte também [Exemplos de Mensagens do WhatsApp](/pt/api-reference/guides/examples/api-examples/whatsapp-messaging-examples).
* Os parâmetros de variáveis devem ser sequenciais em cada componente do modelo. Por exemplo, é inválido que `{{1}}`, `{{2}}`, `{{4}}`, `{{5}}` estejam definidos, mas `{{3}}` não exista.
* Se não conseguirmos entregar uma mensagem por um período que exceda seu tempo de vida (time-to-live), deixaremos de tentar novamente e descartaremos a mensagem. Por padrão, mensagens que usam um modelo de autenticação têm um TTL padrão de **10 minutos**, e mensagens que usam um modelo de utilidade ou marketing têm um TTL padrão de **30 dias**.<br />
  Defina seu valor entre `30` e `900` segundos (ou seja, de 30 segundos a 15 minutos) para modelos de autenticação, ou entre `30` e `43200` segundos (ou seja, de 30 segundos a 12 horas) para modelos de utilidade, ou entre `43200` e `2592000` segundos (ou seja, de 12 horas a 30 dias) para modelos de marketing. Como alternativa, você pode definir esse valor como `-1`, o que definirá um TTL personalizado de 30 dias para qualquer tipo de modelo.
* Consulte também [Motivos Comuns de Rejeição](https://developers.facebook.com/docs/whatsapp/message-templates/guidelines#common-rejection-reasons).
* Consulte também como enviar uma [mensagem de modelo com variáveis](/pt/api-reference/guides/examples/api-examples/whatsapp-messaging-examples#template-message-with-variables).

### Modelo de marketing com imagem e botões de Resposta Rápida

Neste caso, você cria um modelo para uma campanha específica:

* Contém uma imagem no cabeçalho.
* Contém texto com 1 variável no corpo.
* Contém texto no rodapé.
* Contém 2 botões de Resposta Rápida.

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

#### Requisição

```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"
        }
      ]
    }
  ]
}'
```

#### Resposta

Uma solicitação bem-sucedida retorna o recurso do modelo e seu status atual de análise.

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

Use o `status` retornado para decidir se o modelo pode ser enviado.

#### Explicação

* O formato do componente `HEADER` pode ser `TEXT`, `IMAGE`, `VIDEO` ou `DOCUMENT`. Para `TEXT`, você precisa fornecer um texto de exemplo em `example.header_text`. Para os outros formatos de mídia, ou seja, `IMAGE`, `VIDEO` ou `DOCUMENT`, você precisa fornecer uma URL de exemplo em `example.header_url`.
* O componente `FOOTER` pode conter apenas texto, e variáveis não são suportadas.
* Para mídia de imagem no cabeçalho, a `example.header_url` da solicitação de envio de mensagem deve terminar com `.jpg`, `.jpeg` ou `.png`. O limite de tamanho da imagem é de 5 MB.
* Para mídia de vídeo no cabeçalho, a `example.header_url` do payload da solicitação deve terminar com `.mp4`. O limite de tamanho do vídeo é de 16 MB.
* Para mídia de documento no cabeçalho, a `example.header_url` do payload da solicitação deve terminar com `.pdf`. O limite de tamanho do documento é de 100 MB.
* Os botões são componentes interativos opcionais que realizam ações específicas quando tocados. Os modelos podem ter uma combinação de até 10 componentes de botão no total, embora haja limites para botões individuais do mesmo tipo, bem como limites de combinação.
* Os botões de resposta rápida são botões personalizados somente de texto que enviam imediatamente uma mensagem com a string de texto especificada quando tocados pelo usuário do app. Os modelos são limitados a 10 botões de resposta rápida. Se você usar botões de resposta rápida com outros botões, eles deverão ser organizados em dois grupos: botões de resposta rápida e botões que não são de resposta rápida. Se forem agrupados incorretamente, a API retornará um erro indicando uma combinação inválida.

  Exemplos de agrupamentos válidos:

  * Resposta rápida, Resposta rápida
  * Resposta rápida, Resposta rápida, URL, Telefone
  * URL, Telefone, Resposta rápida, Resposta rápida

  Exemplos de agrupamentos inválidos:

  * Resposta rápida, URL, Resposta rápida
  * URL, Resposta rápida, URL
* Se um modelo tiver mais de três botões, dois botões aparecerão na mensagem entregue e os botões restantes serão substituídos por um botão Ver todas as opções. Tocar no botão Ver todas as opções revela os botões restantes.<br />
  ![](https://oss-ycloud-publicread.oss-ap-southeast-1.aliyuncs.com/api-docs/sample/example-buttons-seealloptions.webp)
* Consulte também como enviar uma [mensagem de modelo com imagem e botões de resposta rápida](/pt/api-reference/guides/examples/api-examples/whatsapp-messaging-examples#template-message-with-image-and-quick-reply-buttons).

### Modelo de marketing com vídeo e botões de chamada para ação

Neste caso, você cria um modelo para uma campanha específica:

* Contém um vídeo no cabeçalho.
* Contém texto com 1 variável no corpo.
* Contém texto no rodapé.
* Contém 2 botões de chamada para ação: 1 botão `PHONE_NUMBER` e 1 botão `URL`. O botão `URL` pode ter no máximo 1 variável no final da URL.

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

#### Solicitação

```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"
        }
      ]
    }
  ]
}'
```

#### Resposta

Uma solicitação bem-sucedida retorna o recurso do modelo e seu status atual de análise.

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

Use o `status` retornado para decidir se o modelo pode ser enviado.

#### Explicação

* Os botões de número de telefone ligam para o número de telefone comercial especificado quando tocados pelo usuário do app. Os modelos são limitados a um botão de número de telefone.
* Os botões de URL carregam a URL especificada no navegador web padrão do dispositivo quando tocados pelo usuário do app. Os modelos são limitados a dois botões de URL.
* **Ao definir um botão dinâmico de `URL`, que contém uma variável no final da URL, você deve fornecer uma URL completa em `example` em vez de apenas um valor de exemplo para a variável.**
* Consulte também como enviar uma [mensagem de modelo com vídeo e botões de chamada para ação](/pt/api-reference/guides/examples/api-examples/whatsapp-messaging-examples#template-message-with-video-and-call-to-action-buttons).

### Modelo de cupom

Os modelos de código de cupom são modelos de marketing que exibem um único botão de copiar código. Quando tocado, o código é copiado para a área de transferência do cliente.

Neste caso, você cria um modelo de código de cupom para uma campanha específica:

* Contém texto com 2 variáveis no corpo.
* Contém um botão de copiar código para permitir que o cliente copie o código do cupom.

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

#### Solicitação

```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"
          ]
        }
      ]
    }
  ]
}'
```

#### Resposta

Uma solicitação bem-sucedida retorna o recurso do modelo e seu status atual de análise.

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

Use o `status` retornado para decidir se o modelo pode ser enviado.

#### Explicação

* Os botões de copiar código copiam uma string de texto (definida quando o modelo é enviado em uma mensagem de modelo) para a área de transferência do dispositivo quando tocados pelo usuário do app. Os modelos são limitados a um botão de copiar código.
* O texto do botão é um valor predefinido e não pode ser personalizado.
* Consulte também como enviar uma [mensagem de modelo de cupom](/pt/api-reference/guides/examples/api-examples/whatsapp-messaging-examples#coupon-template-message).

### Modelo de localização

Você pode adicionar um cabeçalho de localização em modelos categorizados como `UTILITY` ou `MARKETING`. Os cabeçalhos de localização aparecem como mapas genéricos no topo do modelo e são úteis para rastreamento de pedidos, atualizações de entrega, embarque/desembarque em viagens, localização de lojas físicas, etc.

#### Solicitação

```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"
    }
  ]
}'
```

#### Resposta

Uma solicitação bem-sucedida retorna o recurso do modelo e seu status atual de análise.

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

Use o `status` retornado para decidir se o modelo pode ser enviado.

#### Explicação

* Forneça a longitude e a latitude da localização ao enviar este modelo. Consulte também [mensagem de modelo de localização](/pt/api-reference/guides/examples/api-examples/whatsapp-messaging-examples#location-template-message).

### Modelo de oferta por tempo limitado

Neste caso, você cria um modelo de oferta por tempo limitado (LTO) para uma campanha específica:

* Contém uma imagem no cabeçalho.
* Exibe datas de validade e contadores regressivos em execução para o código da oferta.
* Contém texto com 2 variáveis no corpo.
* Contém 2 botões: 1 botão `COPY_CODE` e 1 botão `URL`.

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

#### Requisição

```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"
          ]
        }
      ]
    }
  ]
}'
```

#### Resposta

Uma requisição bem-sucedida retorna o recurso do modelo e seu status de análise atual.

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

Use o `status` retornado para decidir se o modelo pode ser enviado.

#### Explicação

* Apenas modelos categorizados como `MARKETING` são suportados.
* Componentes de rodapé não são suportados.
* Os usuários que visualizarem uma mensagem de modelo de oferta por tempo limitado usando o aplicativo web ou desktop do WhatsApp não verão a oferta, mas verão uma mensagem indicando que receberam uma mensagem que não é suportada no cliente que estão utilizando.
* Consulte também como enviar uma [mensagem de modelo de oferta por tempo limitado](/pt/api-reference/guides/examples/api-examples/whatsapp-messaging-examples#limited-time-offer-template-message).

### Modelo de carrossel

Neste caso, você cria um modelo de carrossel para uma campanha específica:

* Contém texto com 2 variáveis no corpo.
* Contém 2 cartões de carrossel em uma visualização com rolagem horizontal.

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

#### Requisição

```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"
                  ]
                }
              ]
            }
          ]
        }
      ]
    }
  ]
}'
```

#### Resposta

Uma requisição bem-sucedida retorna o recurso do modelo e seu status de análise atual.

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

Use o `status` retornado para decidir se o modelo pode ser enviado.

#### Explicação

* Um balão de mensagem é obrigatório. Os balões de mensagem são somente texto e suportam variáveis. Não há limite máximo de caracteres para variáveis, mas isso conta contra o limite de 1024 caracteres do balão de mensagem.
* O texto do corpo do cartão suporta variáveis. Máximo de 160 caracteres.
* Os modelos de carrossel suportam até 10 cartões de carrossel. Os cartões devem ter um cabeçalho de mídia (imagem ou vídeo), texto de corpo e pelo menos um botão. Suporta 2 botões. Os botões podem ser iguais ou uma combinação de botões de resposta rápida, botões de número de telefone ou botões de URL.
* O formato do cabeçalho de mídia e os botões devem ser iguais em todos os cartões que compõem um modelo de carrossel.
* Os recursos de mídia serão recortados em uma proporção ampla de acordo com o dispositivo do cliente.
* Consulte também como enviar uma [mensagem de modelo de carrossel](/pt/api-reference/guides/examples/api-examples/whatsapp-messaging-examples#carousel-template-message).

### Modelo de catálogo

Os modelos de catálogo são modelos de marketing que permitem exibir seu catálogo de produtos inteiramente dentro do WhatsApp. Os modelos de catálogo exibem uma imagem de cabeçalho com miniatura de produto de sua escolha e texto de corpo personalizado, além de um cabeçalho de texto fixo e um subtítulo de texto fixo.

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

Quando um cliente toca no botão **Ver catálogo** em uma mensagem de modelo de catálogo, seu catálogo de produtos aparece dentro do WhatsApp.

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

#### Requisição

```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"
        }
      ]
    }
  ]
}'
```

#### Resposta

Uma requisição bem-sucedida retorna o recurso do modelo e seu status de análise atual.

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

Use o `status` retornado para decidir se o modelo pode ser enviado.

#### Explicação

* Você deve ter o [inventário carregado na Meta](https://developers.facebook.com/docs/whatsapp/cloud-api/guides/sell-products-and-services/upload-inventory) em um catálogo de e-commerce [conectado à sua conta do WhatsApp Business](https://www.facebook.com/business/help/158662536425974).
* Habilite o carrinho de compras e o catálogo de produtos para cada número de telefone comercial. Por padrão, o carrinho de compras fica habilitado e o ícone da loja fica oculto para todos os números de telefone comerciais associados a uma conta do WhatsApp Business. Use o endpoint [Atualizar configurações de comércio](https://docs.ycloud.com/reference/whatsapp_phone_number-update-commerce-settings) para habilitar ou desabilitar esses recursos.
* O texto para botões `CATALOG` não pode ser modificado e deve ser sempre **View catalog**.
* Consulte também como enviar uma [mensagem de modelo de catálogo](/pt/api-reference/guides/examples/api-examples/whatsapp-messaging-examples#catalog-template-message).

### Modelo de Mensagem de Vários Produtos (MPM)

Os modelos de MPM podem ser usados para iniciar conversas de marketing. Eles permitem exibir até 30 produtos do seu catálogo de e-commerce, organizados em até 10 seções, em uma única mensagem.

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

Os clientes podem navegar por produtos e seções dentro da mensagem, visualizar detalhes de cada produto, adicionar e remover produtos do carrinho e enviar o carrinho para fazer um pedido. Os pedidos são enviados para você via webhook.

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

#### Requisição

```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"
        }
      ]
    }
  ]
}'
```

#### Resposta

Uma requisição bem-sucedida retorna o recurso do modelo e seu status de análise atual.

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

Use o `status` retornado para decidir se o modelo pode ser enviado.

#### Explicação

* Você deve ter o [inventário carregado na Meta](https://developers.facebook.com/docs/whatsapp/cloud-api/guides/sell-products-and-services/upload-inventory) em um catálogo de e-commerce [conectado à sua conta do WhatsApp Business](https://www.facebook.com/business/help/158662536425974).
* Habilite o carrinho de compras e o catálogo de produtos para cada número de telefone comercial. Por padrão, o carrinho de compras fica habilitado e o ícone da loja fica oculto para todos os números de telefone comerciais associados a uma conta do WhatsApp Business. Use o endpoint [Atualizar configurações de comércio](https://docs.ycloud.com/reference/whatsapp_phone_number-update-commerce-settings) para habilitar ou desabilitar esses recursos.
* O valor de `components` deve ser um array de objetos que descrevem cada componente que compõe o modelo. Os modelos de MPM devem ter os seguintes componentes:
  * um único componente de cabeçalho
  * um único componente de corpo
  * um único componente de rodapé (opcional)
  * um único componente de botão de MPM
* O texto para botões `MPM` não pode ser modificado e deve ser sempre **View items**.
* Veja também como enviar uma [mensagem de modelo MPM](/pt/api-reference/guides/examples/api-examples/whatsapp-messaging-examples#mpm-template-message).

### Modelo de Flow

O [WhatsApp Flows](https://developers.facebook.com/docs/whatsapp/flows) é uma forma de criar interações estruturadas para mensagens empresariais. Com os Flows, as empresas podem definir, configurar e personalizar mensagens com interações avançadas que proporcionam aos clientes mais estrutura na forma de se comunicar.

Você pode usar Flows para gerar leads, recomendar produtos, obter novos leads de vendas ou para qualquer outra situação em que a comunicação estruturada seja mais natural ou confortável para os seus clientes.

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

#### Requisição

```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"
        }
      ]
    }
  ]
}'
```

#### Resposta

Uma requisição bem-sucedida retorna o recurso de modelo e seu status atual de análise.

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

Use o `status` retornado para decidir se o modelo pode ser enviado.

#### Explicação

* Para usar o [WhatsApp Flows](https://developers.facebook.com/docs/whatsapp/flows), você precisará [verificar sua empresa](https://developers.facebook.com/docs/development/release/business-verification), concluir o [processo de análise do nome de exibição](https://developers.facebook.com/docs/whatsapp/cloud-api/phone-numbers#display-names) e manter uma [alta qualidade de mensagens](https://developers.facebook.com/docs/whatsapp/messaging-limits#messaging-quality).
* Você precisará de um Flow ID para criar o modelo. Para criar um novo WhatsApp Flow usando a interface do construtor de flows, consulte [este vídeo](https://www.youtube.com/watch?v=gx_QGaSLoOA).
* Para enviar uma mensagem de modelo de Flow, consulte [Mensagem de modelo de Flow](/pt/api-reference/guides/examples/api-examples/whatsapp-messaging-examples#flow-template-message).

### Modelo de Detalhes do Pedido

O modelo de mensagem de detalhes do pedido é um dos modelos de mensagem interativos que estende o botão de call-to-action para permitir o envio de detalhes do pedido como modelo, oferecendo uma experiência mais rica em comparação aos modelos de mensagem padrão.

O modelo de detalhes do pedido é categorizado como modelo `UTILITY` e, além do nome e idioma de sua escolha, possui componentes gerais de modelo como `HEADER`, `BODY`, `FOOTER` e um `BUTTON` fixo com tipo `ORDER_DETAILS` e texto `Review and Pay`.

#### Requisição

```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"
        }
      ]
    }
  ]
}'
```

#### Resposta

Uma requisição bem-sucedida retorna o recurso de modelo e seu status atual de análise.

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

Use o `status` retornado para decidir se o modelo pode ser enviado.

#### Explicação

* Deve conter um botão onde `type` é `ORDER_DETAILS` e `text` é `Review and Pay`.
* Veja também como enviar uma [mensagem de modelo de Detalhes do Pedido](/pt/api-reference/guides/examples/api-examples/whatsapp-messaging-examples#order-details-template-message).

### Modelo de Status do Pedido

O modelo de status do pedido é um dos modelos de mensagem interativos que estende o botão de call-to-action para permitir a atualização do status do pedido por meio de um modelo. Ele possibilita que as empresas atualizem o status do pedido fora da janela de sessão do cliente em casos de uso como cobrança no cartão referente a um pedido anterior ou atualização sobre o envio de um pedido feito no passado.

#### Requisição

```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"
    }
  ]
}'
```

#### Resposta

Uma requisição bem-sucedida retorna o recurso de modelo e seu status atual de análise.

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

Use o `status` retornado para decidir se o modelo pode ser enviado.

#### Explicação

* Deve definir `category` como `UTILITY`, e `subCategory` como `ORDER_STATUS`.
* Veja também como enviar uma [mensagem de modelo de Status do Pedido](/pt/api-reference/guides/examples/api-examples/whatsapp-messaging-examples#order-status-template-message).

### Modelo de Chamada de Voz

Suporta um novo tipo de botão `VOICE_CALL` que aciona uma chamada do WhatsApp quando clicado por um consumidor do WhatsApp. Em geral, esse botão pode ser usado em qualquer lugar onde o botão de número de telefone existente for permitido.

#### Requisição

```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"
        }
      ]
    }
  ]
}'
```

#### Resposta

Uma requisição bem-sucedida retorna o recurso de modelo e seu status atual de análise.

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

Use o `status` retornado para decidir se o modelo pode ser enviado.

#### Explicação

* Depois de criar um modelo com o botão de chamada de voz do WhatsApp, você pode usar a API existente sem alterações porque o botão `voice_call` não é configurável no momento do envio da mensagem.
* Veja também como enviar uma [mensagem interativa de Chamada de Voz](/pt/api-reference/guides/examples/api-examples/whatsapp-messaging-examples#interactive-voice-call-message)

<br />

### Modelo de botão de checkout

Os modelos de botão de checkout são modelos de marketing que podem exibir um ou mais produtos juntamente com os botões de checkout correspondentes, permitindo que os usuários do WhatsApp realizem compras sem sair do aplicativo WhatsApp. Os modelos de botão de checkout podem exibir um cabeçalho com uma única imagem ou vídeo do produto, além do texto do corpo da mensagem, rodapé da mensagem, um único botão de checkout e até 9 botões de resposta rápida.

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

Os usuários do WhatsApp que tocarem no botão verão os detalhes do pedido:

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

Os usuários podem prosseguir selecionando as informações de envio fornecidas por você (caso você conheça essas informações e as tenha incluído no payload de envio da mensagem)...

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

ou podem adicionar suas próprias informações de envio:

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

#### Requisição

Este exemplo de requisição cria um modelo de botão de checkout com cabeçalho de mensagem de imagem única, texto do corpo da mensagem que usa duas variáveis, um rodapé, um único botão de checkout e um botão de resposta 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"
        }
      ]
    }
  ]
}'
```

#### Resposta

Uma requisição bem-sucedida retorna o recurso de modelo e seu status atual de análise.

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

Use o `status` retornado para decidir se o modelo pode ser enviado.

<br />

#### Explicação

Mantenha os componentes do modelo consistentes com sua categoria e aguarde um status aprovado antes de enviá-lo.

### Modelo de solicitação de permissão de chamada

Se você deseja fazer uma chamada para um usuário do WhatsApp, sua empresa deve primeiro receber a permissão do usuário. Quando um usuário do WhatsApp concede permissões de chamada, elas podem ser temporárias ou permanentes.

A empresa não tem controle sobre essa permissão, pois ela é concedida apenas pelo usuário e pode ser revogada apenas pelo usuário, a qualquer momento. Os dados de permissão permanente serão armazenados até que sejam revogados.

Você pode obter a permissão de chamada de um usuário do WhatsApp de qualquer uma das seguintes maneiras:

1. Enviar uma solicitação de permissão de chamada para o usuário — Envie uma mensagem de formato livre ou baseada em modelo solicitando a permissão de chamada do usuário. O usuário tem a opção de escolher entre temporária ou permanente.
2. A permissão de retorno de chamada é fornecida pelo usuário do WhatsApp — O usuário do WhatsApp fornece automaticamente permissões de chamada temporárias ao fazer uma chamada para a empresa. A configuração de retorno de chamada deve estar habilitada no número de telefone da empresa.
3. O usuário do WhatsApp fornece permissão de chamada via Perfil Comercial — O usuário do WhatsApp fornece permissões de chamada para a empresa por meio do perfil comercial dela.

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

#### Requisição

A seguir está um exemplo de criação de um tipo de modelo de solicitação de permissão de chamada

```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"
    }
  ]
}'
```

#### Resposta

Uma solicitação bem-sucedida retorna o recurso do modelo e seu status atual de análise.

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

Use o `status` retornado para decidir se o modelo pode ser enviado.

#### Explicação

Mantenha os componentes do modelo consistentes com sua categoria e aguarde um status aprovado antes de enviá-lo.

### Modelo de deep link para Android

Você pode mapear um deep link do Android para um botão de URL de modelo de marketing que, quando tocado, carrega um local ou conteúdo específico dentro do seu aplicativo.

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

#### Requisição

A seguir está um exemplo de criação de um modelo de deep link.

```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/"
          }
        }
      ]
    }
  ]
}'
```

#### Resposta

Uma solicitação bem-sucedida retorna o recurso do modelo e seu status atual de análise.

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

Use o `status` retornado para decidir se o modelo pode ser enviado.

#### Explicação

Mantenha os componentes do modelo consistentes com sua categoria e aguarde um status aprovado antes de enviá-lo.

### Modelo de marketing com gif

Neste caso, você cria um modelo para uma campanha específica:

* Contém um gif no cabeçalho.

![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)

#### Requisição

A seguir está um exemplo de criação de um modelo com 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"
    }
  ]
}'
```

#### Resposta

Uma solicitação bem-sucedida retorna o recurso do modelo e seu status atual de análise.

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

Use o `status` retornado para decidir se o modelo pode ser enviado.

<br />

#### Explicação

Mantenha os componentes do modelo consistentes com sua categoria e aguarde um status aprovado antes de enviá-lo.

### &#x20;Modelo de solicitação de número de telefone

Para adicionar um botão de solicitação de informações de contato a um modelo de utilidade ou marketing, inclua um botão REQUEST\_CONTACT\_INFO no array components ao criar o modelo:

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

#### Requisição

A seguir está um exemplo de criação de um modelo `REQUEST_CONTACT_INFO`

* `Share Contact Info` é o texto fixo do botão e não pode ser modificado

```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"
        }
      ]
    }
  ]
}'
```

#### Resposta

Uma solicitação bem-sucedida retorna o recurso do modelo e seu status atual de análise.

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

Use o `status` retornado para decidir se o modelo pode ser enviado.

<br />

#### Explicação

Mantenha os componentes do modelo consistentes com sua categoria e aguarde um status aprovado antes de enviá-lo.


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