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

# Примеры создания шаблонов WhatsApp

> Создавайте шаблоны аутентификации, сервисные, маркетинговые, коммерческие шаблоны, шаблоны Flow и шаблоны для звонков с аннотированными примерами запросов.

## Что это такое

Создавайте шаблоны аутентификации, сервисные, маркетинговые, коммерческие шаблоны, шаблоны Flow и шаблоны для звонков с аннотированными примерами запросов.

## Перед началом работы

* Сохраните API-ключ YCloud в секрете на стороне сервера.
* Подключите WhatsApp Business Account и номер телефона, используемый в запросе.
* Создайте и утвердите любой шаблон, на который ссылается запрос на отправку сообщений.
* Замените каждый плейсхолдер значением из вашего аккаунта.

## Как это работает

Выберите сценарий, соответствующий сообщению или шаблону, который вы хотите создать. Сравните его поля со Справочником API, замените плейсхолдеры и протестируйте на контролируемом получателе перед использованием запроса в рабочей среде.

## Запрос

Каждый сценарий включает полный запрос на создание шаблона. Выберите категорию шаблона и структуру компонентов, соответствующие вашему сценарию использования.

## Ответ

При успешном ответе возвращается созданный ресурс шаблона и его текущий статус. Некоторые шаблоны требуют проверки Meta перед их отправкой.

<Note>
  Используйте раздел [Управление шаблонами WhatsApp](/ru/api-reference/guides/whatsapp-platform/manage-whatsapp-templates)
  для планирования владения, версий, локалей, этапов проверки, развертывания и вывода из эксплуатации.
  Используйте [руководство по отправке сообщений WhatsApp](/ru/api-reference/guides/whatsapp-platform/send-whatsapp-message) для изучения поведения при отправке
  и Справочник API для получения полной схемы.
</Note>

## Выберите пример

<CardGroup cols={2}>
  <Card title="Шаблоны аутентификации" icon="shield-check" href="#authentication-template-with-copy-code-button">
    Создавайте шаблоны верификации с копированием кода, в одно касание и без касания.
  </Card>

  <Card title="Маркетинговые шаблоны" icon="bullhorn" href="#marketing-template-with-image-and-quick-reply-buttons">
    Создавайте шаблоны с медиафайлами, специальными предложениями, каруселями, купонами и диплинками.
  </Card>

  <Card title="Коммерческие шаблоны" icon="cart-shopping" href="#catalog-template">
    Создавайте шаблоны каталогов, нескольких товаров, заказов и оформления покупки.
  </Card>

  <Card title="Flows и звонки" icon="diagram-project" href="#flow-template">
    Создавайте шаблоны, запускающие Flows или звонки в WhatsApp.
  </Card>
</CardGroup>

### Шаблон аутентификации с кнопкой «Скопировать код»

В этом случае вы создаете шаблон аутентификации с кнопкой «Скопировать код»:

* Использует фиксированный текст *\<VERIFICATION\_CODE> is your verification code.* , задавая `language` значение `en_US`. См. также [Поддерживаемые языки](https://developers.facebook.com/docs/whatsapp/api/messages/message-templates#supported-languages) для всех кодов.
* Добавляет дисклеймер безопасности в конец текста.
* Содержит предупреждение об истечении срока действия в нижнем колонтитуле.

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

#### Запрос

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

#### Ответ

Возвращает фактический текст тела шаблона и кнопки. Шаблон утвержден автоматически (`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"
          ]
        }
      ]
    }
  ]
}
```

#### Пояснение

* Шаблоны аутентификации с OTP-кнопками состоят из:
  * Фиксированного **предустановленного текста**: *\<VERIFICATION\_CODE> is your verification code.*
  * Необязательного **дисклеймера безопасности**: *For your security, do not share this code.*
  * Необязательного **предупреждения об истечении срока действия**: *This code expires in\<NUM\_MINUTES> minutes.*
  * Либо кнопки **копирования кода** , либо кнопки **автозаполнения в одно касание** , либо вообще без кнопки при использовании режима **без касания (zero-tap)**.
* Текст кнопки «Скопировать код» указывать необязательно. Если он не задан, по умолчанию используется предустановленное значение, локализованное для языка шаблона. Например, *Copy Code* для английского языка (США).
* URL-адреса, медиафайлы и эмодзи не поддерживаются. Поскольку шаблоны аутентификации с OTP-кнопками состоят только из предустановленного текста и кнопок, риск их приостановки значительно снижается.
* Если мы не сможем доставить сообщение в течение времени, превышающего его время жизни (TTL), повторные попытки прекратятся, и сообщение будет отброшено. По умолчанию сообщения, использующие шаблон аутентификации, имеют TTL **10 минут**, а сообщения с сервисными или маркетинговыми шаблонами — TTL **30 дней**.<br />
  Задайте значение от `30` до `900` секунд (т. е. от 30 секунд до 15 минут) для шаблонов аутентификации, от `30` до `43200` секунд (т. е. от 30 секунд до 12 часов) для сервисных шаблонов или от `43200` до `2592000` секунд (т. е. от 12 часов до 30 дней) для маркетинговых шаблонов. Кроме того, можно установить значение `-1`, которое задаст пользовательский TTL в 30 дней для любого типа шаблона.
* См. также отправку [сообщения по шаблону аутентификации](/ru/api-reference/guides/examples/api-examples/whatsapp-messaging-examples#authentication-template-message-with-one-time-password-buttons).

### Шаблон аутентификации с кнопкой в одно касание

В этом случае вы создаете шаблон аутентификации с кнопкой в одно касание:

* Использует фиксированный текст *\<VERIFICATION\_CODE> is your verification code.* , задавая `language` значение `en_US`.
* Добавляет дисклеймер безопасности в конец текста.
* Содержит предупреждение об истечении срока действия в нижнем колонтитуле.
* Содержит текст кнопки копирования кода и текст кнопки в одно касание.
* Указывает имя пакета и хеш подписи вашего приложения для Android.

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

#### Запрос

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

#### Ответ

Возвращает фактический текст тела шаблона и кнопки. Шаблон утвержден автоматически (`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"
          ]
        }
      ]
    }
  ]
}
```

#### Пояснение

* Кнопки One-tap являются предпочтительным решением, так как обеспечивают наилучший пользовательский опыт. Однако в настоящее время кнопки one-tap поддерживаются только на Android и требуют изменений в коде вашего приложения для выполнения «рукопожатия» (handshake), а также хеша ключа подписи приложения. См. [Хеш ключа подписи приложения](https://developers.facebook.com/docs/whatsapp/business-management-api/authentication-templates/zero-tap-authentication-templates#app-signing-key-hash) и [Рукопожатие](https://developers.facebook.com/docs/whatsapp/business-management-api/authentication-templates/autofill-button-authentication-templates#handshake).
* Если нам не удастся проверить рукопожатие, в сообщении аутентификационного шаблона вместо этого отобразится кнопка копирования кода с этим текстом.
* Текст копирования кода и текст автозаполнения являются необязательными. Если они не указаны, по умолчанию будет использоваться предустановленное значение, локализованное для языка шаблона.
* См. также отправку [сообщения по аутентификационному шаблону](/ru/api-reference/guides/examples/api-examples/whatsapp-messaging-examples#authentication-template-message-with-one-time-password-buttons).

### Аутентификационный шаблон Zero-tap

Аутентификационные шаблоны Zero-tap позволяют вашим пользователям получать одноразовые пароли или коды через WhatsApp, не покидая вашего приложения.

Когда пользователь в вашем приложении запрашивает пароль или код и вы доставляете его с помощью аутентификационного шаблона zero-tap, клиент WhatsApp просто транслирует включенный пароль или код, а ваше приложение может немедленно перехватить его с помощью broadcast receiver.

С точки зрения пользователя: он запрашивает пароль или код в вашем приложении, и тот автоматически появляется там. Если пользователь приложения решит проверить сообщение в клиенте WhatsApp, он увидит только сообщение со стандартным фиксированным текстом: *\<code> is your verification code.*

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

#### Запрос

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

#### Ответ

Возвращает фактический текст тела шаблона и кнопки. Шаблон утверждается автоматически (`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"
          ]
        }
      ]
    }
  ]
}
```

#### Объяснение

* Режим Zero-tap поддерживается только на Android. Если вы отправите аутентификационный шаблон zero-tap пользователю WhatsApp, использующему устройство не на Android, клиент WhatsApp вместо этого отобразит кнопку копирования кода. См. [Хеш ключа подписи приложения](https://developers.facebook.com/docs/whatsapp/business-management-api/authentication-templates/zero-tap-authentication-templates#app-signing-key-hash) и [Рукопожатие](https://developers.facebook.com/docs/whatsapp/business-management-api/authentication-templates/zero-tap-authentication-templates#handshake).
* Текст копирования кода и текст автозаполнения являются необязательными. Если они не указаны, по умолчанию будет использоваться предустановленное значение, локализованное для языка шаблона.
* См. также отправку [сообщения по аутентификационному шаблону](/ru/api-reference/guides/examples/api-examples/whatsapp-messaging-examples#authentication-template-message-with-one-time-password-buttons).

### Сервисный шаблон с переменными в теле

В этом случае вы создаете шаблон для уведомлений о подтверждении заказа:

* Содержит текст с 3 переменными в теле.
* Без заголовка (header).
* Без нижнего колонтитула (footer).
* Без кнопок.

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

#### Запрос

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

#### Ответ

При успешном запросе возвращается ресурс шаблона и его текущий статус проверки.

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

Используйте возвращенный `status`, чтобы определить, можно ли отправлять шаблон.

#### Объяснение

* Шаблон состоит из компонентов `HEADER`, `BODY`, `FOOTER` и `BUTTONS`. Компонент `BODY` является обязательным, остальные — опциональными.
* Переменные шаблона — это плейсхолдеры (числа в фигурных скобках), используемые при отправке сообщений, такие как `{{1}}`. При отправке сообщений эти плейсхолдеры можно заменять фактическими значениями. Пример использования переменных при отправке сообщений `template` см. в разделе [Примеры сообщений WhatsApp](/ru/api-reference/guides/examples/api-examples/whatsapp-messaging-examples).
* Параметры переменных должны следовать последовательно в каждом компоненте шаблона. Например, недопустимо определять `{{1}}`, `{{2}}`, `{{4}}`, `{{5}}`, если `{{3}}` не существует.
* Если нам не удается доставить сообщение в течение времени, превышающего его срок жизни (TTL), мы прекращаем попытки и отменяем сообщение. По умолчанию сообщения с аутентификационным шаблоном имеют TTL **10 минут**, а сообщения с сервисным или маркетинговым шаблоном — TTL **30 дней**.<br />
  Установите значение от `30` до `900` секунд (т. е. от 30 секунд до 15 минут) для аутентификационных шаблонов, от `30` до `43200` секунд (т. е. от 30 секунд до 12 часов) для сервисных шаблонов или от `43200` до `2592000` секунд (т. е. от 12 часов до 30 дней) для маркетинговых шаблонов. Кроме того, можно установить значение `-1`, которое задает пользовательский TTL в 30 дней для любого типа шаблона.
* См. также [Распространенные причины отклонения](https://developers.facebook.com/docs/whatsapp/message-templates/guidelines#common-rejection-reasons).
* См. также отправку [шаблонного сообщения с переменными](/ru/api-reference/guides/examples/api-examples/whatsapp-messaging-examples#template-message-with-variables).

### Маркетинговый шаблон с изображением и кнопками Quick Reply

В этом случае вы создаете шаблон для конкретной кампании:

* Содержит изображение в заголовке.
* Содержит текст с 1 переменной в теле.
* Содержит текст в нижнем колонтитуле.
* Содержит 2 кнопки Quick Reply.

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

#### Запрос

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

#### Ответ

При успешном запросе возвращается ресурс шаблона и его текущий статус проверки.

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

Используйте возвращенный `status`, чтобы определить, можно ли отправлять шаблон.

#### Объяснение

* Формат компонента `HEADER` может быть одним из следующих: `TEXT`, `IMAGE`, `VIDEO` или `DOCUMENT`. Для `TEXT` необходимо указать пример текста в `example.header_text`. Для других форматов медиафайлов, а именно `IMAGE`, `VIDEO` или `DOCUMENT`, необходимо указать пример URL в `example.header_url`.
* Компонент `FOOTER` может быть только текстовым, переменные не поддерживаются.
* Для изображений в заголовке `example.header_url` в запросе на отправку сообщений должен оканчиваться на `.jpg`, `.jpeg` или `.png`. Ограничение по размеру изображения — 5 МБ.
* Для видео в заголовке `example.header_url` в теле запроса должен оканчиваться на `.mp4`. Ограничение по размеру видео — 16 МБ.
* Для документов в заголовке `example.header_url` в теле запроса должен оканчиваться на `.pdf`. Ограничение по размеру документа — 100 МБ.
* Кнопки — это необязательные интерактивные компоненты, выполняющие определенные действия при нажатии. Шаблоны могут содержать до 10 компонентов кнопок в сумме, однако существуют ограничения на количество отдельных кнопок одного типа, а также ограничения на комбинации.
* Кнопки быстрого ответа — это настраиваемые текстовые кнопки, которые при нажатии пользователем приложения мгновенно отправляют вам сообщение с указанной текстовой строкой. В шаблонах поддерживается до 10 кнопок быстрого ответа. При совместном использовании кнопок быстрого ответа с другими кнопками их необходимо организовать в две группы: кнопки быстрого ответа и прочие кнопки. При некорректной группировке API вернет ошибку недопустимой комбинации.

  Примеры допустимых группировок:

  * Быстрый ответ, Быстрый ответ
  * Быстрый ответ, Быстрый ответ, URL, Телефон
  * URL, Телефон, Быстрый ответ, Быстрый ответ

  Примеры недопустимых группировок:

  * Быстрый ответ, URL, Быстрый ответ
  * URL, Быстрый ответ, URL
* Если в шаблоне более трех кнопок, в доставленном сообщении отобразятся две кнопки, а остальные будут заменены кнопкой «Посмотреть все варианты». Нажатие на кнопку «Посмотреть все варианты» открывает оставшиеся кнопки.<br />
  ![](https://oss-ycloud-publicread.oss-ap-southeast-1.aliyuncs.com/api-docs/sample/example-buttons-seealloptions.webp)
* См. также руководство по отправке [шаблона сообщения с изображением и кнопками быстрого ответа](/ru/api-reference/guides/examples/api-examples/whatsapp-messaging-examples#template-message-with-image-and-quick-reply-buttons).

### Маркетинговый шаблон с видео и кнопками с призывом к действию

В этом примере создается шаблон для определенной кампании:

* Содержит видео в заголовке.
* Содержит текст с 1 переменной в теле сообщения.
* Содержит текст в нижнем колонтитуле.
* Содержит 2 кнопки с призывом к действию: 1 кнопку типа `PHONE_NUMBER` и 1 кнопку типа `URL`. Кнопка типа `URL` может содержать не более 1 переменной в конце URL.

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

#### Запрос

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

#### Ответ

Успешный запрос возвращает ресурс шаблона и его текущий статус модерации.

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

Используйте возвращенное значение `status`, чтобы определить, можно ли отправлять шаблон.

#### Пояснение

* Кнопки с номером телефона инициируют звонок на указанный номер компании при нажатии пользователем приложения. В шаблонах поддерживается не более одной кнопки с номером телефона.
* Кнопки с URL открывают указанный URL в веб-браузере по умолчанию на устройстве при нажатии пользователем приложения. В шаблонах поддерживается не более двух кнопок с URL.
* **При настройке динамической кнопки `URL`, содержащей переменную в конце URL, необходимо указать полный URL в поле `example`, а не только пример значения для переменной.**
* См. также руководство по отправке [шаблона сообщения с видео и кнопками с призывом к действию](/ru/api-reference/guides/examples/api-examples/whatsapp-messaging-examples#template-message-with-video-and-call-to-action-buttons).

### Шаблон с купоном

Шаблоны с промокодом — это маркетинговые шаблоны, содержащие одну кнопку копирования кода. При нажатии код копируется в буфер обмена клиента.

В этом примере создается шаблон с промокодом для определенной кампании:

* Содержит текст с 2 переменными в теле сообщения.
* Содержит кнопку копирования кода, позволяющую клиенту скопировать промокод.

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

#### Запрос

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

#### Ответ

Успешный запрос возвращает ресурс шаблона и его текущий статус модерации.

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

Используйте возвращенное значение `status`, чтобы определить, можно ли отправлять шаблон.

#### Пояснение

* Кнопки копирования кода копируют текстовую строку (задаваемую при отправке шаблона сообщения) в буфер обмена устройства при нажатии пользователем приложения. В шаблонах поддерживается не более одной кнопки копирования кода.
* Текст кнопки является фиксированным значением и не может быть изменен.
* См. также руководство по отправке [шаблона сообщения с купоном](/ru/api-reference/guides/examples/api-examples/whatsapp-messaging-examples#coupon-template-message).

### Шаблон с геопозицией

Вы можете добавить заголовок с геопозицией в шаблоны с категорией `UTILITY` или `MARKETING`. Заголовки с геопозицией отображаются в виде стандартной карты в верхней части шаблона и полезны для отслеживания заказов, обновления статуса доставки, посадки/высадки в сервисах такси, поиска розничных магазинов и т. д.

#### Запрос

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

#### Ответ

Успешный запрос возвращает ресурс шаблона и его текущий статус модерации.

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

Используйте возвращенное значение `status`, чтобы определить, можно ли отправлять шаблон.

#### Пояснение

* Укажите долготу и широту места при отправке этого шаблона. См. также [шаблон сообщения с геопозицией](/ru/api-reference/guides/examples/api-examples/whatsapp-messaging-examples#location-template-message).

### Шаблон предложения с ограниченным сроком действия

В этом примере создается шаблон предложения с ограниченным сроком действия (LTO) для определенной кампании:

* Содержит изображение в заголовке.
* Отображает даты окончания срока действия и таймер обратного отсчета для кода предложения.
* Содержит текст с 2 переменными в теле сообщения.
* Содержит 2 кнопки: 1 кнопку `COPY_CODE` и 1 кнопку `URL`.

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

#### Запрос

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

#### Ответ

Успешный запрос возвращает ресурс шаблона и его текущий статус проверки.

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

Используйте возвращенный параметр `status`, чтобы определить, можно ли отправлять шаблон.

#### Пояснение

* Поддерживаются только шаблоны с категорией `MARKETING`.
* Компоненты нижнего колонтитула (footer) не поддерживаются.
* Пользователи, просматривающие шаблонное сообщение с ограниченным по времени предложением через веб-версию или десктопное приложение WhatsApp, не увидят предложение; вместо этого они увидят сообщение о том, что сообщение получено, но не поддерживается в используемом клиенте.
* См. также отправку [шаблонного сообщения с ограниченным по времени предложением](/ru/api-reference/guides/examples/api-examples/whatsapp-messaging-examples#limited-time-offer-template-message).

### Шаблон «Карусель»

В этом случае вы создаете шаблон карусели для определенной кампании:

* Содержит текст с 2 переменными в теле сообщения.
* Содержит 2 карточки карусели с горизонтальной прокруткой.

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

#### Запрос

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

#### Ответ

Успешный запрос возвращает ресурс шаблона и его текущий статус проверки.

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

Используйте возвращенный параметр `status`, чтобы определить, можно ли отправлять шаблон.

#### Пояснение

* Текстовый блок сообщения обязателен. Текстовые блоки содержат только текст и поддерживают переменные. Максимального ограничения по количеству символов для переменных нет, однако они учитываются в общем лимите текстового блока в 1024 символа.
* Текст тела карточки поддерживает переменные. Максимум 160 символов.
* Шаблоны карусели поддерживают до 10 карточек. Карточки должны иметь медиазаголовок (изображение или видео), текст тела и как минимум одну кнопку. Поддерживается до 2 кнопок. Кнопки могут быть одинаковыми или сочетать кнопки быстрого ответа, кнопки с номером телефона или кнопки с URL.
* Формат медиазаголовка и кнопки должны быть одинаковыми во всех карточках, составляющих шаблон карусели.
* Медиафайлы будут обрезаны до широкого формата в зависимости от устройства клиента.
* См. также отправку [шаблонного сообщения с каруселью](/ru/api-reference/guides/examples/api-examples/whatsapp-messaging-examples#carousel-template-message).

### Шаблон «Каталог»

Шаблоны каталога — это маркетинговые шаблоны, которые позволяют демонстрировать каталог товаров прямо в WhatsApp. Шаблоны каталога отображают миниатюру товара в заголовке по вашему выбору и пользовательский текст тела, а также фиксированный текстовый заголовок и фиксированный текстовый подзаголовок.

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

Когда клиент нажимает кнопку **Посмотреть каталог** в шаблонном сообщении каталога, каталог товаров открывается прямо в WhatsApp.

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

#### Запрос

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

#### Ответ

Успешный запрос возвращает ресурс шаблона и его текущий статус проверки.

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

Используйте возвращенный параметр `status`, чтобы определить, можно ли отправлять шаблон.

#### Пояснение

* У вас должны быть [товары, загруженные в Meta](https://developers.facebook.com/docs/whatsapp/cloud-api/guides/sell-products-and-services/upload-inventory), в каталоге электронной коммерции, [подключенном к вашему WhatsApp Business Account](https://www.facebook.com/business/help/158662536425974).
* Включайте корзину покупок и каталог товаров индивидуально для каждого бизнес-номера телефона. По умолчанию корзина покупок включена, а значок витрины скрыт для всех бизнес-номеров телефонов, связанных с WhatsApp Business Account. Используйте эндпоинт [Обновить настройки коммерции](https://docs.ycloud.com/reference/whatsapp_phone_number-update-commerce-settings), чтобы включить или отключить эти функции.
* Текст кнопок `CATALOG` нельзя изменить, он всегда должен быть **Посмотреть каталог**.
* См. также отправку [шаблонного сообщения каталога](/ru/api-reference/guides/examples/api-examples/whatsapp-messaging-examples#catalog-template-message).

### Шаблон сообщения с несколькими товарами (MPM)

Шаблоны MPM можно использовать для начала маркетинговых диалогов. Они позволяют демонстрировать до 30 товаров из вашего каталога электронной коммерции, сгруппированных в максимум 10 разделов, в одном сообщении.

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

Клиенты могут просматривать товары и разделы внутри сообщения, изучать информацию о каждом товаре, добавлять и удалять товары из корзины и отправлять заказ. Заказы затем передаются вам через Webhook.

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

#### Запрос

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

#### Ответ

Успешный запрос возвращает ресурс шаблона и его текущий статус проверки.

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

Используйте возвращенный параметр `status`, чтобы определить, можно ли отправлять шаблон.

#### Пояснение

* У вас должны быть [товары, загруженные в Meta](https://developers.facebook.com/docs/whatsapp/cloud-api/guides/sell-products-and-services/upload-inventory), в каталоге электронной коммерции, [подключенном к вашему WhatsApp Business Account](https://www.facebook.com/business/help/158662536425974).
* Включайте корзину покупок и каталог товаров индивидуально для каждого бизнес-номера телефона. По умолчанию корзина покупок включена, а значок витрины скрыт для всех бизнес-номеров телефонов, связанных с WhatsApp Business Account. Используйте эндпоинт [Обновить настройки коммерции](https://docs.ycloud.com/reference/whatsapp_phone_number-update-commerce-settings), чтобы включить или отключить эти функции.
* Значение `components` должно быть массивом объектов, описывающих каждый компонент шаблона. Шаблоны MPM должны содержать следующие компоненты:
  * один компонент заголовка
  * один компонент тела
  * один компонент нижнего колонтитула (необязательно)
  * один компонент кнопки MPM
* Текст кнопок `MPM` нельзя изменить, он всегда должен быть **Посмотреть товары**.
* См. также отправку [шаблона MPM-сообщения](/ru/api-reference/guides/examples/api-examples/whatsapp-messaging-examples#mpm-template-message).

### Шаблон Flow

[WhatsApp Flows](https://developers.facebook.com/docs/whatsapp/flows) — это способ создания структурированных сценариев взаимодействия для бизнес-сообщений. С помощью Flows компании могут определять, настраивать и персонализировать сообщения с расширенным интерактивным взаимодействием, предоставляя клиентам более удобную и структурированную коммуникацию.

Вы можете использовать Flows для лидогенерации, рекомендаций товаров, привлечения новых клиентов или любых других задач, где структурированное общение более естественно и удобно для ваших клиентов.

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

#### Запрос

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

#### Ответ

В случае успешного запроса возвращается ресурс шаблона и его текущий статус проверки.

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

Используйте возвращенный `status`, чтобы определить, можно ли отправлять шаблон.

#### Объяснение

* Чтобы использовать [WhatsApp Flows](https://developers.facebook.com/docs/whatsapp/flows), вам необходимо [подтвердить компанию](https://developers.facebook.com/docs/development/release/business-verification), пройти [проверку отображаемого имени](https://developers.facebook.com/docs/whatsapp/cloud-api/phone-numbers#display-names) и поддерживать [высокое качество сообщений](https://developers.facebook.com/docs/whatsapp/messaging-limits#messaging-quality).
* Для создания шаблона вам понадобится Flow ID. Инструкции по созданию нового WhatsApp Flow с помощью конструктора сценариев приведены в [этом видео](https://www.youtube.com/watch?v=gx_QGaSLoOA).
* Инструкции по отправке шаблона сообщения с Flow см. в разделе [Шаблон сообщения Flow](/ru/api-reference/guides/examples/api-examples/whatsapp-messaging-examples#flow-template-message).

### Шаблон сведений о заказе

Шаблон сообщений с информацией о заказе — это один из видов интерактивных шаблонов сообщений, расширяющий функционал кнопок с призывом к действию (CTA) возможностью отправки деталей заказа и обеспечивающий более богатый пользовательский опыт по сравнению со стандартными шаблонами сообщений.

Шаблон деталей заказа относится к категории шаблонов `UTILITY` и, помимо имени и выбранного языка, содержит стандартные компоненты шаблона, такие как `HEADER`, `BODY`, `FOOTER`, а также фиксированную кнопку `BUTTON` с типом `ORDER_DETAILS` и текстом `Review and Pay`.

#### Запрос

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

#### Ответ

В случае успешного запроса возвращается ресурс шаблона и его текущий статус проверки.

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

Используйте возвращенный `status`, чтобы определить, можно ли отправлять шаблон.

#### Объяснение

* Должен содержать одну кнопку, где `type` имеет значение `ORDER_DETAILS`, а `text` — `Review and Pay`.
* См. также отправку [шаблона сообщения с деталями заказа](/ru/api-reference/guides/examples/api-examples/whatsapp-messaging-examples#order-details-template-message).

### Шаблон статуса заказа

Шаблон статуса заказа — это разновидность интерактивных шаблонов сообщений, расширяющая кнопку с призывом к действию (CTA) для обновления статуса заказа через шаблон. Он позволяет компаниям обновлять статус заказа за пределами 24-часового окна сессии клиента в таких сценариях, как списание средств по оформленному заказу или уведомление об отправке ранее сделанного заказа.

#### Запрос

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

#### Ответ

В случае успешного запроса возвращается ресурс шаблона и его текущий статус проверки.

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

Используйте возвращенный `status`, чтобы определить, можно ли отправлять шаблон.

#### Объяснение

* Необходимо задать для `category` значение `UTILITY`, а для `subCategory` — значение `ORDER_STATUS`.
* См. также отправку [шаблона сообщения со статусом заказа](/ru/api-reference/guides/examples/api-examples/whatsapp-messaging-examples#order-status-template-message).

### Шаблон голосового вызова

Поддерживает новый тип кнопки `VOICE_CALL`, который инициирует звонок в WhatsApp при нажатии пользователем WhatsApp. Как правило, эту кнопку можно использовать везде, где доступна кнопка с номером телефона.

#### Запрос

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

#### Ответ

В случае успешного запроса возвращается ресурс шаблона и его текущий статус проверки.

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

Используйте возвращенный `status`, чтобы определить, можно ли отправлять шаблон.

#### Объяснение

* После создания шаблона с кнопкой голосового вызова WhatsApp вы можете использовать существующий API без изменений, поскольку кнопка `voice_call` не настраивается в момент отправки сообщения.
* См. также отправку [интерактивного сообщения с голосовым вызовом](/ru/api-reference/guides/examples/api-examples/whatsapp-messaging-examples#interactive-voice-call-message)

<br />

### Шаблон с кнопкой оформления заказа

Шаблоны с кнопкой оформления заказа (Checkout button) — это маркетинговые шаблоны, которые могут демонстрировать один или несколько товаров вместе с соответствующими кнопками оформления заказа, позволяя пользователям WhatsApp совершать покупки, не выходя из приложения WhatsApp. Такие шаблоны могут содержать заголовок с одним изображением или видео товара, текст сообщения, нижний колонтитул (футер), одну кнопку оформления заказа и до 9 кнопок быстрого ответа.

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

Пользователи WhatsApp, нажавшие на кнопку, увидят детали заказа:

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

Пользователи могут продолжить, выбрав информацию о доставке, предоставленную вами (если вы знаете их данные и передали их в полезной нагрузке запроса на отправку сообщения)...

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

или могут добавить свои данные о доставке самостоятельно:

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

#### Запрос

Этот пример запроса создает шаблон с кнопкой оформления заказа, содержащий заголовок сообщения с одним изображением, основной текст с двумя переменными, нижний колонтитул (футер), одну кнопку оформления заказа и кнопку быстрого ответа.

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

#### Ответ

В случае успешного запроса возвращается ресурс шаблона и его текущий статус проверки.

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

Используйте возвращенный `status`, чтобы определить, можно ли отправлять шаблон.

<br />

#### Объяснение

Следите за тем, чтобы компоненты шаблона соответствовали его категории, и дождитесь статуса одобрения перед его отправкой.

### Шаблон запроса разрешения на звонок

Если вы хотите позвонить пользователю WhatsApp, вашей компании сначала необходимо получить разрешение пользователя. Когда пользователь WhatsApp предоставляет разрешение на звонки, оно может быть временным или постоянным.

Компания не контролирует это разрешение, так как оно предоставляется только пользователем и может быть отозвано им в любое время. Данные о постоянном разрешении хранятся до тех пор, пока оно не будет отозвано.

Вы можете получить разрешение на звонок от пользователя WhatsApp любым из следующих способов:

1. Отправить запрос на разрешение звонка пользователю — отправьте произвольное или шаблонное сообщение с запросом разрешения на звонок. У пользователя есть возможность выбрать временное или постоянное разрешение.
2. Разрешение на обратный звонок предоставляется пользователем WhatsApp — пользователь WhatsApp автоматически предоставляет временное разрешение на звонок, совершая вызов в компанию. На номере телефона компании должна быть включена настройка обратного звонка (callback).
3. Пользователь WhatsApp предоставляет разрешение на звонок через бизнес-профиль — пользователь WhatsApp предоставляет разрешение на звонки компании через ее бизнес-профиль.

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

#### Запрос

Ниже приведен пример создания шаблона типа запроса разрешения на звонок

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

#### Ответ

Успешный запрос возвращает ресурс шаблона и его текущий статус проверки.

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

Используйте возвращенный `status`, чтобы определить, можно ли отправлять шаблон.

#### Объяснение

Следите за тем, чтобы компоненты шаблона соответствовали его категории, и дождитесь статуса одобрения перед его отправкой.

### Шаблон с диплинком для Android

Вы можете привязать диплинк Android к кнопке-URL маркетингового шаблона, которая при нажатии открывает определенный раздел или контент в вашем приложении.

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

#### Запрос

Ниже приведен пример создания шаблона с диплинком.

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

#### Ответ

Успешный запрос возвращает ресурс шаблона и его текущий статус проверки.

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

Используйте возвращенный `status`, чтобы определить, можно ли отправлять шаблон.

#### Объяснение

Следите за тем, чтобы компоненты шаблона соответствовали его категории, и дождитесь статуса одобрения перед его отправкой.

### Маркетинговый шаблон с GIF

В этом случае вы создаете шаблон для конкретной кампании:

* Содержит GIF в заголовке.

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

#### Запрос

Ниже приведен пример создания шаблона с 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"
    }
  ]
}'
```

#### Ответ

Успешный запрос возвращает ресурс шаблона и его текущий статус проверки.

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

Используйте возвращенный `status`, чтобы определить, можно ли отправлять шаблон.

<br />

#### Объяснение

Следите за тем, чтобы компоненты шаблона соответствовали его категории, и дождитесь статуса одобрения перед его отправкой.

### &#x20;Шаблон запроса номера телефона

Чтобы добавить кнопку запроса контактной информации в служебный (utility) или маркетинговый шаблон, укажите кнопку REQUEST\_CONTACT\_INFO в массиве components при создании шаблона:

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

#### Запрос

Ниже приведен пример создания шаблона `REQUEST_CONTACT_INFO`

* `Share Contact Info` является фиксированным текстом кнопки и не может быть изменен

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

#### Ответ

Успешный запрос возвращает ресурс шаблона и его текущий статус проверки.

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

Используйте возвращенный `status`, чтобы определить, можно ли отправлять шаблон.

<br />

#### Объяснение

Следите за тем, чтобы компоненты шаблона соответствовали его категории, и дождитесь статуса одобрения перед его отправкой.


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