# 欢迎使用InnoPaaS产品指南

InnoPaaS是Meta官方授权的WhatsApp Business解决方案提供商（BSP），致力于为企业提供专业、稳定的WhatsApp Business API接入与商业通信服务。

我们帮助您将WhatsApp强大的沟通能力，无缝集成到您的业务流程中，实现从营销触达、销售转化到客户服务的全链路智能化升级。

选择InnoPaaS，即是选择了一个可信赖的WhatsApp商业通信伙伴。让我们助您解锁下一代客户互动体验，驱动业务高效增长。

更多请关注：<https://innopaas.com/>

**API接口文档：**

{% content-ref url="/spaces/sbd17k8pYGOpOfBIUKqm/pages/pZfPCtrPIpkWlYUc3Tc4" %}
[InnoPaaS API 入门指南](/api-reference)
{% endcontent-ref %}


# 产品介绍

InnoPaaS提供三大核心产品线，满足多样化的商业通信与客户互动需求：

1\. [WhatsApp产品](/whatsapp-chan-pin/whatsapp-xiang-guan-jie-shao)

我们提供完整的WhatsApp Business API接入与管理服务。您可以通过我们的平台实现账户注册、消息发送、自动化流程搭建及客户服务管理，高效开展业务沟通与客户互动。

2\. [OTP产品](/otp-chan-pin/test-send)

我们为登录、交易等安全验证场景提供灵活可靠的解决方案：

* 短信验证码：基于运营商网络的稳定验证方式。
* WhatsApp即用验证码：为暂时无需或不便自行创建WhatsApp商业账户的客户提供的即用型通道。您无需自行注册和管理账户，即可通过我们的平台向使用WhatsApp的用户发送验证码。

3\. [短信营销](/duan-xin-ying-xiao/markdown)

我们提供专业的短信营销服务，帮助您通过短信渠道高效触达用户，适用于产品推广、会员关怀及各类业务营销。


# InnoPaaS账号注册和登录

注册地址：<https://innopaas.com/control/signup>

登录地址：<https://innopaas.com/control/login>

邮箱注册：

步骤1：输入邮箱地址

步骤2：获取邮箱验证码

步骤3：设置密码

步骤4：阅读并同意《服务协议》与《隐私政策》

点击“注册”完成注册并登录

<figure><img src="/files/8jtM6FRT2h4yGFcdxmYn" alt=""><figcaption></figcaption></figure>

Google账户注册：

使用Google Chrome浏览器，授权您的Google账户，然后登录。

目前登录方式支持三种途径：电子邮箱、手机号码和谷歌账户。

<figure><img src="/files/cWNteBU544rqKyYWnC7v" alt=""><figcaption></figcaption></figure>

点击“Got it”，然后点击“Login”以完成首次登录。

<figure><img src="/files/kYz1III5dmT84FdjnQUL" alt=""><figcaption></figcaption></figure>


# 创建API Keys

创建**API Keys**是账号注册后的必须步骤，请参阅以下文档，根据指引进行创建：

{% content-ref url="/spaces/sbd17k8pYGOpOfBIUKqm/pages/pZfPCtrPIpkWlYUc3Tc4" %}
[InnoPaaS API 入门指南](/api-reference)
{% endcontent-ref %}

在**Developer Tools**的[API Keys](https://innopaas.com/control/api-key)页面，点击“**Create API key**”&#x20;

<figure><img src="/files/RgyG6aJXR4ku2YpMjJHw" alt=""><figcaption></figcaption></figure>

**创建API key页面信息填写**

**APP Name** ：自定义，例如：wa\_印尼

**Allowed IP Addresses**：添加IP白名单，按实际需要填写

**Is It Default**：apikey是否默认开关打开，模板状态变更、账号状态变更、Wab状态变更、上行回复，这些默认是推送给默认应用的

（注：默认是针对无法匹配的情况下推送过去的，如上线回复，账号状态登录，无法匹配APIKEY 就会推送给默认）

**Status：**&#x542F;用开关

<figure><img src="/files/I5VwNe9NzWWf093wrfB7" alt=""><figcaption></figcaption></figure>


# 子账号创建

点击“Add More Users”以管理和添加用户。

<figure><img src="/files/jAROi5BORKv8VyAXzfn4" alt=""><figcaption></figcaption></figure>

点击【+Add】以添加新用户。

<figure><img src="/files/OZSQnFRl6NJ1EGmbbhGI" alt=""><figcaption></figcaption></figure>

步骤1：填写基本信息：用户的电子邮件和登录密码。

<figure><img src="/files/0cicElN4nwfVTV4LYRCx" alt=""><figcaption></figcaption></figure>

步骤 2：产品权限：检查当前用户可使用的产品。

<figure><img src="/files/PWi2kFHWLn8D8uR2nbTC" alt=""><figcaption></figcaption></figure>

步骤3：创建成功：复制账户密码，新用户可使用登录地址进行登录。

<figure><img src="/files/c0C9tSnUnCKaGnzQJk12" alt=""><figcaption></figcaption></figure>

步骤4：点击权限按钮进入权限配置界面。

<figure><img src="/files/ZA5cNkafOWczODt2s5nY" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/vbu84aWwW6ATtDp91y3z" alt=""><figcaption></figcaption></figure>

步骤5：主账户为子账户配置权限。


# 账户信息

点击“Account”可查看并修改个人信息和公司信息。

个人信息：用户名、电子邮箱、Google账户、手机号码、密码、是否启用双重验证（默认启用；若关闭，登录时将不再需要验证登录账户）。

<figure><img src="/files/62cIlfK22DTfF2ecXEoo" alt=""><figcaption></figcaption></figure>

公司信息：公司名称、地址、行业、规模等。请填写准确信息。

<figure><img src="/files/TodbjyXGmAkFiHAs2PrZ" alt="" width="276"><figcaption></figcaption></figure>


# 充值

目前，InnoPaaS平台支持钱包充值和产品充值功能。

* **钱包充值**：支持将钱包余额充值至其他产品。
* **产品充值**：仅限当前产品使用。例如，若为WhatsApp产品充值100美元，该金额仅可在WhatsApp产品内使用。

## 钱包充值

点击主页上的“TOP UP”按钮。

<figure><img src="/files/WCqpQgc1SV4ddkvEY9SL" alt=""><figcaption></figcaption></figure>

目前，我们支持两种充值方式：信用卡充值和线下充值。我们强烈建议您使用信用卡充值。

<figure><img src="/files/SmeEhFiAU1C3lP6bzVdQ" alt=""><figcaption></figcaption></figure>

点击“Submit进入充值页面，填写您的邮箱和支付信息，然后点击“支付”。

<figure><img src="/files/G5qnI7Mv4uGihLyCypLM" alt=""><figcaption></figcaption></figure>

付款后，请返回InnoPaaS平台查看余额和订单。

<figure><img src="/files/yZ899Vt0ke963lhD1sLT" alt=""><figcaption></figcaption></figure>

点击“Billing”→“Order Details”查看订单状态及详细信息。

<figure><img src="/files/rnnCdQR24fCWere4HoMl" alt=""><figcaption></figcaption></figure>

线下充值支持人民币和美元充值。充值过程中如有任何疑问，请[联系我们](/bang-zhu-yu-zhi-chi/innopaas-tuan-dui)。

<figure><img src="/files/m2BnE8pBAhFVVBwMYB0O" alt=""><figcaption></figcaption></figure>

## 产品充值

选择您要充值的产品，点击“TOP UP”按钮，进入充值页面。

<figure><img src="/files/7qDVWVOWaIo0rg10iEiI" alt=""><figcaption></figcaption></figure>

目前支持三种充值方式：信用卡充值、线下充值和余额充值。我们强烈建议您使用信用卡充值或余额充值。

<figure><img src="/files/edvT4jWeGi8pbrXrG7Fk" alt=""><figcaption></figcaption></figure>


# 账单与订单查询

点击右上角的“Billing”→“Bill”进入账单页面。

<figure><img src="/files/NNLb549snRtAfiPonYBX" alt=""><figcaption></figcaption></figure>

您可以按月份或产品类型筛选，点击下载按钮即可下载月度账单。

<figure><img src="/files/TF8cJFRFi7WvyezTGqvB" alt=""><figcaption></figcaption></figure>

点击详情查看具体消费明细。

订单详情：此功能用于查询您的充值和退款记录。

<figure><img src="/files/H9jAr9zYMnyXkDp5bHfx" alt=""><figcaption></figcaption></figure>


# WhatsApp相关介绍

{% hint style="info" %}
[WABA](#whatsapp-zhang-hao-lei-xing): WhatsApp Business Account，即WhatsApp商业账户

[BM](#bm-shi-shen-me): Business Manager，Meta商务管理平台

[Sender](#sender-shi-shen-me): 用于下发消息的电话号码
{% endhint %}

## WhatsApp是什么？

WhatsApp是Meta公司旗下一款用于智能手机的跨平台加密即时通讯应用程序。该软件通过物联网进行语音和视频通话，并使用标准流动网络电话号码向其他用户发送短信、文件、PDF文件、图片、视频、音乐、用户位置。

覆盖全球180多个国家/地区的25多亿用户，并在南美、非洲、中东、印度、东南亚、欧洲等地区拥有领先地位，在这些国家/地区有更高的消息交付率和更低的价格。

唯一无需加好友或关注，即允许主动发送消息的社交软件。

## WhatsApp账号类型

**WhatsApp Messenger（个人账号）**

作为最早推出的基础版本，主要服务于个人用户之间的日常社交沟通。其功能定位类似于微信的个人账号，支持文字、语音、图片、视频等基本通讯功能，满足亲友间的即时交流需求。这是WhatsApp生态中最广泛使用的产品形态。

**WhatsApp Business（商家版应用）**

这是面向商户的独立应用。这款APP主要服务于个体商户、中小型企业和本地服务商，在基础通讯功能上增加了商家资料页（可展示地址、营业时间、网站等）、快捷回复、自动问候语、简单商品目录展示以及基础的标签管理和数据统计功能。商家可直接通过手机应用管理客户沟通，无需技术开发能力。

**WhatsApp Business Account（商业账户，简称WABA）**

这是企业在Meta商业生态中的核心身份标识。WABA是在Meta Business Manager中创建和管理的企业级账户，它不是一个可直接使用的应用，而是管理一个或多个WhatsApp商业电话号码的中央控制台。想要接入WhatsApp Business API需要首先创建WABA。该账户是企业完成公司验证的基础，也是Meta评估企业信誉的核心依据。

**WhatsApp Business API（商业平台接口）**

这是面向企业的编程接口服务，本身不提供操作界面，需要通过技术集成或商业解决方案提供商（BSP）的平台进行使用。API服务适用于有开发能力或通过专业服务商支持的企业或品牌方，支持高并发消息处理、与企业内部系统（如CRM、客服平台）深度集成、富媒体消息、交互式按钮和模板消息等高级功能。使用API服务需基于已通过验证的WABA账户。

## WhatsApp商业商户(WABA)的优势

相较于传统短信/邮件，WABA通过互动体验与触达效率两大核心优势，显著提升业务成效。

1\. 高互动，提升转化

* 双向对话：支持发送富媒体（图片、视频、文档）与交互按钮，在单一聊天界面内完成从触达到服务的全流程，体验流畅，转化率更高。
* 自动化+人工无缝衔接：可设置自动回复流程处理常见问题，并随时转接人工服务，兼顾效率与个性化。

2\. 高触达，保障关键流程

* 到达率更高：基于互联网发送，不受运营商信号影响，消息（尤其是OTP验证码）的送达率与读取率显著优于传统短信。

3\. 低成本，主动激活

* 成本优势：在众多新兴市场（如印度、印尼、巴西），发送成本低于国际短信。
* 免费互动窗口：用户回复后，开启24小时免费会话窗口，可无限次免费互动。
* 合规主动触达：通过预审模板，可在窗口外主动发起会话，重新激活对话，从被动响应转向主动培育。

总之，WhatsApp商业账户是一个集高互动体验、高可靠触达、优化成本与主动营销能力于一体的高效商业沟通平台。

## BM是什么？

BM，即Meta Business Manager（商务管理平台），是您管理所有Meta商业资产（如广告账户、Instagram 账户、WhatsApp商业商户）的中央控制台。

简单来说，它是您企业连接并使用Meta生态（包括 WhatsApp Business API）的“总后台”和“组织工具箱”。

## Sender是什么？

“Sender”意为“发送者号码”，InnoPaaS作为您的服务提供商（BSP），我们使用这一术语来指代您WABA账户下每个已注册的、独立的、用于发送消息的[电话号码](/whatsapp-chan-pin/wabasenders-ji-chu-yu-zhi-nan/dian-hua-hao-ma-senders)。

通俗来讲，它就是您的“发信号码”，就像发短信需要有一个显号一样，每个用来发消息的电话号码，技术上就称为一个“Sender”。


# 创建BM和WABA

本篇详细介绍了如何通过嵌入式注册流程创建新的BM和WABA。

{% hint style="info" %}
[BM](/whatsapp-chan-pin/whatsapp-xiang-guan-jie-shao#bm-shi-shen-me): Business Manger

[WABA](/whatsapp-chan-pin/whatsapp-xiang-guan-jie-shao): WhatsApp Business Account

嵌入式注册：企业将WhatsApp消息功能集成到自己的网站、APP或服务流程中的官方方式

[Sender](/whatsapp-chan-pin/whatsapp-xiang-guan-jie-shao#sender-shi-shen-me): 用作下发消息的电话号码
{% endhint %}

> 开始前请确保[InnoPaaS账号注册](/guide/account)完成，并准备好以下材料：

* **Facebook账号**：需要稳定没有被封，新FB账号需要同一IP同一设备登录养号几天；
* **用于下发消息的电话号码**：未注册任何WhatsApp产品，能够正常收验证码（语音验证码也可以），建议使用新的海外号码；
* **企业官网**：必须含营业执照的企业名称全称、地址、联系电话；

&#x20;      举例：[https://innopaas.com](https://innopaas.com/)

* **企业邮箱**：邮箱域名需同官网的域名一致，也用于后续接收各种Meta邮件通知，请留意；

&#x20;      举例：<brand.product@innopaas.com>

* **企业的资质证书/营业执照**：需要含有企业名、地址、联系号码（当地号码，可收验证码）；
* **注意：**&#x5982;果营业执照/资质证书里不包含当地电话号码，则还需提供以下带有号码的任意一份材料：\
  a. 营业执照/公司章程；\
  b.公司注册或许可文件；\
  c.政府签发的公司税务文件：包括税务证明；\
  d.公司银行对账单；\
  e.公共事业账单（水电费账单、话费账单、燃气账单等）

## 第一步：登录[InnPaaS账号](https://innopaas.com/control/login)

<figure><img src="/files/V0EMLd0ClY25eTzbzqpX" alt=""><figcaption></figcaption></figure>

## 第二步：激活WhatsApp产品

<figure><img src="/files/rMNC1KyOBoNPmTyHcQ2e" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/ZrTNvWlw3KgllWMclnh9" alt=""><figcaption></figcaption></figure>

## 第三步：点击“Register Sender”

进入Whatsapp产品**Get Started**页面，点击**Register Sender。**

<figure><img src="/files/dZDODz8oJz50tmVeKU89" alt=""><figcaption></figcaption></figure>

## 第四步：登录[Facebook](https://www.facebook.com/)

登录Facebook后开始注册流程。

<figure><img src="/files/SAKDUlz8O6l1xKEPwLTd" alt="" width="375"><figcaption></figcaption></figure>

## 第五步：确认隐私政策

<figure><img src="/files/fUmO3zHl5Z8V0lin0lCE" alt="" width="375"><figcaption></figcaption></figure>

## 第六步：创建BM和WABA

{% hint style="info" %}
情况1：如果您没有BM和WABA，则按以下操作创建新的BM和WABA，并填写公司信息。
{% endhint %}

<figure><img src="/files/0WpP9GyRKM5517MdrOv4" alt=""><figcaption></figcaption></figure>

{% hint style="info" %}
情况2：如果您已有BM账号，请&#x5728;**“业务资产组合”**&#x9009;项中选择，如下图所示。
{% endhint %}

<figure><img src="/files/LdNXUGtkl8HV9Ujf2Tst" alt=""><figcaption></figcaption></figure>

{% hint style="info" %}
情况3：如果您已有BM和WABA，并想要再WABA下添加号码，请按以下操作。
{% endhint %}

<figure><img src="/files/0y3Zf1RDLsjDFzbiOnnp" alt=""><figcaption></figcaption></figure>

## 第七步：添加电话号码

选择添加新的电话号码，然后进行验证（收验证码）。该电话号码就是用于下发消息的号码（Sender）。

<figure><img src="/files/0j6lBBRokN5klM5iUjUz" alt=""><figcaption></figcaption></figure>

## 第八步：创建成功

<figure><img src="/files/VMoQfjKAxajJb5oo8Etd" alt=""><figcaption></figcaption></figure>

创建成功后可在InnoPaaS平台上查看WABA和Sender，点击“WhatsApp-Senders”页面，如下图所示：

<figure><img src="/files/QWC2NEMxsUfTwP5tVmzP" alt=""><figcaption></figcaption></figure>

也可在BM账户中查看WABA，BM地址：<https://business.facebook.com/latest/settings/whatsapp_account?business_id=>

<figure><img src="/files/aoU12HBmfbbJVsB6FOlC" alt=""><figcaption></figcaption></figure>

{% hint style="info" %}
创建完BM和WABA后，需进行[BM公司验证](/whatsapp-chan-pin/wabasenders-ji-chu-yu-zhi-nan/bm-gong-si-yan-zheng)。BM公司验证通过后便可创建[消息模板](/whatsapp-chan-pin/editor)。
{% endhint %}


# 电话号码(Senders)

电话号码在InnoPaaS平台上显示为”Senders“。

电话号码状态与质量

<figure><img src="/files/lG0t91V35ri7NUNKMisO" alt=""><figcaption></figcaption></figure>

主账号可以给子账号分配权限

分配权限后，子账号可以在Inbox使用该sender与用户沟通

<figure><img src="/files/r9Fb92XWkPRn12ebqWSE" alt=""><figcaption></figcaption></figure>

操作示例：

{% file src="/files/BmevLgo6SD4SK4BdQSbu" %}

其他：主账号也可以在Inbox分配会话权限给子账号

在Inbox的用户聊天窗口右下角选项“分配给其他人”，“分配给我”

<figure><img src="/files/QNS7JHBvozCvezEX5eJo" alt=""><figcaption></figcaption></figure>


# 消息模板(Templates)

本篇详细介绍了消息模板的定义，以及如何创建消息模板。

## **1. 为什么需要消息模板？**

在WhatsApp的日常交流中，我们可以随时发送任何内容。但在商业沟通的世界里，当企业需要主动、规模化地向客户发送重要通知、交易更新或营销信息时，就必须遵循一套既保证用户体验、又防止滥用的规则。

消息模板正是这一规则的核心体现。它不是一种限制，而是一种标准化、合规且高效的主动沟通工具，让企业能够在获得用户默示同意的框架下，可靠地触达客户。

## **2. 什么是消息模板？**

消息模板是经过Meta官方预先审核和批准的标准化消息格式。企业只能在24小时客户服务窗口之外，使用这些已批准的模板向用户发起对话或发送通知。WhatsApp 的设计哲学是保护用户免受骚扰。因此，任何非用户主动发起的商业消息（业务发起对话），都必须通过一个透明、可审核的格式进行。消息模板机制确保了：

* **用户知情权**：模板结构清晰，用户一眼可知消息来源和目的。
* **用户控制权**：模板通常包含明确的退订或反馈选项。
* **质量可控性**：Meta通过审核过滤掉误导、spam或低质量的内容。

## **3. 与自由消息的区别是什么？**

为了理解模板的“主动”特性，必须将其与“自由消息”对比：

|          | **消息模板**                 | **自由消息**                |
| -------- | ------------------------ | ----------------------- |
| **发送时机** | 可在24小时服务窗外（用户超过24小时未联系时） | 仅在24小时服务窗内（用户主动联系后24小时） |
| **内容格式** | 固定结构，需预先提交审核             | 自由灵活，随对话而定              |
| **主要用途** | 主动发起通知、验证码、营销            | 响应客户咨询，进行对话             |
| **发送权限** | 基于模板审核通过和业务验证获得          | 基于用户的主动行为开启             |

简单来说：您找用户，用消息模板开场；用户找您，用自由消息回复。

{% hint style="info" %}
请注意，同一[WABA](/whatsapp-chan-pin/whatsapp-xiang-guan-jie-shao)下的消息模板数不得超过250个。
{% endhint %}

## API创建消息模板

请参阅:

{% content-ref url="/spaces/sbd17k8pYGOpOfBIUKqm/pages/vuW79j4X6DL1HOgRAxZ3" %}
[WhatsApp Business API](/api-reference/whatsapp-business-api/whatsapp-business-api)
{% endcontent-ref %}


# 验证码(Authentication)模板

如何在InnoPaaS平台创建WhatsApp验证码模板。

## 1. 登录[InnoPaaS账号](https://innopaas.com/control/login)

## 2. 选择WABA

选择WhatsApp产品，选&#x62E9;**“Templates”**，进入页面后选择想要在哪个WABA下创建消息模板，点&#x51FB;**“+ New templates”。**

<figure><img src="/files/lpNoZj14jojbZq36Kypj" alt=""><figcaption></figcaption></figure>

## 3. 选择验证码模板类型

<figure><img src="/files/iIHKCBvRG1L4OZ9HIAEv" alt=""><figcaption></figcaption></figure>

### 3.1 普通验证码

验证码模板分为**普通验证码**和**零轻触验证码**，普通验证码按以下操作即可。

<figure><img src="/files/8z7cCyHG6t5Iaj3LcNXu" alt=""><figcaption></figcaption></figure>

### 3.2 零轻触验证码

{% hint style="info" %}
通过使用包含零轻触一键自动填写功能的身份验证模板，您可以将一次性密码或验证码连同一键自动填写按钮一起发送给用户。当 WhatsApp 用户轻触该自动填写按钮时，WhatsApp 客户端将触发一个活动，这会打开您的应用APP并向该应用发送密码或验证码，当集成了WhatsApp一键认证的应用会自动捕获这个验证码，用户无需切换到WhatsApp进行复制验证码。

详情请阅读：<https://rkzav3pcv4.feishu.cn/wiki/NBEZw0fKmimy3akEj72c33lJnqc>
{% endhint %}

<figure><img src="/files/MheUrVVhhwEvpzv0GmdH" alt="" width="375"><figcaption></figcaption></figure>


# 通知(Utility)模板

如何在InnoPaaS平台创建WhatsApp通知模板。

## 1. 登录[InnoPaaS账号](https://innopaas.com/control/login)

## 2. 选择WABA

选择WhatsApp产品，选择“Templates”，进入页面后选择想要在哪个WABA下创建消息模板，点击“+ New templates”。

<figure><img src="/files/V1UEtpFmhGdIOJfwdqfq" alt=""><figcaption></figcaption></figure>

## 3. 选择通知模板类型

<figure><img src="/files/gUbv6XZBZmRoULiI2Aza" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/TXh6ZhEv5LcYvxARt3Ik" alt="" width="375"><figcaption></figcaption></figure>


# 营销(Marketing)模板

如何在InnoPaaS平台创建WhatsApp营销模板。

## 1. 登录[InnoPaaS账号](https://innopaas.com/control/login)

## 2. 选择WABA

选择WhatsApp产品，选择“Templates”，进入页面后选择想要在哪个WABA下创建消息模板，点击“+ New templates”。

<figure><img src="/files/I5GG40VQtFbymONxShLg" alt=""><figcaption></figcaption></figure>

## 3. 选择营销模板类型

<figure><img src="/files/phVSjnKxYwLjwfUhwRru" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/WiKnNhyFympsYyo6W3Lu" alt=""><figcaption></figcaption></figure>


# 模板状态和质量

[创建完消息模板](/whatsapp-chan-pin/editor)后，您可以登录[InnoPaaS平台](https://innopaas.com/control/login)查看模板审核状态和模板质量。

<figure><img src="/files/l2OBHzCnLqRFIVzJocwe" alt=""><figcaption></figcaption></figure>

您可以在Meta的[BM管理后台](https://business.facebook.com/latest/settings/whatsapp_account?business_id=)查看。

<figure><img src="/files/QCgTwhHb5biNCJERWddU" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/3Xj3gCTM3spABwYgHZGZ" alt=""><figcaption></figcaption></figure>

InnoPaaS与Meta的消息模板的状态/质量对应关系：

<table><thead><tr><th width="124.66668701171875">Meta状态</th><th width="119.33331298828125">InnoPaaS Quality</th><th width="114">InnoPaaS Status</th><th width="110.6666259765625">发送权限</th><th width="161.3333740234375">说明</th></tr></thead><tbody><tr><td>使用中-质量待审核</td><td>UNKNOWN</td><td>Approved</td><td>可发送</td><td>新模板，或特定时间内尚未收集到足够用户反馈数据</td></tr><tr><td>使用中-高质量</td><td>GREEN</td><td>Approved</td><td>可发送</td><td>模板质量优秀，负面反馈极少</td></tr><tr><td>使用中-中等质量</td><td>YELLOW</td><td>Approved</td><td>可发送</td><td>已收到较多负面反馈，建议优化调整该模板</td></tr><tr><td>使用中-低质量</td><td>RED</td><td>Approved</td><td>可发送（风险高）</td><td>已收到大量负面反馈，面临暂停风险，建议立即停止发送该模板，等待质量回升</td></tr><tr><td>审核中</td><td>UNKNOWN</td><td>Pending</td><td>不可发送</td><td>模板已提交，正在等待Meta审核（通常24-48小时）</td></tr><tr><td>已被拒</td><td>UNKNOWN</td><td>Rejected</td><td>不可发送</td><td>模板因违反政策或其他原因被拒绝，可申诉</td></tr><tr><td>已申诉-审核中</td><td>UNKNOWN</td><td>Pending</td><td>不可发送</td><td>针对拒绝决定已提交申诉，等待处理</td></tr><tr><td>已暂停使用</td><td>RED</td><td>Paused</td><td>不可发送</td><td>因持续负面反馈被系统暂停使用，可恢复，建议优化修改模板</td></tr><tr><td>已禁用</td><td>UNKNOWN</td><td>Disabled</td><td>不可发送</td><td>模板因严重违规被永久禁用</td></tr></tbody></table>

消息模板申诉流程请参阅：

{% content-ref url="/pages/T7S4RCD20izlFwXnGY2h" %}
[消息模板申诉](/whatsapp-chan-pin/editor/xiao-xi-mu-ban-shen-su)
{% endcontent-ref %}


# 消息模板申诉

## 消息模板被拒绝

如果您创建的消息模板被拒绝，可按以下步骤申诉：

登录[BM管理平台](https://business.facebook.com/latest/settings/whatsapp_account?business_id=)，找到对应WABA，点击“WhatsApp 管理工具”。

<figure><img src="/files/GShjymZ7pX6PPbpZmBw2" alt=""><figcaption></figcaption></figure>

点击“管理模板”，选择被拒绝的模板，按照官方指引进行申诉。

<figure><img src="/files/MMOTpp0fH2Kvxjy7f0B3" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/t1yrMOLTECxECKbLKenp" alt=""><figcaption></figcaption></figure>

## 消息模板类型变更

如果您的模板类型被官方变更，可按以下步骤申诉：

登录[BM管理平台](https://business.facebook.com/latest/settings/whatsapp_account?business_id=)，找到对应WABA，点击“WhatsApp 管理工具”。

<figure><img src="/files/wc0TFZovIOismdh5cphX" alt=""><figcaption></figcaption></figure>

点击“管理模板”，按照官方指引进行申诉。

<figure><img src="/files/2r9tBC8wgYN9bwQKco9a" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/tto2XmPovhfLGKzQmUiN" alt=""><figcaption></figcaption></figure>

Meta对此做出解释：

<figure><img src="/files/6fRmeK6tSBsgpgMOKdLv" alt="" width="375"><figcaption></figcaption></figure>

{% hint style="info" %}
如果模板类型变更，Meta会通过邮件和Webhook通知您。
{% endhint %}


# 群发活动(Campaigns)

## 1. 登录[InnoPaaS账号](https://innopaas.com/control/login)

## 2. 群发活动列表 Campaigns List

选择WhatsApp产品，点击“+Create Campaign”以创建新活动。

<figure><img src="/files/UNdBVF7JuN3thhW0RZjq" alt=""><figcaption></figcaption></figure>

填写信息。

<figure><img src="/files/5PEpnOGzzuvJwybUucWr" alt=""><figcaption></figcaption></figure>

支持三种添加号码/变量/内容的方式：手动输入、上传文件和选择通讯录联系人。

<figure><img src="/files/SJyTBaG1Y75rGUjAUSnI" alt=""><figcaption></figcaption></figure>

选择一个模板并填写模板变量。

<figure><img src="/files/wgcjOdpzZMS12pxVdu1p" alt="" width="563"><figcaption></figcaption></figure>

<figure><img src="/files/OAVBFH3PRIzRzXyBGnK8" alt="" width="563"><figcaption></figcaption></figure>

<figure><img src="/files/Kv7RWYgwcCtjnf28GwC2" alt=""><figcaption></figcaption></figure>

时间安排：直接支持和定时发送。

<figure><img src="/files/H84uPmlmzl1lwBcRrLGu" alt=""><figcaption></figcaption></figure>

点击“Next”发送预览。

<figure><img src="/files/qiEYyankj8JW7Ra9BdPZ" alt=""><figcaption></figcaption></figure>

点击“Submit”按钮后，请等待发送。

<figure><img src="/files/2oiAYChiS7bwnPeiYCcl" alt=""><figcaption></figcaption></figure>

## 3. 群发活动详情 Campaigns Details

点击“Details”可查看本批次消息发送的详细信息及具体数据分析。

<figure><img src="/files/3A8wQGwcU9KYFYg9pbZ8" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/HTAC8FVqGWYsgLm3Etr3" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/SKZvvjbO7lvyedgkw2W5" alt=""><figcaption></figcaption></figure>


# 收件箱(Inbox)

本篇介绍了Inbox的功能。

[InnoPaaS账号登录](https://innopaas.com/control/login)

收件箱（Inbox），也叫聊天室。是一款基于WhatsApp的实时聊天工具，助力客服与销售团队与客户建立更紧密的联系，轻松处理咨询、解决问题并收集反馈！Inbox提供详尽的数据分析报告，助您实现数据驱动的管理与决策。

快速入门\
帮助您快速熟悉Inbox界面及各区域功能。

基础搜索\
Inbox支持通过电话号码和姓名搜索历史聊天记录。请注意，目前不支持对话内容的文本搜索。

快速筛选\
可按分配状态、对话状态和标签快速筛选收件箱对话。每类筛选条件仅支持单选。

<figure><img src="/files/QwfbIOusoacRo3qDyBhX" alt=""><figcaption></figcaption></figure>

输入名称或电话号码以搜索用户的名称或电话号码。

<figure><img src="/files/xDScAKOuyUKFND9ZzNc7" alt=""><figcaption></figcaption></figure>

更多搜索。

<figure><img src="/files/ZTsIwtp2HVtKMrgOGiVJ" alt=""><figcaption></figcaption></figure>

对话状态。

<figure><img src="/files/wQ3ZEFd8QVrhmenHqANq" alt=""><figcaption></figcaption></figure>

主账号也可以在Inbox分配会话权限给子账号

在Inbox的用户聊天窗口右下角选项“分配给其他人”，“分配给我”

<figure><img src="/files/QNS7JHBvozCvezEX5eJo" alt=""><figcaption></figcaption></figure>


# 机器人(Agent)

[InnoPaaS账号登录](https://innopaas.com/control/login)

点击新建机器人（Agent）。

<figure><img src="/files/DfBgCPzd44lV593oPk7F" alt=""><figcaption></figcaption></figure>

输入Agent名称并选择对接平台：coze，填写刚获得的参数并保存。

<figure><img src="/files/EffSEx08v0SS8zOFhW6E" alt=""><figcaption></figcaption></figure>

您可以自定义Agent设置，例如营业时间、非营业时间回复语言等。

<figure><img src="/files/rr1T1VnXTADhx6Ljd742" alt=""><figcaption></figcaption></figure>

启动Agent回复进入Inbox并点击Agent头像，即可为当前对话设置专属Agent。若当前会话未配置Agent，则默认使用全局Agent。

<figure><img src="/files/aTxAdXujPtBYv8nPbwnA" alt=""><figcaption></figcaption></figure>

有关详细的设置步骤，请阅读：

{% content-ref url="/pages/px3sdVjldFamUCL1Uac8" %}
[Agent (Coordinate with Coze)](/whatsapp-chan-pin/ji-qi-ren-agent/agent-coordinate-with-coze)
{% endcontent-ref %}


# Agent (Coordinate with Coze)

## 一、Coze登录与创建

登陆地址：<https://www.coze.cn/home>

### 步骤1：注册[coze账户](https://www.coze.cn/home)并登录

<figure><img src="/files/UGkQRf3jrl3q1D4x5gvC" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/BtZXYX96z1ia3GDAJEnt" alt=""><figcaption></figcaption></figure>

### 步骤2：创建智能体

<figure><img src="/files/Nu5OAIgQpq9giMCmTck5" alt=""><figcaption></figcaption></figure>

您可以在机器人上执行流程编排，例如上传知识库、设置工作流并发布它们。

<figure><img src="/files/oXnkrrVzuJWI860Dssbp" alt=""><figcaption></figcaption></figure>

### 步骤3：配置 API 授权信息

<figure><img src="/files/o9Xpjg0R0TDCF2Wy7Ism" alt=""><figcaption></figcaption></figure>

选择 OAuth 应用程序并点击“创建应用”按钮。

<figure><img src="/files/pMtZlveFQ5cyYzwYgXCz" alt=""><figcaption></figcaption></figure>

应用类型选择 \[普通]，客户端类型选择 \[服务类应用]。

<figure><img src="/files/y1S0msssNoaWkyQh3B3y" alt=""><figcaption></figcaption></figure>

授权所有内容并点击”确定“。

<figure><img src="/files/Hc5QjnNbgqof8SIlfdr0" alt=""><figcaption></figcaption></figure>

### 步骤4：复制WhatsApp Agent所需参数

BOT ID: 进入智能客服编辑页面复制BOT ID。

<figure><img src="/files/74lGEdioDv4S8doPAcqb" alt=""><figcaption></figcaption></figure>

APP ID:

<figure><img src="/files/ATFhWVTImwRaJRgkjzFI" alt=""><figcaption></figcaption></figure>

共钥与私钥：

注意：私钥文件不可更改，下载后可直接上传至WhatsApp。

<figure><img src="/files/cl9AB6qmqtLd1i59xdrr" alt=""><figcaption></figcaption></figure>

## 二、在InnoPaaS上创建Agent

点击”+ New Agent“

<figure><img src="/files/tkskMCchOvdE54qFAulJ" alt=""><figcaption></figcaption></figure>

输入Agent名称并选择对接平台：coze，填写刚获得的参数并保存。

<figure><img src="/files/Z7xkQic6tv5B6w1reuF9" alt=""><figcaption></figcaption></figure>

您可以自定义机器人设置，例如营业时间、非营业时间回复语言等。

<figure><img src="/files/kNrP6itzEgCXdpaU2ctO" alt=""><figcaption></figcaption></figure>

## 三、启动机器人回复

进入Inbox，点击机器人头像即可为当前对话设置专属机器人。若当前会话未配置机器人，则默认使用全局机器人。

<figure><img src="/files/79WVsu5hhqplFV9L2MbN" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/h2KAso0RlPXPvUfe6331" alt=""><figcaption></figcaption></figure>

机器人回复效果展示：

<figure><img src="/files/hodLHjwnveKEa8FvPTjI" alt=""><figcaption></figcaption></figure>


# 联系人(Contact)


# 数据中心(Data Center)

## 1. Analytics-Overview

您可以在这里查看消息发送状态及发送成功率的统计数据。

<figure><img src="/files/HddSinRPYqziPOGvYB8a" alt=""><figcaption></figcaption></figure>

## 2. Analytics-Logs

您可以在这里查看消息的详细信息。

<figure><img src="/files/lwkeHgfhuzLUJk0MXxM6" alt=""><figcaption></figcaption></figure>


# WhatsApp个人号

Inbox客服平台使用说明

## 1. 功能说明

### 1.1 whatsapp App账号授权绑定功能

#### 1.1.1 通过验证码方式授权（暂时关闭）

{% hint style="info" %}
该方式暂时关闭，请转至[1.1.2](#id-1.1.2-tong-guo-sao-ma-fang-shi-shou-quan)
{% endhint %}

* 选择通过验证码方式授权

<figure><img src="/files/BXE6dtJ52XqKg08355wH" alt=""><figcaption></figcaption></figure>

* 点击 Add Account按钮

<figure><img src="/files/tw9ieQvzpzf3fbGVOfsX" alt=""><figcaption></figcaption></figure>

* 输入已经注册为whatsapp账号的手机号。点击next 将会触发获取验证码的流程。

<figure><img src="/files/7l1hgRIe0jG5R1WPTLbU" alt=""><figcaption></figcaption></figure>

* 当手机上收到whatsapp验证码，然后在该输入框进行输入验证码动作

<figure><img src="/files/BZeXEa9F4cD7TyNdCUdZ" alt=""><figcaption></figcaption></figure>

* 当手机上的验证码在平台上输入以后 ，手机上的whatsapp将会退出，且平台上会出现新的whatsapp账号信息。

#### 1.1.2 通过扫码方式授权

扫码方式授权原手机端不需要登出，可以多设备共存。

* 点击扫描方式授权，弹出二维码

<figure><img src="/files/B7efKBbfNTqove7aOZrU" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/lXgF3kyhn35xvdHOQcGZ" alt=""><figcaption></figcaption></figure>

* 通过whatsapp 手机端扫该二维码，授权同意绑定新设备。
* 绑定成功后，就可以用Inbox 和API接口与客户进行对话

### 1.2 分配whatsapp App账号给坐席（可选操作）

<figure><img src="/files/fGPEdOPfVR3WHOnxoqEM" alt=""><figcaption></figcaption></figure>

* 在whatsapp App账号列表选择齿轮操作按钮。

<figure><img src="/files/NvkUxxjhK8Eg0e0GHrJN" alt=""><figcaption></figcaption></figure>

* 点击 Add Agents按钮后在弹出框里选择子账号。保存后该子账号将获得该whatsapp App账号的使用权限。

### 1.3 Innopaas平台的inbox聊天界面

<figure><img src="/files/cIXZr2t0BeoPwkJ8OnOz" alt=""><figcaption></figcaption></figure>

### 1.4 URL链接方式打开聊天界面

<https://www.innopaas.com/control/whatsapp/inline-chat?to=******>

to参数后面跟目标客户的whatsapp账号 ，手机号可双方约定一个加密方式进行传输

在未登录状态下提示登录

<figure><img src="/files/xKZn2BtwIcCTCtxzhtjD" alt=""><figcaption></figcaption></figure>

#### 1.4.1 URL链接方式聊天界面使用说明

* 登录状态下，可以直接进入与目标客户的聊天界面

<figure><img src="/files/cAxZUWG1Om2nOI2LZwo5" alt=""><figcaption></figcaption></figure>

* 顶部下拉框可以切换客户whatsapp账号

<figure><img src="/files/vISItOtKUOPBTz2OEgYA" alt=""><figcaption></figcaption></figure>

### 1.5 子账号管理（客服账号管理）

<figure><img src="/files/lupb0NDUJJ91z9k5Bhrt" alt=""><figcaption></figcaption></figure>

* 进入Users 用户功能界面，点击Add User 按钮将进入添加子账号

<figure><img src="/files/4dHHmrC5onOxCQnu7TqA" alt=""><figcaption></figcaption></figure>

* 输入邮箱和密码，且选择一个角色，即可创建成功

## 2. 技术对接方案

### 2.1 URL嵌入式页面方式对接

[https://www.innopaas.com/control/whatsapp/inline-chat?to=**\*\*\*\*\*\***](https://www.innopaas.com/control/whatsapp/inline-chat?to=******)

to参数后面跟目标客户的whatsapp账号 ，whatsapp手机号可双方约定一个加密方式进行传输。

在未登录状态下将会跳转到登录界面，可以用子账号进行登录。

### 2.2 API方式对接

同时提供API方式对接，需自行开发客服聊天界面。

\
飞书链接：<https://rkzav3pcv4.feishu.cn/wiki/C9jxwoTscic5R5kasXiccSOXnCd?from=from_copylink>

密码：i6\@95722<br>

## 3. 视频Demo

{% file src="/files/XNW82w2TmxkLqOahHUIa" %}


# WhatsApp营销消息API（MMLite）

## **什么是WhatsApp营销消息API（MM API）？**

Meta WhatsApp营销消息API（简称 MM API，之前称为“MM Lite API”）是专门为发送营销类消息而优化的高级接口。它旨在帮助企业更智能、更高效地通过WhatsApp进行营销活动，并获取详细的效果反馈。

如果您希望通过WhatsApp进行专业的营销活动，并追求可衡量、可优化的营销效果，那么升级并使用WhatsApp营销消息API是您的最佳选择。它让营销变得更智能、更高效。

## 它能解决什么问题？

1. 营销消息效果不佳？
   * MM API 通过智能系统自动优化消息发送，优先触达更可能感兴趣的用户，从而提升消息的阅读率和点击率。
2. 不知道营销活动表现如何？
   * 提供详细的数据分析面板，您可以清楚看到消息的送达、阅读、点击数据。
3. 营销内容不够吸引人？
   * 支持发送GIF动图等更丰富的媒体格式，让营销内容更生动。
   * 未来还将支持图片自动优化（如添加动画效果），让广告更吸引眼球。

## **它和普通的Cloud API有什么不同？**

| 功能     | Cloud API                | MM API                     |
| ------ | ------------------------ | -------------------------- |
| 发送消息类型 | 全部类型：客服消息、验证码、交易通知、营销消息等 | 仅专注于营销消息                   |
| 发送方式   | 按预设名单发送                  | 智能优化发送，系统会尝试找出最可能互动的人群优先发送 |
| 使用场景   | 客户服务、交易通知、用户验证等全业务流程     | 专门的营销推广活动，追求更高的转化和互动       |

简单理解：您可以把普通的Cloud API看作是“全能工具”，而MM API是一把专门为“营销推广”打磨的“精良武器”，在营销场景下更锋利、更有效。

## **如何在InnoPaaS平台上使用？**

首先，创建[营销消息模板](/whatsapp-chan-pin/editor/ying-xiao-marketing-mu-ban)，等待Meta审核。

模板审核通过后，进行MM API的授权，如下图所示：

<figure><img src="/files/09kIoRupznueiLqLTnyY" alt=""><figcaption></figcaption></figure>

授权完后，可以在[群发（Campaigns）](/whatsapp-chan-pin/qun-fa-huo-dong-campaigns)页面选择使用MM API进行营销活动。

<figure><img src="/files/XHfGS0shzDgJL5KmXvRd" alt=""><figcaption></figcaption></figure>

选择授权过MM API的Sender，然后选择“MM Lite”。

<figure><img src="/files/EkRlEI88xDQ0UusLFCl4" alt=""><figcaption></figcaption></figure>

## 使用API接口创建消息模板和发送消息

请参阅：

{% content-ref url="/spaces/sbd17k8pYGOpOfBIUKqm/pages/gFADj0RN1Q5waDEwqnoR" %}
[WhatsApp Business API](/api-reference/whatsapp-business-api/whatsapp-business-api)
{% endcontent-ref %}


# WhatsApp直达广告 (CTWA)


# 接入WhatsApp Business应用用户-“共存”

使用现有的 WhatsApp Business 应用⁠账户和电话号码接入。成功接入后将能够使用您的账户向用户大规模发送消息，同时仍可通过 WhatsApp Business 应用一对一发送消息，且两个应用之间的消息记录保持同步。

## 一、绑定流程

### **1. 访问InnpPaaS 平台**

进入到Sender菜单，点击WhatsApp Business App

<figure><img src="/files/UAL8fgsRdZchJZyh3Cfi" alt=""><figcaption></figcaption></figure>

### **2. 使用 FaceBook 账号登录**

登录授权页面，点击继续

<figure><img src="/files/MpF06A0INDvGxetyxyHJ" alt="" width="375"><figcaption></figcaption></figure>

### **3. 选择业务资产组合**

有可以选择创建资产组合

<figure><img src="/files/fTWdieYyAuwKAqKQvxrI" alt="" width="283"><figcaption></figcaption></figure>

### **4. 选择关联WhatsApp Business 应用**

<figure><img src="/files/iTgIE4veS3QuHk3mC6kJ" alt="" width="375"><figcaption></figcaption></figure>

### 5. 输入**WhatsApp Business**号码

输入号码，并点击【继续】

<figure><img src="/files/T545a1ZqnxQ98U70sZhN" alt="" width="375"><figcaption></figcaption></figure>

### 6. 显示二维码

此时需要打开手机，登录WhatsApp business App 扫描此码

<figure><img src="/files/3fWKJ7OgkTFlsskah3oM" alt="" width="375"><figcaption></figcaption></figure>

### 7.  打开手机 **WhatsApp Business App**

1. 打开下面图标应用，打开应用右上角像机，扫描上面二维码
2. 等待弹出右侧界面后，点击手机 Connect to the Business Platform

<figure><img src="/files/AFCp4ckcUoxpBWPM7EY0" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/KXpUcxwtcFpwAVX0fuTY" alt="" width="375"><figcaption></figcaption></figure>

### 8. 选择是否分享聊天记录

选择分享，系统会同步最近 180 天内发送或接收的所有消息。

* 群聊中的消息不会包含在内
* 媒体消息将不包含媒体素材编号；但是，将单独发送包含媒体消息素材编号的其他历史记录 Webhook，但仅限于接入后 14 天内发送的媒体消息
* 限时消息不包含

选择不分享，则不会同步聊天消息。

<figure><img src="/files/b65Ze6lZVPoEYKcpVzGV" alt="" width="375"><figcaption></figcaption></figure>

### &#x20;9. 确认业务账号

再次扫描二维码，此时InnoPaaS平台会显示确认业务账号信息，如果时区为空，请选择你号码所在国家的【时区】（时区必选，负责将影响后续InnoPaaS平台授信，平台API将无法发送消息）

<figure><img src="/files/Y1JHZNiQehsJUrMSTDSY" alt="" width="375"><figcaption></figcaption></figure>

<figure><img src="/files/S7LqoOV8szIuSoe0i36B" alt="" width="375"><figcaption></figcaption></figure>

### 10. 点击【确认】，等待Meta绑定账户

<figure><img src="/files/Pi2qOpKHHJ1cPsjXFTNZ" alt="" width="375"><figcaption></figcaption></figure>

<figure><img src="/files/JG0tfvlkruqGFLfK23UG" alt="" width="375"><figcaption></figcaption></figure>

### **11. 点击【完成】，完成InnoPaaS 信息绑定**

点击完成按钮，完成最后 InnoPaaS 将授权号码与平台账号绑定。

<figure><img src="/files/9bDczE5QCI0PRdkhlCZg" alt="" width="375"><figcaption></figcaption></figure>

同时手机也将显示绑定完成。

<figure><img src="/files/v5umtTM7ly1DXzEAzgYN" alt="" width="375"><figcaption></figcaption></figure>

## 二、要求与注意事项

### 要求

* 业务客户必须使用 2.24.17 或更高版本的 WhatsApp Business 应用。
* 必须支持业务客户的电话号码国家/地区代码
* 你必须知道如何使用[云端 API](https://developers.facebook.com/documentation/business-messaging/whatsapp/about-the-platform#whatsapp-cloud-api)
* 你必须使用带有[会话记录](https://developers.facebook.com/documentation/business-messaging/whatsapp/embedded-signup/implementation#session-logging-message-event-listener)的嵌入式注册

### 限制

* 为确保与 WhatsApp Business 应用兼容，同時用于 WhatsApp Business 应用和云端 API 的公司电话号码的吞吐量固定为 20 mps。
* 如果你的业务客户过去与某个合作伙伴合作，且仍在共享之前的额度，则他们在尝试切换到新的合作伙伴时可能会看到错误消息。按照[指南](https://developers.facebook.com/documentation/business-messaging/whatsapp/solution-providers/support/business-customer-support)解决错误。

### 不支持的国家/地区

具有以下国家/地区的国家/地区代码的 WhatsApp Business 业务账户电话号码不受支持：

* 尼日利亚
* 南非

### 客户服务窗口期

[客户服务窗口期](https://developers.facebook.com/documentation/business-messaging/whatsapp/messages/send-messages#customer-service-windows)只会在 WhatsApp 用户向已接入云端 API 的业务客户发送消息时开启。如果 WhatsApp 用户在商家接入云端 API 之前向商家发送消息，商家只能使用模板消息进行回复，因为此时还未开放客户服务。如果用户在商家接入云端 API 后向其发送消息，客户服务窗口将照常打开，然后商家可以使用非模板消息进行回复。

### 功能对比

下表介绍了已接入云端 API 的业务客户可用的功能，以及接入后 WhatsApp Business 应用功能的任何变化。

| WhatsApp Business 应用的现有功能                                                                                                                                                                                                                                                                                                                                                                                                            | 接入云端 API 后 WhatsApp Business 应用功能的变化 | WhatsApp Business 应用功能在云端 API 上是否受支持？                              |
| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------ | ------------------------------------------------------------------ |
| 个人（一对一）聊天                                                                                                                                                                                                                                                                                                                                                                                                                            | 不再支持消息编辑/撤回。                         | 支持。可同步最近 6 个月的所有聊天消息。发送和接收的消息会在云端 API 和 WhatsApp Business 应用之间被镜像。 |
| 联系人                                                                                                                                                                                                                                                                                                                                                                                                                                  | 无变化。                                 | 支持。可同步所有拥有 WhatsApp 电话号码的联系人。                                      |
| 群聊                                                                                                                                                                                                                                                                                                                                                                                                                                   | 无变化。                                 | 不支持。群聊不会同步。                                                        |
| 限时消息                                                                                                                                                                                                                                                                                                                                                                                                                                 | 所有个人（一对一）聊天的限时消息功能都将关闭               | 不支持。                                                               |
| [阅后即删消息](https://l.facebook.com/l.php?u=https%3A%2F%2Ffaq.whatsapp.com%2F1077018839582332%3Ffbclid%3DIwZXh0bgNhZW0CMTAAYnJpZBExeU9aNUV1VU5ENm9uRXRjSXNydGMGYXBwX2lkEDIyMjAzOTE3ODgyMDA4OTIAAR5y-Uzo5ZkmVuFmJF05X-ZodJOFv5qy6Szzn7IuPSpGed9FSd0f1WVItrnnyw_aem_EFfXe3McKhvlgWwNiLWa0A\&h=AT3SVK_ARUEEoQN7fhu_3-2DHOesq1DQiALCsvV3nInsnbJ4hmIQz4iC4Ycg09YNp6gnUr3MErSA90GSzY-fV9qn-ZBIsoB3ERH3HNtcbdVYtSJXsPiZOJguWos3icU5R2ZCu7y2w4A) | 所有个人（一对一）聊天的阅后即删消息功能都将禁用             | 不支持。                                                               |
| 实时位置消息                                                                                                                                                                                                                                                                                                                                                                                                                               | 所有个人（一对一）聊天的实时位置消息功能都将禁用             | 不支持。                                                               |
| 群发列表                                                                                                                                                                                                                                                                                                                                                                                                                                 | 群发列表功能将停用。商家将无法创建新的群发列表。现有群发列表将变为只读。 | 不支持。                                                               |
| 语音和视频通话                                                                                                                                                                                                                                                                                                                                                                                                                              | 无变化。                                 | 不支持。                                                               |
| 业务工具（例如：目录、订单、状态）                                                                                                                                                                                                                                                                                                                                                                                                                    | 无变化。                                 | 不支持。                                                               |
| 消息工具（例如：营销消息、问候消息、离开消息、快速回复、标签）                                                                                                                                                                                                                                                                                                                                                                                                      | 无变化。                                 | 不支持。                                                               |
| 业务主页（例如：商家名称、地址、网站）                                                                                                                                                                                                                                                                                                                                                                                                                  | 无变化。                                 | 不支持。                                                               |
| 频道                                                                                                                                                                                                                                                                                                                                                                                                                                   | 无变化。                                 | 不支持。                                                               |

### 关联的设备

商家可将最多 4 个 WhatsApp“配套”客户端关联至其他设备上的 WhatsApp Business 应用账户（在我们的帮助中心中描述为“[已关联的设备](https://l.facebook.com/l.php?u=https%3A%2F%2Ffaq.whatsapp.com%2F378279804439436%2F%3Ffbclid%3DIwZXh0bgNhZW0CMTAAYnJpZBExeU9aNUV1VU5ENm9uRXRjSXNydGMGYXBwX2lkEDIyMjAzOTE3ODgyMDA4OTIAAR4Uhro-TNkHNaTLVNiZQQ66w6J2MowNlR2xRMpU7QuavkPtoHORgDUBcvW9hQ_aem_0vJ3pXKy1b3nxzHOBMbMcA\&h=AT3SVK_ARUEEoQN7fhu_3-2DHOesq1DQiALCsvV3nInsnbJ4hmIQz4iC4Ycg09YNp6gnUr3MErSA90GSzY-fV9qn-ZBIsoB3ERH3HNtcbdVYtSJXsPiZOJguWos3icU5R2ZCu7y2w4A)”）。所有配套客户端均受支持，[Windows 版 WhatsApp](https://l.facebook.com/l.php?u=https%3A%2F%2Ffaq.whatsapp.com%2F1317564962315842%2F%3Fcms_platform%3Dwindows-desktop%26fbclid%3DIwZXh0bgNhZW0CMTAAYnJpZBExeU9aNUV1VU5ENm9uRXRjSXNydGMGYXBwX2lkEDIyMjAzOTE3ODgyMDA4OTIAAR5pdklF2cUj6pt_ENI_lrGdS6eMFEBonex_yHlPOVjvetKyqW86ke2_ljNYaA_aem_4DNMDwMM14d-eVnVvFkScQ\&h=AT3SVK_ARUEEoQN7fhu_3-2DHOesq1DQiALCsvV3nInsnbJ4hmIQz4iC4Ycg09YNp6gnUr3MErSA90GSzY-fV9qn-ZBIsoB3ERH3HNtcbdVYtSJXsPiZOJguWos3icU5R2ZCu7y2w4A) 和 [WearOS 版 WhatsApp](https://l.facebook.com/l.php?u=https%3A%2F%2Ffaq.whatsapp.com%2F564431798835071%2F%3Ffbclid%3DIwZXh0bgNhZW0CMTAAYnJpZBExeU9aNUV1VU5ENm9uRXRjSXNydGMGYXBwX2lkEDIyMjAzOTE3ODgyMDA4OTIAAR4TjR-GwoRI4X71vLMXP6LXNAasMXRG3aiTfGOd4mVlUuxWFAEqv0shSZer8Q_aem_FiL8OH-sE80hU4rRxY9Mag\&h=AT3SVK_ARUEEoQN7fhu_3-2DHOesq1DQiALCsvV3nInsnbJ4hmIQz4iC4Ycg09YNp6gnUr3MErSA90GSzY-fV9qn-ZBIsoB3ERH3HNtcbdVYtSJXsPiZOJguWos3icU5R2ZCu7y2w4A) 除外。如果业务客户使用现有的 WhatsApp Business 应用账户和电话号码接入云端 API，所有配套应用都将与该账户解除关联，之后该商家可以重新关联任何支持的配套应用。

### 未共享消息历史记录

如果商家选择不与你分享其消息历史记录，系统会触发包含错误代码 `2593109` 的 [history](https://developers.facebook.com/documentation/business-messaging/whatsapp/solution-providers/manage-webhooks#history) Webhook。

### 报告转化活动

已接入的业务客户可以投放 WhatsApp 直达广告，因此我们建议你使用转化 API 代表商家报告购买/潜在客户开发信号。请参阅[业务消息的转化 API](https://developers.facebook.com/docs/marketing-api/conversions-api/business-messaging)。

### 业务客户退出

如果某个业务电话号码已在云端 API 和 WhatsApp Business 应用中使用，则无法使用 [POST /\<WHATSAPP\_BUSINESS\_PHONE\_NUMBER\_ID>/deregister](https://developers.facebook.com/documentation/business-messaging/whatsapp/reference/whatsapp-business-phone-number/phone-number-deregister-api#Updating) 端点从云端 API 注销该业务电话号码。取而代之，你的业务客户可以使用 WhatsApp Business 应用与云端 API 解除关联，方法是导航至设置 > 账户 > 商业平台，然后点击解绑账户按钮。当业务客户与云端 API 解除关联时，会触发一个带有 `PARTNER_REMOVED` 事件的 [account\_update](https://developers.facebook.com/documentation/business-messaging/whatsapp/solution-providers/manage-webhooks#account-update) Webhook。

### 错误

如果你使用 WhatsApp Business 应用电话号码接入业务客户，之后可能会收到错误代码为 `131060` 的消息 Webhook。可能出现此情况的原因之一是 WhatsApp 用户使用不支持的[配套设备](https://developers.facebook.com/documentation/business-messaging/whatsapp/solution-providers/manage-webhooks#linked-devices)向商家发送消息或接收商家发送的消息。如果你收到此 Webhook，请提示商家在 WhatsApp Business 应用中查看消息。

### 聊天记录内容

如果在解决方案提供方请求商家聊天记录时，商家已批准共享聊天记录，则会触发一系列历史记录 Webhook，其中描述自商家接入云端 API 后 180 天内发送或接收的所有消息。

* 群聊中的消息不会包含在内
* 媒体消息将不包含媒体素材编号；但是，将单独发送包含媒体消息素材编号的其他历史记录 Webhook，但仅限于接入后 14 天内发送的媒体消息


# WABA/Senders基础与指南


# 接入前准备材料

* Facebook账号：需要稳定没有被封，新FB账号需要同一IP同一设备登录养号几天；
* 用于下发消息的电话号码：未注册任何WhatsApp产品，能够正常收验证码（语音验证码也可以），建议使用新的海外号码；
* 企业官网：必须含营业执照的企业名称全称、地址、联系电话。举例：<https://innopaas.com>
* 企业邮箱：邮箱域名需同官网的域名一致，也用于后续接收各种Meta邮件通知，请留意。举例：<brand.product@innopaas.com>
* 企业的资质证书/营业执照：需要含有企业名、地址、联系号码（当地号码，可收验证码）；
* 如果营业执照/资质证书里不包含当地电话号码，则还需提供以下带有号码的任意一份材料：\
  a. 营业执照/公司章程；\
  b.公司注册或许可文件；\
  c.政府签发的公司税务文件：包括税务证明；\
  d.公司银行对账单；\
  e.公共事业账单（水电费账单、话费账单、燃气账单等）


# BM公司验证

本篇介绍了如何在BM账户中进行公司验证。

{% hint style="info" %}
在进行BM公司验证前，请确保准备好所需[材料](/whatsapp-chan-pin/wabasenders-ji-chu-yu-zhi-nan/jie-ru-qian-zhun-bei-cai-liao)。
{% endhint %}

BM公司验证是Meta官方为确保平台安全与合规所设立的强制性审核流程。其核心目的是验证您的BM账户是否代表一家真实、合法的企业或组织。完成此项验证是解除WhatsApp Business API功能限制、实现规模化商业通信的唯一官方途径。在未完成验证前，您的账户将处于受限的“测试”状态。

下表清晰说明了验证前后，您在WhatsApp Business API使用权限上的核心差异：

<table><thead><tr><th width="136.99993896484375">功能项</th><th width="152.66668701171875">未完成公司验证</th><th>已完成公司验证</th></tr></thead><tbody><tr><td><a href="/pages/ar9gEmno2RzQzNB6VV9b">业务发起对话</a>（24小时内）</td><td>限250个对话</td><td>2,000-10,000-100,000-无限制（逐步提升）</td></tr><tr><td>可注册<a href="/pages/YzT90QN405aiwQOyWWKg">电话号码</a>数量</td><td>最多2个</td><td>最多20个（同一BM下）</td></tr><tr><td><a href="/pages/gdbePwEduq9jrn7xooRb">官方商业账户（OBA）</a></td><td>不可申请</td><td>有资格申请</td></tr><tr><td>账户信誉与信任度</td><td>基础级别</td><td>显著提升，获官方认可</td></tr></tbody></table>

已验证公司如下所示：

<figure><img src="/files/6OUi406WG1wzvCbDWziL" alt=""><figcaption></figcaption></figure>

## 1. 开始验证

在[创建完BM和WABA](/whatsapp-chan-pin/chuang-jian-bm-he-waba)后，转至BM管理平台的“[安全中心](https://business.facebook.com/latest/settings/security_center?business_id=)”，然后点击“开始验证”。

<figure><img src="/files/GvIG5dKRMclefxc54SQL" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/wqwgoKv5P5dBo8xNJKcc" alt="" width="375"><figcaption></figcaption></figure>

## 2. 提供公司详细信息

<figure><img src="/files/DgNLZqLiSkbOb4ZCjNP3" alt="" width="375"><figcaption></figcaption></figure>

<figure><img src="/files/OPOyUqTp27JUPNug2Zm0" alt="" width="364"><figcaption></figcaption></figure>

{% hint style="info" %}
您填写的公司名称、地址、电话必须与证明文件中的名称、地址、电话完全一致。

您填写的网站必须含有证明文件中的公司名称、地址。
{% endhint %}

## 3. 选择验证方式

选择一种验证公司关联性和真实性的方式。我们推荐[电子邮件验证](#id-3.1-dian-zi-you-jian-yan-zheng)和[域验证](#id-3.2-yu-yan-zheng)。

<figure><img src="/files/vybViO5NSCYlXUEH46hX" alt="" width="375"><figcaption></figcaption></figure>

### 3.1 电子邮件验证

如果您选择电子邮件验证，则需要输入与公司官网的域名相⼀致的邮箱进行验证。例如：官网为 [www.dagongsi.com](http://www.dagongsi.com), 邮箱应为<xxxx@dagongsi.com>

<figure><img src="/files/wHzD7aktT6cO7CwI7fdn" alt="" width="375"><figcaption></figcaption></figure>

### 3.2 域验证

如果您选择域验证，则需进行前置步骤：域名验证。转至“[网域验证](https://business.facebook.com/latest/settings/domains?business_id=)”页面，添加域名，如：innopaas.com

<figure><img src="/files/GDwFuxb1ukXl6cy32MYR" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/fY0mnueJ33rRYFqXnKPM" alt="" width="375"><figcaption></figcaption></figure>

<figure><img src="/files/F3KmNNPS0I78KoyOVCDE" alt="" width="375"><figcaption></figcaption></figure>

验证域名的有三种方式，按照说明，选择其中一种进行验证。

* 添加meta标签
* 上传HTML文件到根目录
* 向网域注册服务机构更新DNSTXT记录

已验证的域名如下所示：

<figure><img src="/files/72JsGvHkwdXiPvgGbLyn" alt=""><figcaption></figcaption></figure>

回到BM公司验证页面，选择“域验证”。

<figure><img src="/files/A8yABe9Xuo9jjGgPVMAo" alt="" width="375"><figcaption></figcaption></figure>

## 4. 上传证明文件

第一份文件中必须显示公司名称和地址，最好还包含一个可收验证码的电话号码。

<figure><img src="/files/9gJ27nvZ1kHk0Ib1n2Pj" alt="" width="375"><figcaption></figcaption></figure>

第二份文件是在第一份文件中没有包含地址、电话号码时，需要提供的，可以是一份水电费账单或话费账单。注意：文件中的电话号码可能需要收验证码。

<figure><img src="/files/wEZxFU3GBeh9SqNlQOaK" alt="" width="375"><figcaption></figcaption></figure>

## 5. 提交成功

公司信息提交成功后，请耐心等待审核。待审核完成后，您会收到通知，请留意。

请注意，BM公司验证是一个完全由Meta内部审核和管理的流程。InnoPaaS作为您的解决方案提供商，我们无法直接干预、查询其具体状态或加快审核进度。如果您在提交后遇到问题，建议您优先根据[Meta的官方指引](https://www.facebook.com/business/help/2342133782492969?id=180505742745347)，自行排查可能导致验证失败的原因。同时，我们乐意为您提供相关的经验建议，请随时[联系我们](/bang-zhu-yu-zhi-chi/innopaas-tuan-dui)。

## 6. BM公司验证与OBA蓝标认证的区别

BM公司验证是证明“您是谁”，而[官方商业账户（OBA）蓝标](/whatsapp-chan-pin/wabasenders-ji-chu-yu-zhi-nan/guan-fang-shang-ye-zhang-hu-oba-lan-biao)认证是证明“您很知名”（品牌具有广泛的公众认知度）。OBA认证也是需要申请的。


# 电话号码（Senders）

电话号码是您连接WhatsApp Business API与客户的唯一官方身份标识和通信通道，必须是一个真实、专用且未绑定个人WhatsApp账号的号码。

请查看以下子章节获取更多关于电话号码的信息。


# 添加电话号码

如果您还没有WABA，请通过[嵌入式注册流程](/whatsapp-chan-pin/chuang-jian-bm-he-waba)创建一个新WABA并添加电话号码。

如果您已经有了WABA，想要在此WABA下再添加一个号码，请同样参阅以下章节，在第六步时按照[情况3](/whatsapp-chan-pin/chuang-jian-bm-he-waba#di-liu-bu-chuang-jian-bm-he-waba)操作。

{% content-ref url="/pages/Slk1wy8w1Av62cu2thR8" %}
[创建BM和WABA](/whatsapp-chan-pin/chuang-jian-bm-he-waba)
{% endcontent-ref %}

{% hint style="info" %}
对于新的业务资产组合（BM），已注册电话号码的初始上限为2个。如果您已完成[公司验证](/whatsapp-chan-pin/wabasenders-ji-chu-yu-zhi-nan/bm-gong-si-yan-zheng)，或您已达到2,000条的[消息限额](/whatsapp-chan-pin/wabasenders-ji-chu-yu-zhi-nan/dian-hua-hao-ma-senders/xiao-xi-xian-e)，Meta会自动将您的数量上限提高至20个。
{% endhint %}


# 电话号码状态与质量

{% hint style="info" %}
电话号码在InnoPaaS平台上显示为”[Sender](/whatsapp-chan-pin/whatsapp-xiang-guan-jie-shao#sender-shi-shen-me)“。
{% endhint %}

<figure><img src="/files/QAwq8cRA2Nvs9XrDqXKt" alt=""><figcaption></figcaption></figure>

**Status**显示为CONNETED则为连接成功。

**Quality Rating**如显示为GREEN则为正常，无需任何操作；如显示为YELLOW，则表示该号码质量评级降低，可能是由于发送了低质量消息或被少量投诉，请随时关注号码/[消息状态](/whatsapp-chan-pin/editor/mu-ban-zhuang-tai-he-zhi-liang)；如显示为RED，请立即暂停发送任何消息，可能已被大量投诉，请耐心等待质量评级回升（一般情况下是一周左右），同时建议修改消息模板的内容，以避免被投诉。


# 消息限额

登录InnoPaaS账号：<https://innopaas.com/control/login>

在WhatsApp-Senders中查看消息限额。

<figure><img src="/files/16lVx4RFtjp5H3vlbvc1" alt=""><figcaption></figcaption></figure>

## **消息限额说明**

消息限额是指在连续24小时内，您的企业可以在客户服务时间窗（24小时内用户未主动联系您）之外，向不同客户发送业务发起消息（模板消息）的最大用户数量。

此限额的计算层级为 “业务资产组合（BM）” ，而非单个电话号码。这意味着，同一资产组合（BM）下的所有业务电话号码共享一个总额度。如果一个号码消耗了大量额度，组合内的其他号码可用的额度也会相应减少。

所有新创建的业务资产组合（BM），其初始消息限额为250个独立用户。您可以通过提升账户质量和表现，逐步解锁更高的限额级别：

**限额级别**：250 → 2,000 → 10,000 → 100,000 → 无限制

要达到第一个提升门槛（从250提升至2,000），您必须至少完成以下“扩展路径”中的一项：

* 路径一：验证公司完成[BM公司验证](/whatsapp-chan-pin/wabasenders-ji-chu-yu-zhi-nan/bm-gong-si-yan-zheng)。
* 路径二：在连续30天内，使用[高质量评分](https://www.facebook.com/business/help/687938765816627)的[模板消息](/whatsapp-chan-pin/editor)，成功向独立用户发送2,000条送达消息。

当您完成上述任一扩展路径后，Meta将自动分析您账户的消息质量（包括用户互动、反馈、模板合规性等）。基于此分析，系统会自动决定是否批准您的账户进入下一限额级别（例如从2,000提升至10,000）。此后的进一步提升（至100,000或无限制），也遵循同样的自动评估与扩展机制。


# 显示名

每个电话号码都有对应的显示名，该显示名须与您的公司名称或品牌名称相关联。显示名将出现在您电话号码的WhatsApp主页中：

<figure><img src="/files/ZgZBGSfhRUV1lS6SCQvr" alt="" width="375"><figcaption></figcaption></figure>

所有显示名都将被Meta审核，具体要求请参阅[WhatsApp Business 开放平台的显示名守则](https://www.facebook.com/business/help/757569725593362)。

如果您想修改显示名，请转至[BM管理平台](https://business.facebook.com/latest/settings/whatsapp_account?business_id=)，找到对应WABA，点击右下角“WhatsApp 管理工具”，再选择“电话号码”，点击进入到“个人主页”，您可以在此处修改显示名，同时还可以更换头像或添加一些公司详情，如地址、网站等。

<figure><img src="/files/kKWhQxbhewS7ASEEIhTY" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/ynAtUnoLkbhVUdCZ22Je" alt=""><figcaption></figcaption></figure>


# 官方商业账户(OBA)-蓝标

## OBA是什么？

官方商业账户（OBA）认证，一般被称为“蓝标”认证，是指根据特定标准已认证为真实知名品牌的商企所拥有的业务电话号码。在联系人视图中，官方商业账户业务电话号码的显示名旁边会显示一个蓝色勾号。

<figure><img src="/files/PSgQtWZpv2Mb58M4U3U6" alt=""><figcaption></figcaption></figure>

## 资格

若要有资格申请OBA，必须符合下列条件：

* 商企必须遵守[WhatsApp Business 消息政策](https://business.whatsapp.com/policy)。
* 商业账户必须已在WhatsApp Business开放平台注册满30天。
* 商业账户应代表一家搜索频率高的知名企业、品牌或实体。
* 拥有此号码的业务资产组合已通过[公司验证](/whatsapp-chan-pin/wabasenders-ji-chu-yu-zhi-nan/bm-gong-si-yan-zheng)得到认证。
* 业务电话号码已启用两步验证。
* 业务电话号码的[显示名](/whatsapp-chan-pin/wabasenders-ji-chu-yu-zhi-nan/dian-hua-hao-ma-senders/xian-shi-ming)已获批。

## 知名度

知名度要求公司代表的是一家搜索频率高的知名品牌或实体。这不应被视为商企真实性的判断依据。

另一方面，知名度反映了在网络新闻文章中的显著曝光度。Meta根据某个账户在拥有大量受众的电子刊物新闻文章中的出现频次来评估其知名度。Meta不会将付费或促销内容当作来源予以审核，包括公司或应用名录。

OBA号码状态是针对业务电话号码及其显示名授予的。Meta会针对申请OBA状态的业务电话号码，评估显示名的知名度。如果显示名在获得OBA号码状态后发生更改，Meta将需要重新评估新显示名的知名度和显示名合规性。

此外，即使某个WhatsApp Business商业账户拥有的其他业务电话号码已获OBA状态批准，也不保证该账户所有业务电话号码都能获得批准。如果该WABA包含一个主要的母品牌，且与该品牌关联的电话号码符合知名度要求，建议您按如下方式更新各子品牌的显示名：“{{notable name}} 旗下的 {{sub-brand name}}”。

## 通过WhatsApp管理工具申请OBA

访问[BM管理平台](https://business.facebook.com/latest/settings/whatsapp_account?business_id=)，点击“WhatsApp 管理工具”，然后点击“电话号码”，进入到“个人主页”，从下图中圈出的地方可以提交申请。

{% hint style="info" %}
请注意，如果您无法点击该按钮，则意味着您暂时无法申请OBA。
{% endhint %}

<figure><img src="/files/dQb9Z2macqsZm8wOFS4L" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/gOqpYasCYVkAFXjkDM48" alt=""><figcaption></figcaption></figure>

点击“提交申请”按钮，然后填写表单。

* 您可以提交最多5个支持链接（尤其是来自《今日印度》、《经济时报》、《华尔街日报》、路透社、维基百科、《商业内幕》等知名出版物的链接），以证明该企业具有知名度，这将有助于Meta判断其知名度。
* 业务运营、母公司或品牌（尤其是知名品牌）所在国家/地区以及首选语言等字段有助于进一步了解您的品牌及您使用OBA的资格。

<figure><img src="/files/es05wlNVXLIR1wTlX9nK" alt="" width="375"><figcaption></figcaption></figure>

## 申请遭拒

如果您的申请遭拒，这表示Meta团队已认真审核您的账户，并确定该账户目前尚不符合OBA号码状态的申请条件。目前无法就这些决定提出申诉。您可以继续提升品牌形象，待30天后再次提交申请。您也可以随时联系[InnoPaaS团队](/bang-zhu-yu-zhi-chi/innopaas-tuan-dui)，作为您的解决方案提供商，我们乐意为您提供相关的经验建议。


# WABA受限处理

Meta对[WhatsApp商业账户（WABA）](/whatsapp-chan-pin/whatsapp-xiang-guan-jie-shao)设有严格的使用规范，违规操作可能导致账户功能受限或停用，进而影响业务连续性。为确保您的账户长期稳定运行，我们建议您提前了解并遵循平台规则、建立预防性运营策略，并掌握有效的官方[申诉](#ru-he-dui-yi-shou-xian-waba-zhang-hao-jin-xing-shen-su)流程，以最大程度降低运营风险、保障客户沟通渠道的畅通。

## WABA受限的原因

WABA账户受限或停用通常源于两大核心维度：账户基础可信度不足与消息运营行为违规。

一方面，账户的基础信息与资质至关重要。例如，用于注册的Facebook个人账户若为新注册或活跃度过低，会直接影响账户的可信度；同样，若企业填写的官方网站无法正常访问，或所属行业本身不符合WhatsApp商业平台政策（具体请参阅《[WhatsApp商业消息政策](https://business.whatsapp.com/policy)》），账户将面临高风险。

另一方面，实际运营行为是决定账户状态的关键。最常见的违规包括：未经用户明确同意发送商业信息导致用户投诉、消息内容涉及平台禁止的类别（如误导、欺诈或违禁品销售），以及因消息质量差引发用户负面反馈率过高，这些行为均会直接触发Meta平台审核机制。更多请参阅：《[违反WhatsApp Business开放平台政策的行为](https://developers.facebook.com/documentation/business-messaging/whatsapp/policy-enforcement-violations)》

## 运作方式

违规后，WABA账户首先会收到一条警告，其中包含所违反政策的相关信息。如果WABA屡次违反[WhatsApp Business服务条款](https://www.whatsapp.com/legal/business-terms)（例如发送垃圾信息、模板分类错误）或高风险政策类别（例如成人内容、烟酒销售、毒品、赌博和不安全补充剂），则可能会受到消息功能限制，且限制时长会逐渐增加。

这些限制可能包括：

* 封禁1天或3天，在此期间将无法发送营销、实用型和身份验证三类模板消息，也无法向账户添加更多电话号码；
* 封禁5天、7天或30天，在此期间将无法发送任何消息，也无法向账户添加更多电话号码；
* 账户锁定，将无限期禁止发送任何消息；只能通过[申诉](#ru-he-dui-yi-shou-xian-waba-zhang-hao-jin-xing-shen-su)移除此锁定；
* 如果商企在受到多次警告和功能限制或禁用后仍未进行整改，最终会被永久禁用WhatsApp Business开放平台（[BM](/whatsapp-chan-pin/whatsapp-xiang-guan-jie-shao#bm-shi-shen-me)）。

在某些情况下，如有证据表明存在对用户造成严重伤害的政策违规行为（例如剥削儿童、诈骗、恐怖主义或销售非法药物），Meta将立即注销相应WABA账户。如果您的账户收到过多用户负面反馈，Meta还可能会限制或终止您使用WhatsApp。

为保障账户长期稳定，关键在于：注册时确保所有信息真实合规，运营中严格遵守许可式沟通原则并持续监控消息质量，并在收到Meta平台警告后立即停止违规行为并按指引进行[申诉](#ru-he-dui-yi-shou-xian-waba-zhang-hao-jin-xing-shen-su)。

## 如何对已受限WABA账号进行申诉？

登录[BM管理后台](https://business.facebook.com/latest/settings/whatsapp_account?business_id=)，找到对应受限的WABA，点击”WhatsApp 管理工具“。

<figure><img src="/files/QjAWBUAhlwcr10pV5d9x" alt=""><figcaption></figcaption></figure>

随后在页面上方点击”前往业务支持中心查看详情“。

<figure><img src="/files/hl4ACzXpohOoi2l4ifp0" alt=""><figcaption></figcaption></figure>

根据官方的不同要求进行申诉。可能的情况1：

<figure><img src="/files/YzB51pp48Dex2kJxK3Tp" alt=""><figcaption></figcaption></figure>

可能的情况2：

<figure><img src="/files/KeMH9L4qy4ROUeeFD6Kg" alt=""><figcaption></figcaption></figure>

{% hint style="info" %}
请注意，您只有1次申诉机会，建议申诉时清晰、诚恳地像Meta团队说明情况。
{% endhint %}

## 申诉内容建议

### **1. 公司/品牌说明**

* 公司全称、品牌介绍、官网地址、主营业务

### **2. 使用场景说明**

* 真实说明注册WABA是为了解决哪些业务需求。例如：用于订单通知、OTP验证、客户服务等
* 具体描述消息发送场景，如：
  * “将WhatsApp聊天按钮嵌入官网，供客户咨询”
  * “用户登录、注册、支付的双重验证”
  * “向已订阅用户发送限时折扣、会员专享优惠”

### **3. 受限带来的业务影响**

* 说明账户受限对当前业务的实际影响。例如：大量用户登录受阻、售后处理停滞、订单确认中断、会员服务中断等

### **4. 合规承诺**

* 表明已阅读并理解WhatsApp商业政策
* 承诺后续将严格遵循政策，规范使用账户
* 请求Meta团队复核账号并解除限制

## 如何避免WABA受限？

### 1. Facebook账户选择与管理

* **使用可信账户注册**
  * 优先选择使用时间超过6个月、有正常社交行为的Facebook个人账户
  * 避免使用新注册的“白号”或购买来历不明的账户
* **新账户培养策略**
  * 保持稳定的设备与IP环境登录
  * 逐步建立社交关系：添加3-5个可信好友
  * 每日进行适度浏览、点赞等正常用户行为

### 2. 企业信息准备

* 确保企业网站可正常访问且内容真实
* 填写完整的企业联系信息
* 提前确认业务类型符合WhatsApp允许范围

### 3. 消息发送策略

**初期阶段（前30天）**

* 优先发送低风险消息类型：验证码、订单确认与物流通知

**中期阶段（30-60天）**

* 逐步引入中等风险消息：会员积分通知、老客户专属优惠、购物车提醒
* 建立分时段发送机制

**稳定阶段（60天后）**

* 谨慎引入营销类消息

### 4. 投诉率风险等级参考

根据行业经验，各类消息的投诉率排序：

* **低风险**：验证码、交易通知、服务会话
* **中风险**：忠诚客户促销、购物车提醒
* **高风险**：新客户触达、流失客户召回

### 5. 实时监控指标

[号码质量评分](/whatsapp-chan-pin/wabasenders-ji-chu-yu-zhi-nan/dian-hua-hao-ma-senders/dian-hua-hao-ma-zhuang-tai-yu-zhi-liang)：定期查看平台提供的质量评级

[模板审核状态](/whatsapp-chan-pin/editor/mu-ban-zhuang-tai-he-zhi-liang)：监控模板通过率与拒绝原因

### 6. 预警信号与应对措施

* **电话号码质量降至“Low” (RED)**
  * 立即暂停发送所有消息
  * 待评级回升后先发送验证码消息
* **模板频繁被拒**
  * 优化消息内容与结构，避免使用误导性表述
  * 确保语言和内容符合当地文化
* **收到平台警告**
  * 根据警告级别调整发送策略
  * 检查模板内容、状态


# 开始使用

可发送WhatsApp验证码和SMS验证码的通用通道

## OTP产品是什么？

OTP产品提供专业的短信与WhatsApp双通道验证码发送服务，确保您的用户登录、交易等关键流程安全可靠。

**双通道选择**

* 短信验证码：基于运营商网络，覆盖广，适用性强。
* WhatsApp验证码：通过互联网发送，送达率高、成本优。您无需自建WhatsApp商业账号，即可通过我们的共享通道快速使用。

**核心优势**

* 必达保障：双通道选择，提升送达可靠性。
* 全球覆盖：支持向多国用户发送。
* 快速集成：提供简洁API，助您快速上线。
* 实时监控：提供发送状态与送达报告。

平台页面测试发送

您可以在InnoPaaS平台的OTP产品页测试发送短信验证码或WhatsApp验证码。点击“OTP-Overview”进入测试发送流程。

步骤1：

发送验证请求：填写收件人信息，选择发送方式（SMS、WhatsApp）、语言、Sender及待测试的验证码，点击发送。

<figure><img src="/files/icj5YgZaLDPCtrwvV4hL" alt=""><figcaption></figcaption></figure>

步骤2：查看验证响应

<figure><img src="/files/UNl6Nkfqa4ZxJ5Abtt19" alt=""><figcaption></figcaption></figure>

步骤3：查看发送报告

<figure><img src="/files/gx49hLA8ppqZ6hP7WlDF" alt=""><figcaption></figcaption></figure>

## OTP产品API接口文档

请参阅：

{% content-ref url="/spaces/sbd17k8pYGOpOfBIUKqm/pages/L7I2lwz2scNUxgvsAMIZ" %}
[OTP API](/api-reference/otp-api/otp-api)
{% endcontent-ref %}


# 模板(Templates)

如果您对OTP模板创建有要求，您可以在此处创建，如下图所示：

<figure><img src="/files/MB76IYywuT2tSmoujfRX" alt=""><figcaption></figcaption></figure>

{% hint style="info" %}

* Template Name: 名称仅支持小写字母 a \~ z , 0 \~ 9 和下划线(\_)
* Sending Strategy : 选择WhatsApp&#x20;
  {% endhint %}

根据需求填写。


# 分析(Analytics)


# 上行验证码(FOTP)

点击"OTP-FOTP"模板功能并创建新模板。

## 1. 创建新的Fotp模板

<figure><img src="/files/ZX8ySnsiOaimjpOEpbRL" alt=""><figcaption></figcaption></figure>

步骤1：点击\[+New Template]

步骤2：根据实际需求维护模板内容

1. 填写模板名称及回调地址（客户端发送内容后，我们将向您推送包含文本内容和验证码的上游信息）。
2. 维护模板的语言及文本内容（默认内容为英文，可根据实际需求调整模板内容）。
3. 确认是否需要成功/失败通知消息，并维护通知消息内容。
4. 点击提交后，模板即生效。

<figure><img src="/files/rlHV6a3WBdEo91a2Tuuf" alt=""><figcaption></figcaption></figure>

## 2. 接口对接与发送

详情请参阅Fotp接口文档: <https://dash.readme.com/project/innopaas/v2.0/docs/fotp%E6%8E%A5%E5%8F%A3%E6%96%87%E6%A1%A3>


# 开始

> 如果您想发短信验证码，请参阅[OTP产品](/otp-chan-pin/test-send)介绍。

平台页面测试发送

登录InnoPaaS平台，点击“Channel-SMS-Overview”进入测试发送流程。

\
**步骤1：**\
发送请求：填写收件人信息，发送内容，点击发送。

<figure><img src="/files/Er8QsanEME8xqt4sX3WE" alt=""><figcaption></figcaption></figure>

**步骤2**：查看响应和返回报告。

<figure><img src="/files/4MWBhwcIfsn8mNxRnG09" alt=""><figcaption></figcaption></figure>

在发送记录页面可以查看发送详情。

<figure><img src="/files/Ls25EtGbVpDNoiLXN2Vt" alt=""><figcaption></figcaption></figure>

## 短信API接口文档

请参阅：

{% content-ref url="/spaces/sbd17k8pYGOpOfBIUKqm/pages/nVSh2LbniIxaBORuthJb" %}
[SMS API ](/api-reference/sms-api/smsapi-jie-kou-v3.0)
{% endcontent-ref %}


# 短信营销群发（Campaigns）

您可以在群发页面创建群发营销活动。

## 手动输入收信者号码

<figure><img src="/files/S67GKVEKdMFwgSPPIXmN" alt=""><figcaption></figcaption></figure>

选择Manual input

<figure><img src="/files/czsCq9KOcBhBvWuIsqpJ" alt=""><figcaption></figcaption></figure>

下一步。

<figure><img src="/files/8aTn2M47AAubj0CAEe5j" alt=""><figcaption></figcaption></figure>

## 上传联系人列表（Contact List）

请先在Contact List处添加联系人。

<figure><img src="/files/AVOtJzzCBMvcbWnrFz0r" alt=""><figcaption></figcaption></figure>

然后回到Campaigns页面，选择Contact List

<figure><img src="/files/GlJ1nvoApffvLST2d2j6" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/Dum0sPDnaiKrvUN0HRWO" alt=""><figcaption></figcaption></figure>

## 上传号码文件

<figure><img src="/files/Y2hiVPO7QlGsWEUC6Wjf" alt=""><figcaption></figcaption></figure>

根据要求上传文件。

<figure><img src="/files/CBI7dGCi6jotpWjdd21f" alt=""><figcaption></figcaption></figure>


# 任务列队(Task Queue)


# 数据中心(Data Center)

在SMS的数据中心可以查看消息的发送详情，按每日、月份、国家进行数据统计。

<figure><img src="/files/Mk7tl4W9CStzK0TdchPJ" alt=""><figcaption></figcaption></figure>


# 服务条款

版本发布日期：2024年4月14日

版本生效日期：2024年4月14日

如果您在2024年4月14日或之后创建帐户，则本服务条款立即生效。请注意，您在2024年4月14日之后继续使用我们的服务即表示您接受本服务条款。&#x20;

目录

1. 引言
2. 约束力
3. 帐户
4. 付费服务和免费服务
5. 服务的可用性和中断
6. 费用和付款
7. 保密性和数据保护
8. 市场营销
9. 使用要求
10. 免责声明、责任限制和赔偿
11. 期限和终止
12. 不可抗力
13. 转让
14. 知识产权
15. 可分割性
16. 适用法律和争议解决

欢迎您使用 InnoPaaS 在线服务，感谢您的关注。本服务条款是您与 InnoPaaS 之间就您使用本服务达成的具有法律约束力的合同。在本服务条款中，“InnoPaaS”、“我们”和“我们的”均指 InnoPaaS 的签约实体。

请仔细阅读以下条款。

您务必了解您的责任以及您选择使用的服务的限制。我们的服务种类繁多，因此，可能适用其他特定服务的条款。如有此类情况，这些特定服务的条款将成为我们协议的一部分。

请负责任地使用我们的服务。使用我们的网站或任何服务，即表示您同意我们的条款。请注意，这些条款可能会有所变更。我们建议您定期查看这些条款。

## 1.引言

您希望使用 InnoPaaS 服务（指本条款项下提供的服务；以下简称 “服务”或“免费服务”，统称“服务”），您可以选择作为付费客户（“客户”）和/或作为非付费客户（“非付费客户”）使用我们的免费服务。 在您通过我们的在线注册表格申请服务后，根据第 4.1 条，您将成为我们的非付费客户，直至 InnoPaaS 自行决定另行变更为止。

InnoPaaS 是一家在香港注册的科技公司，其注册办事处位于FLAT/RM A 12/F ZJ 300 LOCKHART ROAD&#x20;WAN CHAI, Hong Kong。 您希望使用本服务，我们也愿意根据本条款向您提供服务。&#x20;

## 2.约束力

您正在签订一份具有约束力的协议。如果您代表您的雇主或其他人士接受本服务使用条款，则您确认您已获得您的雇主或该人士的同意，可以代表他们行事。本条款适用于所有与所有相关的记录。

您在 InnoPaaS 网站上进行的交易，包括取消通知、政策、合同和申请。为了访问和保存您的电子记录，您可能需要某些硬件和软件， 您需自行负责这些硬件和软件的购置。

如果您未达到与我们订立具有约束力的合同的法定年龄，或者法律禁止您使用我们的服务，则您无资格接受这些条款或使用我们的服务。

## 3.账户

注册。为了提供我们的服务，我们可能需要您提供某些信息，例如您的姓名、公司名称和电子邮件地址。您必须确保信息的完整性和准确性。如果您提供的信息不完整或不准确，我们可能会暂停或终止任何服务，并且您应赔偿 InnoPaaS 因您未能提供完整准确信息而可能产生 的任何责任。如果您的任何信息发生变更，您必须立即通知我们。我们将为您提供或要求您为每个帐户选择一个用户名或客户 ID 和密码。

账户安全。为了账户安全，您：

必须对您的用户名、客户 ID 和密码保密；

不得规避或试图规避我们的用户身份验证系统；

如果您的帐户被未经授权使用或发生任何其他安全漏洞，您必须立即通知我们；

对您账户上发生的所有付款和任何活动负全部责任；

您须对我们或任何第三方因您的任何行为，或因第三方使用您的密码、账户名或账户信息而遭受的任何损害、损失或费用承担责任；并且您必须赔偿我们因任何第三方使用您的密码、帐户名或帐户信息或因您违反本条款而引起的任何索赔。

您全权负责确保您的帐户符合这些条款。InnoPaaS 保留审查所有服务流程的权利，以确保您遵守这些条款。

## 4.付费服务和免费服务

本服务允许已充值的付费客户使用我们在线注册时所述的移动服务。本服务项下的任何此类计费单位在本条款和条件中均称为“计费事件”。

免费服务将允许非付费客户：使用上述第 4.1 条所述服务的一项或多项试用功能；和/或您可使用上述第 4.1 条所述服务的任何元素，或我们随时酌情免费 向您提供的任何其他服务。

您可以通过我们网站上更详细描述的 Web 应用程序、API 网关、软件工具和/或 Web 服务访问部分或全部免费服务元素。&#x20;

## 5.免费服务结束

免费服务结束后，您可以选择申请完整服务，从而成为付费客户。 服务的条款和条件将以书面形式详细说明。如果本条款与后续条款之间存在任何冲突，则以后续条款为准。

不退款：您理解，成为付费客户后，您发起的退款不包括我们的测试费、第三方支付系统的手续费，如果您严重违反 InnoPaaS 平台规则，您的充值费将不予退还。

您理解，如果您需要退还充值费用，相关事宜将另行通知。手续费将由您承担，您也理解由于中间银行的手续费扣除规则不同， 如果您的金额过小，扣除手续费后可能无法退款，所有手续费均由第三方收取，我们不会收取任何费用。

限制。您不得，且不得允许您的关联公司、员工、承包商以及任何受您控制、管理、监督或其他方式约束的第三方以任何方式访问服务，以规避费用或规避使用限制。

## 6.服务的可用性和中断

我们将以合理的技能和谨慎态度向您（作为客户和/或非付费客户）提供服务。但是，您承认并同意，服务的可用性、您访问和/或使用服务的能力以及任何收费活动的进行可能取决于超出我们合理控制 范围的因素，包括但不限于：

影响服务运行和/或妨碍收费活动成功进行的因素，例如任何电信网络运营商（“网络运营商”）网络中的地理或地形缺陷、网络容量、 物理障碍或大气条件；或阻止最终用户接收收费事件的因素，例如最终用户服务提供商的条款和条件。

因此，我们不能保证：服务将始终可用，或不会出现故障或中断；

使用服务发送的任何收费事件的任何预期接收者（如适用）都会收到。

如果由于任何网络运营商的技术或其他故障，或任何其他超出我们合理控制范围的事件导致我们无法向您提供服务，我们对此不承担任何责任。我们按“现状”和“现有”提供所有服务，并且我们在此不作任何明示或暗示的保证、声明或担保，包括但不限于：任何服务均无错误或中断、始终可用、适用于任何用途、安全可靠或不侵犯任何第三方权利。

我们可自行决定随时更改或改进我们向您提供的服务，但前提是任何此类更改不得实质性地影响服务的性质或功能。

我们可能不时需要暂停向您提供的服务，以便进行例行或紧急维护和/或维修，并且我们将在合理可行的范围内，在任何此类暂停之前向您提供合理的通知期。

我们可自行决定随时暂停您对服务的访问和/或停止允许您举办任何 收费活动。我们有权以任何理由终止本条款，届时我们将尽快向您发出适当的通知。

如果您用于 InnoPaaS 服务的帐户连续十二个月处于非活动状态， InnoPaaS 有权自行决定暂停向您提供的 InnoPaaS 服务。您可以向 InnoPaaS 发送请求以重新激活帐户，但需在所需重新激活日期前三个工作日发送请求。

如果 InnoPaaS 终止服务或对服务进行任何可能实质性降低该等服务功能的变更，InnoPaaS 将尽商业上合理的努力，在变更生效前通过合理提前通知的方式告知您，前提是您已订阅接收此类变更通知。如果终止或变更系为应对紧急情况或对服务构成的威胁所必需，InnoPaaS 可以实施该变更，且无义务提供通知。

您同意并确认，如果您的目标用户的短信内容违反法律法规、违反本协议，或者您的目标用户在反骚扰名单上，则您/您的目标用户可能无法收到短信。

## 7.费用和付款

本条款仅适用于付费客户。您同意按照本协议规定的预付款方式和条款，支付所有因向您提供服务以及您访问和使用服务而应付给我们的费用（“客户费用”）。&#x20;

您购买的任何收费活动积分仅在分配的期限内有效，在该期限内， 超出分配限额的任何额外收费活动支出均不可行。但是，您仍然可以随时购买新的收费活动额度，并增加您在指定期限内的额度。

您应自行负责通过访问我们的网站并查看您剩余的可用收费活动积分，确保您拥有足够的收费活动积分以满足您的需求。如果您的收费活动积分不足以满足您的需求，或在任何期间超出您的收费活动积分分配，我们概不承担任何责任。

为避免疑义，无论您举办的收费活动是否成功，均会产生费用。

如果您未按照适用的付款条款支付任何客户费用，我们保留自行决 定暂停您对服务的访问和/或停止允许您进行任何收费活动的权利， 直至我们收到足以支付所有未付费用的款项。

您负责支付所有银行和财务费用。请确保扣除相关费用后，我方银 行账户收到的金额与您欠我方的全部金额一致。

如果通过您选择的付款方式进行的任何付款被拒绝、否认、我们未 收到或因任何原因退回：

在您的付款得到妥善处理之前，我方可能会暂停或终止您对服务的访问；

费用将继续产生，您须承担因您的拒绝、驳回或退回而导致我方产生的任何费用、成本、支出或其他款项（我方可能会就此类款项向您收取费用）。

在本协议有效期内，由于电信运营商和电信监管机构调整短信/语音价格，本协议项下的国际短信/语音价格需要相应调整。InnoPaaS 将据此调整价格。您继续使用即表示您接受此价格。

您将无法获得已支付款项的任何退款（“不退款，仅换货”）。但这 并不妨碍根据适用的消费者保护法进行任何退款。

## 8.发票

付款后，客户可以按照网站操作登录客户仪表盘下载发票。

保密和数据保护

您应始终对因使用我们的服务而获得的所有信息保密，但已公开的 信息、法律要求您披露的信息、监管机构要求您披露的信息或您的专业顾问为履行其专业服务而合理要求的信息除外。

有关我们服务隐私保护措施的详细信息，请参阅我们的隐私政策。

对于您通过我们的服务向我们提供的最终用户个人数据的处理，您是数据控制者，InnoPaaS 是数据处理者。您保证已根据适用的数据 保护法律法规（例如欧盟《通用数据保护条例》）获得所有必要的有效同意，以便 InnoPaaS 为履行我们的服务而处理个人数据。InnoPaaS 将仅根据您的指示并按照数据处理协议处理该个人数据。

InnoPaaS 服务应在您与 InnoPaaS 之间签署数据处理协议的前提下提供。

选择上方的“接受”按钮后，可能会产生短信和数据流量费用。短信发送频率会根据您的预订活动而变化。您可以随时回复“停止”来选择退出。

## 9.市场营销

您授予我们无需事先征得您的同意即可将您的姓名和视觉形象用于宣传和营销目的的权利。如果您对此不予接受，则必须以书面形式撤回同意。在不限制前述规定的前提下，未经另一方事先同意，任何一方均不得就本协议发布任何新闻稿和/或博客文章。

使用要求

您保证您不会：

未经最终用户明确请求或事先同意，不得使用服务或允许他人使用服务向任何最终用户发送用于营销目的的收费事件。如果您出于商 业目的向您的任何最终用户发送任何收费事件，您必须遵守该最终 用户的移动营销惯例。

管辖权，包括但不限于事先获得最终用户的明确书面同意，并赋予所有最终用户选择不接收您出于商业目的发送的任何进一步收费事件的权利（您应立即处理任何最终用户的选择退出）；

使用服务或允许他人使用服务向任何最终用户发送收费事件，且发送频率和数量在我们合理看来过高；

不得将服务用于任何不正当、欺诈、不道德或非法目的，或允许他人将服务用于此类目的；

使用服务或允许使用服务传输任何诽谤性、攻击性、辱骂性、淫秽 或威胁性的材料；

使用服务或允许以侵犯任何第三方的知识产权或任何其他所有权的方式使用服务；

或使用服务或允许他人使用服务，以可能对任何人或财产造成伤害或损害，或导致服务质量下降的方式使用服务；

在本协议有效期间，您应始终：

仅发送符合所有适用法律、法规和准则的收费事件，且不包含任何可能引起冒犯的内容；

遵守我们不时就服务发布的所有合理指示和指令； 始终遵守所有适用的法律、法规和准则以及任何监管机构的任何指示、建议和决定；以及

不得以任何可能损害我们、服务、免费服务或任何网络运营商声誉的方式行事。

应要求，您应向我们或任何网络运营商或监管机构提供请求方合理要求的与您使用服务相关的任何信息。您有责任确保与您的最终用户相关的任何信息（包括但不限于您的最终用户数据）准确完整。

未经我们事先书面批准，您不得声明或暗示我们已批准您使用服务 发送的任何特定收费事件，或以任何方式提及我们。

如有要求，您应及时向我们提供您的服务和/或免费服务需求的代表性预测。

请求的期限，包括（但不限于）我们规划网络容量需求所需的所有 合理详细信息。

我们有权自行决定停止传输任何收费活动，并且您应在收到我们的要求后立即停止传输任何收费活动。

您保证您是最终用户数据所有权利的唯一所有者或许可人，或者您 已从所有相关第三方获得所有必要的权利、许可和同意，使您、我 们和我们的分包商能够为本协议的目的使用最终用户数据。

当您在 InnoPaaS 平台上使用 WhatsApp 产品时，请务必遵守 WhatsApp 平台规则，请参阅<https://www.whatsapp.com/legal/>

如果发生上述任何一种情况，InnoPaaS 有权立即停止您使用该帐户， 并有权就侵权行为索赔。

## 10.免责声明、责任限制和赔偿

在适用法律允许的最大范围内，InnoPaaS 对于任何间接的、附带的、特殊的、后果性的或惩罚性的损害，或任何利润或收入损失（无论直接或间接产生），或任何数据、使用、 商誉或其他无形损失，本公司概不承担责任，这些损失可能由以下原因造成：(i) 您使用或无法使用服务；(ii) 因通过本网站获得的任何 商品、数据、信息、内容和/或任何其他服务而产生的替代商品和服务的采购成本；(iii) 未经授权访问或更改您的注册数据和/或已验证的个人资料； （iv）与本网站和/或本网站提供的服务有关的任何其他事项。

本小节的限制适用于任何责任理论，无论是基于保证、合同、法规、侵权（包括过失）或其他，也无论 InnoPaaS 实体是否已被告知任何此类损害的可能性，即使本文规定的补救措施未能达到其基本目的。

您同意赔偿并使 InnoPaaS 及其管理人员、董事、股东、前任、权益 继承人、员工、代理人免受损害，子公司和关联公司，免于承担任何第三方因您使用本网站和/或服务 而对 InnoPaaS 提出的任何要求、损失、责任、索赔或费用（包括律师费）。

对于使用本服务发送或传输的任何收费事件的内容，我们概不承担任何责任，您须对此类内容承担全部责任。您在使用本服务时，必须遵守您所在司法管辖区以及与您直接沟通的所有人员所在司法管辖区的所有相关法律法规。使用本服务即表示您同意受本使用规则的约束。

除本条款另有明确规定外，在任何情况下，我们均不对您（无论是付费客户还是非付费客户）承担任何经济损失（包括但不限于任何利润损失、业务损失、合同损失、收入损失、营业额损失或预期节省损失）或任何间接或后果性损失的责任，无论该等损失是否已被预见或可预见。

双方均确认，您（作为客户或非付费客户）和我们均未基于或依赖任何陈述（除非另有说明）订立本协议。

除本条款另有明确规定外，我们不承担任何因欺诈性陈述、保证或其他条款而产生的责任。因此，所有由成文法、普通法或其他方式隐含的条件、保证和其他条款均在此被排除在法律允许的最大范围内。

就本条款标的而言，我们应始终遵守所有具有同等效力的适用法律、法规和规则。

您应负责解释并答复我们因您使用本服务和/或免费服务而收到的任何相关监管机构的投诉。我们将尽快把任何投诉转交给您。您必须遵循适用的投诉程序，并在相关监管机构规定的期限内对每项投诉作出回应，并立即将回应副本发送给我们。如因您违反本条款而导致任何监管机构对您、我们或我们的任何关联公司处以任何罚款和/ 或处罚，您将承担相应责任。

## 11.期限和终止

InnoPaaS 终止本协议。

在适用法律允许的范围内，如果发生以下情况，InnoPaaS 可自行决定终止本条款，或立即以书面通知的方式终止您对服务或服务任何方面的访问权限：

您违反了本条款的任何规定；

如果 InnoPaaS 有理由相信您在使用服务过程中违反了任何适用法律，或从事了任何欺诈或欺骗活动；

您进入清算、行政接管、破产程序或无力偿还到期债务。

如果 InnoPaaS 有理由相信您从事了任何欺诈或欺骗活动，包括但不限于信用卡欺诈，我们可能会冻结您的账户。

除非与您的客户经理另有约定，且根据本条款和条件可提前终止， 否则服务期限至少为 11 个月（“初始期限”）。初始期限自开始日期（您开始使用服务或免费服务的日期）起算，至结束日期（初始服 务期限到期月份的对应日期）止。初始期限届满后，本协议将自动 续期，除非且直至任何一方提前 30 天向另一方发出书面通知，或您或我们根据本条款和条件以其他方式终止本协议。&#x20;

如果您希望随时终止本协议，您必须：在开始日期起 7 个工作日内（含当日）向我们发出书面通知，以便该通知立即生效；或您需至少提前 30 天以书面形式通知我们，该通知的生效日期不得早于终止日期（如有变更，恕不另行通知）。如果您希望自终止日期之前的任何日期起终止本协议，但由于本条款和条件项下的正当理由或其他任何原因而无法终止，且您是本协议项下的客户，则您必须向我们支付终止后至少 11 个月期限内剩余月份（或不足一个月的部分）的客户费用。此类客户费用将根据签署页中列明的月度客户费用（如适用，则以变更后的金额为准）计算，您已预付给我们的任何客户费用均不予退款或抵扣（“不退款，仅换货”）。但后者不应妨碍根据适用的客户保护法律进行任何退款。

如果出现以下情况，任何一方均可立即终止本协议：

向另一方发出通知：

另一方破产、与债权人达成任何安排或为债权人的利益达成任何安排、进入强制或自愿清算、其资产被指定接管人、行政接管人、清算人或其他类似官员、受到管理或类似命令的约束或停止交易；

另一方严重违反本协议，且（如该违约行为可补救）未在未违约方发出要求其补救的书面通知后 14 天内补救该违约行为；或

我们运营服务所需的任何许可被撤销、终止或修改，或者，在施加新的许可要求的情况下，适用的许可被撤销、终止或修改：

未授予我方；或

已授予我方，但方式妨碍我方继续提供服务或网络运营商使我方能够提供服务。

如果任何相关法律或法规的实施或修改导致我们提供服务不再具有商业可行性或不再可能，我们可以发出通知后立即终止本协议。如果您根据本协议使用免费服务，您确认我们保留随时以任何理由停止向您提供免费服务的权利，无论该停止是暂时的还是永久的，而无需事先通知。

本协议因任何原因终止，均不影响任何一方在本协议终止之日前已享有的任何权利，且本协议中性质上应在终止后继续有效的条款和条件，在本协议终止后将继续完全有效。

本协议终止后：

您将立即停止使用服务；并且

届时您根据本协议或与本协议相关的所有应付我方的款项将立即到期并支付。

除我们在终止前七 (7) 天内收到的款项外，您将失去账户中任何未使用的信用额度。

根据本条款授予的所有许可和权利将立即终止。

## 12.不可抗力

任何一方均不对因超出其合理控制范围的任何事件（包括但不限于必要设备的故障、失灵或不可用）导致其履行本协议项下任何义务的延迟或未能履行承担责任。

电信、数据通信和/或计算机服务故障或短缺、第三方（包括但不限于网络运营商）的行为或不作为、政府或监管机构的行为或电信网络拥塞。

## 13.转让

未经另一方事先书面同意（不得无故拒绝或拖延），任何一方均不得全部或部分转让、转移或分包其在本协议项下的任何权利或义务；但我方有权在未经贵方事先书面同意的情况下，将我在本协议项下的任何权利或义务全部或部分转让、转移或分包给任何关联公司。

## 14.知识产权

我们网站上的所有内容、商标和数据，包括软件、数据库、文本、 图形、图标、超链接、私人信息和设计，均为我方所有或已获得我方许可，因此受国内和国际法律及条约的保护，免受侵权。除本条款赋予您的权利外，本网站上的所有其他知识产权均明确保留。

在签订本合同之前，我们可能会授予您个人的、非独占的和授予您不可转让的许可（“本许可”），允许您仅以目标代码形式使用我们的专有软件或应用程序服务，且必须遵守适用的服务特定条款及其他文档（如有），并仅与相关服务结合使用。您不得进行逆向工程、反编译、反汇编或以其他方式试图获取我们软件的源代码或底层理念或算法；不得修改、翻译软件或应用程序，或基于该软 件或应用程序创建衍生作品；不得复制、出租、租赁、分发、转让或以其他方式转移软件或应用程序的权利；也不得移除与我们服务相关的任何所有权声明或标签。我们保留所有专有应用程序、软件、 知识产权及其任何部分或副本的所有权和所有相关权利。如果您发现任何涉嫌侵犯我们知识产权的行为，您应立即通知我们，并应根据我们的指示采取一切合理措施，以处理与我们向您提供的服务直接且具体相关的涉嫌侵权行为。

当您与我们的合同终止时，这些许可即告终止，您必须销毁并停止使用您所持有的所有软件和应用程序。软件和应用程序均按“原样”提供，并受本条款其他部分所述的服务保修免责声明及责任限制的约束。您有责任在签订本合同前对服务进行测试。

未经我方事先书面同意，不得将我方网站内容用于任何商业及非私人用途。

## 15.可分割性

如果本协议的任何条款或其他规定被认定为无效、非法或因任何规则、法律或公共政策而无法执行，则本协议的所有其他条款和规定仍应完全有效。

## 16.适用法律和争议解决

本条款受中华人民共和国法律管辖并按其解释。因本协议引起或与本协议有关的任何争议，均应提交上海国际经济贸易仲裁委员会进 行诉讼。胜诉方除可获得其他救济外，还有权获得其合理的律师费、支出及相关费用。


# 隐私政策

版本发布日期：2024年4月14日

版本生效日期：2024年4月14日

引言

关于我们

名词解释

我们如何收集和使用您的个人信息

我们如何使用 Cookies 和类似技术

我们如何共享、传输和披露您的个人信息

我们如何存储和保护您的个人信息

您管理个人信息的权利

我们如何处理未成年人的个人信息

已故用户的个人信息保护

如何更新本政策

如何联系我们

争议解决

## 1.引言

欢迎使用我们的产品和服务！个人信息保护是 InnoPaaS 的重中之重。 因此， 我们将严格遵守法律法规，并采取相应的安全保护措施，保障您的个人信息安全。基于此，InnoPaaS服务提供商（以下简称“我们”）制定了本个人信息保护政策（以下简称“本政策”），旨在帮助您全面了解在使用我们的产品和服务时，我们如何收集、存储、使用、 处理、传输、提供、披露、删除和保护您的个人信息，以及您如何管理您的个人信息。我们的目标是帮助您做出更合适的选择。

请您在使用我们的产品和服务之前仔细阅读并理解本政策，特别是以粗体/粗下划线标注的条款。请确保您在完全理解并同意本政策的基础上使用。一旦您使用或继续使用我们的产品和服务，即表示您 同意我们可以根据本政策使用和处理您的相关信息。为了便于您理解，我们已尽力用简洁易懂的方式解释本政策中涉及的专业术语。如果您对本政策有任何疑问、意见或建议，可以通过本政策中提供的联系方式与我们联系。

我们可能会根据法律法规不时修订本政策，法规或业务调整。当本政策发生变更时，我们将在显著位置以提示的形式向您展示变更后的内容，或在版本更新后推送通知和消息。

请您理解，只有在您确认并同意变更后的政策后，我们才会根据变更后的版本收集、使用、处理和存储您的个人信息。您有权拒绝变更后的版本，但这可能会导致您无法使用或继续使用我们的相关服务和功能，或降低服务的原有质量和效果。

## 2.关于我们

InnoPaaS 的产品运营和服务由 TRANSLAND INFORMATION GROUP LIMITED（以下简称“InnoPaaS”）及其所有关联公司提供。

关联方包括受 InnoPaaS 控制或将要受 InnoPaaS 控制的任何公司或机构，以及该公司或机构的合法继承人。“控制”是指能够直接或间接影响上述公司的管理，无论通过所有权、投票权、合同还是人民法院确定的其他方式。

我公司运营实体的基本信息如下：TRANSLAND INFORMATION GROUP LIMITED，注册办事处：FLAT/RM A 12/F ZJ 300&#x20;LOCKHART ROAD WAN CHAI, Hong Kong。

通常情况下，我们会在以下情况下收集您的个人信息：

账户注册和登录

创建InnoPaaS账户需要您提供电子邮件地址、姓名和公司名称。如果您拒绝提供上述信息，您将无法注册InnoPaaS账户，只能使用浏览服务。一旦您确认并继续使用本产品，我们将视为您同意我们收集上述相关个人信息。

您可以使用密码登录 InnoPaaS。登录时，您需要提供您的电子邮件地址和密码。我们承诺，收集上述信息是为了向您提供账户登录服务、保护您的账户安全并防范安全风险。

## 3.账户充值

我们通过第三方支付机构为您提供在线充值功能。当您通过第三方支付机构进行在线充值时，我们将收到您的充值金额信息。

当您通过银行转账进行线下充值时，您需要提供充值金额、账号、存款银行、账户名称和付款凭证。

我们承诺，以上信息收集仅用于充值和对账。我们无法仅凭此信息 获取您的个人财产信息。如果您拒绝提供，您可能无法充值，从而 无法或无法继续使用我们的产品，请您在提供信息前仔细考虑。

## 4.系统设置

为了使用我们提供的企业报警服务，您需要在设置系统时提供您的姓名、手机号码、电子邮件地址和公司名称。如果您拒绝提供，您可能无法使用该服务。请在选择前仔细考虑是否提供这些信息。

您的个人信息是通过第三方间接收集的。您理解我们无法获取您提供给外部第三方的个人信息或外部第三方 收集的您的个人信息，也不会在未经授权的情况下，使用非常规手段（例如恶意干扰对方数据）通过软件程序获取您的个人信息。如果InnoPaaS因业务发展需要间接从第三方收集（共享等）您的个人信息，且我们直接或与第三方共同向您提供产品或服务，我们（或第三方）会在收集前向您说明共享的个人信息的来源、类型、目的、方式、业务功能以及授权和同意范围（如果使用方式和范围超出您在第三方处获得的原始授权范围，我们将再次征得您的授权）。当我们的部分产品或服务由第三方授权合作伙伴提供或共同提供时，为了开展必要且合理的业务，我们可能会间接从某些业务合作伙伴处收集您的部分信息，以及您在使用我们的产品或服务时其他方提供的关于您的信息。

## 5.我们如何使用 Cookies 和类似技术

当您使用 InnoPaaS 时，除用于验证您身份的 Cookies 外，我们不会访问其他类似技术。如果您拒绝使用或删除 Cookies，您可能无法使用或继续使用我们的产品。

## 6.我们如何共享、传输和披露您的个人信息

### 6.1 共享

我们非常重视保护您的个人信息。您的个人信息是我们为您提供产品和服务的重要基础和组成部分。我们仅在本政策所述目的和范围内，或根据法律法规要求收集和使用您的个人信息，并严格保密。为了向您提供更完善、更优质的产品和服务，我们部分服务将由关联公司或合作伙伴提供。我们可能会与合作伙伴或关联公司共享您的部分个人信息，以便提供更优质的服务和功能。我们仅会出于合法、正当、必要、明确的目的共享您的个人信息，并且仅共享提供服务所必需的个人信息。如果您拒绝我们的合作伙伴或关联公司在提供服务时收集提供服务所需的个人信息，您可能无法使用我们产品中的相关服务。

除InnoPaaS及其关联公司和合作伙伴（为履行业务职能所必需）外，我们不会与任何其他公司、组织或个人共享您的个人信息，但以下情况除外：

事先获得您的明确单独同意后，我们将与其他方共享您的个人信息。

我们可能会根据法律法规或主管政府部门的强制性要求以及司法判决，共享您的个人信息。

在法律要求或允许的范围内，为了保护用户或公众的利益、财产或安全，有必要将您的个人信息提供给第三方。

如果在实际操作中涉及个人信息共享，我们将告知您接收方的名称、联系方式、处理目的、处理方式和个人信息类型，并征得您的单独同意。接收方应在上述处理目的、处理方式及个人信息类别的范围内处理个人信息。如果接收方变更原处理目的和处理方式，我们将依法重新征得您的同意。

实际操作中可能共享个人信息的对象包括：

与关联公司共享：您的个人信息可能会与我们的关联公司共享。我们仅共享必要的个人信息，并受本政策所述目的的约束。如果关联公司希望更改处理个人信息的目的，将会再次征求您的单独同意。我们的关联方包括现在或将来与 InnoPaaS 受控、受共同控制的任何公司或机构，以及上述公司或机构的法定继承人。“控制”是指能够直接或间接地影响上述公司的管理，无论通过所有权、投票权、合同或其他经人民法院认可的方式。

与授权合作伙伴共享：我们可能会与合作伙伴共享您的部分个人信息，以提供更好的客户服务和用户体验。我们将仅出于合法、正当、必要、明确的目的共享您的个人信息，并且仅共享提供服务所必需的个人信息。我们的合作伙伴无权将共享的个人信息用于任何其他目的。

可能共享个人信息的授权合作伙伴包括短信服务提供商。目前，我们的短信服务提供商包括中国第三方供应商、中国三大运营商（中国电信、中国移动和中国联通）以及国际供应商。为了将指定的号码和短信内容发送给最终发送短信的目标国家/地区的运营商，我们必须将您的电话号码和短信内容提供给短信服务提供商。当您的业务需要发送国际短信时，您的电话号码和短信内容将被跨境传输，信息的接收方是目标国家/地区的运营商。为了确保您的信息安全，我们将通过专用接口进行跨境数据传输。

### 6.2 传输

我们不会将您的个人信息传输给任何公司、组织或个人，以下情况除外：

经您明确同意后传输：在获得您的个人同意后，我们将把您的个人信息传输给其他方；

如果因合并、分立、解散或宣告破产等原因需要转移个人信息，我们将告知您接收方的名称或联系方式。接收方将继续履行其在本协议项下的义务。如果接收方变更原处理目的和处理方式，则需再次征得您的同意。

### 6.3 披露

我们不会公开披露您的个人信息。如有必要公开披露您的个人信息，我们将在公开披露前告知您公开披露信息的目的和类型（如涉及您的个人敏感信息，我们还会告知您敏感信息的具体内容），并在获得您的单独同意后进行公开披露。除非法律法规另有规定或本政策 另有约定。

对于您申请公开的个人信息，我们将在收到公开申请后立即对其合法性、合理性和正当性进行仔细审查，并在公开期间及公开后采取最严格的个人信息安全保护措施和手段加以保护。

关于您的个人信息的共享、传输及披露的例外情况

请注意，根据法律法规的规定，在下列情况下，共享、传输和披露您的个人信息无需事先征得您的授权：

直接涉及国家安全和国防安全；

与公共安全、公共卫生和重大公共利益直接相关；

与刑事侦查、起诉、审判和判决执行直接相关的；或者根据法律法规、行政机关、检察机关和其他主管机关的要求；

为了保护您或其他人的生命、财产和其他重大合法权益，但又难以获得您本人的同意；

您自行向公众披露的个人信息，或通过合法渠道（例如法律新闻报道、政府信息公开等）收集的个人信息；

为与您签署和履行相关协议或其他书面文件所必需；

法律法规规定的其他情况。

## 7.我们如何存储和保护您的个人信息

### 7.1 我们如何存储您的个人信息

信息存储位置。

我们将根据中国境内收集的用户个人信息，按照相关法律法规进行存储。如有必要进行跨境数据传输，我们将另行明确告知您（包括目的、接收方、使用方式和范围、使用内容、安全措施、安全风险等），并征得您的单独同意。

信息存储期限。

我们承诺，您的个人信息存储期限为实现个人信息处理目的所需的最短期限。

例如，当您使用我们的注册和登录功能时，我们需要收集您的密码、姓名、电子邮件地址和电话号码，并在您提供这些信息后以及您使用该功能期间，我们需要保留这些信息，以便正常为您提供该功能并确保您账户和系统的安全。此外，我们可能会根据相关法律规定的必要期限保存您的相关信息（例如，电子商务法规定，商品和服务信息以及交易信息的存储期限自交易完成之日起不得少于三年）。&#x20;

超过存储期限后，我们将根据适用法律的要求删除您的个人信息或对其进行匿名化处理。

信息存储和删除。

您注销账户后，我们将删除或匿名化您的个人信息。在您或我们协助您删除相关信息后，由于适用法律法规和安全技术限制，我们可能无法立即从备份系统中删除相应信息。我们将安全地存储这些信息。

您的个人信息将被备份，并限制任何进一步处理，直至备份数据被删除或匿名化。

### 7.2 我们如何保护您的个人信息

我们将建立信息安全体系，并严格按照个人信息保护法、网络安全法、数据安全法等相关法律法规的要求，采取技术措施和其他必要措施，保护您的个人信息安全。

我们保护您个人信息的技术和措施。

我们高度重视个人信息安全，并采取一切合理可行的措施保护您的个人信息：

## 8.数据安全技术措施

我们采用多种复杂的数据脱敏技术和SSL传输层安全协议来增强个人 信息的使用安全性。同时，我们采用BCrypt加密您的登录密码。我 们建立了严格的数据访问控制和多重身份验证技术，以保护个人信 息并防止数据被非法使用。我们使用代码安全检查和 利用数据访问日志分析技术进行个人信息安全审计。&#x20;

## 9.其他安全措施

我们在操作页面上采取敏感信息保护措施，以促进和保护您的个人信息安全。

互联网并非绝对安全的环境。我们建议您注意保护个人信息的安全。请妥善保管您的个人信息，仅在必要时才提供给他人。

请理解：互联网环境并非100%安全。我们将尽最大努力确保或保证您发送给我们的任何信息的安全。但是，由于技术限制和可能的恶意手段，即使我们尽最大努力加强安全措施，也无法从一开始就保证信息的100%安全。发生个人信息安全事件后，我们将根据法律法规的要求，及时向您告知该安全事件的基本情况及可能造成的影响、我们已采取或将采取的处置措施、您可以自行采取的防范和降低风险的建议，以及针对您的补救措施。我们将通过邮件、信函、电话、推送通知等方式及时告知您有关事件的信息。当难以逐一通知个人信息主体时，我们将采取合理有效的方式发布公告。同时，我们将按照监管机构的要求，积极报告个人信息安全事件的处理情况。

## 10.您管理个人信息的权利

我们理解您对个人信息的关注，并将尽最大努力确保您享有访问、 更正、删除和撤回授权的权利，以便您能够充分保护您的隐私和安全。您的权利包括：

### 10.1 您有权访问您的个人信息

您可以根据我们提供的产品和服务的相关说明（或设置）查阅您提供给我们的相关个人信息，包括：

账户信息：您可以随时通过相关产品页面登录您的账户设置，访问您账户中的个人数据信息，包括您的姓名、电话号码、电子邮件地址和公司名称。

财务信息：您可以通过支付页面查看您的消费记录和发票记录。

其他信息：如果您在访问期间遇到操作问题，需要获取上述未提及的其他个人信息，您可以通过本政策中提供的方式联系我们。

### 10.2 更正 / 修改您的个人信息

当您发现您提供给我们的个人信息存在注册错误、不完整或需要更新时，您可以在我们的产品和服务中更正/修改您的个人信息。

### 10.3 您有权删除您的个人信息

您可以通过本政策中公布的联系方式向我们申请删除您的个人信息。 一旦您提出删除请求，我们将删除或匿名化该信息，除非法律法规另有规定。

在以下情况下，您可以直接要求我们删除您的个人信息，除非该信息已被匿名化或法律法规另有规定：

如果我们处理个人信息违反法律法规；

如果我们未经您的同意收集和使用您的个人信息；

如果我们处理个人信息的方式违反了与您达成的协议；

如果您不再使用我们的产品或服务，或者您注销了您的账户；

如果我们不再向您提供产品或服务。

在您从我们的服务中删除信息后，我们可能不会立即删除备份系统中的相应信息，但我们会在备份更新时删除该信息。

在您注销账户后，我们将停止向您提供产品或服务，并根据您的要求删除您的个人信息，除非法律法规另有规定。

### 10.4您有权撤销授权

您可以通过本政策中公布的联系方式向我们申请撤回对您个人信息的授权。撤回个人信息授权后，您可能无法或不能完全使用我们的相关服务和功能，或者可能无法达到我们预期的服务效果。

### 10.5您有权注销您的账户

您可以通过本政策中公布的联系方式向我们申请注销账户。注销账户后，您将无法再使用该账户登录并使用我们的产品和服务；账户在使用过程中产生但尚未消耗的所有权益以及预期未来权益将被清偿；账户下的内容、信息、数据、记录等将被删除或匿名化（除非法律法规另有规定或监管机构要求，例如，根据中华人民共和国网络安全法，您的网络操作日志将至少保留六个月）；账户注销后将无法恢复。&#x20;

### 10.6您有权获取您的个人信息的副本

您可以通过本政策中公布的联系方式向我们申请获取您的个人信息副本。在符合相关法律法规和技术可行性的前提下，我们将根据您的要求向您提供您的个人信息副本。

### 10.7 您有权要求将个人信息转移至您指定的个人信息处理者

您可以通过本政策中公布的联系方式向我们申请将您的个人信息转移给您指定的个人信息处理者。我们将根据您的要求，在符合国家网络信息部门规定的条件且技术可行的前提下，将您的个人信息转移给您指定的个人信息处理者。

## 11.我们如何处理未成年人的个人信息

我们的产品仅面向具有完全民事行为能力和民事行为能力的自然人、法人或其他组织。我们的产品不涉及未成年人个人信息的处理。

## 12.已故用户个人信息保护

用户去世后，其近亲属出于自身合法权益，可通过本政策公布的联系方式，行使查阅、复制、更正和删除已故用户相关个人信息的权利，除非已故用户生前另有安排。

您理解并确认，为充分保障已故用户的个人信息权利和权益，申请行使此项权利的已故用户近亲属需按照我方指定流程或客服提示，提交已故用户的身份证明文件、死亡证明、申请人的身份证明文件以及申请人与已故用户之间的亲属关系证明，并说明拟行使权利的类型和目的。

## 13.如何更新本政策

为了向您提供更好的服务，我们将根据产品更新和相关法律法规的要求更新本政策的条款。此类更新构成本政策的一部分。未经您的明确同意，我们不会减少您在本政策项下的权利。在更新后的政策 生效前，我们将通过醒目提醒、推送消息或其他方式通知您。如果此类更新导致您在本政策项下的权利大幅减少或发生重大变更，我 们将再次征求您的单独同意。

重大变更包括但不限于：

我们的服务模式发生了重大变更。例如处理个人信息的目的、处理的个人信息类型、个人信息的用途等；

我们的所有权结构和组织结构发生了重大变化。例如，因业务调整、破产、并购等导致的所有权变更；

个人信息共享、转移或公开的主要对象发生了变化；

您参与个人信息处理的权利以及您行使该权利的方式发生了重大变化；

负责处理个人信息安全的部门、联系方式和投诉渠道发生了变化；

个人信息安全影响评估报告显示存在高风险时。

## 14.如何联系我们

如果您对本政策有任何疑问、意见或建议，可以通过以下任何方式联系我们：您可以通过 Intercom 在线联系我们。&#x20;

此外，您理解在以下与个人信息相关的情形下，我们将无法回应您的请求：

涉及国家安全和国防安全；

涉及公共安全、公共卫生和重大公共利益；

涉及刑事侦查、起诉和审判；

有充分证据表明您存在主观恶意或滥用权利；

回应您的请求将对您或其他个人和组织的合法权益造成严重损害；

涉及商业秘密；

法律法规规定的其他情形。

## 15.争议解决

本政策的解释和争议解决应受中华人民共和国法律管辖并按其解释。因本协议引起或与本协议有关的任何争议，只能提交上海国际经济贸易仲裁委员会进行诉讼。胜诉方除可获得其他救济外，还有权获得其因此产生的合理律师费、支出和费用。


# InnoPaaS团队

您可通过邮件联系我们：<cloud@innopaas.com>

您也可以进入[InnoPaaS平台](https://innopaas.com/control/login)，找到右下侧的会话图标，与我们的客服沟通。


# Meta支持

如果您的个人Facebook账号被禁用，您必须直接获取Meta官方的支持，请点击[此处](https://www.facebook.com/help/103873106370583/?helpref=uf_share)获得帮助。


# InnoPaaS API 入门指南

## 接口验签说明

### 公共请求头Headers

为了保证接口安全，所有的接口，都需要带上安全验证请求头，

其中Authorization和AppKey需要在InnoPaaS平台创建AppKey后才能获取

用于接口认证校验，如验证失败，则无法调用接口并且返回认证失败。

<table data-header-hidden><thead><tr><th width="97.7890625"></th><th width="142.16796875"></th><th width="111.828125"></th><th width="133.48046875"></th><th></th></tr></thead><tbody><tr><td>序号</td><td>字段</td><td>数据类型</td><td>是否必填</td><td>描述</td></tr><tr><td>1</td><td>Content-Type</td><td>String</td><td>是</td><td>值为"application/json;charset=utf-8",请求内容为json</td></tr><tr><td>2</td><td>AppKey</td><td>String</td><td>是</td><td>ApiKey，访问应用KEY</td></tr><tr><td>3</td><td>Authorization</td><td>String</td><td>是</td><td>应用授权访问授权Token</td></tr></tbody></table>

**Headers示例代码**

```python
headers = {
   'Authorization': 'YUIYIUIAIIASUDIAOSIDUOIWUOQWUEOIUWOEUQWOEUOQWUOUWOUWQOWU',
   'AppKey': 'XFbZY1rtTKo3UD4n1'
   }
```

### 获取AppKey

点击应用列表 中的【复制按钮】，复制出AppKey

<figure><img src="/files/Z3lRBlsqV69VR4zDUuuD" alt=""><figcaption></figcaption></figure>

### 获取Authorization

1、选择应用 获取【Token按钮】，生产App访问接口需要的Authorization信息，**我们不会存储客户的Token信息，每次生成，将导致之前生成的Token失效，如果该App的Token已经在您的生产环境中使用，请慎重使用此功能，原有Token失效，可能将会导致无法正常访问API。**

<figure><img src="/files/TlZVxwI7sBV48lPLQJpZ" alt=""><figcaption></figcaption></figure>

2、生成并复制Token

* 选择Token过期时间，默认 永不过期，也可以指定过期日期。 &#x20;
* 点击【创建访问Token】按钮，生成Token &#x20;
* 点击【复制按钮】，复制Token

<figure><img src="/files/Ywp3DxMgHEVOzGgGVOWe" alt=""><figcaption></figcaption></figure>

## 配置WebHook回调地址

### 配置WebHook事件

&#x20; **在推送模板、上行回复等信事件时，当无法识别或匹配到App时，数据将推送到默认应用，此时如果没有默认应用，将不推送。** &#x20;

1、 在API Keys功能菜单列表，点击回调事件配置按钮，开始进行配置

<figure><img src="/files/PEEHPiSKPuFFQ9Qw6L0I" alt=""><figcaption></figcaption></figure>

2、点击【Add】按钮进行添加

<figure><img src="/files/b4JL1y9drFKLpw6nviSL" alt=""><figcaption></figcaption></figure>

3、从可用产品列表中选择需要配置的WebHook的产品

<figure><img src="/files/rMZqIWqbttHi0vh2Yccj" alt=""><figcaption></figcaption></figure>

4、配置回调地址，并配置选择需要接收的事件，点击Next进行下一步

<figure><img src="/files/BsfrX75cS3ph5CwcZ9eR" alt=""><figcaption></figcaption></figure>

5、选址回调请求方式，默认POST，如果客户业务系统需要对Webhook的来源进行验签，可以配置UserName和Authorization 头信息，在WebHook 通知推送时，将会在头信息中添加UserName和Authorization，将客户配置的信息一起推送到客户系&#x7EDF;**。**

<figure><img src="/files/f8JLK7oF0FPEWtfak20S" alt=""><figcaption></figcaption></figure>


# SMS-API接口V3.0

## 发送消息

#### **请求接口地址**

```
POST    https://api.innopaas.com/api/sms/v3/msg/send
```

#### **请求参数**

<table data-header-hidden><thead><tr><th width="114.8203125"></th><th width="121.640625"></th><th width="63.59765625"></th><th></th></tr></thead><tbody><tr><td>字段</td><td>数据类型</td><td>是否必填</td><td>描述</td></tr><tr><td>mobile<br></td><td>String</td><td>是</td><td>手机号码，格式(区号+手机号码)，例如：8615800000000，其中 86 为中国的区号，区号前不使用 00 开头，15800000000 为接收短信的真实手机号码。5-20 位 <strong>支持多个，多个以英文都好间隔</strong></td></tr><tr><td>msg</td><td>String</td><td>是</td><td>短信内容，长度不能超过 2000 个字符</td></tr><tr><td>senderId</td><td>String</td><td>否</td><td>用户收到短信之后显示的发件人，国内不支持自定义，国外支持，但是需要提前和运营商沟通注册，具体请与 TIG 对接人员确定</td></tr><tr><td>uid</td><td>String</td><td>否</td><td>客户自定义批次号，64 字以内</td></tr><tr><td>callBackUrl<br></td><td>String</td><td>否</td><td>状态回执的回调地址，请传入完整带http协议头开头的地址，不传默认为空，请勿传入空格，否则会造成地址推送错误。地址可通过接口入参传入，也可在控制台手动配置，</td></tr></tbody></table>

#### **请求示例（验证码）**

```json
{
  "msg": "ongratulations! Your application has been approved. ",
  "mobile": "13800138000,13900139000",
  "senderId": "10690000",
  "uid": "ORDER_20251104_001",
  "callBackUrl": "https://api.example.com/callback/sms"
}
```

#### **响应示例**

```json

{
    "code": "0",
    "message": "提交成功",
    "data": {
        "messageId": "162575412960104448"
    }
}
```

## 状态报告<br>

<mark style="color:red;">待补充</mark>

## 错误码

### 接口响应码

<table><thead><tr><th width="204.015625">状态码</th><th>描述</th></tr></thead><tbody><tr><td>0</td><td>提交成功</td></tr><tr><td>101</td><td>账号不存在</td></tr><tr><td>102</td><td>密码错误</td></tr><tr><td>103</td><td>拉取条数格式错误</td></tr><tr><td>104</td><td>拉取条数不在范围内</td></tr><tr><td>105</td><td>批次编号大于128位</td></tr><tr><td>106</td><td>短信内容长度错误(>3000)</td></tr><tr><td>108</td><td>手机号码格式错误(>20或&#x3C;5)</td></tr><tr><td>109</td><td>手机号码个数错误</td></tr><tr><td>112</td><td>产品配置错误</td></tr><tr><td>114</td><td>请求ip和绑定ip不一致</td></tr><tr><td>115</td><td>没有开通国内短信权限</td></tr><tr><td>116</td><td>账号已删除或禁用</td></tr><tr><td>117</td><td>接入号长度超过20位</td></tr><tr><td>119</td><td>账号不在当前节点</td></tr><tr><td>123</td><td>短信内容不能为空</td></tr><tr><td>124</td><td>简介或验证码不能为空</td></tr><tr><td>125</td><td>特定客户手机号码同一天不能超过十次</td></tr><tr><td>128</td><td>账号长度错误(>50或&#x3C;=0)</td></tr><tr><td>129</td><td>产品价格配置错误</td></tr><tr><td>130</td><td>未知异常</td></tr><tr><td>131</td><td>超过日发送上限</td></tr><tr><td>132</td><td>超过月发送上限</td></tr><tr><td>133</td><td>超过发送上限</td></tr><tr><td>134</td><td>超过反投诉限制</td></tr><tr><td>150</td><td>子账号依附计费配置有误</td></tr><tr><td>151</td><td>报价国家未开启</td></tr><tr><td>152</td><td>产品账号报价不存在</td></tr><tr><td>153</td><td>依附计费的主账号不存在</td></tr><tr><td>154</td><td>产品账号计费方式不存在</td></tr><tr><td>155</td><td>账户未开通统一计费</td></tr><tr><td>156</td><td>产品账号已禁用</td></tr><tr><td>157</td><td>账户余额不足</td></tr><tr><td>158</td><td>授信额度不足</td></tr><tr><td>159</td><td>客户未开通统一钱包</td></tr></tbody></table>

### 状态报告错误码

| 状态码     | 描述         |
| ------- | ---------- |
| DELIVRD | 短信发送成功     |
| UNKNOWN | 未知短信状态     |
| REJECTD | 短信被短信中心拒绝  |
| MBBLACK | 目的号码是黑名单号码 |
| SM11    | 网关验证号码格式错误 |
| SM12    | 我方验证号码格式错误 |
| 其他      | 网关内部状态     |

## 计费规则说明

1. 国际短信不支持 emoji 表情
2. 编辑器中空格都会以”."表示，如出现不带”.”的空格则说明有隐藏代码，会导致 1 条短信算成 2 条的风险请留意。
3. 国际号码必须添加对应国家的区域号，例如中国号码 86138\*\*\*\*1234，86 为中国区号。
4. 发送中国号码殷时，短信内容必须以\[签名]开头，然名内容为: 公司或品牌名称，字数要求 2-80 个字符，运营商规定必填。
5. 发送中国号码段时，内容合法，不能发送房产、发票、移民等国家法律法规严格禁止的内容。
6. 超链接地址请写在短信内容中，便于核实，部分安卓系统存在超链接识别问题，需在超链接前后添加空格。
7. 短信中含非英文字符按中文计费。


# WebHook


# SMS状态报告

### 状态报告参数 <a href="#title_4" id="title_4"></a>

<table data-header-hidden><thead><tr><th width="157.73828125"></th><th width="133.53125"></th><th width="135.31640625"></th><th></th></tr></thead><tbody><tr><td><strong>参数名</strong></td><td><strong>类型</strong></td><td><strong>是否必推</strong></td><td><strong>描述</strong></td></tr><tr><td>receiver</td><td>string</td><td>是</td><td>接收验证的用户名，配置时不填写则为空，如需配置请联系技术</td></tr><tr><td>pswd</td><td>string</td><td>是</td><td>接收验证的密码，配置时不填写则为空，如需配置请联系技术</td></tr><tr><td>msgid</td><td>string</td><td>是</td><td>提交短信时接口响应的 msgid</td></tr><tr><td>batchSeq</td><td>string</td><td>是</td><td>批次号</td></tr><tr><td>uid</td><td>string</td><td>是</td><td>客户方提交短信时传给我方的uid，如果没传，则为我方的batchSeq</td></tr><tr><td>reportTime</td><td>string</td><td>是</td><td>网关平台返回的状态报告时间，时间戳格式</td></tr><tr><td>notifyTime</td><td>string</td><td>是</td><td>我方推送状态报告的时间。时间戳格式</td></tr><tr><td>requestTime</td><td>string</td><td>是</td><td>提交短信的时间，大陆24小时制。提交短信的时间，时间戳格式。</td></tr><tr><td>mobile</td><td>string</td><td>是</td><td>接收短信的手机号码，推送报告里的号码，推送的格式是提交短信时的原始手机号，例如提交时区号的前面带了00，回执推送就会带00。</td></tr><tr><td>status</td><td>string</td><td>是</td><td>短信接收状态，"DELIVRD"代表接收成功，其他均为失败，具体含义参见状态报告状态码</td></tr><tr><td>currency</td><td>string</td><td>是</td><td>币种</td></tr><tr><td>smsNum</td><td>string</td><td>是</td><td>计费条数</td></tr><tr><td>unitPrice</td><td>string</td><td>是</td><td>单价，单条短信的价格。</td></tr><tr><td>fee</td><td>string</td><td>是</td><td>费用（人民币 ），当前这个号码发的短信所消耗的费用=smsNum*sellingPrice</td></tr><tr><td>accessNumber</td><td>string</td><td>是</td><td>接入号</td></tr><tr><td>countryNumber</td><td>string</td><td>是</td><td>手机号码归属国家码</td></tr><tr><td>regionCode</td><td>string</td><td>是</td><td>手机号码归属区域码</td></tr><tr><td>mnoName</td><td>string</td><td>是</td><td>手机号码所属运营商名称</td></tr><tr><td>mcc</td><td>string</td><td>是</td><td>手机号码所属运营商mcc</td></tr><tr><td>mnc</td><td>string</td><td>是</td><td>手机号码所属运营商mcc</td></tr></tbody></table>

### **响应报文示例**

```json
{
    "batchSeq": "I8393346_2506101652_35",
    "unitPrice": "0.05670",
    "countryNumber": "0086",
    "mnc": "2",
    "receiver": "account",
    "pswd": "password",
    "mnoName": "中国移动",
    "notifyTime": "1749545540975",
    "fee": "0.0567",
    "mobile": "8618888888888",
    "msgid": "627239445736452096",
    "mcc": "460",
    "requestTime": "1749545538198",
    "uid": "I8393346_2506101652_35",
    "regionCode": "CN",
    "accessNumber": "508tongdao",
    "currency": "CNY",
    "status": "DELIVRD",
    "reportTime": "1749545540967",
    "smsNum": "1"
}
```


# WhatsApp Business API

InnoPaaS 平台为企业客户对接发送Meta WhatsApp 消息，提供统一Api接口技术支持。本协议统一数据编码格式为:UTF-8。接口采用:HTTPS ，且TLS协议版本 >=1.2，接口用户认证采用请求头Authorization认证，具体看2.1 公共请求头。

## 接口验签

请阅读[InnoPaaS API 入门指南](/api-reference)

## 名词解释

<table data-header-hidden><thead><tr><th width="224.03515625"></th><th></th></tr></thead><tbody><tr><td>名称</td><td>说明</td></tr><tr><td>Authorization</td><td>应用访问授权Token，采用JWT方式验证</td></tr><tr><td>appKey</td><td>ApiKey,在开发者工具(Developer Tools)-应用管理(API Keys)中创建查看</td></tr><tr><td>wabaId</td><td>WhatsApp Business 账号的ID</td></tr><tr><td>messageType</td><td>消息类型</td></tr><tr><td>sendNumber</td><td>WhatsApp Business 账号绑定的号码, WhasApp消息显示的手机号码</td></tr><tr><td>recipientNumber</td><td>接收者的手机号码</td></tr></tbody></table>


# 消息Message

## 发送模板消息

#### 请求接口地址

```
POST   https://api.innopaas.com/api/whatsapp/v3/msg/submit
```

#### **请求参数**

<table data-header-hidden><thead><tr><th width="162.14453125"></th><th width="134.14453125"></th><th width="70.72265625"></th><th width="383.58984375"></th></tr></thead><tbody><tr><td>字段</td><td>数据类型</td><td>是否必填</td><td>描述</td></tr><tr><td>wabaId</td><td>String</td><td>Y<br></td><td>WhatsApp商业账户唯一标识</td></tr><tr><td>messageType</td><td>String</td><td>Y<br></td><td>消息内容类型:template:模板 <strong>（首次发送，必须使用模板消息来触达用户）以下类型：在用户回复后的24小时内，可以使用</strong>text:文本 image:图片video:视频audio:音频location:定位document:文档sticker:贴图<em>contacts：联系人interactive：互动消息</em></td></tr><tr><td>uid</td><td>String</td><td><br></td><td>客户批次号,不超过32字符</td></tr><tr><td>sendNumber</td><td>String</td><td><br></td><td>发送号码，格式：国家码+手机号</td></tr><tr><td>recipientNumber<br></td><td>String</td><td><br></td><td>接收号码，格式：国家码+手机号多个号码使用逗号分隔，最多1000个号码</td></tr><tr><td>body</td><td>String</td><td><br></td><td>消息体，messageType=text时必填</td></tr><tr><td>language</td><td>String</td><td><br></td><td>消息语言（<strong>需要传语言缩写编码</strong>）,详见 附1,Language Code ListmessageType=template时必填</td></tr><tr><td>templateName<br></td><td>String</td><td><br></td><td>模板名称。允许小写字母、数字、字符和下划线，必须唯一。messageType=template时必填</td></tr><tr><td>header</td><td>Object</td><td><br></td><td>模板的消息头信息。详见 HeaderDto</td></tr><tr><td>bodyParams</td><td>String[]</td><td><br></td><td>模板正文中有变量时必填</td></tr><tr><td>buttonParams</td><td>Object[]</td><td><br></td><td>模板按钮类型是动态链接时必填详见 ParameterDto</td></tr><tr><td>media</td><td>Object</td><td><br></td><td>详见媒体消息：media消息</td></tr><tr><td>location</td><td>Object</td><td><br></td><td>详见媒体消息：location消息</td></tr><tr><td>contacts</td><td>Object[]</td><td><br></td><td>详见媒体消息：contacts消息</td></tr><tr><td>interactive</td><td>Object</td><td><br></td><td>详见媒体消息：interactive消息</td></tr></tbody></table>

#### HeaderDto

<table><thead><tr><th width="107" align="center">参数名</th><th align="center">类型</th><th align="center">是否必填</th><th align="center">备注</th><th align="center">示例</th></tr></thead><tbody><tr><td align="center">type</td><td align="center">String</td><td align="center">Y</td><td align="center">媒体类型：text/image/video/document</td><td align="center">image</td></tr><tr><td align="center">link</td><td align="center">String</td><td align="center">N</td><td align="center">媒体链接type不是text时必填</td><td align="center"><a href="https://p0.itc.cn/images01/20230201/1444f46dd92a4f6c8a626b585eb52751.png">https://p0.itc.cn/images01/20230201/1444f46dd92a4f6c8a626b585eb52751.png</a></td></tr><tr><td align="center">caption</td><td align="center">String</td><td align="center">N</td><td align="center">标题type不是text时有效</td><td align="center">Caption for the Picture</td></tr><tr><td align="center">paramValue</td><td align="center">String</td><td align="center">N</td><td align="center">变量type=text时有效，仅支持一个变量</td><td align="center">tig</td></tr></tbody></table>

#### ParameterDto

|  参数名  |   类型   | 是否必填 |           备注          |     示例    |
| :---: | :----: | :--: | :-------------------: | :-------: |
|  type | String |   Y  |         固定text        |    text   |
| value | String |   N  | 变量值如果是按钮上的文字，不超过20个字符 | chuanglan |

### **验证码模板示例**

```json


{
   "wabaId": wabaId,
   "messageType": "template",
   "bodyParams": [
       "888888"
   ],
   "recipientNumber": "86******76",
   "sendNumber": "62******43",
   "templateName": "otp0001",
   "language": "zh_HK",
    "buttonParams": [
        {
            "type": "text",
            "value": "888888"
        }
    ]
}
```

### **营销模板示例**

```json


{
    "header":{
        "type":"image",
        "link":"https://www.pianshen.com/thumbs/886/535cfdc357b166dc020c70d0533d85f6.JPEG"
    },
    "bodyParams": ["Lucy"],
    "buttonParams": [
        {
            "type":"text",
            "value":"http://xxxxx?type=yHkYRww90" 
        }
    ],
    "wabaId":"110129512080522",
    "language":"en_US",
    "messageType":"template",
    "recipientNumber": "6285234567899",
    "sendNumber": "8618912123456",
    "templateName": "marketing_template"
}
```

**Response示例**

```json

{
    "code": "0",
    "message": "Success",
    "data":"110129512080522" //messageId 
}
```

## 多媒体消息

### **media 消息**

&#x20; 当messageType为（image、video、audio、document）时，可以发送媒体消息。

<table data-header-hidden><thead><tr><th width="120.51171875"></th><th width="101.01171875"></th><th width="90.24609375"></th><th></th></tr></thead><tbody><tr><td>字段</td><td>数据类型</td><td>是否必填</td><td>描述</td></tr><tr><td>link</td><td>String</td><td>是</td><td>资源访问地址，改地址必须可以外网访问</td></tr><tr><td>caption</td><td>String</td><td>否</td><td>标题或描述，当messageType=audio,该属性不能填写</td></tr><tr><td>filename</td><td>String</td><td>否</td><td>messageType=document时必填填</td></tr></tbody></table>

```json
{
    "wabaId":"110129512080522",
    "recipientNumber": "6285234567899",
    "sendNumber": "8618912123456",
    "messageType": "image",
    "media":{
        "link": "https://www.pianshen.com/thumbs/886/535cfdc357b166dc020c70d0533d85f6.JPEG"
    }
}
```

### **location 消息**

&#x20; 当messageType为 location 时，可以发送位置消息。

<table data-header-hidden><thead><tr><th width="122.84765625"></th><th width="100.55859375"></th><th width="95.5390625"></th><th></th></tr></thead><tbody><tr><td>字段</td><td>数据类型</td><td>是否必填</td><td>描述</td></tr><tr><td>latitude</td><td>String</td><td>是</td><td>纬度 eg:31.23593</td></tr><tr><td>longitude</td><td>String</td><td>是</td><td>经度 eg:31.23593</td></tr><tr><td>name</td><td>String</td><td>是</td><td>位置名称,Pizz Hut</td></tr><tr><td>address</td><td>String</td><td>是</td><td>地址xxxx Road No.666</td></tr></tbody></table>

```json
{
    "wabaId":"110129512080522",
    "recipientNumber": "6285234567899",
    "sendNumber": "8618912123456",
    "messageType": "location",
    "location":{
        "latitude": "-5.15161",
        "longitude":"119.41629",
        "name":"Pizza Hut",
        "address":"xxx road No.123"
    }
}
```

### **contacts 消息**

&#x20; 当messageType为 contacts 时，可以发送联系人消息。

<table data-header-hidden><thead><tr><th width="202.0859375"></th><th width="105.640625"></th><th width="68.7421875"></th><th></th></tr></thead><tbody><tr><td>字段</td><td>数据类型</td><td>是否必填</td><td>描述</td></tr><tr><td>name</td><td>Object[]</td><td>是</td><td>姓名</td></tr><tr><td>├─formattedName</td><td>String</td><td>是</td><td>全名</td></tr><tr><td>├─firstName</td><td>String</td><td>否</td><td>姓</td></tr><tr><td>├─lastName</td><td>String</td><td>否</td><td>名</td></tr><tr><td>├─middleName</td><td>String</td><td>否</td><td>中间名</td></tr><tr><td>├─suffix</td><td>String</td><td>否</td><td>前缀</td></tr><tr><td>├─prefix</td><td>String</td><td>否</td><td>后缀</td></tr><tr><td>phones</td><td>Object[]</td><td>否</td><td>手机号码</td></tr><tr><td>├─type</td><td>String</td><td>是</td><td>类型：HOME/WORK</td></tr><tr><td>├─phone</td><td>String</td><td>是</td><td>手机号码</td></tr><tr><td>├─waID</td><td>String</td><td>是</td><td>WhatsApp商业账户唯一标识</td></tr><tr><td>org</td><td>Object[]</td><td>否</td><td>组织/部门</td></tr><tr><td>├─company</td><td>String</td><td>是</td><td>公司名称</td></tr><tr><td>├─department</td><td>String</td><td>是</td><td>部门</td></tr><tr><td>├─title</td><td>String</td><td>是</td><td>职位</td></tr><tr><td>addresses</td><td>Object[]</td><td>否</td><td>地址</td></tr><tr><td>├─type</td><td>String</td><td>否</td><td>类型：HOME/WORK</td></tr><tr><td>├─street</td><td>String</td><td>否</td><td>街道信息：XX街道XX号</td></tr><tr><td>├─city</td><td>String</td><td>否</td><td>城市：北京</td></tr><tr><td>├─state</td><td>String</td><td>否</td><td>州缩写，Contact's State</td></tr><tr><td>├─zip</td><td>String</td><td>否</td><td>邮政编码：000001</td></tr><tr><td>├─country</td><td>String</td><td>否</td><td>国家</td></tr><tr><td>├─countryCode</td><td>String</td><td>否</td><td>国家码</td></tr><tr><td>birthday</td><td>String</td><td>否</td><td>生日</td></tr><tr><td>emails</td><td>Object[]</td><td>否</td><td>电子邮件</td></tr><tr><td>├─type</td><td>String</td><td>是</td><td>类型：HOME/WORK</td></tr><tr><td>├─email</td><td>String</td><td>是</td><td>邮箱地址<a href="mailto:xxxxx@gmail.com">xxxxx@gmail.com</a></td></tr><tr><td>urls</td><td>Object[]</td><td>否</td><td>网址</td></tr><tr><td>├─type</td><td>String</td><td>是</td><td>类型：HOME/WORK</td></tr><tr><td>├─url</td><td>String</td><td>是</td><td>网址 https://www.chuanglan.com/</td></tr></tbody></table>

```json
{
    "uid": "2023052500002",//批次号 可选
    "wabaId": "110129512080522",
    "messageType": "contacts",
    "recipientNumber": "8616685177612",
    "sendNumber": "8615121041046",
    "contacts": [
        {
            "addresses": [
                {
                    "street": "XXX街道XX号",
                    "city": "XX市",
                    "state": "XX州",
                    "zip": "553301",
                    "country": "cn",
                    "countryCode": "0086",
                    "type": "WORK"
                }
            ],
            "birthday": "1992-08-13",
            "emails": [
                {
                    "email": "xxx@gmail.com",
                    "type": "WORK"
                }
            ],
            "name": {
                "formattedName": "jack chen",
                "firstName": "chen",
                "lastName": "jack",
                "middleName": "jin",
                "suffix": "jack",
                "prefix": "chen"
            },
            "org": {
                "company": "微软",
                "department": "研发",
                "title": "你好啊"
            },
            "phones": [
                {
                    "phone": "8616685177612",
                    "waId": "28288282",
                    "type": "work"
                }
            ],
            "urls": [
                {
                    "url": "https://www.google.com/",
                    "type": "HOME"
                }
            ]
        }
    ]
}
```

&#x20; 当messageType为 interactive 时，可以发送交互消息。

<table data-header-hidden><thead><tr><th width="170.95703125"></th><th width="105.05859375"></th><th width="70.6015625"></th><th></th></tr></thead><tbody><tr><td>字段</td><td>数据类型</td><td>是否必填</td><td>描述</td></tr><tr><td>type</td><td>String</td><td>是</td><td>互动消息类型:list/button/product/product_list</td></tr><tr><td>header</td><td>String</td><td>否</td><td>互动消息请求头：product_list 类型时候必要、 product类型不能设置header 其他类型可选详见：InteractiveHeader</td></tr><tr><td>├─type</td><td><br></td><td><br></td><td>媒体类型：text/image/video/document</td></tr><tr><td>├─link</td><td><br></td><td><br></td><td>媒体链接type不是text时必填</td></tr><tr><td>├─caption</td><td><br></td><td><br></td><td>标题type不是text时有效</td></tr><tr><td>├─paramValue</td><td><br></td><td><br></td><td>变量type=text时有效，仅支持一个变量</td></tr><tr><td>body</td><td><br></td><td>是</td><td>类型为product时可选，其他消息类型必需 详见：Body</td></tr><tr><td>├─text</td><td><br></td><td><br></td><td>文本内容</td></tr><tr><td>footer</td><td><br></td><td>否</td><td>页脚详见：Footer</td></tr><tr><td>├─text</td><td><br></td><td><br></td><td>文本内容</td></tr><tr><td>action</td><td><br></td><td>是</td><td>操作</td></tr><tr><td>├─catalogId</td><td><br></td><td><br></td><td>type=product/product_type时必填：链接到您的WhatsApp商业帐户的Facebook目录的唯一标识符。这个ID可以通过Commerce Manager检索</td></tr><tr><td>├─productRetailerId</td><td><br></td><td><br></td><td>type=product/product_type时必填： 产品在目录中的唯一标识符。单产品和多产品消息最多100个字符。</td></tr><tr><td>├─buttons</td><td><br></td><td><br></td><td>按钮对象： 详见：Button</td></tr><tr><td>├─button</td><td><br></td><td><br></td><td>按钮内容： type=list时必填，不能为空字符串</td></tr><tr><td>├─sections</td><td><br></td><td><br></td><td>清单消息(type=list)和多产品消息（type=product_list）必填。详见：Section</td></tr></tbody></table>

&#x20; Button参数

<table data-header-hidden><thead><tr><th width="120.5390625"></th><th width="124.36328125"></th><th width="92.6484375"></th><th></th></tr></thead><tbody><tr><td>字段</td><td>数据类型</td><td>是否必填</td><td>描述</td></tr><tr><td>type</td><td>String</td><td>是</td><td>按钮类型：当前可选值：reply</td></tr><tr><td>title</td><td>String</td><td>是</td><td>按钮标题：不能为空字符串、当前消息中必须唯一,支持表情符号，不支持markdown。最大长度:20个字符</td></tr><tr><td>id</td><td>String</td><td>是</td><td>按钮的唯一标识符。当用户单击按钮时，在webhook中返回此ID。最大长度:256个字符</td></tr></tbody></table>

&#x20; sections参数

<table data-header-hidden><thead><tr><th width="137.57421875"></th><th width="103.6328125"></th><th width="93.6875"></th><th></th></tr></thead><tbody><tr><td>字段</td><td>数据类型</td><td>是否必填</td><td>描述</td></tr><tr><td>title</td><td>String</td><td>否</td><td>section标题：消息中超过一个section时候必填：最大不超过24字符</td></tr><tr><td>rows</td><td>String</td><td>否</td><td>消息类型为list时必填, 一个Row的list对象,最多为10个详见：Row</td></tr><tr><td>productItems</td><td>String</td><td>否</td><td>type=product_list时必填， 产品对象的数组。每个部分至少有1个产品，所有部分最多有30个产品。详见：ProductItem</td></tr></tbody></table>

&#x20; Row参数

<table data-header-hidden><thead><tr><th width="134.65234375"></th><th width="107.96875"></th><th width="105.42578125"></th><th></th></tr></thead><tbody><tr><td>字段</td><td>数据类型</td><td>是否必填</td><td>描述</td></tr><tr><td>title</td><td>String</td><td>是</td><td>标题：最大长度24个字符</td></tr><tr><td>id</td><td>String</td><td>是</td><td>唯一Id标识，最大长度200个字符</td></tr><tr><td>description</td><td>String</td><td>否</td><td>描述</td></tr></tbody></table>

&#x20; ProductItem参数

| 字段                | 数据类型   | 是否必填 | 描述           |
| ----------------- | ------ | ---- | ------------ |
| productRetailerId | String | 是    | 产品在目录中的唯一标识符 |

<br>

```json
{
    "uid": "2023052500002",
    "wabaId": "110129512080523",
    "messageType": "interactive",
    "recipientNumber": "8616685177612",
    "sendNumber": "8615121041046",
    "interactive": {
        "type": "list",
        "header": {
            "type": "text",
            "text": "5G Message header"
        },
        "body": {
            "text": "meta Message Text "
        },
        "footer": {
            "text": "meta Message Text Footer"
        },
        "action": {
            "button": "button name",
            "sections": [
                {
                    "title": "meta Message Title1",
                    "rows": [
                        {
                            "id": "20230524001",
                            "title": "title1",
                            "description": "some description"
                        },
                        {
                            "id": "20230524002",
                            "title": "title12",
                            "description": "some description"
                        }
                    ]
                },
                {
                    "title": "meta Message Title2",
                    "rows": [
                        {
                            "id": "20230524003",
                            "title": "title text",
                            "description": "some description"
                        },
                        {
                            "id": "20230524004",
                            "title": "title text1",
                            "description": "some description"
                        }
                    ]
                }
            ]
        }
    }
}
```

## 发送 MMLite 消息

&#x20; **MMLite 需要授权MMLite API权限后才可以使用，并且仅支持发送模版营销消息**

#### &#x20; **请求接口地址**

```
POST   https://api.innopaas.com/api/whatsapp/v3/lite/submit
```

#### &#x20;  **请求参数**

<table data-header-hidden><thead><tr><th width="162.9921875"></th><th width="106.80078125"></th><th width="70.18359375"></th><th></th></tr></thead><tbody><tr><td>字段</td><td>数据类型</td><td>是否必填</td><td>描述</td></tr><tr><td>wabaId</td><td>String</td><td><br></td><td>WhatsApp商业账户唯一标识</td></tr><tr><td>messageType</td><td>String</td><td><br></td><td>消息内容类型:template:模板</td></tr><tr><td>uid</td><td>String</td><td><br></td><td>客户批次号,不超过32字符</td></tr><tr><td>sendNumber</td><td>String</td><td><br></td><td>发送号码，格式：国家码+手机号</td></tr><tr><td>recipientNumber<br></td><td>String</td><td><br></td><td>接收号码，格式：国家码+手机号多个号码使用逗号分隔，最多1000个号码</td></tr><tr><td>body</td><td>String</td><td><br></td><td>消息体，messageType=text时必填</td></tr><tr><td>language</td><td>String</td><td><br></td><td>消息语言（<strong>需要传语言缩写编码</strong>）,详见 附1,Language Code ListmessageType=template时必填</td></tr><tr><td>templateName<br></td><td>String</td><td><br></td><td>模板名称。允许小写字母、数字、字符和下划线，必须唯一。messageType=template时必填</td></tr><tr><td>header</td><td>Object</td><td><br></td><td>模板的消息头信息。详见 HeaderDto</td></tr><tr><td>bodyParams</td><td>String[]</td><td><br></td><td>模板正文中有变量时必填</td></tr><tr><td>buttonParams</td><td>Object[]</td><td><br></td><td>模板按钮类型是动态链接时必填详见 ParameterDto</td></tr></tbody></table>

#### **请求示例**

```python

{
    "header":{
        "type":"image",
        "link":"https://www.pianshen.com/thumbs/886/535cfdc357b166dc020c70d0533d85f6.JPEG"
    },
    "bodyParams": ["Lucy"],
    "buttonParams": [
        {
            "type":"text",
            "value":"http://xxxxx?type=yHkYRww90" 
        }
    ],
    "wabaId":"110129512080522",
    "language":"en_US",
    "messageType":"template",
    "recipientNumber": "6285234567899",
    "sendNumber": "8618912123456",
    "templateName": "marketing_template"
}
```

#### **响应示例**

```json

{
    "code": "0",
    "message": "Success",
    "data":"110129512080522" //messageId 
}
```


# 模板(异步)Template

## 创建模板

**请求接口地址**

```
POST    https://api.innopaas.com/api/whatsapp/v3/template/submit
```

#### &#x20;**请求参数**

<table data-header-hidden><thead><tr><th width="243.87109375"></th><th width="111.06640625"></th><th width="70.15234375"></th><th width="342.91796875"></th></tr></thead><tbody><tr><td>字段</td><td>数据类型</td><td>是否必填</td><td>描述</td></tr><tr><td>wabaId</td><td>String</td><td>是</td><td>WhatsApp商业账户唯一标识</td></tr><tr><td>name</td><td>String</td><td>是</td><td>模板名称：(eg:limited_time_offer_tuscan_getaway_2023)由小写字母、数字、下划线组合,字段限制为512个字符.</td></tr><tr><td>category</td><td>String</td><td>是</td><td>模板类型：1-MARKETING,2-AUTHENTICATION,3-UTILITY</td></tr><tr><td>messageLanguage</td><td>String</td><td>是</td><td>模板支持的语言，(<strong>需要传语言缩写编码</strong>)请参考附录1</td></tr><tr><td>headerType</td><td>Integer</td><td>是</td><td>是否支持多媒体,默认1,1:None,2:Text,3:Image,4:Video,5:Document</td></tr><tr><td>caption</td><td>String</td><td>否</td><td><strong>页眉内容:</strong>字段限制为字符(多媒体模板时，该字段为空),动参格式{{1}}</td></tr><tr><td>messageBody</td><td>String</td><td>否</td><td><strong>正文内容:</strong>字段限制为1024个字符.动参格式{{1}}{{2}},前后按序插入</td></tr><tr><td>footer</td><td>String</td><td>否</td><td><strong>页脚内容:</strong>字段限制为60字符(AUTHENTICATION模板时,该字段表示过期时间,非必填,过期时间限制90分钟内)</td></tr><tr><td>safetyAdvice</td><td>Integer</td><td>否</td><td>AUTHENTICATION模板是否添加安全建议(0:不添加 1:添加)选填,未添加显示：*{{1}}* 是你的验证码。添加后显示：*{{1}}* 是你的验证码。为安全起见，请不要分享这组验证码。</td></tr><tr><td>buttons</td><td>Object[]</td><td>否</td><td>按钮总数不超过10个</td></tr><tr><td>├─actionType<br></td><td>String</td><td><br></td><td>按钮类型 1-quick reply,2-visit website,3-call phone number,4-copy code(category为2时),5-auto fill (category为2时)</td></tr><tr><td>├─label</td><td>String</td><td><br></td><td>按钮文本</td></tr><tr><td>├─ phoneArea</td><td>String</td><td><br></td><td>号码区号(eg:86)</td></tr><tr><td>├─ phone</td><td>String</td><td><br></td><td>号码(eg:18877776666)</td></tr><tr><td>├─packageName</td><td>String</td><td><br></td><td><strong>应用包名</strong><br>模板类型为:AUTHENTICATION,<br><mark style="color:$danger;">actionType=5</mark> 时必填</td></tr><tr><td>├─sigNatureHash</td><td>String</td><td><br></td><td><strong>应用哈希散列</strong><br>模板类型为:AUTHENTICATION,<br><mark style="color:$danger;">actionType=5</mark>时必填</td></tr><tr><td>├─ autoFill</td><td>String</td><td><br></td><td><strong>自动填充</strong><br>模板类型为:AUTHENTICATION,<br><mark style="color:$danger;">actionType=5</mark>时必填</td></tr><tr><td>├─ zeroTapTermsAccepted</td><td>boolean</td><td></td><td><strong>接受填充条款</strong><br>模板类型为:AUTHENTICATION,<br><mark style="color:$danger;">actionType=5</mark>时必填且为<code>true</code></td></tr><tr><td>├─ targetUrl</td><td>String</td><td><br></td><td>网址访问(eg："<a href="https://www.chuanglan.com/">https://www.chuanglan.com/</a>{{1}}") 只支持一个动参，格式{{1}}</td></tr><tr><td>├─buttonExample</td><td>Array</td><td><br></td><td>按钮变量示例(eg："buttonExample": ["<a href="https://www.chuanglan.com/whatsApp">https://www.chuanglan.com/whatsApp</a>"])网址访问含有变量时必填,变量内容为完整网址</td></tr><tr><td>headerExample</td><td>Objec</td><td>否</td><td><br></td></tr><tr><td>├─ header_handle</td><td>Array</td><td><br></td><td>多媒体模板变量(eg："header_handle": ["4::axxxx"])多媒体模板时，填写文件上传返回时句柄内容</td></tr><tr><td>├─ header_link</td><td>String</td><td></td><td>资源地址URL，需要外网能够访问，<mark style="color:$danger;">header_link和header_handle 二选一， 当 header_link 不为空时，header_handle会被替换</mark></td></tr><tr><td>├─ header_text</td><td>Array</td><td><br></td><td>纯文本模板变量(eg："header_text": ["创蓝云智"])文本动参模板变量,动参个数限制1</td></tr><tr><td>bodyExample</td><td>Object</td><td>否</td><td><br></td></tr><tr><td>├─ body_text</td><td>Array</td><td><br></td><td>body变量(eg: "body_text":[["variable1","variable2"]]) 变量示例与变量按序对应，变量{{1}}对应variable1，以此类推</td></tr></tbody></table>

#### **请求示例**

```json
{
    "name": "transland_marketing_promotion_6",
    "category": "1",
    "messageLanguage": "zh_CN",
    "headerType":2,
    "caption": "Transland API Account {{1}} Opened",
    "messageBody": "Dear customer {{1}}，your SMS API account {{2}} is avaliable, please rember the secret of this account. The secret is sent via email.",
    "footer": "Have a nice sms experience.",
    "buttonType":2,
    "headerExample": {
        "header_text": [
            "II2024089"
        ]
    },
    "bodyExample": {
        "body_text": [
            [
                "Tom",
                "II2024089"
            ]
        ]
    },
    "wabaId": "121009624329108",
    "buttons": [
        {
            "actionType": 1,
            "label": "Call Us",
            "phone": "+8615121041046"
        },
        {
            "actionType": 2,
            "label": "Websit",
            "targetUrl": "https://www.chuanglan.com/{{1}}",
            "buttonExample": [
                "https://www.chuanglan.com/document"
            ]
        }
    ]
}
```

#### **响应示例**

```json

{
    "code": "0",
    "message": "Success",
    "data": "1399631517488334"
}
```

## 修改模板

#### **请求接口地址**

```
POST     https://api.innopaas.com/api/whatsapp/v3/template/update
```

#### **请求参数**

<table data-header-hidden><thead><tr><th width="167.71484375"></th><th width="118.70703125"></th><th width="91.27734375"></th><th></th></tr></thead><tbody><tr><td>字段</td><td>数据类型</td><td>是否必填</td><td>描述</td></tr><tr><td>templateId</td><td>String</td><td>是</td><td>模板id</td></tr><tr><td>wabaId</td><td>String</td><td><del>是</del></td><td>WhatsApp商业账户唯一标识</td></tr><tr><td>name</td><td>String</td><td>是</td><td>模板名称：(eg:limited_time_offer_tuscan_getaway_2023)由小写字母、数字、下划线组合,字段限制为512个字符.</td></tr><tr><td>category</td><td>String</td><td>是</td><td>模板类型：1-MARKETING,2-AUTHENTICATION,3-UTILITY</td></tr><tr><td>messageLanguage</td><td>String</td><td>是</td><td>模板支持的语言:(<strong>需要传语言缩写简码</strong>)请参考附录1</td></tr><tr><td>headerType</td><td>Integer</td><td>是</td><td>是否支持多媒体,默认1,1:None,2:Text,3:Image,4:Video,5:Document</td></tr><tr><td>caption</td><td>String</td><td>否</td><td><strong>页眉内容:</strong>字段限制为字符(多媒体模板时，该字段为空),动参格式{{1}}</td></tr><tr><td>messageBody</td><td>String</td><td>否</td><td><strong>正文内容:</strong>字段限制为1024个字符.动参格式{{1}}{{2}},前后按序插入</td></tr><tr><td>footer</td><td>String</td><td>否</td><td><strong>页脚内容:</strong>字段限制为60字符(AUTHENTICATION模板时,该字段表示过期时间,非必填,过期时间限制90分钟内)</td></tr><tr><td>safetyAdvice</td><td>Integer</td><td>否</td><td>AUTHENTICATION模板是否添加安全建议(0:不添加 1:添加)选填,未添加显示：*{{1}}* 是你的验证码。添加后显示：*{{1}}* 是你的验证码。为安全起见，请不要分享这组验证码。</td></tr><tr><td>buttons</td><td>Object[]</td><td>否</td><td>按钮总数不超过10个</td></tr><tr><td>├─actionType</td><td>String</td><td><br></td><td>按钮类型 1-quick reply,2-visit website,3-call phone number,4-copy code(category为2时),5-auto fill (category为2时)</td></tr><tr><td>├─label</td><td>String</td><td><br></td><td>按钮文本</td></tr><tr><td>├─ phoneArea</td><td>String</td><td><br></td><td>号码区号(eg:86)</td></tr><tr><td>├─ phone</td><td>String</td><td><br></td><td>号码(eg:18877776666)</td></tr><tr><td>├─packageName</td><td>String</td><td><br></td><td><strong>应用包名,</strong>模板类型为AUTHENTICATION,选填</td></tr><tr><td>├─signatureHash</td><td>String</td><td><br></td><td><strong>应用哈希散列,</strong>模板类型为AUTHENTICATION,选填</td></tr><tr><td>├─ autoFill</td><td>String</td><td><br></td><td><strong>自动填充,</strong>模板类型为AUTHENTICATION,选填</td></tr><tr><td>├─ targetUrl</td><td>String</td><td><br></td><td>网址访问(eg："<a href="https://www.chuanglan.com/">https://www.chuanglan.com/</a>{{1}}") 只支持一个动参，格式{{1}}</td></tr><tr><td>├─buttonExample</td><td>Array</td><td><br></td><td>按钮变量示例(eg："buttonExample": ["<a href="https://www.chuanglan.com/whatsApp">https://www.chuanglan.com/whatsApp</a>"])网址访问含有变量时必填,变量内容为完整网址</td></tr><tr><td>headerExample</td><td>Object[]</td><td>否</td><td><br></td></tr><tr><td>├─ header_handle</td><td>Array</td><td><br></td><td>多媒体模板变量(eg："header_handle": ["4::axxxx"])多媒体模板时，填写文件上传返回时句柄内容</td></tr><tr><td>├─ header_link</td><td>String</td><td></td><td>资源地址URL，需要外网能够访问，<mark style="color:$danger;">header_link和header_handle 二选一， 当 header_link 不为空时，header_handle会被替换</mark></td></tr><tr><td>├─ header_text</td><td>Array</td><td><br></td><td>纯文本模板变量(eg："header_text": ["创蓝云智"])文本动参模板变量,动参个数限制1</td></tr><tr><td>bodyExample</td><td>Object[]</td><td>否</td><td><br></td></tr><tr><td>├─ body_text</td><td>Array</td><td><br></td><td>body变量(eg: "body_text":[["variable1","variable2"]]) 变量示例与变量按序对应，变量{{1}}对应variable1，以此类推</td></tr></tbody></table>

#### **请求示例**

```json

{   "templateId":"123123123123213",
    "name": "transland_marketing_promotion_6",
    "category": "1",
    "messageLanguage": "zh_CN",
    "headerType":2,
    "caption": "Transland API Account {{1}} Opened",
    "messageBody": "Dear customer {{1}}，your SMS API account {{2}} is avaliable, please rember the secret of this account. The secret is sent via email.",
    "footer": "Have a nice sms experience.",
    "buttonType":2,
    "headerExample": {
        "header_text": [
            "II2024089"
        ]
    },
    "bodyExample": {
        "body_text": [
            [
                "Tom",
                "II2024089"
            ]
        ]
    },
    "wabaId": "121009624329108",
    "buttons": [
        {
            "actionType": 1,
            "label": "Call Us",
            "phone": "+8615121041046"
        },
        {
            "actionType": 2,
            "label": "Websit",
            "targetUrl": "https://www.chuanglan.com/{{1}}",
            "buttonExample": [
                "https://www.chuanglan.com/document"
            ]
        }
    ]
}
```

#### **响应示例**

```json

{
    "code": "0",
    "message": "Success",
    "data": "1399631517488334"
}
```

## 模版列表

#### **请求接口地址**

```
POST    https://api.innopaas.com/api/whatsapp/v3/template/list
```

#### 请求参数

| 字段              | 数据类型    | 是否必填 | 描述                                                                                |
| --------------- | ------- | ---- | --------------------------------------------------------------------------------- |
| page            | Integer | 是    | 页码                                                                                |
| size            | Integer | 是    | 每页返回条数                                                                            |
| wabaId          | String  | 是    | WhatsApp商业账户唯一标识                                                                  |
| name            | String  | 否    | 模板名称                                                                              |
| templateId      | String  | 否    | 模板id                                                                              |
| category        | list    | 否    | 模板类型 1-MARKETING,2-AUTHENTICATION,3-UTILITY                                       |
| messageLanguage | list    | 否    | 模板语言(eg:en)                                                                       |
| auditStatus     | list    | 否    | 模板状态 1:待定(Pending), 2: 通过（Approved） 3: 拒绝（Rejected） 4: 暂停（Paused） 5: 禁用（Disabled） |

#### 请求示例代码

```json
{
    "page":1,
    "size":100
    "name": "transland_marketing_promotion_01"
    "wabaId": "100853739759190"
}

```

#### 响应示例

```json

{
    "code": "0",
    "message": "成功",
    "data": {
        "total": 1,
        "pages": 1,
        "list": [
            {
                "updateDate": "2023-10-16 19:09:45",
                "bodyExample": {
                    "body_text": [
                        [
                            "Tom",
                            "II2024089"
                        ]
                    ]
                },
                "buttons": [
                    {
                        "actionType": 3,
                        "phone": "15121041046",
                        "phoneArea": "86",
                        "label": "Call Us"
                    },
                    {
                        "actionType": 2,
                        "buttonExample": [
                            "\"https://www.chuanglan.com/document\""
                        ],
                        "label": "Websit",
                        "targetUrl": "https://www.chuanglan.com/{{1}}"
                    }
                ],
                "messageBody": "Dear customer {{1}}，your SMS API account {{2}} is avaliable, please rember the secret of this account. The secret is sent via email.",
                "footer": "Have a nice sms experience.",
                "messageLanguage": "zh_CN",
                "caption": "Transland API Account {{1}} Opened",
                "updateUser": "",
                "source": 1,
                "delFlag": 0,
                "templateId": "FCFD7669C142497684F090203F88AE98",
                "customerName": "CXQ测试20230426",
                "sid": "634562468792622",
                "headerExample": {
                    "header_text": [
                        "II2024089"
                    ]
                },
                "wabaId": "wabaId",
                "name": "transland_marketing_promotion_01",
                "auditStatus": 2,
                "headerType": 2,
                "createUser": "",
                "id": 194,
                "category": 1,
                "createDate": "2023-10-16 19:09:45",
                "safetyAdvice": 0
            }
        ]
    }
}

```

## 模板删除

**请求接口地址**

```
POST https://api.innopaas.com/api/whatsapp/v3/template/delete
```

**接口描述：**

请求参数

<table><thead><tr><th width="111">名称</th><th width="104">类型</th><th width="80">是否必须</th><th>备注</th><th>其他信息</th></tr></thead><tbody><tr><td>wabaId</td><td>string</td><td>必须</td><td>WhatsApp商业账户唯一标识</td><td></td></tr><tr><td>id</td><td>integer</td><td></td><td>模板主键id</td><td>id/templateId 至少传其一</td></tr><tr><td>templateId</td><td>string</td><td></td><td>模板id</td><td>id/templateId 至少传其一</td></tr></tbody></table>

返回参数

<table><thead><tr><th>名称</th><th>类型</th><th>是否必须</th><th>默认值</th><th width="98">备注</th><th>其他信息</th></tr></thead><tbody><tr><td>code</td><td>integer</td><td>必须</td><td></td><td></td><td>0：成功<br>其他：失败</td></tr><tr><td>data</td><td>object</td><td>必须</td><td></td><td></td><td></td></tr><tr><td>message</td><td>string</td><td>必须</td><td></td><td></td><td></td></tr></tbody></table>

<br>


# 模板(同步)Template

## 创建模板

**请求接口地址**

```
POST    https://api.innopaas.com/api/whatsapp/v3/waba/template/submit
```

#### &#x20;**请求参数**

<table data-header-hidden><thead><tr><th width="243.87109375"></th><th width="111.06640625"></th><th width="70.15234375"></th><th></th></tr></thead><tbody><tr><td>字段</td><td>数据类型</td><td>是否必填</td><td>描述</td></tr><tr><td>wabaId</td><td>String</td><td>是</td><td>WhatsApp商业账户唯一标识</td></tr><tr><td>name</td><td>String</td><td>是</td><td>模板名称：(eg:limited_time_offer_tuscan_getaway_2023)由小写字母、数字、下划线组合,字段限制为512个字符.</td></tr><tr><td>category</td><td>String</td><td>是</td><td>模板类型：1-MARKETING,2-AUTHENTICATION,3-UTILITY</td></tr><tr><td>messageLanguage</td><td>String</td><td>是</td><td>模板支持的语言，(<strong>需要传语言缩写编码</strong>)请参考附录1</td></tr><tr><td>headerType</td><td>Integer</td><td>是</td><td>是否支持多媒体,默认1,1:None,2:Text,3:Image,4:Video,5:Document</td></tr><tr><td>caption</td><td>String</td><td>否</td><td><strong>页眉内容:</strong>字段限制为字符(多媒体模板时，该字段为空),动参格式{{1}}</td></tr><tr><td>messageBody</td><td>String</td><td>否</td><td><strong>正文内容:</strong>字段限制为1024个字符.动参格式{{1}}{{2}},前后按序插入</td></tr><tr><td>footer</td><td>String</td><td>否</td><td><strong>页脚内容:</strong>字段限制为60字符(AUTHENTICATION模板时,该字段表示过期时间,非必填,过期时间限制90分钟内)</td></tr><tr><td>safetyAdvice</td><td>Integer</td><td>否</td><td>AUTHENTICATION模板是否添加安全建议(0:不添加 1:添加)选填,未添加显示：*{{1}}* 是你的验证码。添加后显示：*{{1}}* 是你的验证码。为安全起见，请不要分享这组验证码。</td></tr><tr><td>buttons</td><td>Object[]</td><td>否</td><td>按钮总数不超过10个</td></tr><tr><td>├─actionType<br></td><td>String</td><td><br></td><td>按钮类型 1-quick reply,2-visit website,3-call phone number,4-copy code(category为2时),5-auto fill (category为2时)</td></tr><tr><td>├─label</td><td>String</td><td><br></td><td>按钮文本</td></tr><tr><td>├─ phoneArea</td><td>String</td><td><br></td><td>号码区号(eg:86)</td></tr><tr><td>├─ phone</td><td>String</td><td><br></td><td>号码(eg:18877776666)</td></tr><tr><td>├─packageName</td><td>String</td><td><br></td><td><strong>应用包名,</strong>模板类型为AUTHENTICATION,actionType=5时必填</td></tr><tr><td>├─sigNatureHash</td><td>String</td><td><br></td><td><strong>应用哈希散列,</strong>模板类型为AUTHENTICATION,actionType=5时必填</td></tr><tr><td>├─ autoFill</td><td>String</td><td><br></td><td><strong>自动填充,</strong>模板类型为AUTHENTICATION,actionType=5时必填</td></tr><tr><td>├─ zeroTapTermsAccepted</td><td>boolean</td><td></td><td><strong>接受填充条款,</strong>模板类型为AUTHENTICATION,actionType=5时必填且为<code>true</code></td></tr><tr><td>├─ targetUrl</td><td>String</td><td><br></td><td>网址访问(eg："<a href="https://www.chuanglan.com/">https://www.chuanglan.com/</a>{{1}}") 只支持一个动参，格式{{1}}</td></tr><tr><td>├─buttonExample</td><td>Array</td><td><br></td><td>按钮变量示例(eg："buttonExample": ["<a href="https://www.chuanglan.com/whatsApp">https://www.chuanglan.com/whatsApp</a>"])网址访问含有变量时必填,变量内容为完整网址</td></tr><tr><td>headerExample</td><td>Objec</td><td>否</td><td><br></td></tr><tr><td>├─ header_handle</td><td>Array</td><td><br></td><td>多媒体模板变量(eg："header_handle": ["4::axxxx"])多媒体模板时，填写文件上传返回时句柄内容</td></tr><tr><td>├─ header_link</td><td>String</td><td></td><td>资源地址URL，需要外网能够访问，<mark style="color:$danger;">header_link和header_handle 二选一， 当 header_link 不为空时，header_handle会被替换</mark></td></tr><tr><td>├─ header_text</td><td>Array</td><td><br></td><td>纯文本模板变量(eg："header_text": ["创蓝云智"])文本动参模板变量,动参个数限制1</td></tr><tr><td>bodyExample</td><td>Object</td><td>否</td><td><br></td></tr><tr><td>├─ body_text</td><td>Array</td><td><br></td><td>body变量(eg: "body_text":[["variable1","variable2"]]) 变量示例与变量按序对应，变量{{1}}对应variable1，以此类推</td></tr></tbody></table>

#### **请求示例**

```json
{
    "name": "transland_marketing_promotion_6",
    "category": "1",
    "messageLanguage": "zh_CN",
    "headerType":2,
    "caption": "Transland API Account {{1}} Opened",
    "messageBody": "Dear customer {{1}}，your SMS API account {{2}} is avaliable, please rember the secret of this account. The secret is sent via email.",
    "footer": "Have a nice sms experience.",
    "buttonType":2,
    "headerExample": {
        "header_text": [
            "II2024089"
        ]
    },
    "bodyExample": {
        "body_text": [
            [
                "Tom",
                "II2024089"
            ]
        ]
    },
    "wabaId": "121009624329108",
    "buttons": [
        {
            "actionType": 1,
            "label": "Call Us",
            "phone": "+8615121041046"
        },
        {
            "actionType": 2,
            "label": "Websit",
            "targetUrl": "https://www.chuanglan.com/{{1}}",
            "buttonExample": [
                "https://www.chuanglan.com/document"
            ]
        }
    ]
}
```

#### **响应示例**

```json
{
    "code": "0",
    "success": true,
    "message": "操作成功",
    "data": {
        "templateId": "E71A3EC81A494CF480C8014857C0FC16", //模板templateId
        "auditStatus": 2  //  0：待提交 ，1:审核中 2：审核通过 3：驳回 4：暂停 5：禁用 6 ：删除
    }
}
```

```json
{
    "code": "2388024",
    "success": false,
    "message": "这个模板已有 Indonesian 内容。你可以新建模板并重试。",
    "data": null
}
```

## 修改模板

#### **请求接口地址**

```
POST     https://api.innopaas.com/api/whatsapp/v3/waba/template/update
```

#### **请求参数**

| 字段                | 数据类型      | 是否必填        | 描述                                                                                                                           |
| ----------------- | --------- | ----------- | ---------------------------------------------------------------------------------------------------------------------------- |
| templateId        | String    | 是           | 模板id                                                                                                                         |
| wabaId            | String    | ~~是~~       | WhatsApp商业账户唯一标识                                                                                                             |
| name              | String    | 是           | 模板名称：(eg:limited\_time\_offer\_tuscan\_getaway\_2023)由小写字母、数字、下划线组合,字段限制为512个字符.                                             |
| category          | String    | 是           | 模板类型：1-MARKETING,2-AUTHENTICATION,3-UTILITY                                                                                  |
| messageLanguage   | String    | 是           | 模板支持的语言:(**需要传语言缩写简码**)请参考附录1                                                                                                |
| headerType        | Integer   | 是           | 是否支持多媒体,默认1,1:None,2:Text,3:Image,4:Video,5:Document                                                                         |
| caption           | String    | 否           | **页眉内容:**&#x5B57;段限制为字符(多媒体模板时，该字段为空),动参格式{{1}}                                                                              |
| messageBody       | String    | 否           | **正文内容:**&#x5B57;段限制为1024个字符.动参格式{{1}}{{2}},前后按序插入                                                                           |
| footer            | String    | 否           | **页脚内容:**&#x5B57;段限制为60字符(AUTHENTICATION模板时,该字段表示过期时间,非必填,过期时间限制90分钟内)                                                       |
| safetyAdvice      | Integer   | 否           | AUTHENTICATION模板是否添加安全建议(0:不添加 1:添加)选填,未添加显示：\*{{1}}\* 是你的验证码。添加后显示：\*{{1}}\* 是你的验证码。为安全起见，请不要分享这组验证码。                       |
| buttons           | Object\[] | 否           | 按钮总数不超过10个                                                                                                                   |
| ├─actionType      | String    | <p><br></p> | 按钮类型 1-quick reply,2-visit website,3-call phone number,4-copy code(category为2时),5-auto fill (category为2时)                    |
| ├─label           | String    | <p><br></p> | 按钮文本                                                                                                                         |
| ├─ phoneArea      | String    | <p><br></p> | 号码区号(eg:86)                                                                                                                  |
| ├─ phone          | String    | <p><br></p> | 号码(eg:18877776666)                                                                                                           |
| ├─packageName     | String    | <p><br></p> | **应用包名,**&#x6A21;板类型为AUTHENTICATION,选填                                                                                       |
| ├─signatureHash   | String    | <p><br></p> | **应用哈希散列,**&#x6A21;板类型为AUTHENTICATION,选填                                                                                     |
| ├─ autoFill       | String    | <p><br></p> | **自动填充,**&#x6A21;板类型为AUTHENTICATION,选填                                                                                       |
| ├─ targetUrl      | String    | <p><br></p> | 网址访问(eg："<https://www.chuanglan.com/>{{1}}") 只支持一个动参，格式{{1}}                                                                 |
| ├─buttonExample   | Array     | <p><br></p> | 按钮变量示例(eg："buttonExample": \["<https://www.chuanglan.com/whatsApp>"])网址访问含有变量时必填,变量内容为完整网址                                   |
| headerExample     | Object\[] | 否           | <p><br></p>                                                                                                                  |
| ├─ header\_handle | Array     | <p><br></p> | 多媒体模板变量(eg："header\_handle": \["4::axxxx"])多媒体模板时，填写文件上传返回时句柄内容                                                              |
| ├─ header\_link   | String    |             | 资源地址URL，需要外网能够访问，<mark style="color:$danger;">header\_link和header\_handle 二选一， 当 header\_link 不为空时，header\_handle会被替换</mark> |
| ├─ header\_text   | Array     | <p><br></p> | 纯文本模板变量(eg："header\_text": \["创蓝云智"])文本动参模板变量,动参个数限制1                                                                        |
| bodyExample       | Object\[] | 否           | <p><br></p>                                                                                                                  |
| ├─ body\_text     | Array     | <p><br></p> | body变量(eg: "body\_text":\[\["variable1","variable2"]]) 变量示例与变量按序对应，变量{{1}}对应variable1，以此类推                                   |

#### **请求示例**

```json

{   "templateId":"123123123123213",
    "name": "transland_marketing_promotion_6",
    "category": "1",
    "messageLanguage": "zh_CN",
    "headerType":2,
    "caption": "Transland API Account {{1}} Opened",
    "messageBody": "Dear customer {{1}}，your SMS API account {{2}} is avaliable, please rember the secret of this account. The secret is sent via email.",
    "footer": "Have a nice sms experience.",
    "buttonType":2,
    "headerExample": {
        "header_text": [
            "II2024089"
        ]
    },
    "bodyExample": {
        "body_text": [
            [
                "Tom",
                "II2024089"
            ]
        ]
    },
    "wabaId": "121009624329108",
    "buttons": [
        {
            "actionType": 1,
            "label": "Call Us",
            "phone": "+8615121041046"
        },
        {
            "actionType": 2,
            "label": "Websit",
            "targetUrl": "https://www.chuanglan.com/{{1}}",
            "buttonExample": [
                "https://www.chuanglan.com/document"
            ]
        }
    ]
}
```

#### **响应示例**

```json
{
    "code": "0",
    "success": true,
    "message": "操作成功",
    "data": {
        "templateId": "E71A3EC81A494CF480C8014857C0FC16", //模板templateId
        "auditStatus": 2  //  0：待提交 ，1:审核中 2：审核通过 3：驳回 4：暂停 5：禁用 6 ：删除
    }
}
```

```json
{
    "code": "2388024",
    "success": false,
    "message": "这个模板已有 Indonesian 内容。你可以新建模板并重试。",
    "data": null
}
```

## 模版列表

#### **请求接口地址**

```
POST    https://api.innopaas.com/api/whatsapp/v3/waba/template/list
```

#### 请求参数

| 字段              | 数据类型    | 是否必填 | 描述                                                                                |
| --------------- | ------- | ---- | --------------------------------------------------------------------------------- |
| page            | Integer | 是    | 页码                                                                                |
| size            | Integer | 是    | 每页返回条数                                                                            |
| wabaId          | String  | 是    | WhatsApp商业账户唯一标识                                                                  |
| name            | String  | 否    | 模板名称                                                                              |
| templateId      | String  | 否    | 模板id                                                                              |
| category        | list    | 否    | 模板类型 1-MARKETING,2-AUTHENTICATION,3-UTILITY                                       |
| messageLanguage | list    | 否    | 模板语言(eg:en)                                                                       |
| auditStatus     | list    | 否    | 模板状态 1:待定(Pending), 2: 通过（Approved） 3: 拒绝（Rejected） 4: 暂停（Paused） 5: 禁用（Disabled） |

#### 请求示例代码

```json
{
    "page":1,
    "size":100
    "name": "transland_marketing_promotion_01"
    "wabaId": "100853739759190"
}

```

#### 响应示例

```json

{
    "code": "0",
    "message": "成功",
    "data": {
        "total": 1,
        "pages": 1,
        "list": [
            {
                "updateDate": "2023-10-16 19:09:45",
                "bodyExample": {
                    "body_text": [
                        [
                            "Tom",
                            "II2024089"
                        ]
                    ]
                },
                "buttons": [
                    {
                        "actionType": 3,
                        "phone": "15121041046",
                        "phoneArea": "86",
                        "label": "Call Us"
                    },
                    {
                        "actionType": 2,
                        "buttonExample": [
                            "\"https://www.chuanglan.com/document\""
                        ],
                        "label": "Websit",
                        "targetUrl": "https://www.chuanglan.com/{{1}}"
                    }
                ],
                "messageBody": "Dear customer {{1}}，your SMS API account {{2}} is avaliable, please rember the secret of this account. The secret is sent via email.",
                "footer": "Have a nice sms experience.",
                "messageLanguage": "zh_CN",
                "caption": "Transland API Account {{1}} Opened",
                "updateUser": "",
                "source": 1,
                "delFlag": 0,
                "templateId": "FCFD7669C142497684F090203F88AE98",
                "customerName": "CXQ测试20230426",
                "sid": "634562468792622",
                "headerExample": {
                    "header_text": [
                        "II2024089"
                    ]
                },
                "wabaId": "wabaId",
                "name": "transland_marketing_promotion_01",
                "auditStatus": 2,
                "headerType": 2,
                "createUser": "",
                "id": 194,
                "category": 1,
                "createDate": "2023-10-16 19:09:45",
                "safetyAdvice": 0
            }
        ]
    }
}

```

## 删除列表

**请求接口地址**

```
POST https://api.innopaas.com/api/whatsapp/v3/waba/template/delete
```

**接口描述：**

请求参数

<table><thead><tr><th width="111">名称</th><th width="104">类型</th><th width="80">是否必须</th><th>备注</th><th>其他信息</th></tr></thead><tbody><tr><td>wabaId</td><td>string</td><td>必须</td><td>WhatsApp商业账户唯一标识</td><td></td></tr><tr><td>id</td><td>integer</td><td></td><td>模板主键id</td><td>id/templateId 至少传其一</td></tr><tr><td>templateId</td><td>string</td><td></td><td>模板id</td><td>id/templateId 至少传其一</td></tr></tbody></table>

返回参数

<table><thead><tr><th>名称</th><th>类型</th><th>是否必须</th><th>默认值</th><th width="98">备注</th><th>其他信息</th></tr></thead><tbody><tr><td>code</td><td>integer</td><td>必须</td><td></td><td></td><td>0：成功<br>其他：失败</td></tr><tr><td>data</td><td>object</td><td>必须</td><td></td><td></td><td></td></tr><tr><td>message</td><td>string</td><td>必须</td><td></td><td></td><td></td></tr></tbody></table>

<br>


# 文件上传Upload

**请求接口地址**

```
POST    https://api.innopaas.com/api/whatsapp/v3/uploadFile
```

**请求参数**

<table data-header-hidden><thead><tr><th width="124.515625"></th><th width="86.74609375"></th><th width="99.54296875"></th><th></th></tr></thead><tbody><tr><td>字段</td><td>数据类型</td><td>是否必填</td><td>描述</td></tr><tr><td><strong>file</strong></td><td><strong>file</strong></td><td>是</td><td>文件的 MIME 类型。有效值为：application/pdf、image/jpeg、image/jpg、image/png 和 video/mp4</td></tr></tbody></table>

**请求示例**

```actionscript-3

Content-Type: multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW

----WebKitFormBoundary7MA4YWxkTrZu0gW
Content-Disposition: form-data; name="file"; filename=""
Content-Type: <Content-Type header here>

(data)
----WebKitFormBoundary7MA4YWxkTrZu0gW
```

**响应参数**

```json
{
    "code": "0",
    "message": "Success",
    "data": "4::aW1hZ2UvanBlZw==:ARZDIOWLhcxHAg-swqoSVjgf5pQFQGM7XvqANssarookTBgIbJz9OwAlsfEsnia073wZviAOJEaWf6rnZqVa_Aoh9rVbphjjCzTHtIAGdP-RZg:e:1695539910:1399631517488334:100092285319469:ARaUDRGLmJ_OYV4HWkM"
}

```


# 号码查询

**请求接口地址**

```
POST    https://api.innopaas.com/api/whatsapp/v3/account/phoneInfo
```

**请求参数**

<table data-header-hidden><thead><tr><th width="124.515625"></th><th width="86.74609375"></th><th width="99.54296875"></th><th></th></tr></thead><tbody><tr><td>字段</td><td>数据类型</td><td>是否必填</td><td>描述</td></tr><tr><td><code>wabaId</code></td><td>String</td><td>是</td><td>WhatsApp商业账户唯一标识</td></tr></tbody></table>

**响应参数**

| 字段                 | 数据类型   | 是否必填 | 描述               |
| ------------------ | ------ | ---- | ---------------- |
| id                 | String | 是    | WhatsApp商业账户唯一标识 |
| displayPhoneNumber | String | 是    | 显示号码             |
| verifiedName       | String | 是    | 名称               |
| status             | String | 是    | 号码状态             |
| qualityRating      | String | 是    | 号码质量             |
| messageLimit       | String | 是    | 消息限制             |

**请求示例**

```actionscript-3

{
  "wabaId": "26849*****5345"
}
```

**响应示例**

```json
{
    "code": "0",
    "success": true,
    "message": "Success",
    "data": [
        {
            "id": "70762****2435850",
            "displayPhoneNumber": "+86 134 **** 3464",
            "verifiedName": "Transland",
            "status": "CONNECTED",
            "qualityRating": "GREEN",
            "messageLimit": "TIER_250"
        }
    ]
}

```


# WebHook


# 配置WebHook

Waba有消息更新时，会通过Webhook将更新事件推送给客户。包括消息状态更新、用户回复消息、Waba账号审核状态更新、WhatsApp模板状态更新、发送号码显示名称变更等。

## 配置WebHook事件

&#x20; **在推送模板、上行回复等信事件时，当无法识别或匹配到App时，数据将推送到默认应用，此时如果没有默认应用，将不推送。** &#x20;

1、 在API Keys功能菜单列表，点击回调事件配置按钮，开始进行配置

<figure><img src="/files/PEEHPiSKPuFFQ9Qw6L0I" alt=""><figcaption></figcaption></figure>

2、点击【Add】按钮进行添加

<figure><img src="/files/b4JL1y9drFKLpw6nviSL" alt=""><figcaption></figcaption></figure>

3、从可用产品列表中选择需要配置的WebHook的产品

<figure><img src="/files/rMZqIWqbttHi0vh2Yccj" alt=""><figcaption></figcaption></figure>

4、配置回调地址，并配置选择需要接收的事件，点击Next进行下一步

<figure><img src="/files/BsfrX75cS3ph5CwcZ9eR" alt=""><figcaption></figcaption></figure>

5、选址回调请求方式，默认POST，如果客户业务系统需要对Webhook的来源进行验签，可以配置UserName和Authorization 头信息，在WebHook 通知推送时，将会在头信息中添加UserName和Authorization，将客户配置的信息一起推送到客户系&#x7EDF;**。**

<figure><img src="/files/f8JLK7oF0FPEWtfak20S" alt=""><figcaption></figcaption></figure>

## WebHook公共参数

<table data-header-hidden><thead><tr><th width="107.8046875"></th><th width="92.015625"></th><th width="68.08203125"></th><th></th></tr></thead><tbody><tr><td>字段</td><td>数据类型</td><td>是否必填</td><td>描述</td></tr><tr><td>id</td><td>String</td><td>是</td><td>文件句柄，标记</td></tr><tr><td>type<br></td><td>String<br></td><td>是</td><td>事件类型:<strong>whatsapp_message_status_updated</strong>:消息状态报告 (可用) <strong>whatsapp_mo_message_received</strong>:上行消息 (可用)<strong>whatsapp_template_status_updated</strong>: 模板状态更新 (可用) <strong>whatsapp_account_review_updated</strong>:账号审核状态更新 (更新中) <strong>whatsapp_phone_number_name_update</strong>:发送号码名称更新 (更新中) </td></tr><tr><td>eventTime</td><td>String</td><td>是</td><td>Event时间，eg: 2023-02-22 12:00:00</td></tr><tr><td>body</td><td>JOSN</td><td>是</td><td>消息体</td></tr></tbody></table>


# 消息状态

## 状态报告

### 消息状态事件

#### **whatsapp\_message\_status\_updated**

<table data-header-hidden><thead><tr><th width="142.5390625"></th><th width="111.2265625"></th><th width="103.0703125"></th><th></th></tr></thead><tbody><tr><td>字段</td><td>数据类型</td><td>是否必填</td><td>描述</td></tr><tr><td>id</td><td>String</td><td>是</td><td>Message Id</td></tr><tr><td>accountName</td><td>String</td><td>是</td><td>API账号</td></tr><tr><td>wabaId</td><td>String</td><td>是</td><td>Waba Id</td></tr><tr><td>status</td><td>String</td><td>是</td><td>发送状态：<code>delivered</code>、<code>read</code>、<code>failed</code>、<code>SMECL:FAILED</code></td></tr><tr><td>wamid</td><td>String</td><td>是</td><td>WhatsApp消息Id</td></tr><tr><td>sendPhone</td><td>String</td><td>是</td><td>WhatsAppp用户号码</td></tr><tr><td>uid</td><td>String</td><td>否</td><td>客户批次号，客户发送的批次号（uid）</td></tr><tr><td>conversation</td><td>JOSN</td><td>否</td><td>会话信息，status是delivered时有值</td></tr><tr><td>billable</td><td>Boolean</td><td>是</td><td>是否计费：true： 计费 ，false：不计费</td></tr><tr><td>category</td><td>String</td><td>是</td><td>消息类型：<br>authentication  验证码<br>utility 通知<br>marketing 营销<br>marketing_lite MMLite营销<br>service 服务消息<br><br></td></tr><tr><td>price</td><td>String</td><td>是</td><td>单价，保留5位小数。</td></tr><tr><td>currency</td><td>String</td><td>是</td><td>货币</td></tr></tbody></table>

#### conversation 对象

| 字段           | 数据类型   | 是否必填 | 描述                                                                                                             |
| ------------ | ------ | ---- | -------------------------------------------------------------------------------------------------------------- |
| initiateType | String | 是    | 会话发起类型 **business\_initiated**：商家发起会话**referral\_conversion**：免费入口发起会话，这类会话由用户发起**customer\_initiated**：用户发起会话 |
| expireAt     | String | 是    | 会话过期时间，eg: 2023-02-22 12:00:00                                                                                 |

#### errorData 对象

| 字段           | 数据类型   | 是否必填 | 描述       |
| ------------ | ------ | ---- | -------- |
| errorCode    | String | 是    | Meta错误码  |
| errorMessage | String | 是    | Meta错误描述 |

### **响应报文示例**

#### **delivered:响应示例**

```json
{
    "id": "e5cb1bc6-ad90-419d-8f83-aa394c0b7cc7",
    "type": "whatsapp_message_status_updated",
    "eventTime": "2023-02-22T12:00:00.000Z",
    "body": {
        "id": "356139161272397824",
        "accountName": "IW123456",
        "wabaId": "11231231212331",
        "wamid": "wamid.BgNODYxN...", 
        "status": "delivered",
        "uid":"2002302023002010121",
        "sendPhone":"65123101212312",
        "conversation": {
            "id": "00e5a7e14a588d96bd2343d105d03ec5",
            "initiateType": "business_initiated",
            "expireAt": "2023-02-23T12:00:00.000Z"
        },
        "currency": "USD"
    }
}
```

#### **read:响应示例**

```json
{
    "id": "cd0a316c-a781-4589-9f5f-5502ccf1f60f",
    "type": "whatsapp_message_status_updated",
    "eventTime": "2023-05-26T02:18:44.115Z",
    "body": {
        "accountName": "15902677617",
        "id": "356139161272397824",
        "status": "read",
        "uid":"2002302023002010121",
        "sendPhone":"65123101212312",
        "wabaId": "WHATSAPP_BUSINESS_ACCOUNT_ID",
        "wamid": "wamid.HBgNODYxNjY4NTE3NzYxMhUCABEYEjQ0RTYyQTM5QzAyMkU0QkNERgA="
    }
}
```

#### **failed:响应示例**

```json
{
    "id": "e5cb1bc6-ad90-419d-8f83-aa394c0b7cc7",
    "type": "whatsapp_message_status_updated",
    "eventTime": "2023-05-25T10:31:08.167Z",
    "body": {
        "accountName": "15902677617",
        "errorData": {
            "errorCode": "131014",
            "errorMessage": "Request for url https://URL.jpg failed with error: 404 (Not Found)"
        },
        "id": "356139161272397824",
        "status": "failed",
         "uid":"2002302023002010121",
        "sendPhone":"65123101212312",
        "wabaId": "WHATSAPP_BUSINESS_ACCOUNT_ID",
        "wamid": "wamid.HBgNODYxNjY4NTE3NzYxMhUCABEYEjQ0RTYyQTM5QzAyMkU0QkNERgA="
    }
}
```


# 上行消息

## 上行消息

### 响应参数

| 字段              | 数据类型   | 是否必填 | 描述                                                                                                                                                                                            |
| --------------- | ------ | ---- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| id              | String | 是    | 消息Id                                                                                                                                                                                          |
| accountName     | String | 是    | API账号名称                                                                                                                                                                                       |
| wabaId          | String | 是    | Waba Id                                                                                                                                                                                       |
| wamid           | String | 是    | Meta WhatApp消息Id                                                                                                                                                                              |
| from            | String | 是    | 用户手机号                                                                                                                                                                                         |
| to              | String | 是    | 商户手机号                                                                                                                                                                                         |
| sendTime        | String | 是    | 发送时间，格式：2023-02-22T12:00:00.000Z                                                                                                                                                              |
| customerProfile | JSON   | 是    | 用户信息                                                                                                                                                                                          |
| type            | String | 是    | 消息类型； text：文本消息 reaction：表情符号消息 image:图片消息 audio:音频消息 video:视频消息 sticker:贴纸消息 unknown：未知消息 location：位置消息 contacts：联系人消息 button：模板按钮回复消息 interactive：交互式消息/交互按钮回复消息 order：订单消息 system：用户更改号码通知 |
| text            | JSON   | 否    | type=text时有值                                                                                                                                                                                  |
| reaction        | JSON   | 否    | type=reaction时有值                                                                                                                                                                              |
| image           | JSON   | 否    | type=image时有值                                                                                                                                                                                 |
| audio           | JSON   | 否    | type=audio时有值                                                                                                                                                                                 |
| video           | JSON   | 否    | type=video时有值                                                                                                                                                                                 |
| errors          | JSON   | 否    | type=unknown时有值                                                                                                                                                                               |
| location        | JSON   | 否    | type=location时有值                                                                                                                                                                              |
| contacts        | JSON   | 否    | type=contacts时有值                                                                                                                                                                              |
| button          | JSON   | 否    | type=button时有值                                                                                                                                                                                |
| system          | JSON   | 否    | type=system时有值                                                                                                                                                                                |
| context         | JSON   | 否    | 上下文消息，引用消息回复时有值                                                                                                                                                                               |

### **text:回复示例**

| 字段        | 数据类型   | 是否必填 | 描述      |
| --------- | ------ | ---- | ------- |
| text.body | String | 是    | 表示回复的内容 |

```json
{
    "id": "b5e984b3-21b2-42a9-b08b-72e5a4096ac6",
    "type": "whatsapp_mo_message_received",
    "eventTime": "2023-02-22T12:00:00.000Z",
    "body": {
        "id": "63f5d602367ea403f8175a6c",
        "accountName": "IW123456",
        "wabaId": "WHATSAPP_BUSINESS_ACCOUNT_ID",
        "wamid": "wamid.BgNODYxN...",
        "from": "PHONE-NUMBER",
        "customerProfile": {
            "name": "Jack"
        },
        "to": "BUSINESS-PHONE-NUMBER",
        "sendTime": "2023-02-22T12:00:00.000Z",
        "type": "text",
        "text": {
            "body": "OK"
        }
    }
}
```

### **reaction:回复示例**

| 字段                 | 数据类型   | 是否必填 | 描述                   |
| ------------------ | ------ | ---- | -------------------- |
| reaction.messageId | String | 是    | 表示引用消息的wamid(原始消息id) |
| reaction.emoji     | String | 是    | 表示回复的表情符号            |
| sendTime           | String | 是    | 表示客户发送表情符号的时间        |

```json
{
    "id": "b5e984b3-21b2-42a9-b08b-72e5a4096ac6",
    "type": "whatsapp_mo_message_received",
    "eventTime": "2023-02-22T12:00:00.000Z",
    "body": {
        "id": "63f5d602367ea403f8175a6c",
        "accountName": "IW123456",
        "wabaId": "WHATSAPP_BUSINESS_ACCOUNT_ID",
        "wamid": "wamid.HBgNOD...",
        "from": "PHONE-NUMBER",
        "customerProfile": {
            "name": "Jack"
        },
        "to": "BUSINESS-PHONE-NUMBER",
        "sendTime": "2023-02-22T12:00:00.000Z",
        "type": "reaction",
        "reaction": {
            "messageId": "wamid.HBgNODY...",
            "emoji": "EMOJI"
        }
    }
}
```

| 字段             | 数据类型   | 是否必填 | 描述                |
| -------------- | ------ | ---- | ----------------- |
| image.caption  | String | 是    | 媒体描述或者标题          |
| image.mimeType | String | 是    | 媒体格式类型：image/jpeg |
| image.sha256   | String | 是    | 媒体资源文件Hash码       |
| image.link     | String | 是    | 媒体文件的下载链接         |

```json
{
    "id": "b5e984b3-21b2-42a9-b08b-72e5a4096ac6",
    "type": "whatsapp_mo_message_received",
    "eventTime": "2023-02-22T12:00:00.000Z",
    "body": {
        "id": "63f5d602367ea403f8175a6c",
        "accountName": "IW123456",
        "wabaId": "WHATSAPP_BUSINESS_ACCOUNT_ID",
        "wamid": "wamid.HBgNOD...",
        "from": "PHONE-NUMBER",
        "customerProfile": {
            "name": "Jack"
        },
        "to": "BUSINESS-PHONE-NUMBER",
        "sendTime": "2023-02-22T12:00:00.000Z",
        "type": "image",
        "image": {
            "caption": "CAPTION",
            "mimeType": "image/jpeg",
            "sha256": "IMAGE_HASH",
            "link": "http://xxxxxxxxxx"
        }
    }
}
```

### **sticker:回复示例**

| 字段               | 数据类型   | 是否必填 | 描述                |
| ---------------- | ------ | ---- | ----------------- |
| sticker.mimeType | String | 是    | 表情格式类型：image/webp |
| sticker.sha256   | String | 是    | 表情资源文件Hash码       |
| sticker.link     | String | 是    | 表情文件的下载链接         |

```json
{
    "id": "b5e984b3-21b2-42a9-b08b-72e5a4096ac6",
    "type": "whatsapp_mo_message_received",
    "eventTime": "2023-02-22T12:00:00.000Z",
    "body": {
        "id": "63f5d602367ea403f8175a6c",
        "accountName": "IW123456",
        "wabaId": "WHATSAPP_BUSINESS_ACCOUNT_ID",
        "wamid": "wamid.HBgNOD...",
        "from": "PHONE-NUMBER",
        "customerProfile": {
            "name": "Jack"
        },
        "to": "BUSINESS-PHONE-NUMBER",
        "sendTime": "2023-02-22T12:00:00.000Z",
        "type": "sticker",
        "sticker": {
            "mimeType": "image/webp",
            "sha256": "HASH",
            "link": "http://xxxxxxxxxx"
        }
    }
}
```

### **video:回复示例**

| 字段             | 数据类型   | 是否必填 | 描述               |
| -------------- | ------ | ---- | ---------------- |
| video.mimeType | String | 是    | 视频格式类型：video/mp4 |
| video.sha256   | String | 是    | 视频资源文件Hash码      |
| video.link     | String | 是    | 视频文件的下载链接        |

```json
{
    "id": "b5e984b3-21b2-42a9-b08b-72e5a4096ac6",
    "type": "whatsapp_mo_message_received",
    "eventTime": "2023-02-22T12:00:00.000Z",
    "body": {
        "id": "63f5d602367ea403f8175a6c",
        "accountName": "IW123456",
        "wabaId": "WHATSAPP_BUSINESS_ACCOUNT_ID",
        "wamid": "wamid.HBgNOD...",
        "from": "PHONE-NUMBER",
        "customerProfile": {
            "name": "Jack"
        },
        "to": "BUSINESS-PHONE-NUMBER",
        "sendTime": "2023-02-22T12:00:00.000Z",
        "type": "video",
        "video": {
            "mimeType": "video/mp4",
            "sha256": "G4fboj5cKcAbCdefzhcAcRdnXJqFJAyTSlNmJANhu4M=",
            "link": "http://xxxxxxxxxx"
        }
    }
}
```

### **Audio:回复示例**

| 字段             | 数据类型   | 是否必填 | 描述               |
| -------------- | ------ | ---- | ---------------- |
| audio.mimeType | String | 是    | 音频格式类型：video/mp4 |
| audio.sha256   | String | 是    | 音频资源文件Hash码      |
| audio.link     | String | 是    | 音频文件的下载链接        |

```json
{
    "id": "b5e984b3-21b2-42a9-b08b-72e5a4096ac6",
    "type": "whatsapp_mo_message_received",
    "eventTime": "2023-02-22T12:00:00.000Z",
    "body": {
        "id": "63f5d602367ea403f8175a6c",
        "accountName": "IW123456",
        "wabaId": "WHATSAPP_BUSINESS_ACCOUNT_ID",
        "wamid": "wamid.HBgNOD...",
        "from": "PHONE-NUMBER",
        "customerProfile": {
            "name": "Jack"
        },
        "to": "BUSINESS-PHONE-NUMBER",
        "sendTime": "2023-02-22T12:00:00.000Z",
        "type": "audio",
        "audio": {
            "mimeType": "audio/ogg; codecs=opus",
            "sha256": "ffRSAbcDeff3mJ2hBhpzuFY7pYEugTfglD+zx4Qv8X4=",
            "link": "http://xxxxxxxxxx"
        }
    }
}
```

### **Document:回复示例**

| 字段                | 数据类型   | 是否必填 | 描述               |
| ----------------- | ------ | ---- | ---------------- |
| document.mimeType | String | 是    | 文档格式类型：video/mp4 |
| document.sha256   | String | 是    | 文档资源文件Hash码      |
| document.link     | String | 是    | 文档文件的下载链接        |
| document.caption  | String | 是    | 文档描述或标题          |
| document.filename | String | 是    | 文档文件名称           |

```json
{
    "id": "b5e984b3-21b2-42a9-b08b-72e5a4096ac6",
    "type": "whatsapp_mo_message_received",
    "eventTime": "2023-02-22T12:00:00.000Z",
    "body": {
        "id": "63f5d602367ea403f8175a6c",
        "accountName": "IW123456",
        "wabaId": "WHATSAPP_BUSINESS_ACCOUNT_ID",
        "wamid": "wamid.HBgNOD...",
        "from": "PHONE-NUMBER",
        "customerProfile": {
            "name": "Jack"
        },
        "to": "BUSINESS-PHONE-NUMBER",
        "sendTime": "2023-02-22T12:00:00.000Z",
        "type": "document",
        "document": {
            "caption": "pdf caption",
            "filename": "filename.pdf",
            "mimeType": "application/pdf",
            "sha256": "TJGGMF5tdw3XApVHbABCdeffI7w4OW7GqYEN736PW0s=",
            "link": "http://xxxxxxxxxx"
        }
    }
}
```

### **Location:回复示例**

| 字段                 | 数据类型   | 是否必填 | 描述     |
| ------------------ | ------ | ---- | ------ |
| location.latitude  | String | 是    | 表示纬度   |
| location.longitude | String | 是    | 表示经度   |
| location.name      | String | 是    | 表示位置名称 |
| location.address   | String | 是    | 表示地址   |

```json
{
    "id": "b5e984b3-21b2-42a9-b08b-72e5a4096ac6",
    "type": "whatsapp_mo_message_received",
    "eventTime": "2023-02-22T12:00:00.000Z",
    "body": {
        "id": "63f5d602367ea403f8175a6c",
        "accountName": "IW123456",
        "wabaId": "WHATSAPP_BUSINESS_ACCOUNT_ID",
        "wamid": "wamid.HBgNOD...",
        "from": "PHONE-NUMBER",
        "customerProfile": {
            "name": "Jack"
        },
        "to": "BUSINESS-PHONE-NUMBER",
        "sendTime": "2023-02-22T12:00:00.000Z",
        "type": "location",
        "location": {
            "latitude": 39.90539,
            "longitude": 116.39134,
            "name": "LOCATION_NAME",
            "address": "LOCATION_ADDRESS",
        }
    }
}
```

### **Contacts:回复示例**

```json
{
    "body": {
        "accountName": "IW31****5",
        "contacts": [
            {
                "addresses": [
                    {
                        "city": "CONTACT_CITY1",
                        "country": "CONTACT_COUNTRY1",
                        "countryCode": "CONTACT_COUNTRY_CODE1",
                        "state": "CONTACT_STATE1",
                        "street": "CONTACT_STREET1",
                        "type": "HOME or WORK1",
                        "zip": "CONTACT_ZIP1"
                    }
                ],
                "birthday": "CONTACT_BIRTHDAY1",
                "emails": [
                    {
                        "email": "CONTACT_EMAIL1",
                        "type": "WORK or HOME1"
                    }
                ],
                "name": {
                    "firstName": "CONTACT_FIRST_NAME1",
                    "formattedName": "CONTACT_FORMATTED_NAME1",
                    "lastName": "CONTACT_LAST_NAME1",
                    "middleName": "CONTACT_MIDDLE_NAME1",
                    "prefix": "CONTACT_PREFIX1",
                    "suffix": "CONTACT_SUFFIX1"
                },
                "org": {
                    "company": "CONTACT_ORG_COMPANY1",
                    "department": "CONTACT_ORG_DEPARTMENT1",
                    "title": "CONTACT_ORG_TITLE1"
                },
                "phones": [
                    {
                        "phone": "CONTACT_PHONE1",
                        "type": "HOME or WORK>1",
                        "wa_id": "CONTACT_WA_ID1"
                    }
                ],
                "urls": [
                    {
                        "type": "HOME or WORK1",
                        "url": "CONTACT_URL1"
                    }
                ]
            }
        ],
        "customerProfile": {
            "name": "Jack"
        },
        "from": "86183****2197",
        "id": "a1301cb6d0094b2fae36546c22e09044",
        "sendTime": "2024-03-07T10:46:24.000Z",
        "to": "62811****6819",
        "type": "contacts",
        "wabaId": "1**********9",
        "wamid": "wamid.HBgNODYxODM1NTA5MjE5NxUCABIYIDg3RDVFMzQyRjIwQkM5NDQyMDI5OTRERERGNUYx*****=="
    },
    "eventTime": "2024-03-08T09:42:06.363Z",
    "id": "e2bafad5-0aa9-4465-9ed1-c5c01741c5e1",
    "type": "whatsapp_mo_message_received"
}
```

### **Button:回复示例**

客户点击互动消息模板中的快速回复按钮时，系统会发送响应。以下是回调格式示例。

| 字段           | 数据类型   | 是否必填 | 描述                                  |
| ------------ | ------ | ---- | ----------------------------------- |
| context.from | String | 是    | 是发送交互式消息的 WhatsApp ID（不带“+”前缀的电话号码） |
| context.id   | String | 是    | 是WhatsApp平台上的原始消息ID。                |

```json
{
    "id": "b5e984b3-21b2-42a9-b08b-72e5a4096ac6",
    "type": "whatsapp_mo_message_received",
    "eventTime": "2023-02-22T12:00:00.000Z",
    "body": {
        "id": "63f5d602367ea403f8175a6c",
        "accountName": "IW123456",
        "wabaId": "WHATSAPP_BUSINESS_ACCOUNT_ID",
        "wamid": "wamid.HBgNOD...",
        "from": "PHONE-NUMBER",
        "customerProfile": {
            "name": "Jack"
        },
        "to": "BUSINESS-PHONE-NUMBER",
        "sendTime": "2023-02-22T12:00:00.000Z",
        "type": "button",
        "button": {
            "text": "No",
            "payload": "No-Button-Payload"
        },
        "context": {
            "from": "PHONE_NUMBER",
            "id": "wamid.ID"
        }
    }
}
```

### **Unknown:回复示例**

&#x20; 您可能会收到未知的消息回调通知。例如，客户可能会给您发送不受支持的消息，如限时消息（在这种情况下，我们会通知客户消息类型不受支持）。

| 字段             | 数据类型   | 是否必填 | 描述     |
| -------------- | ------ | ---- | ------ |
| errors.code    | String | 是    | 表示错误码  |
| errors.details | String | 是    | 表示错误详情 |
| errors.title   | String | 是    | 表示错误名称 |

```json
{
    "id": "b5e984b3-21b2-42a9-b08b-72e5a4096ac6",
    "type": "whatsapp_mo_message_received",
    "eventTime": "2023-02-22T12:00:00.000Z",
    "body": {
        "id": "63f5d602367ea403f8175a6c",
        "accountName": "IW123456",
        "wabaId": "WHATSAPP_BUSINESS_ACCOUNT_ID",
        "wamid": "wamid.HBgNOD...",
        "from": "PHONE-NUMBER",
        "customerProfile": {
            "name": "Jack"
        },
        "to": "BUSINESS-PHONE-NUMBER",
        "sendTime": "2023-02-22T12:00:00.000Z",
        "type": "unknown",
        "errors": [
            {
                "code": 131051,
                "details": "Message type is not currently supported",
                "title": "Unsupported message type"
            }
        ]
    }
}
```

### **Interactive:回复示例**

当用户点击**您发送的清单消息中的某一项**时，您会收到以下 Webhooks 通知：

| 字段           | 数据类型   | 是否必填 | 描述                                  |
| ------------ | ------ | ---- | ----------------------------------- |
| context.from | String | 是    | 是发送交互式消息的 WhatsApp ID（不带“+”前缀的电话号码） |
| context.id   | String | 是    | 是WhatsApp平台上的原始消息ID。                |

```json
{
    "id": "b5e984b3-21b2-42a9-b08b-72e5a4096ac6",
    "type": "whatsapp_mo_message_received",
    "eventTime": "2023-02-22T12:00:00.000Z",
    "body": {
        "id": "63f5d602367ea403f8175a6c",
        "accountName": "IW123456",
        "wabaId": "WHATSAPP_BUSINESS_ACCOUNT_ID",
        "wamid": "wamid.HBgNOD...",
        "from": "PHONE-NUMBER",
        "customerProfile": {
            "name": "Jack"
        },
        "to": "BUSINESS-PHONE-NUMBER",
        "sendTime": "2023-02-22T12:00:00.000Z",
        "type": "interactive",
        "interactive": {
            "listReply": {
                "id": "list_reply_id",
                "title": "list_reply_title",
                "description": "list_reply_description"
            },
            "type": "listReply"
        },
        "context": {
            "from": "PHONE_NUMBER",
            "id": "wamid.ID"
        }
    }
}
```

当用户点击您发送的**回复按钮**时，您会收到以下 Webhooks 通知：

```json
{
    "id": "b5e984b3-21b2-42a9-b08b-72e5a4096ac6",
    "type": "whatsapp_mo_message_received",
    "eventTime": "2023-02-22T12:00:00.000Z",
    "body": {
        "id": "63f5d602367ea403f8175a6c",
        "accountName": "IW123456",
        "wabaId": "WHATSAPP_BUSINESS_ACCOUNT_ID",
        "wamid": "wamid.HBgNOD...",
        "from": "PHONE-NUMBER",
        "customerProfile": {
            "name": "Jack"
        },
        "to": "BUSINESS-PHONE-NUMBER",
        "sendTime": "2023-02-22T12:00:00.000Z",
        "type": "interactive",
        "interactive": {
            "buttonReply": {
                "id": "unique-button-identifier-here",
                "title": "button-text"
            },
            "type": "buttonReply"
        },
         "context": {
            "from": "PHONE_NUMBER",
            "id": "wamid.ID"
        }
    }
}
```


# 模版状态

### 模板审核状态 whatsapp\_template\_status\_updated

当提交的模板状态发生变动时触发该事件：whatsapp\_template\_status\_updated

| 字段               | 数据类型   | 是否必填 | 描述                                                                               |
| ---------------- | ------ | ---- | -------------------------------------------------------------------------------- |
| accountName      | String | 是    | API账号                                                                            |
| category         | String | 是    | 模板类型:**MARKETING**:营销**AUTHENTICATION**:验证码**UTILITY**:通知                        |
| reason           | String | 是    | 理由                                                                               |
| templateId       | String | 是    | meta平台模板id(对应sid)                                                                |
| templateLanguage | String | 是    | 模板语言                                                                             |
| templateName     | String | 是    | 模板名称                                                                             |
| templateStatus   | String | 是    | 模板状态：**PENDING**:审核中**APPROVED**:审核通过**REJECTED**:驳回**PAUSED**:暂停**DISABLED**:禁用 |
| wabaId           | String | 是    | <p><br></p>                                                                      |

```json
{
    "id": "fd201190-50dc-4151-baec-1d16c8a704e1",
    "type": "whatsapp_template_status_update",
    "eventTime": "2023-10-16T13:04:57.644Z",
    "body": {
        "accountName": "IW2267527",
        "category": "AUTHENTICATION",
        "reason": "NONE",
        "templateId": "998961841525295",
        "templateLanguage": "en_US",
        "templateName": "transland_common_otp",
        "templateStatus": "APPROVED",
        "wabaId": "110129512080569"
    }
}
```

### 模板质量更新 message\_template\_quality\_update

当提交的模板质量发生变动时触发该事件：message\_template\_quality\_update

| 字段                              | 数据类型   | 是否必填 | 描述                                                                                |
| ------------------------------- | ------ | ---- | --------------------------------------------------------------------------------- |
| templateId                      | String | 是    | meta平台模板id(对应sid)                                                                 |
| templateLanguage                | String | 是    | 模板语言                                                                              |
| templateName                    | String | 是    | 模板名称                                                                              |
| <p>previousQualityScore<br></p> | String | 是    | 值可以是：**GREEN**：  表示高质量。**RED**：  表示质量低下。**YELLOW**：  表示中等质量。**UNKNOWN**：   表示质量待定 |
| newQualityScore                 | String | 是    | 值可以是：**GREEN**：  表示高质量。**RED**：  表示质量低下。**YELLOW**：  表示中等质量。**UNKNOWN**：   表示质量待定 |
| wabaId                          | String | 是    | <p><br></p>                                                                       |

<pre class="language-json"><code class="lang-json">{
    "id": "fd201190-50dc-4151-baec-1d16c8a704e1",
    "type": "message_template_quality_update",
    "eventTime": "2023-10-16T13:04:57.644Z",
    "body": {
         "templateName":"TestName",
        "templateId": "998961841525295",
        "templateLanguage": "en_US",
<strong>        "previousQualityScore": "GREEN",
</strong><strong>        "newQualityScore": "YELLOW",
</strong>        "wabaId": "110129512080569"
    }
}
</code></pre>

### 模板类别更新 template\_category\_update

当提交的模板类别发生变动时触发该事件：template\_category\_update

| 字段                  | 数据类型   | 是否必填 | 描述                                                                       |
| ------------------- | ------ | ---- | ------------------------------------------------------------------------ |
| templateId          | String | 是    | meta平台模板id(对应sid)                                                        |
| templateLanguage    | String | 是    | 模板语言                                                                     |
| templateName        | String | 是    | 模板名称                                                                     |
| <p>category<br></p> | String | 是    | 可选值：  **AUTHENTICATION**:  验证码  **MARKETING**：    营销  **UTILITY**：    通知 |
| newCategory         | String | 是    | 可选值：  **AUTHENTICATION**:  验证码  **MARKETING**：    营销  **UTILITY**：    通知 |
| wabaId              | String | 是    | WaBaId                                                                   |

<pre class="language-json"><code class="lang-json">{
    "id": "fd201190-50dc-4151-baec-1d16c8a704e1",
    "type": "template_category_update",
    "eventTime": "2023-10-16T13:04:57.644Z",
    "body": {
        "templateName":"TestName",
        "templateId": "998961841525295",
        "templateLanguage": "en_US",
<strong>        "category": "AUTHENTICATION",
</strong><strong>        "newCategory": "UTILITY",
</strong>        "wabaId": "110129512080569"
    }
}
</code></pre>

\
\ <br>


# Inbox聊天消息事件

聊天室上下行消息仅针对在聊天室 的消息事件监听

## Inbox聊天消息事件

有以下两个推送事件，如有需要订阅：

**chat\_mt\_message\_notify（聊天室下行消息接收）**&#x20;

**chat\_mo\_message\_notify（聊天室上行消息接收）**

### 参数说明

<table data-header-hidden><thead><tr><th width="166.34375"></th><th width="141.6328125"></th><th width="137.5"></th><th></th></tr></thead><tbody><tr><td>字段</td><td>数据类型</td><td>是否必填</td><td>描述</td></tr><tr><td>wabaId</td><td>String</td><td>是</td><td>Waba Id</td></tr><tr><td>from</td><td>String</td><td>是</td><td>企业Sender</td></tr><tr><td>to</td><td>String</td><td>是</td><td>用户WhatsApp 号码</td></tr><tr><td>messageType</td><td>String</td><td>是</td><td>消息类型</td></tr><tr><td>context</td><td>Object</td><td>是</td><td>消息内容</td></tr><tr><td>wamid</td><td>String</td><td>否</td><td>Mete消息ID</td></tr><tr><td>conversationId</td><td>String</td><td>否</td><td>会话ID（InnoPaaS聊天室会话ID）</td></tr><tr><td>uid</td><td>String</td><td>否</td><td>用户自定义Id</td></tr><tr><td>sendTime</td><td>String</td><td>是</td><td>发送时间，UTC，如：2026-07-09T09:11:23.405Z</td></tr><tr><td>sendTimestamp</td><td>String</td><td>是</td><td>发送时间戳，精确到毫秒，如：1783588283405</td></tr></tbody></table>

### **chat\_mt\_message\_notify**&#x20;

**下行消息示例**

<pre class="language-json"><code class="lang-json">{
    "id": "b5e984b3-21b2-42a9-b08b-72e5a4096ac6",
<strong>    "type": "chat_mt_message_notify",
</strong>    "eventTime": "2023-02-22T12:00:00.000Z",
    "body": {
        "wabaId": "WHATSAPP_BUSINESS_ACCOUNT_ID",
        "from": "wamid.BgNODYxN...",
        "to": "PHONE-NUMBER",
         "messageType": "text",
         "context": {
             "text":"this is test message"
           },
        "wamid": "wamid.BgNODYxN...",
        "conversationId": "12312312312312",
        "uid":"123123123123123213123",
        "sendTime":"2026-07-09T09:11:23.405Z",
        "sendTimestamp":"1783588283405"
    }
}
</code></pre>

### **chat\_mo\_message\_notify**&#x20;

**上行消息示例**

<pre class="language-json"><code class="lang-json">{
    "id": "b5e984b3-21b2-42a9-b08b-72e5a4096ac6",
<strong>    "type": "chat_mo_message_notify",
</strong>    "eventTime": "2023-02-22T12:00:00.000Z",
    "body": {
        "wabaId": "WHATSAPP_BUSINESS_ACCOUNT_ID",
        "from": "wamid.BgNODYxN...",
        "to": "PHONE-NUMBER",
         "messageType": "text",
         "context": {
             "text":"this is test message"
           },
        "wamid": "wamid.BgNODYxN...",
        "conversationId": "12312312312312",
        "uid":"123123123123123213123",
        "sendTime":"2026-07-09T09:11:23.405Z",
        "sendTimestamp":"1783588283405"
    }
}
</code></pre>


# 号码(sender)回调

## 号码质量更新

当提交的sender质量状态发生变动时触发该事件：whatsapp\_phone\_number\_quality\_update

| 字段                 | 数据类型   | 是否必填 | 描述                                                                                                                                                                                                                                                                   |
| ------------------ | ------ | ---- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| wabaId             | String | 是    | WabaId                                                                                                                                                                                                                                                               |
| displayPhoneNumber | String | 是    | sender 号码                                                                                                                                                                                                                                                            |
| <p>event<br></p>   | String | 是    | 消息传送限制改变或吞吐量改变事件**DOWNGRADE**:  表示该企业电话号码的消息限制已减少。**FLAGGED**:  表示如果该企业电话号码继续收到负面反馈，其消息传递质量将会下降。**ONBOARDING**:  表示该企业电话号码仍在注册中。**THROUGHPUT\_UPGRADE**:  表示该企业电话号码的吞吐量水平已提高到更高的吞吐量。**UNFLAGGED**:  表示如果该企业电话号码继续收到正面反馈，则有资格获得短信限制的增加。**UPGRADE**:  表示企业电话号码消息限制已增加。 |
| messageLimit       | String | 是    | 可选值：  **无限制**：即下发无发送条数限制  **0**: 表示该企业电话号码尚未用于发送消息。  **50**：表示消息限制为 50  **250**：表示消息限制为 250  **1000**：表示消息限制为 1,000  **10000**：表示消息限制为 10,000  **100000**：表示消息限制为 100,000                                                                                            |

<pre class="language-json"><code class="lang-json">{
    "id": "fd201190-50dc-4151-baec-1d16c8a704e1",
    "type": "whatsapp_phone_number_quality_update",
    "eventTime": "2023-10-16T13:04:57.644Z",
    "body": {
<strong>        "messageLimit": "100000",
</strong><strong>        "event": "UPGRADE",
</strong>        "displayPhoneNumber": "1086***36726376",
        "wabaId": "1101295***80569"
    }
}

</code></pre>

## 号码名称更新

当修改提交sender名称发生变动时触发该事件：whatsapp\_phone\_number\_name\_update

| 字段                    | 数据类型   | 是否必填 | 描述                                                                                                                                                                                                                                                                                                                                                            |
| --------------------- | ------ | ---- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| wabaId                | String | 是    | WabaId                                                                                                                                                                                                                                                                                                                                                        |
| displayPhoneNumber    | String | 是    | sender 号码                                                                                                                                                                                                                                                                                                                                                     |
| decision              | String | 是    | 表示企业电话号码显示名称验证过程的结果。**APPROVED**： 表示显示名称已获批准，现在将显示在 WhatsApp 客户端中企业电话号码个人资料的顶部。**DEFERRED**： 表示决定已被推迟。**PENDING**： 表示该决定仍有待进一步审查。**REJECTED**： 表示显示名称已被拒绝。您可以使用WhatsApp 管理器编辑该名称。编辑前，请查看我们的显示名称指南。                                                                                                                                                            |
| requestedVerifiedName | String | 是    | 创建号码时收集的企业电话号码显示名称，或编辑已批准的显示名称时提交的名称                                                                                                                                                                                                                                                                                                                          |
| rejectionReason       | String | 是    | 如果公司电话号码显示名称被拒绝，请说明原因。请查看我们的显示名称指南，了解常见的拒绝原因。可选值：**NAME\_EMPLOYEE\_ISSUE**： 由于显示名称倾向于个人姓名或员工标识符而被拒绝。**NAME\_ENDCLIENT\_NOTRELATED**: 被拒绝，因为显示名称倾向于不相关的企业名称。**NAME\_FORMAT\_UNACCEPTABLE**:由于显示名称使用了不可接受的格式而被拒绝。**NAME\_INDIVIDUAL\_ISSUE**: 被拒绝，因为显示名称倾向于个人姓名或员工标识符。— NAME\_NOT\_CONSISTENT被拒绝，因为显示名称与企业的品牌不一致。**null**: 表示名称已被接受。**UNKNOWN**: 因未知原因被拒绝。请联系客服 |

{"id": "fd201190-50dc-4151-baec-1d16c8a704e1","type": "whatsapp\_phone\_number\_name\_update","eventTime": "2023-10-16T13:04:57.644Z","body": {"decision": "REJECTED","requestedVerifiedName": "zhangsan","rejectionReason": "NAME\_EMPLOYEE\_ISSUE","displayPhoneNumber": "108672\*\*\*726376","wabaId": "110129\*\*\*\*080569"}}


# waba账号回调

当waba account发生变动时触发该事件：whatsapp\_account\_updated

| 字段     | 数据类型   | 是否必填 | 描述     |
| ------ | ------ | ---- | ------ |
| wabaId | String | 是    | WabaId |
| value  | String | 是    | value  |

**ACCOUNT\_VIOLATION \[账户违规]  违规行为见附录**

```json
{
    "body": {
        "value": {
            "event": "ACCOUNT_VIOLATION",
            "violation_info": {
                "violation_type": "SCAM"
            }
        },
        "wabaId": "268498****5345"
    },
    "eventTime": "2026-07-06T08:08:40.454Z",
    "id": "fca0d830-423c-45ff-a727-49ca5e83d8a0",
    "type": "whatsapp_account_updated"
}
```

**ACCOUNT\_DELETED \[账户已删除]**

```json
{
    "body": {
        "value": {
            "event": "ACCOUNT_DELETED"
        },
        "wabaId": "268498****5345"
    },
    "eventTime": "2026-07-06T08:27:48.786Z",
    "id": "cc6b59e7-725f-4fd9-a1ef-0e3ebfd3c2e8",
    "type": "whatsapp_account_updated"
}
```

**DISABLED\_UPDATE\[停用更新]**

```json
{
    "body": {
        "value": {
            "ban_info": {
                "waba_ban_date": "April 17, 2025",//表示 WABA 被封号的时间
                "waba_ban_state": "REINSTATE"//WABA 封号状态[DISABLE — 表示 WABA 已停用。REINSTATE — 表示 WABA 已恢复。SCHEDULE_FOR_DISABLE — 表示 WABA 已被安排停用]
            },
            "event": "DISABLED_UPDATE"
        },
        "wabaId": "268498****5345"
    },
    "eventTime": "2026-07-06T08:49:31.625Z",
    "id": "8c37fe08-25de-41c9-8516-825db4f2c352",
    "type": "whatsapp_account_updated"
}
```

**ACCOUNT\_RESTRICTION\[账户限制]**

```json
{
    "body": {
        "value": {
            "event": "ACCOUNT_RESTRICTION",
            "restriction_info": [
                {
                    "restriction_type": "RESTRICTED_ADD_PHONE_NUMBER_ACTION",
                    "expiration": "2026-06-20T02:41:53+0000"
                },
                {
                    "restriction_type": "RESTRICTED_BIZ_INITIATED_MESSAGING",
                    "expiration": "2026-06-20T02:41:53+0000"
                },
                {
                    "restriction_type": "RESTRICTED_CUSTOMER_INITIATED_MESSAGING",
                    "expiration": "2026-06-20T02:41:53+0000"
                }
            ]
        },
        "wabaId": "268498****5345"
    },
    "eventTime": "2026-07-07T08:43:47.442Z",
    "id": "6773e97c-7025-4e6f-bad4-087f12732871",
    "type": "whatsapp_account_updated"
}
```

**AUTH\_INTL\_PRICE\_ELIGIBILITY\_UPDATE\[国际身份验证资格]**

```json
{
    "body": {
        "value": {
            "auth_international_rate_eligibility": {
                "exception_countries": [
                    {
                        "country_code": "ID",
                        "start_time": 1751347424
                    }
                ],
                "start_time": 1748780624
            },
            "event": "AUTH_INTL_PRICE_ELIGIBILITY_UPDATE"
        },
        "wabaId": "268498****5345"
    },
    "eventTime": "2026-07-07T09:32:05.342Z",
    "id": "5c254119-2777-4c62-a0ef-1ddd0bd58078",
    "type": "whatsapp_account_updated"
}
```

附录：

**ACCOUNT\_VIOLATION \[账户违规]    违规行为\[violation\_type]**

| 违规行为                             | 说明（如果有示例，请点击左边栏中的箭头符号）                                                                                                                                                                                                                                         |
| -------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `ADULT`                          | <p>商家不得从事与成人用品或服务的销售或使用有关的交易活动。示例：</p><ul><li>计生和避孕用品广告必须重在宣传产品的避孕功能，不得侧重宣传性快感或增强性功能方面的信息</li><li>情趣玩具</li><li>成人娱乐视频或直播节目</li><li>性功能增强产品</li><li>性暗示服务</li></ul>                                                                                             |
| `ALCOHOL`                        | <p>商家不得从事与酒类销售有关的交易活动。示例：</p><ul><li>关于酒类的书籍或 DVD</li><li>酒类相关商品，包括玻璃杯、冷却器和酒瓶架</li><li>酒精饮料</li><li>酿酒设备</li></ul>                                                                                                                                             |
| `ANIMALS`                        | <p>商家不得从事与任何动物的销售有关的交易活动。示例：</p><ul><li>动物笼</li><li>动物用品（玩具和项圈等）</li><li>兽医服务</li><li>美容服务和寄养服务</li><li>宠物领养服务</li><li>活体动物</li><li>家畜</li><li>法律禁止的动物身体部位，包括但不限于骨骼、牙齿、犄角、象牙、动物标本、器官、外肢、分泌物或尸体</li><li>任何产品或部位，包括但不限于来自任何猫、狗、濒危或受威胁动物的羽毛、表皮、皮革、皮毛或毛发</li></ul> |
| `BODY_PARTS_FLUIDS`              | <p>商家不得从事与人体器官或体液的销售有关的交易活动。示例：</p><ul><li>献血中心</li><li>血液</li><li>假发和发套</li><li>尿液</li><li>身体部位</li><li>器官</li><li>人体组织</li><li>牙齿</li></ul>                                                                                                                  |
| `DATING`                         | 商家不得从事与在线相亲交友服务有关的交易活动或促成这类活动。                                                                                                                                                                                                                                 |
| `DIGITAL_SERVICES_PRODUCTS`      | <p>商家不得从事与以下内容的销售有关的交易活动：任何数字内容、数字订阅服务或数字账户的订阅、续订或升级等，包括处理或链接至此类内容或服务。示例：</p><ul><li>正版音频或视频 CD、DVD 和蓝光数字设备，包括智能手机、电子游戏机和电视</li><li>可下载内容，包括 PDF、音乐、游戏和电影等</li><li>数字账户，包括游戏账户</li><li>数字订阅和互联网流媒体服务，包括电视、移动设备等。</li><li>电子优惠券</li></ul>                       |
| `DRUGS`                          | <p>商家不得从事与违禁药、处方药或娱乐性药物的销售有关的交易活动，非直营的制造商和医疗服务机构除外。示例：</p><ul><li>管制药物，包括大麻和大麻制品</li><li>吸毒工具，包括吸毒管和水烟枪等</li><li>处方药</li></ul>                                                                                                                                 |
| `GAMBLING`                       | 商家不得从事与博彩、技巧类游戏或彩票有关的交易活动或为此提供支持，包括涉及金钱的在线赌场、体育博彩平台、宾果游戏或扑克牌游戏。                                                                                                                                                                                                |
| `HEALTHCARE`                     | <p>商家不得从事与特定医疗保健用品有关的交易活动，包括医疗设备、含尼古丁的戒烟产品，非直营的制造商和医疗服务机构除外。示例：</p><ul><li>医疗设备</li><li>时尚配饰和健身配件</li><li>隐形眼镜、治疗人身伤害的绷带和支架</li><li>温度计</li><li>检测医学病症或疾病的试剂盒</li><li>吸奶器</li><li>急救箱</li><li><p>戒烟产品</p><ul><li>尼古丁贴片、尼古丁口香糖</li></ul></li></ul>              |
| `ILLEGAL_PRODUCTS`               | 商家不得从事与非法商品或服务的运营或互换有关的交易活动。                                                                                                                                                                                                                                   |
| `MISLEADING`                     | <p>WhatsApp 禁止我们认为可能具有欺诈性、误导性、冒犯性或欺骗性，或可能具有剥削性、不恰当性或对目标群体施加不当压力的商业模式、商品、物品或服务。示例：</p><ul><li>多级分销</li><li>一分钱拍卖</li><li>首次代币发售 (ICO) 和二元期权</li><li>发薪日贷款、支票垫付服务、P2P 借贷、债务催收服务和保释金</li><li>暗示或试图让人产生消极自我认知的节食减肥产品或其他保健产品</li></ul>                              |
| `OVERTLY_SEXUALIZED_POSITIONING` | <p>商家不得以性暗示方式展示商品或服务。示例：</p><ul><li>暗示裸露内容</li><li>暗示性行为</li><li>放大的色情图片</li></ul>                                                                                                                                                                             |
| `REAL_FAKE_CURRENCY`             | <p>商家不得从事与真实、虚拟或虚假货币的销售有关的交易活动。示例：</p><ul><li>真钱（现金钱币或现金等价物）</li><li>仿制货币或道具钱币</li><li>数字货币或加密货币</li><li>已激活的银行信用卡或借记卡</li><li>商店信用卡或优惠券</li><li>预付信用卡或借记卡</li><li>支票或支票簿</li><li>用于伪造货币或金融票据的设备</li></ul>                                                     |
| `SCAM`                           | 商家不得从事与宣扬诈骗有关的任何交易活动或促成这类活动。                                                                                                                                                                                                                                   |
| `SUPPLEMENTS`                    | <p>商家不得从事与不安全可食用补充剂的销售有关的交易活动，具体由 WhatsApp 自行酌情判定。示例：</p><ul><li>合成类固醇</li><li>壳聚糖</li><li>紫草</li><li>脱氢表雄酮</li><li>麻黄</li><li>人体生长激素</li></ul>                                                                                                                |
| `THIRD_PARTY_INFRINGEMENTS`      | <p>交易不得包含侵害或侵犯任何第三方知识产权（包括版权或商标）的内容。这包括但不限于销售假冒品，例如复制其他公司产品商标（名称或徽标）和/或显著特征以仿冒正品的商品。示例：</p><ul><li>伪造、仿制或复制品牌产品，或者发布的帖子中所含的产品可能让消费者混淆产地、赞助关系或归属等。</li><li>未经授权或盗版的版权作品，例如视频、电影、电视节目、广播节目、电子游戏、书籍、CD 或其他音乐作品等。</li></ul>                                        |
| `TOBACCO`                        | <p>商家不得从事与烟草制品或相关用具的销售有关的交易活动。示例：</p><ul><li>含有烟草品牌标志的服装</li><li>烟草、雪茄和嚼烟</li><li>烟斗和卷烟用具、卷烟机</li><li>水烟袋</li><li>水烟枪</li><li>卷烟纸</li><li>电子烟或吸烟设备</li></ul>                                                                                                   |
| `UNAUTHORIZED_MEDIA`             | <p>商家不得从事与促进或鼓励以下行为的设备销售有关的交易活动：流式传输未授权的数字内容；干扰其他电子设备发挥其功能。示例：</p><ul><li>直播设备的附加设备，例如键盘和遥控器</li><li>销售装有便于未经授权访问内容的软件的直播设备</li><li>已越狱或加载过内容的设备</li><li>干扰或解扰设备</li><li>窃听设备</li></ul>                                                                        |
| `WEAPONS`                        | <p>商家不得从事与武器、弹药或爆炸物的销售或使用有关的交易活动。示例：</p><ul><li>针对合法武器推广安全培训或许可证</li><li>枪支和枪支部件</li><li>彩弹枪</li><li>BB 枪</li><li>烟花</li><li>胡椒喷雾</li><li>电击枪</li><li>射击场</li><li>枪展</li></ul>                                                                                 |


# 错误代码

一般来说，我们建议您围绕 `code` 值和 `details` Payload 属性构建应用的错误处理逻辑。这些属性及其值更能反映出基本错误。作为 `message` 值的一部分，代码名称在 API 错误响应 Payload 中没有专用属性。但是，我们建议您不要采用代码名称来构建错误处理逻辑，因为代码名称最终会停用。


# 自定义错误代码

## 接口错误码

| **状态码** | **状态描述**          | **英文描述**                                                                      |
| ------- | ----------------- | ----------------------------------------------------------------------------- |
| **0**   | **提交成功**          | **Submitted success**                                                         |
| 101     | 账号不存在             | Account does not exist                                                        |
| 118     | 发送号码不存在           | send phone number does not exist                                              |
| 102     | 密码错误              | Password wrong                                                                |
| 103     | 拉取条数格式错误          | Incorrect number of pulls                                                     |
| 104     | 拉取条数不在范围内         | Pull number is not in the range                                               |
| 105     | 批次编号大于128位        | uid length exceeds 128 character limit                                        |
| 106     | 短信内容长度超过3000字符限制  | Text message length exceeds 3000 character limit                              |
| 108     | 手机号码格式错误          | Wrong format of phone number                                                  |
| 109     | 手机号码个数错误          | Wrong phone number                                                            |
| 110     | 余额不足              | Account balance is insufficient                                               |
| 112     | 产品配置错误            | Product configuration error                                                   |
| 114     | 客户端IP错误           | Client IP error                                                               |
| 115     | 没有开通国内短信权限        | No domestic SMS permission                                                    |
| 116     | 账号已删除或禁用          | Account deleted or disabled                                                   |
| 117     | 接入号长度超过20位        | senderId length exceeds 20 character limit                                    |
| 123     | 短信内容不能为空          | SMS content cannot be empty                                                   |
| 124     | 简介或验证码不能为空        | Introduction or verification code cannot be empty                             |
| 125     | 特定客户手机号码同一天不能超过十次 | Specific customer mobile phone number cannot exceed ten times on the same day |
| 126     | 定时短信发送时间不能为空      | Timing SMS sending time cannot be empty                                       |
| 127     | 定时短信发送时间错误        | Timed SMS sending time error                                                  |
| 128     | 账号长度超过50位         | Account length exceeds 50 digits                                              |
| 129     | 产品价格配置错误          | Product price configuration error                                             |
| 130     | 未知异常              | Unknown anomaly                                                               |
| 131     | 超过日发送上限           | Exceeded daily sending limit                                                  |
| 132     | 超过月发送上限           | Exceeded monthly sending limit                                                |
| 133     | 超过发送上限            | Exceeded sending limit                                                        |
| 134     | 超过反投诉限制           | Exceeded counter-complaint limit                                              |
| 135     | 短信内容不匹配           | messages don't match                                                          |
| 136     | 短信计费失败            | message charge error                                                          |
| 137     | 账户余额不足            | Insufficient account balance                                                  |
| 138     | 黑名单发送限制           | blacklist send limit                                                          |
| 139     | whatsApp模板ID匹配错误  | whatsApp templateId match error                                               |
| 140     | 超过日发送金额上限         | Exceeded daily money limit                                                    |
| 141     | 号码是空号             | Phone number is vacant                                                        |
| 142     | 新用户需要配置ip白名单      | Client IP is required                                                         |
| 143     | 流量控制错误            | Traffic control error                                                         |
| 201     | 发送号码不合法           | Send number is invalid                                                        |
| 202     | 没有可用Sender        | No sender available                                                           |
| 203     | 没有发送价格            | Price not found                                                               |
| 204     | WhatsApp模板不存在     | WhatsApp template not found                                                   |
| 205     | WhatsApp模板类型错误    | WhatsApp category error                                                       |
| 206     | 请配置WhatsApp发送通道   | WhatsApp gateway not found                                                    |
| 207     | WhatsApp通道属性不匹配   | WhatsApp gateway attribute mismatch                                           |
| 208     | WABA账号未绑定         | WABA account unknown                                                          |
| 100000  | Token失败           | Token Failed                                                                  |
| 100001  | Tonkn校验失败         | Invalid Token                                                                 |
| 100002  | Token缺失           | Token Missing                                                                 |
| 100003  | 未登录               | Not Login                                                                     |
| 100004  | 用户名或密码错误          | Username or Password Error                                                    |
| 100005  | Ticket缺失          | Ticket Missing                                                                |
| 100006  | Ticket校验失败        | Ticket Invalid                                                                |
| 100007  | 注销失败              | Logout Failed                                                                 |
| 100008  | IP校验失败            | IP Error                                                                      |
| 100009  | 签名校验失败            | Sign Error Or Invalid                                                         |
| 101000  | AES加密或解密失败        | AES Encrypt or Decrypt Failed                                                 |
| 200001  | 数据不存在             | Data Not Existed                                                              |
| 200002  | 数据已存在             | Data Existed                                                                  |
| 200003  | 参数错误              | Param Error                                                                   |
| 200004  | 文件处理失败            | File Processing Failure                                                       |
| 300001  | 会员校验失败            | membership check failed                                                       |
| 500     | 服务器内部错误           | Server Internal Error                                                         |


# Meta错误代码

## 节流错误

| 代码                                                    | 详情                                                     | 可能的原因和解决方案                                                                                                                                                                                                                                                      | HTTP 状态代码 |
| ----------------------------------------------------- | ------------------------------------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------- |
| <p><code>4</code></p><p>API 调用过多</p>                  | 此应用已达到 API 调用流量限制。                                     | 在[应用面板](https://developers.facebook.com/apps)中加载此应用，然后查看**应用流量限制**部分，确认此应用是否已达到其[流量限制](https://developers.facebook.com/docs/graph-api/overview/rate-limiting#wa-biz-api)。如果已达到，请稍后再试，或减少此应用进行 API 查询的频次或数量。                                                     | `400`错误请求 |
| <p><code>80007</code></p><p>流量限制问题</p>                | WhatsApp Business 商业账户已达到其流量限制。                        | 请参阅 WhatsApp Business 商业账户[流量限制](https://developers.facebook.com/documentation/business-messaging/whatsapp/about-the-platform#rate-limits)。稍后重试；或减少此应用进行 API 查询的频次或数量。                                                                                          | `400`错误请求 |
| <p><code>130429</code></p><p>达到流量限制</p>               | 已达到云端 API 消息吞吐量。                                       | 此应用已达到 API 吞吐量限制。请参阅[吞吐量](https://developers.facebook.com/documentation/business-messaging/whatsapp/throughput)。稍后重试；或减少此应用发送消息的频次。                                                                                                                             | `400`错误请求 |
| <p><code>131048</code></p><p>达到垃圾信息流量限制</p>           | 此电话号码被限制了可发送的消息数量，因此消息发送失败。这可能是因为之前有太多消息被封锁，或被标记为垃圾信息。 | 请在 WhatsApp 管理工具中检查您的质量状态。请参阅[模板限制](https://developers.facebook.com/documentation/business-messaging/whatsapp/templates/overview#template-limits)和[模板质量](https://developers.facebook.com/documentation/business-messaging/whatsapp/templates/template-quality)。 | `400`错误请求 |
| <p><code>131056</code></p><p>达到（业务账户、消费者账户）配对流量限制</p> | 短时间内从发信人电话号码发送到同一收信人电话号码的消息过多。                         | 如需发送消息到同一电话号码，等待并重试操作。您仍可发送消息到其他电话号码，而无需等待                                                                                                                                                                                                                      | `400`错误请求 |
| <p><code>133016</code></p><p>超出账户注册注销数量限制</p>         | 由于短时间内尝试次数太多，未能成功注册或注销此电话号码                            | 此业务电话号码因达到注册/注销的尝试次数上限而遭到封锁。号码解除封锁后，请再试一次。请查看[注册](https://developers.facebook.com/documentation/business-messaging/whatsapp/business-phone-numbers/registration)文档的“限制”部分。                                                                                      | `400`错误请求 |

## 其他错误

<table data-header-hidden><thead><tr><th></th><th width="192.45703125"></th><th width="353.25390625"></th><th></th></tr></thead><tbody><tr><td>代码</td><td>详情</td><td>可能的原因和解决方案</td><td>HTTP 状态代码</td></tr><tr><td><p><code>130472</code></p><p>用户的号码涉及实验</p></td><td>消息并非作为<a href="https://developers.facebook.com/documentation/business-messaging/whatsapp/support/experiments">实验</a>的一部分发送。</td><td>请参阅<a href="https://developers.facebook.com/documentation/business-messaging/whatsapp/support/experiments#marketing-message-experiment">营销消息实验</a>。</td><td><code>400</code>错误请求</td></tr><tr><td><p><code>131000</code></p><p>出错了</p></td><td>出现未知错误，因此消息发送失败。</td><td>再试一次。如果错误持续存在，则创建<a href="https://business.facebook.com/direct-support">直接支持</a>工单。对于使用端点的 WhatsApp Flows - 在<a href="https://developers.facebook.com/docs/whatsapp/cloud-api/reference/whatsapp-business-encryption#set-business-public-key">设置企业公钥</a>时，无法计算签名或调用 GraphQL 端点，或者 GraphQL 端点返回错误。</td><td><code>500</code>内部服务器错误</td></tr><tr><td><p><code>131005</code></p><p>访问遭拒</p></td><td>未获得权限或权限已被移除。</td><td>使用<a href="https://developers.facebook.com/tools/debug/accesstoken">访问口令调试工具</a>来确认您的应用是否已获得端点所需的权限。请参阅<a href="https://developers.facebook.com/documentation/business-messaging/whatsapp/support#authentication-authorization">身份验证和授权错误</a>。</td><td><code>403</code>禁止访问</td></tr><tr><td><p><code>131008</code></p><p>必要参数缺失</p></td><td>请求中缺少必要参数。</td><td>请参阅端点参考文档，确定哪些是必要参数。</td><td><code>400</code>错误请求</td></tr><tr><td><p><code>131009</code></p><p>参数值无效</p></td><td>一个或多个参数值无效。</td><td>参阅此端点的参考文档，确定每个参数支持哪些值；参阅<a href="https://developers.facebook.com/documentation/business-messaging/whatsapp/business-phone-numbers/phone-numbers">电话号码</a>，了解如何将电话号码添加到 WhatsApp Business 商业账户。</td><td><code>400</code>错误请求</td></tr><tr><td><p><code>131016</code></p><p>服务不可用</p></td><td>服务暂时不可用。</td><td>访问 <a href="https://l.facebook.com/l.php?u=https%3A%2F%2Fmetastatus.com%2Fwhatsapp-business-api%3Ffbclid%3DIwZXh0bgNhZW0CMTAAYnJpZBExbE9VS2JWNHdDYmhoeGEyTHNydGMGYXBwX2lkEDIyMjAzOTE3ODgyMDA4OTIAAR7EwI3ZeWkET0sv1d6qOrSD0EpoQ_Q1Mk2PQW7RwhWbCn75U-eiQJ_KDp0ngQ_aem_4xCDGSMuoqb1wpbLeXHEtA&#x26;h=AT1-HiPjeXGiLt1BiGu1049D_WZ7upc-8sNO1mNYIEEZACB3rt71Yz171vvn4L_RFbrd3KCzjpPyD04aw8m3d2RL5XpZJ5FokjpSwGDAoZ3z0nupqTZS6e4zgm-Xa1D5jKbRobWTbfM">WhatsApp Business 开放平台状态</a>页面，查看 API 状态信息，然后重试。</td><td><code>500</code>内部服务器错误</td></tr><tr><td><p><code>131021</code></p><p>收信人不能是发信人</p></td><td>发信人和收信人的电话号码相同。</td><td>将消息发送到与发信人不同的电话号码。</td><td><code>400</code>错误请求</td></tr><tr><td><p><code>131026</code></p><p>消息无法送达</p></td><td><p>无法送达消息。原因可包括：</p><ul><li>收信人电话号码不是 WhatsApp 电话号码。</li><li>收信人尚未接受我们的新服务条款和隐私政策。</li><li><p>收信人使用的是旧版 WhatsApp；必须使用以下 WhatsApp 版本或更高版本：</p><ul><li>Android：2.21.15.15</li><li>SMBA：2.21.15.15</li><li>iOS：2.21.170.4</li><li>SMBI：2.21.170.4</li><li>KaiOS：2.2130.10</li><li>网页版：2.2132.6</li></ul></li></ul></td><td><p>使用非 WhatsApp 联系方式，请 WhatsApp 用户执行以下操作：</p><ul><li>确认他们实际可以向您的 WhatsApp Business 业务电话号码发送消息。</li><li>确认他们已接受我们的最新服务条款（如果他们还未接受，在<strong>设置</strong> > <strong>帮助</strong>中，或在<strong>设置</strong> > <strong>应用程序信息</strong>中，系统会提示他们接受最新条款/政策）</li><li>更新到最新版 WhatsApp 客户端。</li></ul></td><td><code>400</code>错误请求</td></tr><tr><td><p><code>131037</code></p><p>WhatsApp 提供的电话号码需要显示名获得批准，才能发送消息。</p></td><td>用来发送请求的 <a href="https://developers.facebook.com/documentation/business-messaging/whatsapp/embedded-signup/overview#555-business-phone-numbers">555 业务电话号码</a>没有获得批准的<a href="https://developers.facebook.com/documentation/business-messaging/whatsapp/docs/whatsapp/display-names">显示名</a>。</td><td>更改 555 业务电话号码的<a href="https://developers.facebook.com/documentation/business-messaging/whatsapp/display-names">显示名</a>。另请参阅我们帮助中心的<a href="https://www.facebook.com/business/help/378834799515077">如何更改 WhatsApp Business 商家显示名</a>一文。</td><td><code>400</code>错误请求</td></tr><tr><td><p><code>131042</code></p><p>商家支付资格问题</p></td><td>您的支付方式出错了。</td><td><p>参阅 <a href="https://www.facebook.com/business/help/2225184664363779">WhatsApp Business 商业账户的账单简介</a>，确认您是否已正确设置账单。常见问题：</p><ul><li>WhatsApp Business 商业账户未绑定支付账户</li><li>额度超出上限</li><li>未设置或启用额度（支付账户）</li><li>WhatsApp Business 商业账户已被删除</li><li>WhatsApp Business 商业账户已停用</li><li>未设置时区</li><li>未设置货币</li><li>MessagingFor 请求（代操作）待处理或已被拒</li></ul></td><td><code>400</code>错误请求</td></tr><tr><td><p><code>131045</code></p><p>证书不正确</p></td><td>由于电话号码注册错误，消息发送失败。</td><td><a href="https://developers.facebook.com/documentation/business-messaging/whatsapp/business-phone-numbers/registration">注册电话号码</a>，然后重试。</td><td><code>500</code>内部服务器错误</td></tr><tr><td><p><code>131047</code></p><p>再互动消息</p></td><td>距收信人上次回复发信人号码，时间已超过 24 小时。</td><td>请改为向收信人发送<a href="https://developers.facebook.com/documentation/business-messaging/whatsapp/templates/overview">模板消息</a>。</td><td><code>400</code>错误请求</td></tr><tr><td><p><code>131049</code></p><p>Meta 选择了不送达。</p></td><td>为保持健康的生态系统互动，这条消息未被送达。</td><td>如果您收到此错误代码，并且怀疑是由于该限制所致，请至少等待 24 小时再重新发送模板消息。由于此限制可能在不同时期生效，立即执行此操作只会导致出现另一个错误响应。详情请参阅<a href="https://developers.facebook.com/documentation/business-messaging/whatsapp/templates/marketing-templates/per-user-limits">每位用户的营销模板消息限制</a>。</td><td><code>400</code>错误请求</td></tr><tr><td><p><code>131050</code></p><p>用户已停止接收营销消息。</p></td><td>消息无法送达。收信人已选择停止接收商家通过 WhatsApp 发送的营销消息。</td><td>请勿再次尝试向此用户发送消息，因为对方不会收到。如要在 WhatsApp 用户每次停止或恢复接收您向其发送的营销模板消息时收到通知，请订阅 <a href="https://developers.facebook.com/documentation/business-messaging/whatsapp/webhooks/reference/user_preferences">user_preferences webhook</a>。</td><td><code>400</code>错误请求</td></tr><tr><td><p><code>131051</code></p><p>消息类型不受支持</p></td><td>消息类型不受支持。</td><td>参阅<a href="https://developers.facebook.com/documentation/business-messaging/whatsapp/messages/send-messages#message-types">消息</a>，了解受支持的消息类型，然后使用受支持的消息类型重试。</td><td><code>400</code>错误请求</td></tr><tr><td><p><code>131052</code></p><p>下载影音内容出错</p></td><td>无法下载用户发送的影音内容。</td><td>我们无法下载此 WhatsApp 用户所发消息中包含的影音内容。有关详情，参见此消息被接收时触发的任何<strong>消息</strong> Webhook 中的 <code>error.error_data.details</code> 值。让 WhatsApp 用户使用非 WhatsApp 方式向您发送影音文件。</td><td><code>400</code>错误请求</td></tr><tr><td><p><code>131053</code></p><p>上传影音内容出错</p></td><td>无法上传消息中使用的影音内容。</td><td>由于一个或多个原因（例如不支持的影音内容类型），我们无法上传影音内容。有关详情，参见消息发送失败时触发的任何<strong>消息</strong> Webhook 中的 <code>error.error_data.details</code> 值。建议您检查造成错误的任何影音文件，并确认这些文件实际上受支持。例如，在 UNIX 中，您可以通过命令行使用文件检查，来确定文件的 MIME 类型：<code>file -I rejected-file.mov</code>然后您可以确认其 MIME 类型是否受支持。参阅<a href="https://developers.facebook.com/documentation/business-messaging/whatsapp/business-phone-numbers/media#supported-media-types">受支持的影音内容类型</a>。</td><td><code>400</code>错误请求</td></tr><tr><td><p><code>131057</code></p><p>账户处于维护模式</p></td><td>业务账户处于维护模式</td><td>WhatsApp Business 商业账户目前处于维护模式。其中一个原因可能是账户正在进行<a href="https://developers.facebook.com/documentation/business-messaging/whatsapp/throughput">吞吐量</a>升级。</td><td><code>500</code>错误请求</td></tr><tr><td><p><code>132000</code></p><p>模板参数数量不一致</p></td><td>请求中包含的可变参数值数量与模板中定义的可变参数数量不一致。</td><td>请参阅我们的<a href="https://developers.facebook.com/documentation/business-messaging/whatsapp/templates/overview#parameter-formats">模板</a>文档，了解相关参数，并确保请求包含模板需要的所有参数值。</td><td><code>400</code>错误请求</td></tr><tr><td><p><code>132001</code></p><p>模板不存在</p></td><td>该模板在特定语言中不存在，或尚未通过审核。</td><td>确保您的模板已通过审核，并且模板的名称和语言设置准确无误。请参阅我们的<a href="https://developers.facebook.com/documentation/business-messaging/whatsapp/templates/overview">模板</a>文档，详细了解模板。</td><td><code>404</code>未找到</td></tr><tr><td><p><code>132005</code></p><p>模板填充文字过长</p></td><td>翻译文字过长。</td><td>查看 WhatsApp 管理工具，确认模板已翻译。请参阅我们的<a href="https://developers.facebook.com/documentation/business-messaging/whatsapp/templates/template-quality">模板质量</a>文档，了解如何检查模板状态。</td><td><code>400</code>错误请求</td></tr><tr><td><p><code>132007</code></p><p>违反模板格式字符政策</p></td><td>模板内容违反了 WhatsApp 政策。</td><td>请参阅我们的<a href="https://developers.facebook.com/documentation/business-messaging/whatsapp/templates/template-review">模板审核</a>文档，了解违规的可能原因。</td><td><code>400</code>错误请求</td></tr><tr><td><p><code>132012</code></p><p>模板参数格式不一致</p></td><td>可变参数值格式不正确。</td><td>请求中包含的可变参数值未使用模板中指定的格式。请参阅我们的<a href="https://developers.facebook.com/documentation/business-messaging/whatsapp/templates/overview#parameter-formats">模板</a>文档，详细了解模板参数和格式。</td><td><code>400</code>错误请求</td></tr><tr><td><p><code>132015</code></p><p>模板已暂停</p></td><td>模板因<a href="https://developers.facebook.com/documentation/business-messaging/whatsapp/templates/template-quality">低质量</a>而被暂停使用，因此您无法在模板消息中发送此模板。</td><td><a href="https://developers.facebook.com/documentation/business-messaging/whatsapp/templates/template-management#edit-templates">编辑模板</a>以提高其质量，并在模板通过审核后重试。</td><td><code>400</code>错误请求</td></tr><tr><td><p><code>132016</code></p><p>模板已禁用</p></td><td>模板已多次因<a href="https://developers.facebook.com/documentation/business-messaging/whatsapp/templates/template-quality">低质量</a>而被暂停使用，现已永久禁用。</td><td>使用不同内容新建模板。</td><td><code>400</code>错误请求</td></tr><tr><td><p><code>132068</code></p><p>Flows 已被阻止</p></td><td>Flows 处于被阻止状态。</td><td>纠正 Flows</td><td><code>400</code>错误请求</td></tr><tr><td><p><code>132069</code></p><p>Flows 已被节流</p></td><td>Flows 处于节流状态，过去一小时内已发送 10 条使用此 Flows 的消息。</td><td>纠正 Flows</td><td><code>400</code>错误请求</td></tr><tr><td><p><code>133000</code></p><p>注销未完成</p></td><td>之前的注销尝试失败。</td><td>重新<a href="https://developers.facebook.com/documentation/business-messaging/whatsapp/business-phone-numbers/registration#deregister-phone">注销</a>号码后再<a href="https://developers.facebook.com/documentation/business-messaging/whatsapp/business-phone-numbers/registration">注册</a>。</td><td><code>500</code>内部服务器错误</td></tr><tr><td><p><code>133004</code></p><p>服务器暂时不可用</p></td><td>服务器暂时不可用。</td><td>访问 <a href="https://l.facebook.com/l.php?u=https%3A%2F%2Fmetastatus.com%2Fwhatsapp-business-api%3Ffbclid%3DIwZXh0bgNhZW0CMTAAYnJpZBExbE9VS2JWNHdDYmhoeGEyTHNydGMGYXBwX2lkEDIyMjAzOTE3ODgyMDA4OTIAAR5fR8pg0B-IicB7-ftrE6-418relABYe1kdgQ5a2bXacuVyTSfzGxYw2C4Z6w_aem_QF3mdEnurygRKixWZdHStg&#x26;h=AT1-HiPjeXGiLt1BiGu1049D_WZ7upc-8sNO1mNYIEEZACB3rt71Yz171vvn4L_RFbrd3KCzjpPyD04aw8m3d2RL5XpZJ5FokjpSwGDAoZ3z0nupqTZS6e4zgm-Xa1D5jKbRobWTbfM">WhatsApp Business 开放平台状态</a>页面，查看 API 状态信息，检查响应中的 <code>details</code> 值，然后重试。</td><td><code>503</code>服务不可用</td></tr><tr><td><p><code>133005</code></p><p>两步验证 PIN 码不一致</p></td><td>两步验证 PIN 码不正确。</td><td>确认请求中包含的两步验证 PIN 码正确。要重置 PIN 码，请禁用两步验证，然后设置新的 PIN 码。请参阅<a href="https://developers.facebook.com/documentation/business-messaging/whatsapp/business-phone-numbers/phone-numbers#two-step-verification">两步验证</a>。</td><td><code>400</code>错误请求</td></tr><tr><td><p><code>133006</code></p><p>需要重新验证电话号码</p></td><td>需要先验证电话号码，才能注册。</td><td><a href="https://developers.facebook.com/documentation/business-messaging/whatsapp/solution-providers/registering-phone-numbers">验证并注册电话号码</a>。</td><td><code>400</code>错误请求</td></tr><tr><td><p><code>133008</code></p><p>两步验证 PIN 码尝试次数过多</p></td><td>此电话号码的两步验证 PIN 码尝试次数过多。</td><td>在 <code>details</code> 响应值指定的时间后重试。</td><td><code>400</code>错误请求</td></tr><tr><td><p><code>133009</code></p><p>两步验证 PIN 码尝试过快</p></td><td>两步验证 PIN 码输入过快。</td><td>检查 <code>details</code> 响应值，然后重试。</td><td><code>400</code>无效请求</td></tr><tr><td><p><code>133010</code></p><p>电话号码未注册</p></td><td>电话号码未在 WhatsApp Business 开放平台上注册。</td><td><a href="https://developers.facebook.com/documentation/business-messaging/whatsapp/business-phone-numbers/registration">注册电话号码</a>，然后重试。</td><td><code>400</code>无效请求</td></tr><tr><td><p><code>133015</code></p><p>请等待几分钟，再尝试注册此电话号码</p></td><td>您当前尝试注册的电话号码近期被删除，但删除尚未完成。</td><td>请等待 5 分钟，再重新尝试发送请求。</td><td><code>400</code>无效请求</td></tr><tr><td><p><code>134011</code></p><p>尚未接受 WhatsApp 支付服务条款</p></td><td>消息发送失败，因为正在等待此 WhatsApp Business 商业账户接受 WhatsApp 支付服务条款。</td><td>使用错误消息中提供的链接接受 WhatsApp 支付服务条款，然后重试。</td><td><code>400</code>无效请求</td></tr><tr><td><p><code>135000</code></p><p>一般用户错误</p></td><td>您的请求参数出现未知错误，因此消息发送失败。</td><td>参阅此端点的<a href="https://developers.facebook.com/documentation/business-messaging/whatsapp/overview">参考文档</a>，确认您查询端点所使用的语法是否正确。如果您在响应中继续收到此错误代码，请联系<a href="https://developers.facebook.com/support/">客户支持</a>。</td><td></td></tr></tbody></table>

## WhatsApp 营销消息 API 错误代码

WhatsApp 营销消息 API 使用与云端 API 相同的错误代码，并添加了下方列出的一些错误代码。

<table data-header-hidden><thead><tr><th></th><th></th><th width="161.1015625"></th><th width="220.62890625"></th><th></th></tr></thead><tbody><tr><td>代码</td><td>消息</td><td>详情</td><td>可能的原因和解决方案</td><td>HTTP<br>状态<br>码</td></tr><tr><td><code>100</code></td><td><code>(#100) Invalid parameter</code></td><td><code>Message must be a template message.</code></td><td>您正在尝试发送非模板消息。消息类型必须为 <code>template</code>。请使用营销模板重试。</td><td>400 无效请求</td></tr><tr><td><code>131009</code></td><td><code>(#131009) Parameter value is not valid</code></td><td><code>One or more parameter values are invalid.</code></td><td>您使用的参数可能无效。请确认您使用的是<a href="https://developers.facebook.com/documentation/business-messaging/whatsapp/marketing-messages/send-marketing-messages">有效参数</a>，然后重试。广告同步可能未完成。请等待 10 分钟，然后重试。如果问题仍然存在，请联系支持。</td><td>400 无效请求</td></tr><tr><td><code>131055</code></td><td><code>(#131055) Method not allowed</code></td><td><code>Only marketing template messages are supported</code></td><td>您可能试图发送非模板消息，或者身份验证或实用型模板。请尝试使用营销模板消息再次发送。</td><td>400 无效请求</td></tr><tr><td><code>134100</code></td><td><code>(#134100) Only marketing messages supported</code></td><td><code>You're only able to send marketing messages on this API.</code></td><td><em>将在图谱 API 23.0 版本中推出。</em>您正在尝试发送实用型或身份验证模板。仅支持 <code>MARKETING</code> 类模板。</td><td>400 无效请求</td></tr><tr><td><code>134101</code></td><td><code>(#134101) Your template is still syncing</code></td><td><code>When you send a message from a template, the template syncing process can take up to 10 minutes to complete. Wait a few minutes, and then try sending your message again.</code></td><td><em>将在图谱 API 23.0 版本中推出。</em>您正在尝试发送尚未完成广告同步的新建模板。广告同步最多可能需要 10 分钟。请等待 10 分钟，然后重试。</td><td>400 无效请求</td></tr><tr><td><code>134102</code></td><td><code>(#134102) Template unavailable for use</code></td><td><code>Please check your eligibility status to ensure you are onboarded (/documentation/business-messaging/whatsapp/marketing-messages/onboarding#ensure-you-are-eligible-to-onboard) or contact Meta's customer support.</code></td><td><em>将在图谱 API 23.0 版本中推出。</em>我们无法为您尝试发送的模板完成广告同步，或者您可能不符合使用 WhatsApp 营销消息 API 的资格。<a href="https://developers.facebook.com/documentation/business-messaging/whatsapp/marketing-messages/onboarding#check-waba-onboarding-status-and-eligibility">检查您的资格状态</a>。如果 WhatsApp Business 商业账户的 <code>marketing_messages_lite_api_status</code>值为 <code>ONBOARDED</code> 且问题仍然存在，请<a href="https://business.facebook.com/direct-support/">联系支持</a>。</td><td>500 内部服务器错误</td></tr><tr><td><code>1752041</code></td><td><code>(#1752041) Duplicate Request</code></td><td><code>Duplicate Request is thrown when a client has already been invited to onboard by any partner.</code></td><td>接入请求限每个业务客户 1 个，仅第一个调用意向 API 的合作伙伴能够成功提交请求。接入客户后，其所有符合条件的 WhatsApp Business 商业账户 (WABA) 都会自动包含在该流程中。如果您收到错误消息，表明已提出过加入请求，则无需采取进一步操作，因为该客户的所有符合条件的 WABA 都将加入，无需执行额外步骤。</td><td>400 无效请求</td></tr></tbody></table>


# 语言编码

| **编码**     | **显示名称**      | **编码**     | **显示名称**         |
| ---------- | ------------- | ---------- | ---------------- |
| **af**     | Afrikaans     | **ko**     | Korean           |
| **sq**     | Albanian      | **lo**     | Lao              |
| **ar**     | Arabic        | **lv**     | Latvian          |
| **az**     | Azerbaijani   | **lt**     | Lithuanian       |
| **bn**     | Bengali       | **mk**     | Macedonian       |
| **bg**     | Bulgarian     | **ms**     | Malay            |
| **ca**     | Catalan       | **ml**     | Malayalam        |
| **zh\_CN** | Chinese (CHN) | **mr**     | Marathi          |
| **zh\_HK** | Chinese (HKG) | **nb**     | Norwegian        |
| **zh\_TW** | Chinese (TAI) | **fa**     | Persian          |
| **hr**     | Croatian      | **pl**     | Polish           |
| **cs**     | Czech         | **pt\_BR** | Portuguese (BR)  |
| **da**     | Danish        | **pt\_PT** | Portuguese (POR) |
| **nl**     | Dutch         | **pa**     | Punjabi          |
| **en**     | English       | **ro**     | Romanian         |
| **en\_GB** | English (UK)  | **ru**     | Russian          |
| **en\_US** | English (US)  | **sr**     | Serbian          |
| **et**     | Estonia       | **sk**     | Slovak           |
| **fil**    | Filipin       | **sl**     | Slovenian        |
| **fi**     | Finnish       | **es**     | Spanish          |
| **fr**     | French        | **es\_AR** | Spanish (ARG)    |
| **de**     | German        | **es\_MX** | Spanish (MEX)    |
| **el**     | Greek         | **es\_ES** | Spanish (SPA)    |
| **gu**     | Gujarati      | **sw**     | Swahili          |
| **ha**     | Hausa         | **sv**     | Swedish          |
| **he**     | Hebrew        | **ta**     | Tamil            |
| **hi**     | Hindi         | **te**     | Telugu           |
| **hu**     | Hungarian     | **th**     | Thai             |
| **id**     | Indonesian    | **tr**     | Turkish          |
| **ga**     | Irish         | **uk**     | Ukrainian        |
| **it**     | Italian       | **ur**     | Urdu             |
| **ja**     | Japanese      | **uz**     | Uzbek            |
| **kn**     | Kannada       | **vi**     | Vietnamese       |
| **kk**     | Kazakh        | **zu**     | Zulu             |


# OTP API

## 发送消息

### 发送通用验证码

**请求接口地址**

```
 POST     https://api.innopaas.com/api/otp/v3/msg/send/verify
```

&#x20;

#### **请求参数**

<table data-header-hidden><thead><tr><th width="143.05859375"></th><th width="135.0390625"></th><th width="70.08203125"></th><th></th></tr></thead><tbody><tr><td>字段</td><td>数据类型</td><td>是否必填</td><td>描述</td></tr><tr><td>type</td><td>String</td><td>是</td><td><p>发送类型</p><p> 1 - whatsapp,2 - voice,3 - sms,4 email,5 telegram </p><p>目前只支持1-  WhatsApp和 3 -SMS ）</p></td></tr><tr><td>language</td><td>String</td><td>是</td><td>模板语言,查看附1:语言编码</td></tr><tr><td>to</td><td>String</td><td>是</td><td>接收手机号码</td></tr><tr><td>code</td><td>String</td><td>是</td><td>验证码</td></tr><tr><td>sender</td><td>String</td><td>否</td><td>WhatsApp Sender(可选项，不配系统自定义，配置需要提前联系管理员绑定)</td></tr></tbody></table>

#### **接口地址**

```
POST       https://api.innopaas.com/api/otp/v3/msg/send
```

#### **请求参数**

<table data-header-hidden><thead><tr><th width="154.8203125"></th><th width="162.78125"></th><th width="91.671875"></th><th></th></tr></thead><tbody><tr><td>字段</td><td>数据类型</td><td>是否必填</td><td>描述</td></tr><tr><td>templateId</td><td>String</td><td>是</td><td>OTP模板(策略)ID</td></tr><tr><td>language</td><td>String</td><td>是</td><td>模板语言,查看附1:语言编码</td></tr><tr><td>to</td><td>String</td><td>是</td><td>接收手机号码</td></tr><tr><td>code</td><td>String</td><td>是</td><td>验证码</td></tr><tr><td>sender</td><td>String</td><td>否</td><td>WhatsApp Sender(显示号码,未绑定号码会失败)</td></tr></tbody></table>

**请求示例**

```json

{
    "templateId":"110129512080522",
    "language":"en",
    "to": "8618912123457",
    "code": "123213",
    "sender": "8618912123456"
}
```

#### **响应示例**

```json

{
    "code": "000000",
    "message": "Success",
    "data":"2342623234234234234"  //消息的messageId
}
```

## 账号管理

### 查询账户余额

#### **接口地址**

<pre><code><strong>GET   https://api.innopaas.com/api/otp/v3/account/getBalance
</strong></code></pre>

#### **响应参数**

<table data-header-hidden><thead><tr><th width="135.05078125"></th><th width="119.0078125"></th><th width="69.859375"></th><th></th></tr></thead><tbody><tr><td>字段</td><td>数据类型</td><td>是否必填</td><td>描述</td></tr><tr><td>payType</td><td>Integer</td><td>是</td><td>1:预付费账号，2:后付费账号</td></tr><tr><td>preBalance</td><td>Double</td><td>是</td><td>预付费余额,payType=1时，校验余额</td></tr><tr><td>postBalance</td><td>Double<br></td><td>是</td><td>后付费授信余额,payType=2时，校验余额，如果isCreditUnlimit=1，授信额度不受限</td></tr><tr><td>isCreditUnlimit</td><td>Integer</td><td>是</td><td>后付费授信是否限制，0:限制 ，1不限制</td></tr></tbody></table>

#### **响应示例**

```json
{
    "code": "000000",
    "message": "Success",
    "data": {
        "payType": "",
        "preBalance": "innopaas street1.",
        "postBalance": "my test2",
        "isCreditUnlimit": "admin@innopaas.com",
        }
}

```

<br>


# WebHook

## **状态推送**

### 消息状态参数

| 字段         | 数据类型   | 是否必填 | 描述                           |
| ---------- | ------ | ---- | ---------------------------- |
| accountNo  | String | 是    | 产品账号                         |
| appKey     | String | 是    | 应用KEY                        |
| messageId  | String | 是    | 消息ID                         |
| mobile     | String | 是    | 手机号码                         |
| status     | String | 是    | 状态 0: 进行中，1:失败，2:成功          |
| code       | String | 是    | Code success: 成功， failed :失败 |
| reportTime | String | 是    | 状态报告时间 yyyy-MM-dd HH:mm:ss   |
| errCode    | String | 否    | status=1 时，有值，原始失败码          |
| errMessage | String | 否    | status=1 时，有值，失败原因           |

### 推送示例

```json
{
    "accountNo":"110129512080522",
    "appKey": "6285234567899",
    "messageId": "8618912123456",
    "mobile": "861571111111",
    "status":"0",
    "code":"success",
    "errCode":null,
    "errMessage":null,
    "reportTime":"2024-12-12 11:12:12"
}

```


# 语言编码

| **编码**     | **显示名称**      | **编码**     | **显示名称**         |
| ---------- | ------------- | ---------- | ---------------- |
| **af**     | Afrikaans     | **ko**     | Korean           |
| **sq**     | Albanian      | **lo**     | Lao              |
| **ar**     | Arabic        | **lv**     | Latvian          |
| **az**     | Azerbaijani   | **lt**     | Lithuanian       |
| **bn**     | Bengali       | **mk**     | Macedonian       |
| **bg**     | Bulgarian     | **ms**     | Malay            |
| **ca**     | Catalan       | **ml**     | Malayalam        |
| **zh\_CN** | Chinese (CHN) | **mr**     | Marathi          |
| **zh\_HK** | Chinese (HKG) | **nb**     | Norwegian        |
| **zh\_TW** | Chinese (TAI) | **fa**     | Persian          |
| **hr**     | Croatian      | **pl**     | Polish           |
| **cs**     | Czech         | **pt\_BR** | Portuguese (BR)  |
| **da**     | Danish        | **pt\_PT** | Portuguese (POR) |
| **nl**     | Dutch         | **pa**     | Punjabi          |
| **en**     | English       | **ro**     | Romanian         |
| **en\_GB** | English (UK)  | **ru**     | Russian          |
| **en\_US** | English (US)  | **sr**     | Serbian          |
| **et**     | Estonia       | **sk**     | Slovak           |
| **fil**    | Filipin       | **sl**     | Slovenian        |
| **fi**     | Finnish       | **es**     | Spanish          |
| **fr**     | French        | **es\_AR** | Spanish (ARG)    |
| **de**     | German        | **es\_MX** | Spanish (MEX)    |
| **el**     | Greek         | **es\_ES** | Spanish (SPA)    |
| **gu**     | Gujarati      | **sw**     | Swahili          |
| **ha**     | Hausa         | **sv**     | Swedish          |
| **he**     | Hebrew        | **ta**     | Tamil            |
| **hi**     | Hindi         | **te**     | Telugu           |
| **hu**     | Hungarian     | **th**     | Thai             |
| **id**     | Indonesian    | **tr**     | Turkish          |
| **ga**     | Irish         | **uk**     | Ukrainian        |
| **it**     | Italian       | **ur**     | Urdu             |
| **ja**     | Japanese      | **uz**     | Uzbek            |
| **kn**     | Kannada       | **vi**     | Vietnamese       |
| **kk**     | Kazakh        | **zu**     | Zulu             |


# Voice API


# 语音消息

## 语音消息发送

**请求接口地址**

```
POST  https://api.tig253.com/open/int-voice/batch-notify
```

**请求参数**

数据提交方式：x-www-form-urlencoded

<table><thead><tr><th width="152.68359375">参数名</th><th width="157.19140625">参数类型</th><th width="136.21875">是否必传</th><th>说明</th></tr></thead><tbody><tr><td>appId</td><td>String</td><td>是</td><td>请在官网登录后获取 ，详情请看,功能介绍->接口详情</td></tr><tr><td>appKey</td><td>String</td><td>是</td><td>请在官网登录后获取 ，详情请看,功能介绍->接口详情</td></tr><tr><td>mobile</td><td>String</td><td>是</td><td>被叫号码，模版无变量多个则以英文半角分号“;”分割；模板带变量，多个号码以英文分号“;”分割，号码和变量以英文逗号“,”隔开， 多个变量以竖线“|”隔开，如 86130XXXXXXXX,123|456;86186XXXXXXXX,321|654; 注意:号码需要自带国家码前缀，否者会被视为无效号码，单次最大1000个号码</td></tr><tr><td>countryCode</td><td>String</td><td>是</td><td><a href="https://doc.chuanglan.com/document/WS0DSOFIJD79SA1L#countryCode">国家码</a>，国家的简称，例如，中国:CN</td></tr><tr><td>templateId</td><td>String</td><td>是</td><td>语音模版Id，官网控制台创建后产生，且已审核通过</td></tr><tr><td>billUrl</td><td>String</td><td>否</td><td>话单推送回调地址 （最大长度250）</td></tr><tr><td>transData</td><td>String</td><td>否</td><td>透传数据(话单推送回调时返回 最大长度50)</td></tr><tr><td>displayNum</td><td>String</td><td>否</td><td>主叫号码，由运营提供，未提供的则不需要传</td></tr><tr><td>smsHangupStatus</td><td>String</td><td>否</td><td>挂机短信开启标识 0：关闭，1：开启，默认：关闭</td></tr><tr><td>smsTemplateId</td><td>String</td><td>否</td><td>挂机短信模板id</td></tr><tr><td>smsSendType</td><td>String</td><td>否</td><td>挂机短信发送方式：0:接通后发送，1:全部群发，2:未接通发送，3:按接通时长发送，默认:0</td></tr><tr><td>smsSendLimit</td><td>String</td><td>否</td><td>当挂机短信方式为3时必填，单位秒，输入时间规则为大于等于x后发送挂机短信（整数输入大于等于1）</td></tr><tr><td>sendType</td><td>String</td><td>否</td><td>任务发送类型 1-定时任务2-即时任务,不传为即时任务</td></tr><tr><td>taskStartTime</td><td>String</td><td>否</td><td>任务开始时间，最长8天，yyyyMMddHHmmss，eg:20200902170000</td></tr><tr><td>taskEndTime</td><td>String</td><td>否</td><td>任务结束时间，yyyyMMddHHmmss，eg:20200902235959</td></tr><tr><td>taskName</td><td>String</td><td>否</td><td>任务名称</td></tr><tr><td>maxRecallCount</td><td>String</td><td>否</td><td>最大重拨次数，只能0-3，默认：1 重拨1次</td></tr><tr><td>recallInterval</td><td>String</td><td>否</td><td>重拨间隔时长（分钟），默认值60，重播最长时间跨度3天，最大重拨次数大于0时必传</td></tr><tr><td>noConnected</td><td>String</td><td>否</td><td>重拨策略：被叫无法接通,true:重拨;false:不重拨,默认值:true</td></tr><tr><td>noAnswer</td><td>String</td><td>否</td><td>重拨策略：被叫无人接听,true:重拨;false:不重拨,默认值:true</td></tr><tr><td>ttsVoice</td><td>String</td><td>否</td><td>播放语种， 例如，美国：en-US，如果不传，则按国家对应的语言播放，参考附录：<a href="https://doc.chuanglan.com/document/WS0DSOFIJD79SA1L#tts">播放语种</a> (如果是录音模版，则不需要传此参数)</td></tr></tbody></table>

**请求示例**

```json
{
	"appId": "*****",
	"appKey": "*****,
	"mobile": "86176***5202,张同学|111;86186***5203,王同学|222",
    "countryCode":"CN",
	"templateId": "123",
	"allowedCallTime": "",
	"billUrl": "http://****/voice/test/test3",
	"transData": "12****44",
	"smsHangupStatus": "1",
	"smsTemplateId": "4123***1",
    "smsSendType": "0",
    "smsSendLimit": "0",
	"displayNum": "",
	"sendType": "1",
	"taskStartTime": "20230909151800",
	"taskEndTime": "20230909231800",
	"taskName": "示例任务测试",
	"maxRecallCount": "3",
	"recallInterval": "3",
	"noConnected": "true",
	"noAnswer": "true",
   "ttsVoice": "en-US",
    
}
```

**返回参数**

<table><thead><tr><th width="175.74609375">数名</th><th width="173.4375">数据类型</th><th>参数说明</th></tr></thead><tbody><tr><td>code</td><td>string</td><td>响应code码。200000：成功，其他失败。<a href="https://doc.chuanglan.com/document/VN6NTZI2E7HPJEWJ">详见code码</a></td></tr><tr><td>message</td><td>string</td><td>响应code码解释</td></tr><tr><td>data</td><td>Object</td><td>返回对象</td></tr><tr><td>callId</td><td>string</td><td>呼叫唯一标识Id</td></tr></tbody></table>

```json
{
    "message": "请求成功",
    "data": {
        "callId": "YYYX931******64224"
    },
    "code": "200000"
}
```


# 国家/地区编码

## &#x20;国家地区代码 <a href="#title_8" id="title_8"></a>

| 国家地区中文名    | 国家地区编码 |
| ---------- | ------ |
| 加拿大        | CA     |
| 美国         | US     |
| 哈萨克        | KZ     |
| 俄罗斯联邦      | RU     |
| 阿布哈兹       | ABH    |
| 南奥赛梯       | SO     |
| 埃及         | EG     |
| 法国         | FR     |
| 法国大都会      | FX     |
| 西班牙        | ES     |
| 意大利        | IT     |
| 梵蒂冈(罗马教廷)  | VA     |
| 瑞士         | CH     |
| 英国         | UK     |
| 泽西岛        | BJ     |
| 德国         | DE     |
| 秘鲁         | PE     |
| 墨西哥        | MX     |
| 智利         | CL     |
| 哥伦比亚       | CO     |
| 马来西亚       | MY     |
| 澳大利亚       | AU     |
| 科科斯群岛      | CC     |
| 圣延岛        | CX     |
| 印度尼西亚      | ID     |
| 菲律宾共和国     | PH     |
| 新加坡        | SG     |
| 泰国         | TH     |
| 日本         | JP     |
| 韩国         | KR     |
| 越南         | VN     |
| 土耳其        | TR     |
| 印度         | IN     |
| 巴基斯坦       | PK     |
| 缅甸         | MM     |
| 伊朗（伊斯兰共和国） | IR     |
| 摩洛哥        | MA     |
| 阿尔及利亚      | DZ     |
| 突尼斯        | TN     |
| 利比亚        | LY     |
| 尼日利亚       | NG     |
| 肯尼亚        | KE     |
| 厄立特里亚国     | ER     |
| 葡萄牙        | PT     |
| 塞浦路斯       | CY     |
| 东帝汶        | TP     |
| 文莱达鲁萨兰国    | BN     |
| 香港（中国）     | HK     |
| 澳门（中国）     | MO     |
| 柬埔寨        | KH     |
| 老挝         | LAO    |
| 孟加拉国       | BD     |
| 台湾（中国）     | TW     |
| 黎巴嫩        | LB     |
| 约旦         | JO     |
| 伊拉克        | IQ     |
| 科威特        | KW     |
| 沙特阿拉伯      | SA     |
| 也门         | YE     |
| 阿曼         | OM     |
| 巴勒斯坦       | PS     |
| 阿拉伯联合酋长国   | AE     |
| 以色列        | IL     |
| 巴林         | BH     |
| 卡塔尔        | QA     |
| 古巴         | CU     |
| 阿根廷        | AR     |
| 委内瑞拉       | VE     |
| 新西兰        | NZ     |
| 赤道几内亚      | GQ     |
| 危地马拉       | GT     |
| 萨尔瓦多       | SV     |
| 洪都拉斯       | HN     |
| 哥斯达黎加      | CR     |
| 巴拿马        | PA     |
| 玻利维亚       | BO     |
| 厄瓜多尔       | EC     |
| 巴拉圭        | PY     |
| 乌拉圭        | UY     |
| 多米尼加共和国    | DO     |
| 爱尔兰        | IE     |

## 语言编码

| 语种     | 语言（国家）            |
| ------ | ----------------- |
| en-CA  | 英语（加拿大）           |
| en-US  | 英语（美国）            |
| ru-RU  | 俄语（俄罗斯）           |
| ar-EG  | 阿拉伯语（埃及）          |
| zu-ZA  | 祖鲁语（南非）           |
| el-GR  | 希腊语（希腊）           |
| nl-NL  | 荷兰语（荷兰）           |
| nl-BE  | 荷兰语（比利时）          |
| fr-FR  | 法语（法国）            |
| es-ES  | 西班牙语（西班牙）         |
| hu-HU  | 匈牙利语（匈牙利）         |
| it-IT  | 意大利语（意大利）         |
| ro-RO  | 罗马尼亚语（罗马尼亚）       |
| de-CH  | 德语（瑞士）            |
| de-AT  | 德语（奥地利）           |
| en-GB  | 英语（英国）            |
| da-DK  | 丹麦语（丹麦）           |
| sv-SE  | 瑞典语（瑞典）           |
| nb-NO  | 书面挪威语（挪威）         |
| pl-PL  | 波兰语（波兰）           |
| de-DE  | 德语（德国）            |
| es-PE  | 西班牙语（秘鲁）          |
| es-MX  | 西班牙语（墨西哥）         |
| es-CU  | 西班牙语（古巴）          |
| es-AR  | 西班牙语（阿根廷）         |
| pt-BR  | 葡萄牙语（巴西）          |
| es-CL  | 西班牙语（智利）          |
| es-CO  | 西班牙语（哥伦比亚）        |
| es-VE  | 西班牙语（委内瑞拉）        |
| ms-MY  | 马来语（马来西亚）         |
| en-AU  | 英语（澳大利亚）          |
| id-ID  | 印度尼西亚语（印度尼西亚）     |
| fil-PH | 菲律宾语（菲律宾）         |
| en-NZ  | 英语（新西兰）           |
| en-SG  | 英语（新加坡）           |
| th-TH  | 泰语（泰国）            |
| kk-KZ  | 哈萨克语（哈萨克斯坦）       |
| ja-JP  | 日语（日本）            |
| ko-KR  | 韩语（韩国）            |
| vi-VN  | 越南语（越南）           |
| zh-CN  | 中文（普通话，简体）        |
| tr-TR  | 土耳其语（土耳其）         |
| hi-IN  | 印地语（印度）           |
| ur-PK  | 乌尔都语（巴基斯坦）        |
| ps-AF  | 普什图语（阿富汗）         |
| si-LK  | 僧伽罗语（斯里兰卡）        |
| my-MM  | 缅甸语（缅甸）           |
| fa-IR  | 波斯语（伊朗）           |
| ar-MA  | 阿拉伯语（摩洛哥）         |
| ar-DZ  | 阿拉伯语（阿尔及利亚）       |
| ar-TN  | 阿拉伯语（突尼斯）         |
| ar-LY  | 阿拉伯语（利比亚）         |
| en-NG  | 英语（尼日利亚）          |
| es-GQ  | 西班牙语（赤道几内亚）       |
| am-ET  | 阿姆哈拉语（埃塞俄比亚）      |
| so-SO  | 索马里语（索马里）         |
| sw-KE  | 斯瓦希里语（肯尼亚）        |
| sw-TZ  | 斯瓦希里语（坦桑尼亚）       |
| pt-PT  | 葡萄牙语（葡萄牙）         |
| is-IS  | 冰岛语（冰岛）           |
| sq-AL  | 阿尔巴尼亚语（阿尔巴尼亚）     |
| mt-MT  | 马耳他语（马耳他）         |
| fi-FI  | 芬兰语（芬兰）           |
| bg-BG  | 保加利亚语（保加利亚）       |
| lt-LT  | 立陶宛语（立陶宛）         |
| lv-LV  | 拉脱维亚语（拉脱维亚）       |
| et-EE  | 爱沙尼亚语（爱沙尼亚）       |
| hy-AM  | 亚美尼亚语（亚美尼亚）       |
| uk-UA  | 乌克兰语（乌克兰）         |
| sr-RS  | 塞尔维亚语（西里尔文，塞尔维亚）  |
| hr-HR  | 克罗地亚语（克罗地亚）       |
| sl-SI  | 斯洛文尼亚语（斯洛文尼亚）     |
| mk-MK  | 马其顿语（北马其顿）        |
| cs-CZ  | 捷克语（捷克）           |
| sk-SK  | 斯洛伐克语（斯洛伐克）       |
| es-GT  | 西班牙语（危地马拉）        |
| es-SV  | 西班牙语（萨尔瓦多）        |
| es-HN  | 西班牙语（洪都拉斯）        |
| es-NI  | 西班牙（尼加拉瓜）         |
| es-CR  | 西班牙语（哥斯达黎加）       |
| es-PA  | 西班牙语（巴拿马）         |
| es-BO  | 西班牙语（玻利维亚）        |
| es-EC  | 西班牙语（厄瓜多尔）        |
| es-PY  | 西班牙语（巴拉圭）         |
| es-UY  | 西班牙语（乌拉圭）         |
| yue-CN | 中文（粤语，简体）         |
| km-KH  | 高棉语（柬埔寨）          |
| lo-LA  | 老挝语（老挝）           |
| bn-BD  | 孟加拉语（孟加拉国）        |
| zh-TW  | 中文（台湾普通话，繁体）      |
| ar-LB  | 阿拉伯语（黎巴嫩）         |
| ar-JO  | 阿拉伯语（约旦）          |
| ar-SY  | 阿拉伯语（叙利亚）         |
| ar-IQ  | 阿拉伯语（伊拉克）         |
| ar-KW  | 阿拉伯语（科威特）         |
| ar-SA  | 阿拉伯语（沙特阿拉伯）       |
| ar-YE  | 阿拉伯语（也门）          |
| ar-OM  | 阿拉伯语（阿曼）          |
| ar-AE  | 阿拉伯语（阿拉伯联合酋长国）    |
| he-IL  | 希伯来语（以色列）         |
| ar-BH  | 阿拉伯语（巴林）          |
| ar-QA  | 阿拉伯语（卡塔尔）         |
| mn-MN  | 蒙古语（蒙古）           |
| ne-NP  | 尼泊尔语（尼泊尔）         |
| az-AZ  | 阿塞拜疆语（拉丁语，阿塞拜疆）   |
| ka-GE  | 格鲁吉亚语（格鲁吉亚）       |
| uz-UZ  | 乌兹别克语（拉丁语，乌兹别克斯坦） |
| es-DO  | 西班牙语（多米尼加共和国）     |
| en-IE  | 英语（爱尔兰）           |
| zh-HK  | 粤语(中国香港)          |
| zh-MO  | 粤语(中国澳门)          |
| fr-BE  | 法语（卢森堡）           |

\ <br>


# 错误代码

| <p><br>描述</p> |             |
| ------------- | ----------- |
| 200000        | 成功          |
| 400001        | 参数校验异常      |
| 500000        | 系统异常        |
| 500001        | 调用上游供应商接口失败 |
| 500002        | 数据处理异常      |
| 500003        | 业务操作失败      |
| 500005        | 账户余额异常      |
| 504000        | 系统超时        |
| 500006        | 数据库插入异常     |
| 500008        | 请求速率超限      |
| 500009        | 请手动创建文件模板   |
| 500010        | 重复呼叫同一号码    |
| 500011        | 重复数据        |
| 500012        | 账号与模板对应失败   |
| 600001        | 语音通知模板不存在   |
| 600002        | 语音通知模板状态异常  |
| 600003        | 号码池不存在      |
| 600004        | 号码池文件不存在    |
| 600005        | 签名失败        |
| 700000        | 该号码已被绑定     |
| 7000001       | 创建语音通知模板失败  |
| 700010        | 不存在绑定关系     |


# InnoPaaS API Getting Started Guide

## API Signature Verification Instructions

### Common Request Headers

To ensure API security, all APIs must include security verification request headers,

Authorization and AppKey can only be obtained after creating an AppKey on the InnoPaaS platform

Used for API authentication verification; if verification fails, the API cannot be called and authentication failure is returned.

<table data-header-hidden><thead><tr><th width="97.7890625"></th><th width="142.16796875"></th><th width="111.828125"></th><th width="133.48046875"></th><th></th></tr></thead><tbody><tr><td>No.</td><td>Field</td><td>Data Type</td><td>Required</td><td>Description</td></tr><tr><td>1</td><td>Content-Type</td><td>String</td><td>Yes</td><td>The value is "application/json;charset=utf-8", and the request content is JSON</td></tr><tr><td>2</td><td>AppKey</td><td>String</td><td>Yes</td><td>ApiKey, application access key</td></tr><tr><td>3</td><td>Authorization</td><td>String</td><td>Yes</td><td>Authorization token for application access</td></tr></tbody></table>

**Headers sample code**

```python
headers = {
   'Authorization': 'YUIYIUIAIIASUDIAOSIDUOIWUOQWUEOIUWOEUQWOEUOQWUOUWOUWQOWU',
   'AppKey': 'XFbZY1rtTKo3UD4n1'
   }
```

### Get AppKey

Click the \[Copy] button in the application list to copy the AppKey

<figure><img src="/files/2b12151e4dc0a89cf32020f205d3df9a41da0056" alt=""><figcaption></figcaption></figure>

### Get Authorization

1\. Select an application and get the \[Token] button. Generate the Authorization information required for the app to access the API,**We do not store customers' Token information. Each time a new Token is generated, the previously generated Token will become invalid. If this app's Token is already being used in your production environment, please use this feature with caution. Invalidating the original Token may result in inability to access the API normally.**

<figure><img src="/files/9e9e7e1e7e444e755cec693d13087cf02e2c6c4e" alt=""><figcaption></figcaption></figure>

2\. Generate and copy the Token

* Choose the Token expiration time. By default, it never expires, but you can also specify an expiration date. &#x20;
* Click the \[Create Access Token] button to generate the Token &#x20;
* Click the \[Copy] button to copy the Token

<figure><img src="/files/c455835271598fbc44741ce80c3bbdfd0291298b" alt=""><figcaption></figcaption></figure>

## Configure WebHook callback address

### Configure WebHook events

&#x20; **When pushing template messages, uplink replies, and other signaling events, if the App cannot be recognized or matched, the data will be pushed to the default application; if there is no default application, nothing will be pushed.** &#x20;

1\. In the API Keys function menu list, click the callback event configuration button to start configuration

<figure><img src="/files/27bc07183a8f981d6f2c4d7047ed40fd1d52243e" alt=""><figcaption></figcaption></figure>

2\. Click the \[Add] button to add

<figure><img src="/files/c32c9073a27c03d753e3e819719db61cdf835a43" alt=""><figcaption></figcaption></figure>

3\. Select the product whose WebHook needs to be configured from the available product list

<figure><img src="/files/4483ff1ec170ba18655d56dbddf8cab9f59bf453" alt=""><figcaption></figcaption></figure>

4\. Configure the callback URL and select the events to receive, then click Next to continue

<figure><img src="/files/d57e8d81e69435eabb82896e9b4ac123e1bde27d" alt=""><figcaption></figcaption></figure>

5\. Select the callback request method, default is POST. If the customer's business system needs to verify the signature of the WebHook source, you can configure the UserName and Authorization header information. When the WebHook notification is pushed, UserName and Authorization will be added to the header information, and the customer's configured information will be pushed to the customer's system togethe&#x72;**.**

<figure><img src="/files/daf1a3c034fc831bdd7ee87227833d4628647465" alt=""><figcaption></figcaption></figure>


# SMS-API Interface V3.0

## Send Message

#### **Request API URL**

```
POST    https://api.innopaas.com/api/sms/v3/msg/send
```

#### **Request Parameters**

<table data-header-hidden><thead><tr><th width="114.8203125"></th><th width="121.640625"></th><th width="63.59765625"></th><th></th></tr></thead><tbody><tr><td>Field</td><td>Data Type</td><td>Required</td><td>Description</td></tr><tr><td>mobile<br></td><td>String</td><td>Yes</td><td>Phone number, format (country code + phone number), for example: 8615800000000, where 86 is China's country code; do not prefix the country code with 00. 15800000000 is the real recipient phone number. 5-20 characters <strong>Supports multiple; separate multiple entries with commas</strong></td></tr><tr><td>msg</td><td>String</td><td>Yes</td><td>SMS content; length must not exceed 2000 characters</td></tr><tr><td>senderId</td><td>String</td><td>No</td><td>The sender displayed to the user after receiving the SMS. Customization is not supported domestically; supported abroad but requires prior registration and coordination with carriers. Please confirm specifics with TIG contact.</td></tr><tr><td>uid</td><td>String</td><td>No</td><td>Customer-defined batch number, within 64 characters</td></tr><tr><td>callBackUrl<br></td><td>String</td><td>No</td><td>Callback URL for status receipts. Please provide the full address including the http protocol header. If not provided, default is empty. Do not include spaces, as that will cause push address errors. The address can be provided via the API parameter or configured manually in the console.</td></tr></tbody></table>

#### **Request Example (verification code)**

```json
{
  "msg": "ongratulations! Your application has been approved. ",
  "mobile": "13800138000,13900139000",
  "senderId": "10690000",
  "uid": "ORDER_20251104_001",
  "callBackUrl": "https://api.example.com/callback/sms"
}
```

#### **Response Example**

```json

{
    "code": "0",
    "message": "Submission successful",
    "data": {
        "messageId": "162575412960104448"
    }
}
```

## Status Report<br>

<mark style="color:red;">To be supplemented</mark>

## Error Code

### API Response Code

<table><thead><tr><th width="204.015625">Status Code</th><th>Description</th></tr></thead><tbody><tr><td>0</td><td>Submission Successful</td></tr><tr><td>101</td><td>Account Does Not Exist</td></tr><tr><td>102</td><td>Incorrect Password</td></tr><tr><td>103</td><td>Pull count format error</td></tr><tr><td>104</td><td>Pull count not within range</td></tr><tr><td>105</td><td>Batch number exceeds 128 bits</td></tr><tr><td>106</td><td>SMS content length error (>3000)</td></tr><tr><td>108</td><td>Phone number format error (>20 or &#x3C;5)</td></tr><tr><td>109</td><td>Incorrect number of phone numbers</td></tr><tr><td>112</td><td>Product configuration error</td></tr><tr><td>114</td><td>Request IP does not match bound IP</td></tr><tr><td>115</td><td>Domestic SMS permission not enabled</td></tr><tr><td>116</td><td>Account deleted or disabled</td></tr><tr><td>117</td><td>Access number length exceeds 20 characters</td></tr><tr><td>119</td><td>Account not on current node</td></tr><tr><td>123</td><td>SMS content cannot be empty</td></tr><tr><td>124</td><td>Synopsis or verification code cannot be empty</td></tr><tr><td>125</td><td>A specific customer's phone number cannot exceed ten times per day</td></tr><tr><td>128</td><td>Account length error (>50 or &#x3C;=0)</td></tr><tr><td>129</td><td>Product price configuration error</td></tr><tr><td>130</td><td>Unknown Exception</td></tr><tr><td>131</td><td>Exceeded daily sending limit</td></tr><tr><td>132</td><td>Exceeded monthly sending limit</td></tr><tr><td>133</td><td>Exceeded sending limit</td></tr><tr><td>134</td><td>Exceeded anti-complaint limit</td></tr><tr><td>150</td><td>Sub-account attached billing configuration error</td></tr><tr><td>151</td><td>Quoted country not enabled</td></tr><tr><td>152</td><td>Product account quote does not exist</td></tr><tr><td>153</td><td>Main account for attached billing does not exist</td></tr><tr><td>154</td><td>Product account billing method does not exist</td></tr><tr><td>155</td><td>Account has not enabled unified billing</td></tr><tr><td>156</td><td>Product account disabled</td></tr><tr><td>157</td><td>Insufficient account balance</td></tr><tr><td>158</td><td>Insufficient credit limit</td></tr><tr><td>159</td><td>Customer has not enabled unified wallet</td></tr></tbody></table>

### Status Report Error Codes

| Status Code | Description                              |
| ----------- | ---------------------------------------- |
| DELIVRD     | SMS sent successfully                    |
| UNKNOWN     | Unknown SMS status                       |
| REJECTD     | SMS was rejected by the message center   |
| MBBLACK     | Destination number is a blacklist number |
| SM11        | Gateway verified number format error     |
| SM12        | Our side verified number format error    |
| Other       | Gateway internal status                  |

## Billing Rules Explanation

1. International SMS does not support emoji
2. Spaces in the editor are represented as ".". If a space without "." appears, it indicates hidden code and may cause one SMS to be counted as two. Please be aware.
3. International numbers must include the corresponding country's area code, for example Chinese number 86138\*\*\*\*1234, where 86 is the China country code.
4. When sending to Chinese numbers, the SMS content must start with \[signature]. The signature content is: company or brand name, length requirement 2-80 characters; carriers require this field.
5. When sending to Chinese number ranges, content must be legal; cannot send content strictly prohibited by national laws and regulations such as real estate, invoices, immigration, etc.
6. Please include hyperlinks in the SMS content for verification. Some Android systems have hyperlink recognition issues; add spaces before and after the hyperlink.
7. Messages containing non-English characters are billed as Chinese.


# WebHook


# SMS Status Report

### Status report parameters <a href="#title_4" id="title_4"></a>

<table data-header-hidden><thead><tr><th width="157.73828125"></th><th width="133.53125"></th><th width="135.31640625"></th><th></th></tr></thead><tbody><tr><td><strong>Parameter name</strong></td><td><strong>Type</strong></td><td><strong>Required to push</strong></td><td><strong>Description</strong></td></tr><tr><td>receiver</td><td>string</td><td>yes</td><td>Username for receiving authentication; if not filled during configuration it will be empty. Contact engineering if you need to configure it</td></tr><tr><td>pswd</td><td>string</td><td>yes</td><td>Password for receiving authentication; if not filled during configuration it will be empty. Contact engineering if you need to configure it</td></tr><tr><td>msgid</td><td>string</td><td>yes</td><td>msgid returned by the API when submitting the SMS</td></tr><tr><td>batchSeq</td><td>string</td><td>yes</td><td>Batch number</td></tr><tr><td>uid</td><td>string</td><td>yes</td><td>The uid the client provided to us when submitting the SMS; if not provided, it will be our batchSeq</td></tr><tr><td>reportTime</td><td>string</td><td>yes</td><td>Status report time returned by the gateway platform, in timestamp format</td></tr><tr><td>notifyTime</td><td>string</td><td>yes</td><td>The time we push the status report. Timestamp format</td></tr><tr><td>requestTime</td><td>string</td><td>yes</td><td>Time the SMS was submitted, mainland China 24-hour format. Time the SMS was submitted, timestamp format.</td></tr><tr><td>mobile</td><td>string</td><td>yes</td><td>Mobile number receiving the SMS — the number in the pushed report. The pushed format is the original phone number used when submitting the SMS; for example, if the submitted number included a leading 00 country code, the receipt push will also include 00.</td></tr><tr><td>status</td><td>string</td><td>yes</td><td>SMS delivery status. "DELIVRD" means delivered successfully; all others are failures. See status report codes for specific meanings</td></tr><tr><td>currency</td><td>string</td><td>yes</td><td>Currency</td></tr><tr><td>smsNum</td><td>string</td><td>yes</td><td>Chargeable message count</td></tr><tr><td>unitPrice</td><td>string</td><td>yes</td><td>Unit price, price per single message.</td></tr><tr><td>fee</td><td>string</td><td>yes</td><td>Fee (RMB). The fee consumed by messages for this number = smsNum * sellingPrice</td></tr><tr><td>accessNumber</td><td>string</td><td>yes</td><td>Access number</td></tr><tr><td>countryNumber</td><td>string</td><td>yes</td><td>Country code of the mobile number</td></tr><tr><td>regionCode</td><td>string</td><td>yes</td><td>Region code of the mobile number</td></tr><tr><td>mnoName</td><td>string</td><td>yes</td><td>Name of the mobile network operator for the mobile number</td></tr><tr><td>mcc</td><td>string</td><td>yes</td><td>MCC of the mobile network operator for the mobile number</td></tr><tr><td>mnc</td><td>string</td><td>yes</td><td>MCC of the mobile network operator for the mobile number</td></tr></tbody></table>

### **Example response message**

```json
{
    "batchSeq": "I8393346_2506101652_35",
    "unitPrice": "0.05670",
    "countryNumber": "0086",
    "mnc": "2",
    "receiver": "account",
    "pswd": "password",
    "mnoName": "China Mobile",
    "notifyTime": "1749545540975",
    "fee": "0.0567",
    "mobile": "8618888888888",
    "msgid": "627239445736452096",
    "mcc": "460",
    "requestTime": "1749545538198",
    "uid": "I8393346_2506101652_35",
    "regionCode": "CN",
    "accessNumber": "508tongdao",
    "currency": "CNY",
    "status": "DELIVRD",
    "reportTime": "1749545540967",
    "smsNum": "1"
}
```


# WhatsApp Business API

The InnoPaaS platform provides enterprise customers with integrated support for sending Meta WhatsApp messages and offers unified API interface technical support. The unified data encoding format for this protocol is UTF-8. The interface uses HTTPS, and the TLS protocol version is >=1.2. User authentication for the interface uses Authorization in the request header; see 2.1 Common Request Headers for details.

## Interface signature verification

Please read[InnoPaaS API Getting Started Guide](/api-reference/api-reference-en)

## Glossary

<table data-header-hidden><thead><tr><th width="224.03515625"></th><th></th></tr></thead><tbody><tr><td>Name</td><td>Description</td></tr><tr><td>Authorization</td><td>Application access authorization token, verified using JWT</td></tr><tr><td>appKey</td><td>ApiKey, created and viewed in Developer Tools - Application Management (API Keys)</td></tr><tr><td>wabaId</td><td>ID of the WhatsApp Business account</td></tr><tr><td>messageType</td><td>Message type</td></tr><tr><td>sendNumber</td><td>The number bound to the WhatsApp Business account, the mobile number displayed in WhatsApp messages</td></tr><tr><td>recipientNumber</td><td>Recipient's mobile number</td></tr></tbody></table>


# Message

## Send template message

#### Request API endpoint

```
POST   https://api.innopaas.com/api/whatsapp/v3/msg/submit
```

#### **Request parameters**

<table data-header-hidden><thead><tr><th width="162.14453125"></th><th width="134.14453125"></th><th width="70.72265625"></th><th width="383.58984375"></th></tr></thead><tbody><tr><td>Field</td><td>Data type</td><td>Required</td><td>Description</td></tr><tr><td>wabaId</td><td>String</td><td>Y<br></td><td>Unique identifier of the WhatsApp Business account</td></tr><tr><td>messageType</td><td>String</td><td>Y<br></td><td>Message content type: template: template <strong>(For the first send, you must use a template message to reach the user) The following types can be used within 24 hours after the user replies:</strong>text: text image: image video: video audio: audio location: location document: document sticker: sticker<em>contacts: contacts interactive: interactive message</em></td></tr><tr><td>uid</td><td>String</td><td><br></td><td>Customer batch number, no more than 32 characters</td></tr><tr><td>sendNumber</td><td>String</td><td><br></td><td>Sending number, format: country code + mobile number</td></tr><tr><td>recipientNumber<br></td><td>String</td><td><br></td><td>Receiving number, format: country code + mobile number. Multiple numbers are separated by commas, up to 1000 numbers</td></tr><tr><td>body</td><td>String</td><td><br></td><td>Message body, required when messageType=text</td></tr><tr><td>language</td><td>String</td><td><br></td><td>Message language (<strong>Language abbreviation code must be provided</strong>), see Appendix 1, Language Code List, required when messageType=template</td></tr><tr><td>templateName<br></td><td>String</td><td><br></td><td>Template name. Lowercase letters, numbers, characters, and underscores are allowed; must be unique. Required when messageType=template</td></tr><tr><td>header</td><td>Object</td><td><br></td><td>Template header information. See HeaderDto</td></tr><tr><td>bodyParams</td><td>String[]</td><td><br></td><td>Required when the template body contains variables</td></tr><tr><td>buttonParams</td><td>Object[]</td><td><br></td><td>Required when the template button type is a dynamic link. See ParameterDto</td></tr><tr><td>media</td><td>Object</td><td><br></td><td>See media message: media message</td></tr><tr><td>location</td><td>Object</td><td><br></td><td>See media message: location message</td></tr><tr><td>contacts</td><td>Object[]</td><td><br></td><td>See media message: contacts message</td></tr><tr><td>interactive</td><td>Object</td><td><br></td><td>See media message: interactive message</td></tr></tbody></table>

#### HeaderDto

<table><thead><tr><th width="107" align="center">Parameter name</th><th align="center">Type</th><th align="center">Required</th><th align="center">Note</th><th align="center">Example</th></tr></thead><tbody><tr><td align="center">type</td><td align="center">String</td><td align="center">Y</td><td align="center">Media type: text/image/video/document</td><td align="center">image</td></tr><tr><td align="center">link</td><td align="center">String</td><td align="center">N</td><td align="center">Media link, required when type is not text</td><td align="center"><a href="https://p0.itc.cn/images01/20230201/1444f46dd92a4f6c8a626b585eb52751.png">https://p0.itc.cn/images01/20230201/1444f46dd92a4f6c8a626b585eb52751.png</a></td></tr><tr><td align="center">caption</td><td align="center">String</td><td align="center">N</td><td align="center">Title, valid when type is not text</td><td align="center">Caption for the Picture</td></tr><tr><td align="center">paramValue</td><td align="center">String</td><td align="center">N</td><td align="center">Variable, valid when type=text, supports only one variable</td><td align="center">tig</td></tr></tbody></table>

#### ParameterDto

| Parameter name |  Type  | Required |                                        Note                                       |  Example  |
| :------------: | :----: | :------: | :-------------------------------------------------------------------------------: | :-------: |
|      type      | String |     Y    |                                     Fixed text                                    |    text   |
|      value     | String |     N    | If the variable value is the text on the button, it must not exceed 20 characters | chuanglan |

### **Verification code template example**

```json


{
   "wabaId": wabaId,
   "messageType": "template",
   "bodyParams": [
       "888888"
   ],
   "recipientNumber": "86******76",
   "sendNumber": "62******43",
   "templateName": "otp0001",
   "language": "zh_HK",
    "buttonParams": [
        {
            "type": "text",
            "value": "888888"
        }
    ]
}
```

### **Marketing template example**

```json


{
    "header":{
        "type":"image",
        "link":"https://www.pianshen.com/thumbs/886/535cfdc357b166dc020c70d0533d85f6.JPEG"
    },
    "bodyParams": ["Lucy"],
    "buttonParams": [
        {
            "type":"text",
            "value":"http://xxxxx?type=yHkYRww90" 
        }
    ],
    "wabaId":"110129512080522",
    "language":"en_US",
    "messageType":"template",
    "recipientNumber": "6285234567899",
    "sendNumber": "8618912123456",
    "templateName": "marketing_template"
}
```

**Response example**

```json

{
    "code": "0",
    "message": "Success",
    "data":"110129512080522" //messageId 
}
```

## Multimedia message

### **media message**

&#x20; When messageType is (image, video, audio, document), you can send media messages.

<table data-header-hidden><thead><tr><th width="120.51171875"></th><th width="101.01171875"></th><th width="90.24609375"></th><th></th></tr></thead><tbody><tr><td>Field</td><td>Data type</td><td>Required</td><td>Description</td></tr><tr><td>link</td><td>String</td><td>Yes</td><td>Resource access URL; this URL must be accessible from the public internet</td></tr><tr><td>caption</td><td>String</td><td>No</td><td>Title or description; when messageType=audio, this field cannot be filled in</td></tr><tr><td>filename</td><td>String</td><td>No</td><td>Required when messageType=document</td></tr></tbody></table>

```json
{
    "wabaId":"110129512080522",
    "recipientNumber": "6285234567899",
    "sendNumber": "8618912123456",
    "messageType": "image",
    "media":{
        "link": "https://www.pianshen.com/thumbs/886/535cfdc357b166dc020c70d0533d85f6.JPEG"
    }
}
```

### **location message**

&#x20; When messageType is location, you can send a location message.

<table data-header-hidden><thead><tr><th width="122.84765625"></th><th width="100.55859375"></th><th width="95.5390625"></th><th></th></tr></thead><tbody><tr><td>Field</td><td>Data type</td><td>Required</td><td>Description</td></tr><tr><td>latitude</td><td>String</td><td>Yes</td><td>Latitude, e.g., 31.23593</td></tr><tr><td>longitude</td><td>String</td><td>Yes</td><td>Longitude, e.g., 31.23593</td></tr><tr><td>name</td><td>String</td><td>Yes</td><td>Location name, Pizz Hut</td></tr><tr><td>address</td><td>String</td><td>Yes</td><td>Address xxxx Road No.666</td></tr></tbody></table>

```json
{
    "wabaId":"110129512080522",
    "recipientNumber": "6285234567899",
    "sendNumber": "8618912123456",
    "messageType": "location",
    "location":{
        "latitude": "-5.15161",
        "longitude":"119.41629",
        "name":"Pizza Hut",
        "address":"xxx road No.123"
    }
}
```

### **contacts message**

&#x20; When messageType is contacts, you can send a contact message.

<table data-header-hidden><thead><tr><th width="202.0859375"></th><th width="105.640625"></th><th width="68.7421875"></th><th></th></tr></thead><tbody><tr><td>Field</td><td>Data type</td><td>Required</td><td>Description</td></tr><tr><td>name</td><td>Object[]</td><td>Yes</td><td>Name</td></tr><tr><td>├─formattedName</td><td>String</td><td>Yes</td><td>Full name</td></tr><tr><td>├─firstName</td><td>String</td><td>No</td><td>Surname</td></tr><tr><td>├─lastName</td><td>String</td><td>No</td><td>Given name</td></tr><tr><td>├─middleName</td><td>String</td><td>No</td><td>Middle name</td></tr><tr><td>├─suffix</td><td>String</td><td>No</td><td>Prefix</td></tr><tr><td>├─prefix</td><td>String</td><td>No</td><td>Suffix</td></tr><tr><td>phones</td><td>Object[]</td><td>No</td><td>Mobile number</td></tr><tr><td>├─type</td><td>String</td><td>Yes</td><td>Type: HOME/WORK</td></tr><tr><td>├─phone</td><td>String</td><td>Yes</td><td>Mobile number</td></tr><tr><td>├─waID</td><td>String</td><td>Yes</td><td>Unique identifier of the WhatsApp Business account</td></tr><tr><td>org</td><td>Object[]</td><td>No</td><td>Organization/department</td></tr><tr><td>├─company</td><td>String</td><td>Yes</td><td>Company name</td></tr><tr><td>├─department</td><td>String</td><td>Yes</td><td>Department</td></tr><tr><td>├─title</td><td>String</td><td>Yes</td><td>Job title</td></tr><tr><td>addresses</td><td>Object[]</td><td>No</td><td>Address</td></tr><tr><td>├─type</td><td>String</td><td>No</td><td>Type: HOME/WORK</td></tr><tr><td>├─street</td><td>String</td><td>No</td><td>Street info: XX Street No. XX</td></tr><tr><td>├─city</td><td>String</td><td>No</td><td>City: Beijing</td></tr><tr><td>├─state</td><td>String</td><td>No</td><td>State abbreviation, Contact's State</td></tr><tr><td>├─zip</td><td>String</td><td>No</td><td>Postal code: 000001</td></tr><tr><td>├─country</td><td>String</td><td>No</td><td>Country</td></tr><tr><td>├─countryCode</td><td>String</td><td>No</td><td>Country code</td></tr><tr><td>birthday</td><td>String</td><td>No</td><td>Birthday</td></tr><tr><td>emails</td><td>Object[]</td><td>No</td><td>Email</td></tr><tr><td>├─type</td><td>String</td><td>Yes</td><td>Type: HOME/WORK</td></tr><tr><td>├─email</td><td>String</td><td>Yes</td><td>Email address<a href="mailto:xxxxx@gmail.com">xxxxx@gmail.com</a></td></tr><tr><td>urls</td><td>Object[]</td><td>No</td><td>URL</td></tr><tr><td>├─type</td><td>String</td><td>Yes</td><td>Type: HOME/WORK</td></tr><tr><td>├─url</td><td>String</td><td>Yes</td><td>URL https://www.chuanglan.com/</td></tr></tbody></table>

```json
{
    "uid": "2023052500002",//batch number optional
    "wabaId": "110129512080522",
    "messageType": "contacts",
    "recipientNumber": "8616685177612",
    "sendNumber": "8615121041046",
    "contacts": [
        {
            "addresses": [
                {
                    "street": "XX Street No. XX",
                    "city": "XX City",
                    "state": "XX State",
                    "zip": "553301",
                    "country": "cn",
                    "countryCode": "0086",
                    "type": "WORK"
                }
            ],
            "birthday": "1992-08-13",
            "emails": [
                {
                    "email": "xxx@gmail.com",
                    "type": "WORK"
                }
            ],
            "name": {
                "formattedName": "jack chen",
                "firstName": "chen",
                "lastName": "jack",
                "middleName": "jin",
                "suffix": "jack",
                "prefix": "chen"
            },
            "org": {
                "company": "Microsoft",
                "department": "R&D",
                "title": "Hello"
            },
            "phones": [
                {
                    "phone": "8616685177612",
                    "waId": "28288282",
                    "type": "work"
                }
            ],
            "urls": [
                {
                    "url": "https://www.google.com/",
                    "type": "HOME"
                }
            ]
        }
    ]
}
```

&#x20; When messageType is interactive, you can send interactive messages.

<table data-header-hidden><thead><tr><th width="170.95703125"></th><th width="105.05859375"></th><th width="70.6015625"></th><th></th></tr></thead><tbody><tr><td>Field</td><td>Data type</td><td>Required</td><td>Description</td></tr><tr><td>type</td><td>String</td><td>Yes</td><td>Interactive message types: list/button/product/product_list</td></tr><tr><td>header</td><td>String</td><td>No</td><td>Interactive message header: required for product_list type, header cannot be set for product type, optional for other types. See: InteractiveHeader</td></tr><tr><td>├─type</td><td><br></td><td><br></td><td>Media type: text/image/video/document</td></tr><tr><td>├─link</td><td><br></td><td><br></td><td>Media link, required when type is not text</td></tr><tr><td>├─caption</td><td><br></td><td><br></td><td>Title, valid when type is not text</td></tr><tr><td>├─paramValue</td><td><br></td><td><br></td><td>Variable, valid when type=text, supports only one variable</td></tr><tr><td>body</td><td><br></td><td>Yes</td><td>Optional when type is product, required for other message types. See: Body</td></tr><tr><td>├─text</td><td><br></td><td><br></td><td>Text content</td></tr><tr><td>footer</td><td><br></td><td>No</td><td>Footer, see: Footer</td></tr><tr><td>├─text</td><td><br></td><td><br></td><td>Text content</td></tr><tr><td>action</td><td><br></td><td>Yes</td><td>Action</td></tr><tr><td>├─catalogId</td><td><br></td><td><br></td><td>Required when type=product/product_type: the unique identifier of the Facebook catalog linked to your WhatsApp Business account. This ID can be retrieved through Commerce Manager</td></tr><tr><td>├─productRetailerId</td><td><br></td><td><br></td><td>Required when type=product/product_type: the unique identifier of the product in the catalog. Single-product and multi-product messages, up to 100 characters.</td></tr><tr><td>├─buttons</td><td><br></td><td><br></td><td>Button object: see: Button</td></tr><tr><td>├─button</td><td><br></td><td><br></td><td>Button content: required when type=list, cannot be an empty string</td></tr><tr><td>├─sections</td><td><br></td><td><br></td><td>Required for list messages (type=list) and multi-product messages (type=product_list). See: Section</td></tr></tbody></table>

&#x20; Button parameters

<table data-header-hidden><thead><tr><th width="120.5390625"></th><th width="124.36328125"></th><th width="92.6484375"></th><th></th></tr></thead><tbody><tr><td>Field</td><td>Data type</td><td>Required</td><td>Description</td></tr><tr><td>type</td><td>String</td><td>Yes</td><td>Button type: current available value: reply</td></tr><tr><td>title</td><td>String</td><td>Yes</td><td>Button title: cannot be an empty string, must be unique within the current message, supports emoji, does not support markdown. Maximum length: 20 characters</td></tr><tr><td>id</td><td>String</td><td>Yes</td><td>Unique identifier of the button. When the user clicks the button, this ID is returned in the webhook. Maximum length: 256 characters</td></tr></tbody></table>

&#x20; sections parameters

<table data-header-hidden><thead><tr><th width="137.57421875"></th><th width="103.6328125"></th><th width="93.6875"></th><th></th></tr></thead><tbody><tr><td>Field</td><td>Data type</td><td>Required</td><td>Description</td></tr><tr><td>title</td><td>String</td><td>No</td><td>Section title: required when there is more than one section in the message; maximum 24 characters</td></tr><tr><td>rows</td><td>String</td><td>No</td><td>Required when the message type is list, a list object of Row, up to 10. See: Row</td></tr><tr><td>productItems</td><td>String</td><td>No</td><td>Required when type=product_list, an array of product objects. Each section must have at least 1 product, and all sections can have up to 30 products. See: ProductItem</td></tr></tbody></table>

&#x20; Row parameters

<table data-header-hidden><thead><tr><th width="134.65234375"></th><th width="107.96875"></th><th width="105.42578125"></th><th></th></tr></thead><tbody><tr><td>Field</td><td>Data type</td><td>Required</td><td>Description</td></tr><tr><td>title</td><td>String</td><td>Yes</td><td>Title: maximum length 24 characters</td></tr><tr><td>id</td><td>String</td><td>Yes</td><td>Unique ID identifier, maximum length 200 characters</td></tr><tr><td>description</td><td>String</td><td>No</td><td>Description</td></tr></tbody></table>

&#x20; ProductItem parameters

| Field             | Data type | Required | Description                                     |
| ----------------- | --------- | -------- | ----------------------------------------------- |
| productRetailerId | String    | Yes      | Unique identifier of the product in the catalog |

<br>

```json
{
    "uid": "2023052500002",
    "wabaId": "110129512080523",
    "messageType": "interactive",
    "recipientNumber": "8616685177612",
    "sendNumber": "8615121041046",
    "interactive": {
        "type": "list",
        "header": {
            "type": "text",
            "text": "5G Message header"
        },
        "body": {
            "text": "meta Message Text "
        },
        "footer": {
            "text": "meta Message Text Footer"
        },
        "action": {
            "button": "button name",
            "sections": [
                {
                    "title": "meta Message Title1",
                    "rows": [
                        {
                            "id": "20230524001",
                            "title": "title1",
                            "description": "some description"
                        },
                        {
                            "id": "20230524002",
                            "title": "title12",
                            "description": "some description"
                        }
                    ]
                },
                {
                    "title": "meta Message Title2",
                    "rows": [
                        {
                            "id": "20230524003",
                            "title": "title text",
                            "description": "some description"
                        },
                        {
                            "id": "20230524004",
                            "title": "title text1",
                            "description": "some description"
                        }
                    ]
                }
            ]
        }
    }
}
```

## Send MMLite message

&#x20; **MMLite can only be used after authorizing MMLite API permissions, and it only supports sending template marketing messages**

#### &#x20; **Request API endpoint**

```
POST   https://api.innopaas.com/api/whatsapp/v3/lite/submit
```

#### &#x20;  **Request parameters**

<table data-header-hidden><thead><tr><th width="162.9921875"></th><th width="106.80078125"></th><th width="70.18359375"></th><th></th></tr></thead><tbody><tr><td>Field</td><td>Data type</td><td>Required</td><td>Description</td></tr><tr><td>wabaId</td><td>String</td><td><br></td><td>Unique identifier of the WhatsApp Business account</td></tr><tr><td>messageType</td><td>String</td><td><br></td><td>Message content type: template: template</td></tr><tr><td>uid</td><td>String</td><td><br></td><td>Customer batch number, no more than 32 characters</td></tr><tr><td>sendNumber</td><td>String</td><td><br></td><td>Sending number, format: country code + mobile number</td></tr><tr><td>recipientNumber<br></td><td>String</td><td><br></td><td>Receiving number, format: country code + mobile number. Multiple numbers are separated by commas, up to 1000 numbers</td></tr><tr><td>body</td><td>String</td><td><br></td><td>Message body, required when messageType=text</td></tr><tr><td>language</td><td>String</td><td><br></td><td>Message language (<strong>Language abbreviation code must be provided</strong>), see Appendix 1, Language Code List, required when messageType=template</td></tr><tr><td>templateName<br></td><td>String</td><td><br></td><td>Template name. Lowercase letters, numbers, characters, and underscores are allowed; must be unique. Required when messageType=template</td></tr><tr><td>header</td><td>Object</td><td><br></td><td>Template header information. See HeaderDto</td></tr><tr><td>bodyParams</td><td>String[]</td><td><br></td><td>Required when the template body contains variables</td></tr><tr><td>buttonParams</td><td>Object[]</td><td><br></td><td>Required when the template button type is a dynamic link. See ParameterDto</td></tr></tbody></table>

#### **Request example**

```python

{
    "header":{
        "type":"image",
        "link":"https://www.pianshen.com/thumbs/886/535cfdc357b166dc020c70d0533d85f6.JPEG"
    },
    "bodyParams": ["Lucy"],
    "buttonParams": [
        {
            "type":"text",
            "value":"http://xxxxx?type=yHkYRww90" 
        }
    ],
    "wabaId":"110129512080522",
    "language":"en_US",
    "messageType":"template",
    "recipientNumber": "6285234567899",
    "sendNumber": "8618912123456",
    "templateName": "marketing_template"
}
```

#### **Response example**

```json

{
    "code": "0",
    "message": "Success",
    "data":"110129512080522" //messageId 
}
```


# Template (Asynchronous)

## Create template

**Request API address**

```
POST    https://api.innopaas.com/api/whatsapp/v3/template/submit
```

#### &#x20;**Request parameters**

<table data-header-hidden><thead><tr><th width="243.87109375"></th><th width="111.06640625"></th><th width="70.15234375"></th><th width="342.91796875"></th></tr></thead><tbody><tr><td>Field</td><td>Data type</td><td>Required</td><td>Description</td></tr><tr><td>wabaId</td><td>String</td><td>Yes</td><td>Unique identifier of the WhatsApp business account</td></tr><tr><td>name</td><td>String</td><td>Yes</td><td>Template name: (eg:limited_time_offer_tuscan_getaway_2023) composed of lowercase letters, numbers, and underscores, field limit is 512 characters.</td></tr><tr><td>category</td><td>String</td><td>Yes</td><td>Template type: 1-MARKETING,2-AUTHENTICATION,3-UTILITY</td></tr><tr><td>messageLanguage</td><td>String</td><td>Yes</td><td>Template-supported language, (<strong>Language abbreviation code needs to be passed</strong>)Please refer to Appendix 1</td></tr><tr><td>headerType</td><td>Integer</td><td>Yes</td><td>Whether multimedia is supported, default 1, 1:None, 2:Text, 3:Image, 4:Video, 5:Document</td></tr><tr><td>caption</td><td>String</td><td>No</td><td><strong>Header content:</strong>Field limited to characters (for multimedia templates, this field is empty), dynamic parameter format {{1}}</td></tr><tr><td>messageBody</td><td>String</td><td>No</td><td><strong>Body content:</strong>Field limited to 1024 characters. Dynamic parameter format {{1}}{{2}}, inserted in order from front to back</td></tr><tr><td>footer</td><td>String</td><td>No</td><td><strong>Footer content:</strong>Field limited to 60 characters (for AUTHENTICATION templates, this field indicates the expiration time, optional, expiration time limited to within 90 minutes)</td></tr><tr><td>safetyAdvice</td><td>Integer</td><td>No</td><td>Whether to add safety advice to the AUTHENTICATION template (0: do not add, 1: add), optional. If not added, display: *{{1}}* is your verification code. After adding, display: *{{1}}* is your verification code. For safety, please do not share this verification code.</td></tr><tr><td>buttons</td><td>Object[]</td><td>No</td><td>The total number of buttons does not exceed 10</td></tr><tr><td>├─actionType<br></td><td>String</td><td><br></td><td>Button type 1-quick reply,2-visit website,3-call phone number,4-copy code(category is 2),5-auto fill (category is 2)</td></tr><tr><td>├─label</td><td>String</td><td><br></td><td>Button text</td></tr><tr><td>├─ phoneArea</td><td>String</td><td><br></td><td>Phone area code (eg:86)</td></tr><tr><td>├─ phone</td><td>String</td><td><br></td><td>Phone number (eg:18877776666)</td></tr><tr><td>├─packageName</td><td>String</td><td><br></td><td><strong>Application package name</strong><br>Template type is:AUTHENTICATION,<br><mark style="color:$danger;">actionType=5</mark> Required when</td></tr><tr><td>├─sigNatureHash</td><td>String</td><td><br></td><td><strong>Application hash</strong><br>Template type is:AUTHENTICATION,<br><mark style="color:$danger;">actionType=5</mark>Required when</td></tr><tr><td>├─ autoFill</td><td>String</td><td><br></td><td><strong>Auto fill</strong><br>Template type is:AUTHENTICATION,<br><mark style="color:$danger;">actionType=5</mark>Required when</td></tr><tr><td>├─ zeroTapTermsAccepted</td><td>boolean</td><td></td><td><strong>Accept fill terms</strong><br>Template type is:AUTHENTICATION,<br><mark style="color:$danger;">actionType=5</mark>Required when<code>true</code></td></tr><tr><td>├─ targetUrl</td><td>String</td><td><br></td><td>Website URL access (eg："<a href="https://www.chuanglan.com/">https://www.chuanglan.com/</a>{{1}}") only supports one dynamic parameter, format {{1}}</td></tr><tr><td>├─buttonExample</td><td>Array</td><td><br></td><td>Button variable example (eg："buttonExample": ["<a href="https://www.chuanglan.com/whatsApp">https://www.chuanglan.com/whatsApp</a>"]) required when the URL contains variables; the variable content must be a complete URL</td></tr><tr><td>headerExample</td><td>Objec</td><td>No</td><td><br></td></tr><tr><td>├─ header_handle</td><td>Array</td><td><br></td><td>Multimedia template variable (eg："header_handle": ["4::axxxx"]) For multimedia templates, fill in the handle returned when the file is uploaded</td></tr><tr><td>├─ header_link</td><td>String</td><td></td><td>Resource address URL, must be accessible from the external network,<mark style="color:$danger;">Choose one of header_link and header_handle; when header_link is not empty, header_handle will be replaced</mark></td></tr><tr><td>├─ header_text</td><td>Array</td><td><br></td><td>Plain text template variable (eg："header_text": ["创蓝云智"]) Text dynamic parameter template variable, the number of dynamic parameters is limited to 1</td></tr><tr><td>bodyExample</td><td>Object</td><td>No</td><td><br></td></tr><tr><td>├─ body_text</td><td>Array</td><td><br></td><td>body variable (eg: "body_text":[["variable1","variable2"]]) The example variables correspond to the variables in order, variable {{1}} corresponds to variable1, and so on</td></tr></tbody></table>

#### **Request example**

```json
{
    "name": "transland_marketing_promotion_6",
    "category": "1",
    "messageLanguage": "zh_CN",
    "headerType":2,
    "caption": "Transland API Account {{1}} Opened",
    "messageBody": "Dear customer {{1}}，your SMS API account {{2}} is avaliable, please rember the secret of this account. The secret is sent via email.",
    "footer": "Have a nice sms experience.",
    "buttonType":2,
    "headerExample": {
        "header_text": [
            "II2024089"
        ]
    },
    "bodyExample": {
        "body_text": [
            [
                "Tom",
                "II2024089"
            ]
        ]
    },
    "wabaId": "121009624329108",
    "buttons": [
        {
            "actionType": 1,
            "label": "Call Us",
            "phone": "+8615121041046"
        },
        {
            "actionType": 2,
            "label": "Websit",
            "targetUrl": "https://www.chuanglan.com/{{1}}",
            "buttonExample": [
                "https://www.chuanglan.com/document"
            ]
        }
    ]
}
```

#### **Response example**

```json

{
    "code": "0",
    "message": "Success",
    "data": "1399631517488334"
}
```

## Update template

#### **Request API address**

```
POST     https://api.innopaas.com/api/whatsapp/v3/template/update
```

#### **Request parameters**

<table data-header-hidden><thead><tr><th width="167.71484375"></th><th width="118.70703125"></th><th width="91.27734375"></th><th></th></tr></thead><tbody><tr><td>Field</td><td>Data type</td><td>Required</td><td>Description</td></tr><tr><td>templateId</td><td>String</td><td>Yes</td><td>Template ID</td></tr><tr><td>wabaId</td><td>String</td><td><del>Yes</del></td><td>Unique identifier of the WhatsApp business account</td></tr><tr><td>name</td><td>String</td><td>Yes</td><td>Template name: (eg:limited_time_offer_tuscan_getaway_2023) composed of lowercase letters, numbers, and underscores, field limit is 512 characters.</td></tr><tr><td>category</td><td>String</td><td>Yes</td><td>Template type: 1-MARKETING,2-AUTHENTICATION,3-UTILITY</td></tr><tr><td>messageLanguage</td><td>String</td><td>Yes</td><td>Template-supported language:(<strong>Language abbreviation code needs to be passed</strong>)Please refer to Appendix 1</td></tr><tr><td>headerType</td><td>Integer</td><td>Yes</td><td>Whether multimedia is supported, default 1, 1:None, 2:Text, 3:Image, 4:Video, 5:Document</td></tr><tr><td>caption</td><td>String</td><td>No</td><td><strong>Header content:</strong>Field limited to characters (for multimedia templates, this field is empty), dynamic parameter format {{1}}</td></tr><tr><td>messageBody</td><td>String</td><td>No</td><td><strong>Body content:</strong>Field limited to 1024 characters. Dynamic parameter format {{1}}{{2}}, inserted in order from front to back</td></tr><tr><td>footer</td><td>String</td><td>No</td><td><strong>Footer content:</strong>Field limited to 60 characters (for AUTHENTICATION templates, this field indicates the expiration time, optional, expiration time limited to within 90 minutes)</td></tr><tr><td>safetyAdvice</td><td>Integer</td><td>No</td><td>Whether to add safety advice to the AUTHENTICATION template (0: do not add, 1: add), optional. If not added, display: *{{1}}* is your verification code. After adding, display: *{{1}}* is your verification code. For safety, please do not share this verification code.</td></tr><tr><td>buttons</td><td>Object[]</td><td>No</td><td>The total number of buttons does not exceed 10</td></tr><tr><td>├─actionType</td><td>String</td><td><br></td><td>Button type 1-quick reply,2-visit website,3-call phone number,4-copy code(category is 2),5-auto fill (category is 2)</td></tr><tr><td>├─label</td><td>String</td><td><br></td><td>Button text</td></tr><tr><td>├─ phoneArea</td><td>String</td><td><br></td><td>Phone area code (eg:86)</td></tr><tr><td>├─ phone</td><td>String</td><td><br></td><td>Phone number (eg:18877776666)</td></tr><tr><td>├─packageName</td><td>String</td><td><br></td><td><strong>Application package name,</strong>Template type is AUTHENTICATION, optional</td></tr><tr><td>├─signatureHash</td><td>String</td><td><br></td><td><strong>Application hash,</strong>Template type is AUTHENTICATION, optional</td></tr><tr><td>├─ autoFill</td><td>String</td><td><br></td><td><strong>Auto fill,</strong>Template type is AUTHENTICATION, optional</td></tr><tr><td>├─ targetUrl</td><td>String</td><td><br></td><td>Website URL access (eg："<a href="https://www.chuanglan.com/">https://www.chuanglan.com/</a>{{1}}") only supports one dynamic parameter, format {{1}}</td></tr><tr><td>├─buttonExample</td><td>Array</td><td><br></td><td>Button variable example (eg："buttonExample": ["<a href="https://www.chuanglan.com/whatsApp">https://www.chuanglan.com/whatsApp</a>"]) required when the URL contains variables; the variable content must be a complete URL</td></tr><tr><td>headerExample</td><td>Object[]</td><td>No</td><td><br></td></tr><tr><td>├─ header_handle</td><td>Array</td><td><br></td><td>Multimedia template variable (eg："header_handle": ["4::axxxx"]) For multimedia templates, fill in the handle returned when the file is uploaded</td></tr><tr><td>├─ header_link</td><td>String</td><td></td><td>Resource address URL, must be accessible from the external network,<mark style="color:$danger;">Choose one of header_link and header_handle; when header_link is not empty, header_handle will be replaced</mark></td></tr><tr><td>├─ header_text</td><td>Array</td><td><br></td><td>Plain text template variable (eg："header_text": ["创蓝云智"]) Text dynamic parameter template variable, the number of dynamic parameters is limited to 1</td></tr><tr><td>bodyExample</td><td>Object[]</td><td>No</td><td><br></td></tr><tr><td>├─ body_text</td><td>Array</td><td><br></td><td>body variable (eg: "body_text":[["variable1","variable2"]]) The example variables correspond to the variables in order, variable {{1}} corresponds to variable1, and so on</td></tr></tbody></table>

#### **Request example**

```json

{   "templateId":"123123123123213",
    "name": "transland_marketing_promotion_6",
    "category": "1",
    "messageLanguage": "zh_CN",
    "headerType":2,
    "caption": "Transland API Account {{1}} Opened",
    "messageBody": "Dear customer {{1}}，your SMS API account {{2}} is avaliable, please rember the secret of this account. The secret is sent via email.",
    "footer": "Have a nice sms experience.",
    "buttonType":2,
    "headerExample": {
        "header_text": [
            "II2024089"
        ]
    },
    "bodyExample": {
        "body_text": [
            [
                "Tom",
                "II2024089"
            ]
        ]
    },
    "wabaId": "121009624329108",
    "buttons": [
        {
            "actionType": 1,
            "label": "Call Us",
            "phone": "+8615121041046"
        },
        {
            "actionType": 2,
            "label": "Websit",
            "targetUrl": "https://www.chuanglan.com/{{1}}",
            "buttonExample": [
                "https://www.chuanglan.com/document"
            ]
        }
    ]
}
```

#### **Response example**

```json

{
    "code": "0",
    "message": "Success",
    "data": "1399631517488334"
}
```

## Template list

#### **Request API address**

```
POST    https://api.innopaas.com/api/whatsapp/v3/template/list
```

#### Request parameters

| Field           | Data type | Required | Description                                                               |
| --------------- | --------- | -------- | ------------------------------------------------------------------------- |
| page            | Integer   | Yes      | Page number                                                               |
| size            | Integer   | Yes      | Number of entries returned per page                                       |
| wabaId          | String    | Yes      | Unique identifier of the WhatsApp business account                        |
| name            | String    | No       | Template name                                                             |
| templateId      | String    | No       | Template ID                                                               |
| category        | list      | No       | Template type 1-MARKETING,2-AUTHENTICATION,3-UTILITY                      |
| messageLanguage | list      | No       | Template language (eg:en)                                                 |
| auditStatus     | list      | No       | Template status 1: Pending, 2: Approved 3: Rejected 4: Paused 5: Disabled |

#### Request example code

```json
{
    "page":1,
    "size":100
    "name": "transland_marketing_promotion_01"
    "wabaId": "100853739759190"
}

```

#### Response example

```json

{
    "code": "0",
    "message": "Success",
    "data": {
        "total": 1,
        "pages": 1,
        "list": [
            {
                "updateDate": "2023-10-16 19:09:45",
                "bodyExample": {
                    "body_text": [
                        [
                            "Tom",
                            "II2024089"
                        ]
                    ]
                },
                "buttons": [
                    {
                        "actionType": 3,
                        "phone": "15121041046",
                        "phoneArea": "86",
                        "label": "Call Us"
                    },
                    {
                        "actionType": 2,
                        "buttonExample": [
                            "\"https://www.chuanglan.com/document\""
                        ],
                        "label": "Websit",
                        "targetUrl": "https://www.chuanglan.com/{{1}}"
                    }
                ],
                "messageBody": "Dear customer {{1}}，your SMS API account {{2}} is avaliable, please rember the secret of this account. The secret is sent via email.",
                "footer": "Have a nice sms experience.",
                "messageLanguage": "zh_CN",
                "caption": "Transland API Account {{1}} Opened",
                "updateUser": "",
                "source": 1,
                "delFlag": 0,
                "templateId": "FCFD7669C142497684F090203F88AE98",
                "customerName": "CXQTest20230426",
                "sid": "634562468792622",
                "headerExample": {
                    "header_text": [
                        "II2024089"
                    ]
                },
                "wabaId": "wabaId",
                "name": "transland_marketing_promotion_01",
                "auditStatus": 2,
                "headerType": 2,
                "createUser": "",
                "id": 194,
                "category": 1,
                "createDate": "2023-10-16 19:09:45",
                "safetyAdvice": 0
            }
        ]
    }
}

```

## Delete template

**Request API address**

```
POST https://api.innopaas.com/api/whatsapp/v3/template/delete
```

**API description:**

Request parameters

<table><thead><tr><th width="111">Name</th><th width="104">Type</th><th width="80">Required</th><th>Remarks</th><th>Other information</th></tr></thead><tbody><tr><td>wabaId</td><td>string</td><td>Required</td><td>Unique identifier of the WhatsApp business account</td><td></td></tr><tr><td>id</td><td>integer</td><td></td><td>Template primary key ID</td><td>At least one of id/templateId must be passed</td></tr><tr><td>templateId</td><td>string</td><td></td><td>Template ID</td><td>At least one of id/templateId must be passed</td></tr></tbody></table>

Return parameters

<table><thead><tr><th>Name</th><th>Type</th><th>Required</th><th>Default value</th><th width="98">Remarks</th><th>Other information</th></tr></thead><tbody><tr><td>code</td><td>integer</td><td>Required</td><td></td><td></td><td>0: Success<br>Others: Failure</td></tr><tr><td>data</td><td>object</td><td>Required</td><td></td><td></td><td></td></tr><tr><td>message</td><td>string</td><td>Required</td><td></td><td></td><td></td></tr></tbody></table>

<br>


# Template (Synchronous)

## Create Template

**Request Endpoint URL**

```
POST    https://api.innopaas.com/api/whatsapp/v3/waba/template/submit
```

#### &#x20;**Request Parameters**

<table data-header-hidden><thead><tr><th width="243.87109375"></th><th width="111.06640625"></th><th width="70.15234375"></th><th></th></tr></thead><tbody><tr><td>Field</td><td>Data Type</td><td>Required</td><td>Description</td></tr><tr><td>wabaId</td><td>String</td><td>Yes</td><td>Unique identifier for the WhatsApp Business account</td></tr><tr><td>name</td><td>String</td><td>Yes</td><td>Template name: (e.g.: limited_time_offer_tuscan_getaway_2023) composed of lowercase letters, numbers, and underscores; field limit is 512 characters.</td></tr><tr><td>category</td><td>String</td><td>Yes</td><td>Template type: 1-MARKETING, 2-AUTHENTICATION, 3-UTILITY</td></tr><tr><td>messageLanguage</td><td>String</td><td>Yes</td><td>Supported languages for the template, (<strong>language abbreviation code must be provided</strong>) Please refer to Appendix 1</td></tr><tr><td>headerType</td><td>Integer</td><td>Yes</td><td>Whether multimedia is supported, default 1, 1: None, 2: Text, 3: Image, 4: Video, 5: Document</td></tr><tr><td>caption</td><td>String</td><td>No</td><td><strong>Header content:</strong>Field limited to characters (for multimedia templates, this field is empty), dynamic parameter format {{1}}</td></tr><tr><td>messageBody</td><td>String</td><td>No</td><td><strong>Body content:</strong>Field limited to 1024 characters. Dynamic parameter format {{1}}{{2}}, inserted in order before and after.</td></tr><tr><td>footer</td><td>String</td><td>No</td><td><strong>Footer content:</strong>Field limited to 60 characters (for AUTHENTICATION templates, this field indicates the expiration time, optional; expiration time limited to within 90 minutes)</td></tr><tr><td>safetyAdvice</td><td>Integer</td><td>No</td><td>Whether to add a safety recommendation to the AUTHENTICATION template (0: do not add, 1: add), optional. If not added, displays: *{{1}}* is your verification code. If added, displays: *{{1}}* is your verification code. For safety, please do not share this verification code.</td></tr><tr><td>buttons</td><td>Object[]</td><td>No</td><td>The total number of buttons cannot exceed 10</td></tr><tr><td>├─actionType<br></td><td>String</td><td><br></td><td>Button type 1-quick reply, 2-visit website, 3-call phone number, 4-copy code (when category is 2), 5-auto fill (when category is 2)</td></tr><tr><td>├─label</td><td>String</td><td><br></td><td>Button text</td></tr><tr><td>├─ phoneArea</td><td>String</td><td><br></td><td>Area code (e.g.: 86)</td></tr><tr><td>├─ phone</td><td>String</td><td><br></td><td>Number (e.g.: 18877776666)</td></tr><tr><td>├─packageName</td><td>String</td><td><br></td><td><strong>Application package name,</strong>Required when template type is AUTHENTICATION and actionType = 5</td></tr><tr><td>├─sigNatureHash</td><td>String</td><td><br></td><td><strong>Application hash signature,</strong>Required when template type is AUTHENTICATION and actionType = 5</td></tr><tr><td>├─ autoFill</td><td>String</td><td><br></td><td><strong>Auto fill,</strong>Required when template type is AUTHENTICATION and actionType = 5</td></tr><tr><td>├─ zeroTapTermsAccepted</td><td>boolean</td><td></td><td><strong>Accept the autofill terms,</strong>Required when template type is AUTHENTICATION and actionType = 5, and<code>true</code></td></tr><tr><td>├─ targetUrl</td><td>String</td><td><br></td><td>Website access (e.g.: "<a href="https://www.chuanglan.com/">https://www.chuanglan.com/</a>{{1}}") Only one dynamic parameter is supported, format {{1}}</td></tr><tr><td>├─buttonExample</td><td>Array</td><td><br></td><td>Button variable example (e.g.: "buttonExample": ["<a href="https://www.chuanglan.com/whatsApp">https://www.chuanglan.com/whatsApp</a>"]) Required when website access contains variables; the variable content must be the complete URL</td></tr><tr><td>headerExample</td><td>Object</td><td>No</td><td><br></td></tr><tr><td>├─ header_handle</td><td>Array</td><td><br></td><td>Multimedia template variable (e.g.: "header_handle": ["4::axxxx"]); for multimedia templates, fill in the handle content returned when the file is uploaded</td></tr><tr><td>├─ header_link</td><td>String</td><td></td><td>Resource URL, must be accessible from the public internet,<mark style="color:$danger;">Choose either header_link or header_handle; when header_link is not empty, header_handle will be replaced</mark></td></tr><tr><td>├─ header_text</td><td>Array</td><td><br></td><td>Plain-text template variable (e.g.: "header_text": ["Chuanglan Cloud Intelligence"]); text dynamic parameter template variable, limited to 1 parameter</td></tr><tr><td>bodyExample</td><td>Object</td><td>No</td><td><br></td></tr><tr><td>├─ body_text</td><td>Array</td><td><br></td><td>Body variables (e.g.: "body_text":[["variable1","variable2"]]) The example variables correspond to the actual variables in order; variable {{1}} corresponds to variable1, and so on</td></tr></tbody></table>

#### **Request Example**

```json
{
    "name": "transland_marketing_promotion_6",
    "category": "1",
    "messageLanguage": "zh_CN",
    "headerType":2,
    "caption": "Transland API Account {{1}} Opened",
    "messageBody": "Dear customer {{1}}，your SMS API account {{2}} is avaliable, please rember the secret of this account. The secret is sent via email.",
    "footer": "Have a nice sms experience.",
    "buttonType":2,
    "headerExample": {
        "header_text": [
            "II2024089"
        ]
    },
    "bodyExample": {
        "body_text": [
            [
                "Tom",
                "II2024089"
            ]
        ]
    },
    "wabaId": "121009624329108",
    "buttons": [
        {
            "actionType": 1,
            "label": "Call Us",
            "phone": "+8615121041046"
        },
        {
            "actionType": 2,
            "label": "Website",
            "targetUrl": "https://www.chuanglan.com/{{1}}",
            "buttonExample": [
                "https://www.chuanglan.com/document"
            ]
        }
    ]
}
```

#### **Response Example**

```json
{
    "code": "0",
    "success": true,
    "message": "Operation successful",
    "data": {
        "templateId": "E71A3EC81A494CF480C8014857C0FC16", // templateId of the template
        "auditStatus": 2  //  0: To be submitted, 1: Under review, 2: Approved, 3: Rejected, 4: Paused, 5: Disabled, 6: Deleted
    }
}
```

```json
{
    "code": "2388024",
    "success": false,
    "message": "This template already has Indonesian content. You can create a new template and try again.",
    "data": null
}
```

## Modify Template

#### **Request Endpoint URL**

```
POST     https://api.innopaas.com/api/whatsapp/v3/waba/template/update
```

#### **Request Parameters**

| Field             | Data Type | Required    | Description                                                                                                                                                                                                                                                                            |
| ----------------- | --------- | ----------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| templateId        | String    | Yes         | template ID                                                                                                                                                                                                                                                                            |
| wabaId            | String    | ~~Yes~~     | Unique identifier for the WhatsApp Business account                                                                                                                                                                                                                                    |
| name              | String    | Yes         | Template name: (e.g.: limited\_time\_offer\_tuscan\_getaway\_2023) composed of lowercase letters, numbers, and underscores; field limit is 512 characters.                                                                                                                             |
| category          | String    | Yes         | Template type: 1-MARKETING, 2-AUTHENTICATION, 3-UTILITY                                                                                                                                                                                                                                |
| messageLanguage   | String    | Yes         | Supported template languages:(**language abbreviation code must be provided**) Please refer to Appendix 1                                                                                                                                                                              |
| headerType        | Integer   | Yes         | Whether multimedia is supported, default 1, 1: None, 2: Text, 3: Image, 4: Video, 5: Document                                                                                                                                                                                          |
| caption           | String    | No          | **Header content:**&#x46;ield limited to characters (for multimedia templates, this field is empty), dynamic parameter format {{1}}                                                                                                                                                    |
| messageBody       | String    | No          | **Body content:**&#x46;ield limited to 1024 characters. Dynamic parameter format {{1}}{{2}}, inserted in order before and after.                                                                                                                                                       |
| footer            | String    | No          | **Footer content:**&#x46;ield limited to 60 characters (for AUTHENTICATION templates, this field indicates the expiration time, optional; expiration time limited to within 90 minutes)                                                                                                |
| safetyAdvice      | Integer   | No          | Whether to add a safety recommendation to the AUTHENTICATION template (0: do not add, 1: add), optional. If not added, displays: \*{{1}}\* is your verification code. If added, displays: \*{{1}}\* is your verification code. For safety, please do not share this verification code. |
| buttons           | Object\[] | No          | The total number of buttons cannot exceed 10                                                                                                                                                                                                                                           |
| ├─actionType      | String    | <p><br></p> | Button type 1-quick reply, 2-visit website, 3-call phone number, 4-copy code (when category is 2), 5-auto fill (when category is 2)                                                                                                                                                    |
| ├─label           | String    | <p><br></p> | Button text                                                                                                                                                                                                                                                                            |
| ├─ phoneArea      | String    | <p><br></p> | Area code (e.g.: 86)                                                                                                                                                                                                                                                                   |
| ├─ phone          | String    | <p><br></p> | Number (e.g.: 18877776666)                                                                                                                                                                                                                                                             |
| ├─packageName     | String    | <p><br></p> | **Application package name,**&#x4F;ptional for AUTHENTICATION templates                                                                                                                                                                                                                |
| ├─signatureHash   | String    | <p><br></p> | **Application hash signature,**&#x4F;ptional for AUTHENTICATION templates                                                                                                                                                                                                              |
| ├─ autoFill       | String    | <p><br></p> | **Auto fill,**&#x4F;ptional for AUTHENTICATION templates                                                                                                                                                                                                                               |
| ├─ targetUrl      | String    | <p><br></p> | Website access (e.g.: "<https://www.chuanglan.com/>{{1}}") Only one dynamic parameter is supported, format {{1}}                                                                                                                                                                       |
| ├─buttonExample   | Array     | <p><br></p> | Button variable example (e.g.: "buttonExample": \["<https://www.chuanglan.com/whatsApp>"]) Required when website access contains variables; the variable content must be the complete URL                                                                                              |
| headerExample     | Object\[] | No          | <p><br></p>                                                                                                                                                                                                                                                                            |
| ├─ header\_handle | Array     | <p><br></p> | Multimedia template variable (e.g.: "header\_handle": \["4::axxxx"]); for multimedia templates, fill in the handle content returned when the file is uploaded                                                                                                                          |
| ├─ header\_link   | String    |             | Resource URL, must be accessible from the public internet,<mark style="color:$danger;">Choose either header\_link or header\_handle; when header\_link is not empty, header\_handle will be replaced</mark>                                                                            |
| ├─ header\_text   | Array     | <p><br></p> | Plain-text template variable (e.g.: "header\_text": \["Chuanglan Cloud Intelligence"]); text dynamic parameter template variable, limited to 1 parameter                                                                                                                               |
| bodyExample       | Object\[] | No          | <p><br></p>                                                                                                                                                                                                                                                                            |
| ├─ body\_text     | Array     | <p><br></p> | Body variables (e.g.: "body\_text":\[\["variable1","variable2"]]) The example variables correspond to the actual variables in order; variable {{1}} corresponds to variable1, and so on                                                                                                |

#### **Request Example**

```json

{   "templateId":"123123123123213",
    "name": "transland_marketing_promotion_6",
    "category": "1",
    "messageLanguage": "zh_CN",
    "headerType":2,
    "caption": "Transland API Account {{1}} Opened",
    "messageBody": "Dear customer {{1}}，your SMS API account {{2}} is avaliable, please rember the secret of this account. The secret is sent via email.",
    "footer": "Have a nice sms experience.",
    "buttonType":2,
    "headerExample": {
        "header_text": [
            "II2024089"
        ]
    },
    "bodyExample": {
        "body_text": [
            [
                "Tom",
                "II2024089"
            ]
        ]
    },
    "wabaId": "121009624329108",
    "buttons": [
        {
            "actionType": 1,
            "label": "Call Us",
            "phone": "+8615121041046"
        },
        {
            "actionType": 2,
            "label": "Website",
            "targetUrl": "https://www.chuanglan.com/{{1}}",
            "buttonExample": [
                "https://www.chuanglan.com/document"
            ]
        }
    ]
}
```

#### **Response Example**

```json
{
    "code": "0",
    "success": true,
    "message": "Operation successful",
    "data": {
        "templateId": "E71A3EC81A494CF480C8014857C0FC16", // templateId of the template
        "auditStatus": 2  //  0: To be submitted, 1: Under review, 2: Approved, 3: Rejected, 4: Paused, 5: Disabled, 6: Deleted
    }
}
```

```json
{
    "code": "2388024",
    "success": false,
    "message": "This template already has Indonesian content. You can create a new template and try again.",
    "data": null
}
```

## Template List

#### **Request Endpoint URL**

```
POST    https://api.innopaas.com/api/whatsapp/v3/waba/template/list
```

#### Request Parameters

| Field           | Data Type | Required | Description                                                                  |
| --------------- | --------- | -------- | ---------------------------------------------------------------------------- |
| page            | Integer   | Yes      | Page number                                                                  |
| size            | Integer   | Yes      | Number of records returned per page                                          |
| wabaId          | String    | Yes      | Unique identifier for the WhatsApp Business account                          |
| name            | String    | No       | Template name                                                                |
| templateId      | String    | No       | template ID                                                                  |
| category        | list      | No       | Template type 1-MARKETING,2-AUTHENTICATION,3-UTILITY                         |
| messageLanguage | list      | No       | Template language (e.g.: en)                                                 |
| auditStatus     | list      | No       | Template status 1: Pending, 2: Approved, 3: Rejected, 4: Paused, 5: Disabled |

#### Request example code

```json
{
    "page":1,
    "size":100
    "name": "transland_marketing_promotion_01"
    "wabaId": "100853739759190"
}

```

#### Response Example

```json

{
    "code": "0",
    "message": "Success",
    "data": {
        "total": 1,
        "pages": 1,
        "list": [
            {
                "updateDate": "2023-10-16 19:09:45",
                "bodyExample": {
                    "body_text": [
                        [
                            "Tom",
                            "II2024089"
                        ]
                    ]
                },
                "buttons": [
                    {
                        "actionType": 3,
                        "phone": "15121041046",
                        "phoneArea": "86",
                        "label": "Call Us"
                    },
                    {
                        "actionType": 2,
                        "buttonExample": [
                            "\"https://www.chuanglan.com/document\""
                        ],
                        "label": "Website",
                        "targetUrl": "https://www.chuanglan.com/{{1}}"
                    }
                ],
                "messageBody": "Dear customer {{1}}，your SMS API account {{2}} is avaliable, please rember the secret of this account. The secret is sent via email.",
                "footer": "Have a nice sms experience.",
                "messageLanguage": "zh_CN",
                "caption": "Transland API Account {{1}} Opened",
                "updateUser": "",
                "source": 1,
                "delFlag": 0,
                "templateId": "FCFD7669C142497684F090203F88AE98",
                "customerName": "CXQ Test 20230426",
                "sid": "634562468792622",
                "headerExample": {
                    "header_text": [
                        "II2024089"
                    ]
                },
                "wabaId": "wabaId",
                "name": "transland_marketing_promotion_01",
                "auditStatus": 2,
                "headerType": 2,
                "createUser": "",
                "id": 194,
                "category": 1,
                "createDate": "2023-10-16 19:09:45",
                "safetyAdvice": 0
            }
        ]
    }
}

```

## Delete List

**Request Endpoint URL**

```
POST https://api.innopaas.com/api/whatsapp/v3/waba/template/delete
```

**API Description:**

Request Parameters

<table><thead><tr><th width="111">Name</th><th width="104">Type</th><th width="80">Required</th><th>Note</th><th>Other Information</th></tr></thead><tbody><tr><td>wabaId</td><td>string</td><td>Required</td><td>Unique identifier for the WhatsApp Business account</td><td></td></tr><tr><td>id</td><td>integer</td><td></td><td>Primary key ID of the template</td><td>Either id or templateId must be provided</td></tr><tr><td>templateId</td><td>string</td><td></td><td>template ID</td><td>Either id or templateId must be provided</td></tr></tbody></table>

Return Parameters

<table><thead><tr><th>Name</th><th>Type</th><th>Required</th><th>Default Value</th><th width="98">Note</th><th>Other Information</th></tr></thead><tbody><tr><td>code</td><td>integer</td><td>Required</td><td></td><td></td><td>0: Success<br>Others: Failure</td></tr><tr><td>data</td><td>object</td><td>Required</td><td></td><td></td><td></td></tr><tr><td>message</td><td>string</td><td>Required</td><td></td><td></td><td></td></tr></tbody></table>

<br>


# File Upload

**Request API endpoint**

```
POST    https://api.innopaas.com/api/whatsapp/v3/uploadFile
```

**Request parameters**

<table data-header-hidden><thead><tr><th width="124.515625"></th><th width="86.74609375"></th><th width="99.54296875"></th><th></th></tr></thead><tbody><tr><td>Field</td><td>Data type</td><td>Required</td><td>Description</td></tr><tr><td><strong>file</strong></td><td><strong>file</strong></td><td>Yes</td><td>The file's MIME type. Valid values are: application/pdf, image/jpeg, image/jpg, image/png, and video/mp4</td></tr></tbody></table>

**Request example**

```actionscript-3

Content-Type: multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW

----WebKitFormBoundary7MA4YWxkTrZu0gW
Content-Disposition: form-data; name="file"; filename=""
Content-Type: <Content-Type header here>

(data)
----WebKitFormBoundary7MA4YWxkTrZu0gW
```

**Response parameters**

```json
{
    "code": "0",
    "message": "Success",
    "data": "4::aW1hZ2UvanBlZw==:ARZDIOWLhcxHAg-swqoSVjgf5pQFQGM7XvqANssarookTBgIbJz9OwAlsfEsnia073wZviAOJEaWf6rnZqVa_Aoh9rVbphjjCzTHtIAGdP-RZg:e:1695539910:1399631517488334:100092285319469:ARaUDRGLmJ_OYV4HWkM"
}

```


# Number Lookup

**Request API endpoint**

```
POST    https://api.innopaas.com/api/whatsapp/v3/account/phoneInfo
```

**Request parameters**

<table data-header-hidden><thead><tr><th width="124.515625"></th><th width="86.74609375"></th><th width="99.54296875"></th><th></th></tr></thead><tbody><tr><td>Field</td><td>Data type</td><td>Required</td><td>Description</td></tr><tr><td><code>wabaId</code></td><td>String</td><td>Yes</td><td>Unique identifier of the WhatsApp Business account</td></tr></tbody></table>

**Response parameters**

| Field              | Data type | Required | Description                                        |
| ------------------ | --------- | -------- | -------------------------------------------------- |
| id                 | String    | Yes      | Unique identifier of the WhatsApp Business account |
| displayPhoneNumber | String    | Yes      | Display phone number                               |
| verifiedName       | String    | Yes      | Name                                               |
| status             | String    | Yes      | Number status                                      |
| qualityRating      | String    | Yes      | Number quality                                     |
| messageLimit       | String    | Yes      | Message limit                                      |

**Request example**

```actionscript-3

{
  "wabaId": "26849*****5345"
}
```

**Response example**

```json
{
    "code": "0",
    "success": true,
    "message": "Success",
    "data": [
        {
            "id": "70762****2435850",
            "displayPhoneNumber": "+86 134 **** 3464",
            "verifiedName": "Transland",
            "status": "CONNECTED",
            "qualityRating": "GREEN",
            "messageLimit": "TIER_250"
        }
    ]
}

```


# WebHook


# Configure WebHook

When there are message updates in Waba, update events are pushed to customers via Webhook. These include message status updates, user reply messages, Waba account review status updates, WhatsApp template status updates, sender display name changes, and more.

## Configure WebHook Events

&#x20; **When pushing events such as templates and inbound replies, if the App cannot be identified or matched, the data will be pushed to the default application; if there is no default application, it will not be pushed.** &#x20;

1\. In the API Keys function menu list, click the callback event configuration button to start configuration

<figure><img src="/files/27bc07183a8f981d6f2c4d7047ed40fd1d52243e" alt=""><figcaption></figcaption></figure>

2\. Click the \[Add] button to add

<figure><img src="/files/c32c9073a27c03d753e3e819719db61cdf835a43" alt=""><figcaption></figcaption></figure>

3\. Select the product for which you need to configure WebHook from the available product list

<figure><img src="/files/4483ff1ec170ba18655d56dbddf8cab9f59bf453" alt=""><figcaption></figcaption></figure>

4\. Configure the callback URL, select the events to receive, and click Next to proceed

<figure><img src="/files/d57e8d81e69435eabb82896e9b4ac123e1bde27d" alt=""><figcaption></figcaption></figure>

5\. Select the callback request method, default is POST. If the customer's business system needs to verify the source of the WebHook, UserName and Authorization header information can be configured. When WebHook notification is pushed, UserName and Authorization will be added to the header information, and the customer's configured information will be pushed together to the customer's syste&#x6D;**.**

<figure><img src="/files/daf1a3c034fc831bdd7ee87227833d4628647465" alt=""><figcaption></figcaption></figure>

## WebHook Common Parameters

<table data-header-hidden><thead><tr><th width="107.8046875"></th><th width="92.015625"></th><th width="68.08203125"></th><th></th></tr></thead><tbody><tr><td>Field</td><td>Data Type</td><td>Required</td><td>Description</td></tr><tr><td>id</td><td>String</td><td>Yes</td><td>File handle, identifier</td></tr><tr><td>type<br></td><td>String<br></td><td>Yes</td><td>Event type:<strong>whatsapp_message_status_updated</strong>: Message status report (available) <strong>whatsapp_mo_message_received</strong>: Inbound message (available)<strong>whatsapp_template_status_updated</strong>: Template status update (available) <strong>whatsapp_account_review_updated</strong>: Account review status update (updating) <strong>whatsapp_phone_number_name_update</strong>: Sending number name update (updating) </td></tr><tr><td>eventTime</td><td>String</td><td>Yes</td><td>Event time, e.g.: 2023-02-22 12:00:00</td></tr><tr><td>body</td><td>JSON</td><td>Yes</td><td>Message body</td></tr></tbody></table>


# Message Status

## Status Report

### Message Status Event

#### **whatsapp\_message\_status\_updated**

<table data-header-hidden><thead><tr><th width="142.5390625"></th><th width="111.2265625"></th><th width="103.0703125"></th><th></th></tr></thead><tbody><tr><td>Field</td><td>Data Type</td><td>Required</td><td>Description</td></tr><tr><td>id</td><td>String</td><td>Yes</td><td>Message Id</td></tr><tr><td>accountName</td><td>String</td><td>Yes</td><td>API account</td></tr><tr><td>wabaId</td><td>String</td><td>Yes</td><td>Waba Id</td></tr><tr><td>status</td><td>String</td><td>Yes</td><td>Send status:<code>delivered</code>、<code>read</code>、<code>failed</code>、<code>SMECL:FAILED</code></td></tr><tr><td>wamid</td><td>String</td><td>Yes</td><td>WhatsApp message Id</td></tr><tr><td>sendPhone</td><td>String</td><td>Yes</td><td>WhatsApp user number</td></tr><tr><td>uid</td><td>String</td><td>No</td><td>Customer batch number, the batch number sent by the customer (uid)</td></tr><tr><td>conversation</td><td>JSON</td><td>No</td><td>Conversation information, has a value when status is delivered</td></tr><tr><td>billable</td><td>Boolean</td><td>Yes</td><td>Billable: true: billed, false: not billed</td></tr><tr><td>category</td><td>String</td><td>Yes</td><td>Message type:<br>authentication  verification code<br>utility notification<br>marketing marketing<br>marketing_lite MMLite marketing<br>service service message<br><br></td></tr><tr><td>price</td><td>String</td><td>Yes</td><td>Unit price, keep 5 decimal places.</td></tr><tr><td>currency</td><td>String</td><td>Yes</td><td>Currency</td></tr></tbody></table>

#### conversation object

| Field        | Data Type | Required | Description                                                                                                                                                                                                                                                                         |
| ------------ | --------- | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| initiateType | String    | Yes      | Conversation initiation type **business\_initiated**: Conversation initiated by the business**referral\_conversion**: Conversation initiated from a free entry point; this type of conversation is initiated by the user**customer\_initiated**: Conversation initiated by the user |
| expireAt     | String    | Yes      | Conversation expiration time, e.g.: 2023-02-22 12:00:00                                                                                                                                                                                                                             |

#### errorData object

| Field        | Data Type | Required | Description            |
| ------------ | --------- | -------- | ---------------------- |
| errorCode    | String    | Yes      | Meta error code        |
| errorMessage | String    | Yes      | Meta error description |

### **Response message example**

#### **delivered: response example**

```json
{
    "id": "e5cb1bc6-ad90-419d-8f83-aa394c0b7cc7",
    "type": "whatsapp_message_status_updated",
    "eventTime": "2023-02-22T12:00:00.000Z",
    "body": {
        "id": "356139161272397824",
        "accountName": "IW123456",
        "wabaId": "11231231212331",
        "wamid": "wamid.BgNODYxN...", 
        "status": "delivered",
        "uid":"2002302023002010121",
        "sendPhone":"65123101212312",
        "conversation": {
            "id": "00e5a7e14a588d96bd2343d105d03ec5",
            "initiateType": "business_initiated",
            "expireAt": "2023-02-23T12:00:00.000Z"
        },
        "currency": "USD"
    }
}
```

#### **read: response example**

```json
{
    "id": "cd0a316c-a781-4589-9f5f-5502ccf1f60f",
    "type": "whatsapp_message_status_updated",
    "eventTime": "2023-05-26T02:18:44.115Z",
    "body": {
        "accountName": "15902677617",
        "id": "356139161272397824",
        "status": "read",
        "uid":"2002302023002010121",
        "sendPhone":"65123101212312",
        "wabaId": "WHATSAPP_BUSINESS_ACCOUNT_ID",
        "wamid": "wamid.HBgNODYxNjY4NTE3NzYxMhUCABEYEjQ0RTYyQTM5QzAyMkU0QkNERgA="
    }
}
```

#### **failed: response example**

```json
{
    "id": "e5cb1bc6-ad90-419d-8f83-aa394c0b7cc7",
    "type": "whatsapp_message_status_updated",
    "eventTime": "2023-05-25T10:31:08.167Z",
    "body": {
        "accountName": "15902677617",
        "errorData": {
            "errorCode": "131014",
            "errorMessage": "Request for url https://URL.jpg failed with error: 404 (Not Found)"
        },
        "id": "356139161272397824",
        "status": "failed",
         "uid":"2002302023002010121",
        "sendPhone":"65123101212312",
        "wabaId": "WHATSAPP_BUSINESS_ACCOUNT_ID",
        "wamid": "wamid.HBgNODYxNjY4NTE3NzYxMhUCABEYEjQ0RTYyQTM5QzAyMkU0QkNERgA="
    }
}
```


# Inbound Message

## Incoming message

### Response parameters

| Field           | Data type | Required | Description                                                                                                                                                                                                                                                                                                                                                                                         |
| --------------- | --------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| id              | String    | Yes      | Message ID                                                                                                                                                                                                                                                                                                                                                                                          |
| accountName     | String    | Yes      | API account name                                                                                                                                                                                                                                                                                                                                                                                    |
| wabaId          | String    | Yes      | Waba Id                                                                                                                                                                                                                                                                                                                                                                                             |
| wamid           | String    | Yes      | Meta WhatsApp message ID                                                                                                                                                                                                                                                                                                                                                                            |
| from            | String    | Yes      | User phone number                                                                                                                                                                                                                                                                                                                                                                                   |
| to              | String    | Yes      | Merchant phone number                                                                                                                                                                                                                                                                                                                                                                               |
| sendTime        | String    | Yes      | Send time, format: 2023-02-22T12:00:00.000Z                                                                                                                                                                                                                                                                                                                                                         |
| customerProfile | JSON      | Yes      | User information                                                                                                                                                                                                                                                                                                                                                                                    |
| type            | String    | Yes      | Message type; text: text message reaction: emoji message image: image message audio: audio message video: video message sticker: sticker message unknown: unknown message location: location message contacts: contact message button: template button reply message interactive: interactive message/interactive button reply message order: order message system: user number change notification |
| text            | JSON      | No       | Present when type=text                                                                                                                                                                                                                                                                                                                                                                              |
| reaction        | JSON      | No       | Present when type=reaction                                                                                                                                                                                                                                                                                                                                                                          |
| image           | JSON      | No       | Present when type=image                                                                                                                                                                                                                                                                                                                                                                             |
| audio           | JSON      | No       | Present when type=audio                                                                                                                                                                                                                                                                                                                                                                             |
| video           | JSON      | No       | Present when type=video                                                                                                                                                                                                                                                                                                                                                                             |
| errors          | JSON      | No       | Present when type=unknown                                                                                                                                                                                                                                                                                                                                                                           |
| location        | JSON      | No       | Present when type=location                                                                                                                                                                                                                                                                                                                                                                          |
| contacts        | JSON      | No       | Present when type=contacts                                                                                                                                                                                                                                                                                                                                                                          |
| button          | JSON      | No       | Present when type=button                                                                                                                                                                                                                                                                                                                                                                            |
| system          | JSON      | No       | Present when type=system                                                                                                                                                                                                                                                                                                                                                                            |
| context         | JSON      | No       | Context message, present when replying to a quoted message                                                                                                                                                                                                                                                                                                                                          |

### **text: reply example**

| Field     | Data type | Required | Description                        |
| --------- | --------- | -------- | ---------------------------------- |
| text.body | String    | Yes      | Indicates the content of the reply |

```json
{
    "id": "b5e984b3-21b2-42a9-b08b-72e5a4096ac6",
    "type": "whatsapp_mo_message_received",
    "eventTime": "2023-02-22T12:00:00.000Z",
    "body": {
        "id": "63f5d602367ea403f8175a6c",
        "accountName": "IW123456",
        "wabaId": "WHATSAPP_BUSINESS_ACCOUNT_ID",
        "wamid": "wamid.BgNODYxN...",
        "from": "PHONE-NUMBER",
        "customerProfile": {
            "name": "Jack"
        },
        "to": "BUSINESS-PHONE-NUMBER",
        "sendTime": "2023-02-22T12:00:00.000Z",
        "type": "text",
        "text": {
            "body": "OK"
        }
    }
}
```

### **reaction: reply example**

| Field              | Data type | Required | Description                                                     |
| ------------------ | --------- | -------- | --------------------------------------------------------------- |
| reaction.messageId | String    | Yes      | Indicates the wamid (original message id) of the quoted message |
| reaction.emoji     | String    | Yes      | Indicates the emoji in the reply                                |
| sendTime           | String    | Yes      | Indicates the time the customer sent the emoji                  |

```json
{
    "id": "b5e984b3-21b2-42a9-b08b-72e5a4096ac6",
    "type": "whatsapp_mo_message_received",
    "eventTime": "2023-02-22T12:00:00.000Z",
    "body": {
        "id": "63f5d602367ea403f8175a6c",
        "accountName": "IW123456",
        "wabaId": "WHATSAPP_BUSINESS_ACCOUNT_ID",
        "wamid": "wamid.HBgNOD...",
        "from": "PHONE-NUMBER",
        "customerProfile": {
            "name": "Jack"
        },
        "to": "BUSINESS-PHONE-NUMBER",
        "sendTime": "2023-02-22T12:00:00.000Z",
        "type": "reaction",
        "reaction": {
            "messageId": "wamid.HBgNODY...",
            "emoji": "EMOJI"
        }
    }
}
```

| Field          | Data type | Required | Description                          |
| -------------- | --------- | -------- | ------------------------------------ |
| image.caption  | String    | Yes      | Media description or title           |
| image.mimeType | String    | Yes      | Media format type: image/jpeg        |
| image.sha256   | String    | Yes      | Hash code of the media resource file |
| image.link     | String    | Yes      | Download link for the media file     |

```json
{
    "id": "b5e984b3-21b2-42a9-b08b-72e5a4096ac6",
    "type": "whatsapp_mo_message_received",
    "eventTime": "2023-02-22T12:00:00.000Z",
    "body": {
        "id": "63f5d602367ea403f8175a6c",
        "accountName": "IW123456",
        "wabaId": "WHATSAPP_BUSINESS_ACCOUNT_ID",
        "wamid": "wamid.HBgNOD...",
        "from": "PHONE-NUMBER",
        "customerProfile": {
            "name": "Jack"
        },
        "to": "BUSINESS-PHONE-NUMBER",
        "sendTime": "2023-02-22T12:00:00.000Z",
        "type": "image",
        "image": {
            "caption": "CAPTION",
            "mimeType": "image/jpeg",
            "sha256": "IMAGE_HASH",
            "link": "http://xxxxxxxxxx"
        }
    }
}
```

### **sticker: reply example**

| Field            | Data type | Required | Description                            |
| ---------------- | --------- | -------- | -------------------------------------- |
| sticker.mimeType | String    | Yes      | Sticker format type: image/webp        |
| sticker.sha256   | String    | Yes      | Hash code of the sticker resource file |
| sticker.link     | String    | Yes      | Download link for the sticker file     |

```json
{
    "id": "b5e984b3-21b2-42a9-b08b-72e5a4096ac6",
    "type": "whatsapp_mo_message_received",
    "eventTime": "2023-02-22T12:00:00.000Z",
    "body": {
        "id": "63f5d602367ea403f8175a6c",
        "accountName": "IW123456",
        "wabaId": "WHATSAPP_BUSINESS_ACCOUNT_ID",
        "wamid": "wamid.HBgNOD...",
        "from": "PHONE-NUMBER",
        "customerProfile": {
            "name": "Jack"
        },
        "to": "BUSINESS-PHONE-NUMBER",
        "sendTime": "2023-02-22T12:00:00.000Z",
        "type": "sticker",
        "sticker": {
            "mimeType": "image/webp",
            "sha256": "HASH",
            "link": "http://xxxxxxxxxx"
        }
    }
}
```

### **video: reply example**

| Field          | Data type | Required | Description                          |
| -------------- | --------- | -------- | ------------------------------------ |
| video.mimeType | String    | Yes      | Video format type: video/mp4         |
| video.sha256   | String    | Yes      | Hash code of the video resource file |
| video.link     | String    | Yes      | Download link for the video file     |

```json
{
    "id": "b5e984b3-21b2-42a9-b08b-72e5a4096ac6",
    "type": "whatsapp_mo_message_received",
    "eventTime": "2023-02-22T12:00:00.000Z",
    "body": {
        "id": "63f5d602367ea403f8175a6c",
        "accountName": "IW123456",
        "wabaId": "WHATSAPP_BUSINESS_ACCOUNT_ID",
        "wamid": "wamid.HBgNOD...",
        "from": "PHONE-NUMBER",
        "customerProfile": {
            "name": "Jack"
        },
        "to": "BUSINESS-PHONE-NUMBER",
        "sendTime": "2023-02-22T12:00:00.000Z",
        "type": "video",
        "video": {
            "mimeType": "video/mp4",
            "sha256": "G4fboj5cKcAbCdefzhcAcRdnXJqFJAyTSlNmJANhu4M=",
            "link": "http://xxxxxxxxxx"
        }
    }
}
```

### **Audio: reply example**

| Field          | Data type | Required | Description                          |
| -------------- | --------- | -------- | ------------------------------------ |
| audio.mimeType | String    | Yes      | Audio format type: video/mp4         |
| audio.sha256   | String    | Yes      | Hash code of the audio resource file |
| audio.link     | String    | Yes      | Download link for the audio file     |

```json
{
    "id": "b5e984b3-21b2-42a9-b08b-72e5a4096ac6",
    "type": "whatsapp_mo_message_received",
    "eventTime": "2023-02-22T12:00:00.000Z",
    "body": {
        "id": "63f5d602367ea403f8175a6c",
        "accountName": "IW123456",
        "wabaId": "WHATSAPP_BUSINESS_ACCOUNT_ID",
        "wamid": "wamid.HBgNOD...",
        "from": "PHONE-NUMBER",
        "customerProfile": {
            "name": "Jack"
        },
        "to": "BUSINESS-PHONE-NUMBER",
        "sendTime": "2023-02-22T12:00:00.000Z",
        "type": "audio",
        "audio": {
            "mimeType": "audio/ogg; codecs=opus",
            "sha256": "ffRSAbcDeff3mJ2hBhpzuFY7pYEugTfglD+zx4Qv8X4=",
            "link": "http://xxxxxxxxxx"
        }
    }
}
```

### **Document: reply example**

| Field             | Data type | Required | Description                             |
| ----------------- | --------- | -------- | --------------------------------------- |
| document.mimeType | String    | Yes      | Document format type: video/mp4         |
| document.sha256   | String    | Yes      | Hash code of the document resource file |
| document.link     | String    | Yes      | Download link for the document file     |
| document.caption  | String    | Yes      | Document description or title           |
| document.filename | String    | Yes      | Document file name                      |

```json
{
    "id": "b5e984b3-21b2-42a9-b08b-72e5a4096ac6",
    "type": "whatsapp_mo_message_received",
    "eventTime": "2023-02-22T12:00:00.000Z",
    "body": {
        "id": "63f5d602367ea403f8175a6c",
        "accountName": "IW123456",
        "wabaId": "WHATSAPP_BUSINESS_ACCOUNT_ID",
        "wamid": "wamid.HBgNOD...",
        "from": "PHONE-NUMBER",
        "customerProfile": {
            "name": "Jack"
        },
        "to": "BUSINESS-PHONE-NUMBER",
        "sendTime": "2023-02-22T12:00:00.000Z",
        "type": "document",
        "document": {
            "caption": "pdf caption",
            "filename": "filename.pdf",
            "mimeType": "application/pdf",
            "sha256": "TJGGMF5tdw3XApVHbABCdeffI7w4OW7GqYEN736PW0s=",
            "link": "http://xxxxxxxxxx"
        }
    }
}
```

### **Location: reply example**

| Field              | Data type | Required | Description                 |
| ------------------ | --------- | -------- | --------------------------- |
| location.latitude  | String    | Yes      | Indicates latitude          |
| location.longitude | String    | Yes      | Indicates longitude         |
| location.name      | String    | Yes      | Indicates the location name |
| location.address   | String    | Yes      | Indicates the address       |

```json
{
    "id": "b5e984b3-21b2-42a9-b08b-72e5a4096ac6",
    "type": "whatsapp_mo_message_received",
    "eventTime": "2023-02-22T12:00:00.000Z",
    "body": {
        "id": "63f5d602367ea403f8175a6c",
        "accountName": "IW123456",
        "wabaId": "WHATSAPP_BUSINESS_ACCOUNT_ID",
        "wamid": "wamid.HBgNOD...",
        "from": "PHONE-NUMBER",
        "customerProfile": {
            "name": "Jack"
        },
        "to": "BUSINESS-PHONE-NUMBER",
        "sendTime": "2023-02-22T12:00:00.000Z",
        "type": "location",
        "location": {
            "latitude": 39.90539,
            "longitude": 116.39134,
            "name": "LOCATION_NAME",
            "address": "LOCATION_ADDRESS",
        }
    }
}
```

### **Contacts: reply example**

```json
{
    "body": {
        "accountName": "IW31****5",
        "contacts": [
            {
                "addresses": [
                    {
                        "city": "CONTACT_CITY1",
                        "country": "CONTACT_COUNTRY1",
                        "countryCode": "CONTACT_COUNTRY_CODE1",
                        "state": "CONTACT_STATE1",
                        "street": "CONTACT_STREET1",
                        "type": "HOME or WORK1",
                        "zip": "CONTACT_ZIP1"
                    }
                ],
                "birthday": "CONTACT_BIRTHDAY1",
                "emails": [
                    {
                        "email": "CONTACT_EMAIL1",
                        "type": "WORK or HOME1"
                    }
                ],
                "name": {
                    "firstName": "CONTACT_FIRST_NAME1",
                    "formattedName": "CONTACT_FORMATTED_NAME1",
                    "lastName": "CONTACT_LAST_NAME1",
                    "middleName": "CONTACT_MIDDLE_NAME1",
                    "prefix": "CONTACT_PREFIX1",
                    "suffix": "CONTACT_SUFFIX1"
                },
                "org": {
                    "company": "CONTACT_ORG_COMPANY1",
                    "department": "CONTACT_ORG_DEPARTMENT1",
                    "title": "CONTACT_ORG_TITLE1"
                },
                "phones": [
                    {
                        "phone": "CONTACT_PHONE1",
                        "type": "HOME or WORK>1",
                        "wa_id": "CONTACT_WA_ID1"
                    }
                ],
                "urls": [
                    {
                        "type": "HOME or WORK1",
                        "url": "CONTACT_URL1"
                    }
                ]
            }
        ],
        "customerProfile": {
            "name": "Jack"
        },
        "from": "86183****2197",
        "id": "a1301cb6d0094b2fae36546c22e09044",
        "sendTime": "2024-03-07T10:46:24.000Z",
        "to": "62811****6819",
        "type": "contacts",
        "wabaId": "1**********9",
        "wamid": "wamid.HBgNODYxODM1NTA5MjE5NxUCABIYIDg3RDVFMzQyRjIwQkM5NDQyMDI5OTRERERGNUYx*****=="
    },
    "eventTime": "2024-03-08T09:42:06.363Z",
    "id": "e2bafad5-0aa9-4465-9ed1-c5c01741c5e1",
    "type": "whatsapp_mo_message_received"
}
```

### **Button: reply example**

When the customer clicks a quick reply button in the interactive message template, the system will send a response. The following is an example callback format.

| Field        | Data type | Required | Description                                                                                 |
| ------------ | --------- | -------- | ------------------------------------------------------------------------------------------- |
| context.from | String    | Yes      | The WhatsApp ID that sent the interactive message (the phone number without the "+" prefix) |
| context.id   | String    | Yes      | It is the original message ID on the WhatsApp platform.                                     |

```json
{
    "id": "b5e984b3-21b2-42a9-b08b-72e5a4096ac6",
    "type": "whatsapp_mo_message_received",
    "eventTime": "2023-02-22T12:00:00.000Z",
    "body": {
        "id": "63f5d602367ea403f8175a6c",
        "accountName": "IW123456",
        "wabaId": "WHATSAPP_BUSINESS_ACCOUNT_ID",
        "wamid": "wamid.HBgNOD...",
        "from": "PHONE-NUMBER",
        "customerProfile": {
            "name": "Jack"
        },
        "to": "BUSINESS-PHONE-NUMBER",
        "sendTime": "2023-02-22T12:00:00.000Z",
        "type": "button",
        "button": {
            "text": "No",
            "payload": "No-Button-Payload"
        },
        "context": {
            "from": "PHONE_NUMBER",
            "id": "wamid.ID"
        }
    }
}
```

### **Unknown: reply example**

&#x20; You may receive an unknown message callback notification. For example, a customer may send you an unsupported message, such as a disappearing message (in this case, we notify the customer that the message type is unsupported).

| Field          | Data type | Required | Description                 |
| -------------- | --------- | -------- | --------------------------- |
| errors.code    | String    | Yes      | Indicates the error code    |
| errors.details | String    | Yes      | Indicates the error details |
| errors.title   | String    | Yes      | Indicates the error name    |

```json
{
    "id": "b5e984b3-21b2-42a9-b08b-72e5a4096ac6",
    "type": "whatsapp_mo_message_received",
    "eventTime": "2023-02-22T12:00:00.000Z",
    "body": {
        "id": "63f5d602367ea403f8175a6c",
        "accountName": "IW123456",
        "wabaId": "WHATSAPP_BUSINESS_ACCOUNT_ID",
        "wamid": "wamid.HBgNOD...",
        "from": "PHONE-NUMBER",
        "customerProfile": {
            "name": "Jack"
        },
        "to": "BUSINESS-PHONE-NUMBER",
        "sendTime": "2023-02-22T12:00:00.000Z",
        "type": "unknown",
        "errors": [
            {
                "code": 131051,
                "details": "Message type is not currently supported",
                "title": "Unsupported message type"
            }
        ]
    }
}
```

### **Interactive: reply example**

When the user clicks**an item in the list message you sent**you will receive the following Webhooks notification:

| Field        | Data type | Required | Description                                                                                 |
| ------------ | --------- | -------- | ------------------------------------------------------------------------------------------- |
| context.from | String    | Yes      | The WhatsApp ID that sent the interactive message (the phone number without the "+" prefix) |
| context.id   | String    | Yes      | It is the original message ID on the WhatsApp platform.                                     |

```json
{
    "id": "b5e984b3-21b2-42a9-b08b-72e5a4096ac6",
    "type": "whatsapp_mo_message_received",
    "eventTime": "2023-02-22T12:00:00.000Z",
    "body": {
        "id": "63f5d602367ea403f8175a6c",
        "accountName": "IW123456",
        "wabaId": "WHATSAPP_BUSINESS_ACCOUNT_ID",
        "wamid": "wamid.HBgNOD...",
        "from": "PHONE-NUMBER",
        "customerProfile": {
            "name": "Jack"
        },
        "to": "BUSINESS-PHONE-NUMBER",
        "sendTime": "2023-02-22T12:00:00.000Z",
        "type": "interactive",
        "interactive": {
            "listReply": {
                "id": "list_reply_id",
                "title": "list_reply_title",
                "description": "list_reply_description"
            },
            "type": "listReply"
        },
        "context": {
            "from": "PHONE_NUMBER",
            "id": "wamid.ID"
        }
    }
}
```

When the user clicks the**reply button**you will receive the following Webhooks notification:

```json
{
    "id": "b5e984b3-21b2-42a9-b08b-72e5a4096ac6",
    "type": "whatsapp_mo_message_received",
    "eventTime": "2023-02-22T12:00:00.000Z",
    "body": {
        "id": "63f5d602367ea403f8175a6c",
        "accountName": "IW123456",
        "wabaId": "WHATSAPP_BUSINESS_ACCOUNT_ID",
        "wamid": "wamid.HBgNOD...",
        "from": "PHONE-NUMBER",
        "customerProfile": {
            "name": "Jack"
        },
        "to": "BUSINESS-PHONE-NUMBER",
        "sendTime": "2023-02-22T12:00:00.000Z",
        "type": "interactive",
        "interactive": {
            "buttonReply": {
                "id": "unique-button-identifier-here",
                "title": "button-text"
            },
            "type": "buttonReply"
        },
         "context": {
            "from": "PHONE_NUMBER",
            "id": "wamid.ID"
        }
    }
}
```


# Template Status

### Template review status whatsapp\_template\_status\_updated

This event is triggered when the status of the submitted template changes: whatsapp\_template\_status\_updated

| Field            | Data type | Required | Description                                                                                                              |
| ---------------- | --------- | -------- | ------------------------------------------------------------------------------------------------------------------------ |
| accountName      | String    | Yes      | API account                                                                                                              |
| category         | String    | Yes      | Template type:**MARKETING**:Marketing**AUTHENTICATION**:Verification code**UTILITY**:Notification                        |
| reason           | String    | Yes      | Reason                                                                                                                   |
| templateId       | String    | Yes      | Meta platform template ID (corresponding SID)                                                                            |
| templateLanguage | String    | Yes      | Template language                                                                                                        |
| templateName     | String    | Yes      | Template name                                                                                                            |
| templateStatus   | String    | Yes      | Template status:**PENDING**:Under review**APPROVED**:Approved**REJECTED**:Rejected**PAUSED**:Paused**DISABLED**:Disabled |
| wabaId           | String    | Yes      | <p><br></p>                                                                                                              |

```json
{
    "id": "fd201190-50dc-4151-baec-1d16c8a704e1",
    "type": "whatsapp_template_status_update",
    "eventTime": "2023-10-16T13:04:57.644Z",
    "body": {
        "accountName": "IW2267527",
        "category": "AUTHENTICATION",
        "reason": "NONE",
        "templateId": "998961841525295",
        "templateLanguage": "en_US",
        "templateName": "transland_common_otp",
        "templateStatus": "APPROVED",
        "wabaId": "110129512080569"
    }
}
```

### Template quality update message\_template\_quality\_update

This event is triggered when the quality of the submitted template changes: message\_template\_quality\_update

| Field                           | Data type | Required | Description                                                                                                                                                               |
| ------------------------------- | --------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| templateId                      | String    | Yes      | Meta platform template ID (corresponding SID)                                                                                                                             |
| templateLanguage                | String    | Yes      | Template language                                                                                                                                                         |
| templateName                    | String    | Yes      | Template name                                                                                                                                                             |
| <p>previousQualityScore<br></p> | String    | Yes      | Possible values are:**GREEN**: Indicates high quality.**RED**: Indicates poor quality.**YELLOW**: Indicates medium quality.**UNKNOWN**: Indicates quality is undetermined |
| newQualityScore                 | String    | Yes      | Possible values are:**GREEN**: Indicates high quality.**RED**: Indicates poor quality.**YELLOW**: Indicates medium quality.**UNKNOWN**: Indicates quality is undetermined |
| wabaId                          | String    | Yes      | <p><br></p>                                                                                                                                                               |

<pre class="language-json"><code class="lang-json">{
    "id": "fd201190-50dc-4151-baec-1d16c8a704e1",
    "type": "message_template_quality_update",
    "eventTime": "2023-10-16T13:04:57.644Z",
    "body": {
         "templateName":"TestName",
        "templateId": "998961841525295",
        "templateLanguage": "en_US",
<strong>        "previousQualityScore": "GREEN",
</strong><strong>        "newQualityScore": "YELLOW",
</strong>        "wabaId": "110129512080569"
    }
}
</code></pre>

### Template category update template\_category\_update

This event is triggered when the category of the submitted template changes: template\_category\_update

| Field               | Data type | Required | Description                                                                                                  |
| ------------------- | --------- | -------- | ------------------------------------------------------------------------------------------------------------ |
| templateId          | String    | Yes      | Meta platform template ID (corresponding SID)                                                                |
| templateLanguage    | String    | Yes      | Template language                                                                                            |
| templateName        | String    | Yes      | Template name                                                                                                |
| <p>category<br></p> | String    | Yes      | Optional values:  **AUTHENTICATION**: Verification code  **MARKETING**: Marketing  **UTILITY**: Notification |
| newCategory         | String    | Yes      | Optional values:  **AUTHENTICATION**: Verification code  **MARKETING**: Marketing  **UTILITY**: Notification |
| wabaId              | String    | Yes      | WaBaId                                                                                                       |

<pre class="language-json"><code class="lang-json">{
    "id": "fd201190-50dc-4151-baec-1d16c8a704e1",
    "type": "template_category_update",
    "eventTime": "2023-10-16T13:04:57.644Z",
    "body": {
        "templateName":"TestName",
        "templateId": "998961841525295",
        "templateLanguage": "en_US",
<strong>        "category": "AUTHENTICATION",
</strong><strong>        "newCategory": "UTILITY",
</strong>        "wabaId": "110129512080569"
    }
}
</code></pre>

\
\ <br>


# Inbox Chat Message Events

Chatroom inbound and outbound messages are only for listening to message events in the chatroom.

## Inbox chat message event

There are the following two push events; subscribe if needed:

**chat\_mt\_message\_notify (chatroom downstream message reception)**&#x20;

**chat\_mo\_message\_notify (chatroom upstream message reception)**

### Parameter description

<table data-header-hidden><thead><tr><th width="166.34375"></th><th width="141.6328125"></th><th width="137.5"></th><th></th></tr></thead><tbody><tr><td>Field</td><td>Data type</td><td>Required</td><td>Description</td></tr><tr><td>wabaId</td><td>String</td><td>Yes</td><td>Waba Id</td></tr><tr><td>from</td><td>String</td><td>Yes</td><td>Enterprise Sender</td></tr><tr><td>to</td><td>String</td><td>Yes</td><td>User WhatsApp number</td></tr><tr><td>messageType</td><td>String</td><td>Yes</td><td>Message type</td></tr><tr><td>context</td><td>Object</td><td>Yes</td><td>Message content</td></tr><tr><td>wamid</td><td>String</td><td>No</td><td>Meta message ID</td></tr><tr><td>conversationId</td><td>String</td><td>No</td><td>Session ID (InnoPaaS chatroom session ID)</td></tr><tr><td>uid</td><td>String</td><td>No</td><td>User-defined ID</td></tr><tr><td>sendTime</td><td>String</td><td>Yes</td><td>Send time, UTC, e.g.: 2026-07-09T09:11:23.405Z</td></tr><tr><td>sendTimestamp</td><td>String</td><td>Yes</td><td>Send timestamp, accurate to the millisecond, e.g.: 1783588283405</td></tr></tbody></table>

### **chat\_mt\_message\_notify**&#x20;

**Downlink message example**

<pre class="language-json"><code class="lang-json">{
    "id": "b5e984b3-21b2-42a9-b08b-72e5a4096ac6",
<strong>    "type": "chat_mt_message_notify",
</strong>    "eventTime": "2023-02-22T12:00:00.000Z",
    "body": {
        "wabaId": "WHATSAPP_BUSINESS_ACCOUNT_ID",
        "from": "wamid.BgNODYxN...",
        "to": "PHONE-NUMBER",
         "messageType": "text",
         "context": {
             "text":"this is test message"
           },
        "wamid": "wamid.BgNODYxN...",
        "conversationId": "12312312312312",
        "uid":"123123123123123213123",
        "sendTime":"2026-07-09T09:11:23.405Z",
        "sendTimestamp":"1783588283405"
    }
}
</code></pre>

### **chat\_mo\_message\_notify**&#x20;

**Upstream message example**

<pre class="language-json"><code class="lang-json">{
    "id": "b5e984b3-21b2-42a9-b08b-72e5a4096ac6",
<strong>    "type": "chat_mo_message_notify",
</strong>    "eventTime": "2023-02-22T12:00:00.000Z",
    "body": {
        "wabaId": "WHATSAPP_BUSINESS_ACCOUNT_ID",
        "from": "wamid.BgNODYxN...",
        "to": "PHONE-NUMBER",
         "messageType": "text",
         "context": {
             "text":"this is test message"
           },
        "wamid": "wamid.BgNODYxN...",
        "conversationId": "12312312312312",
        "uid":"123123123123123213123",
        "sendTime":"2026-07-09T09:11:23.405Z",
        "sendTimestamp":"1783588283405"
    }
}
</code></pre>


# Number (sender) Callback

## Phone number quality update

This event is triggered when the quality status of the submitted sender changes: whatsapp\_phone\_number\_quality\_update

| Field              | Data type | Required | Description                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
| ------------------ | --------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| wabaId             | String    | Yes      | WabaId                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
| displayPhoneNumber | String    | Yes      | sender number                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
| <p>event<br></p>   | String    | Yes      | Event for message delivery limit change or throughput change**DOWNGRADE**: indicates that the business phone number's message limit has been reduced.**FLAGGED**: indicates that if this business phone number continues to receive negative feedback, its messaging quality will decline.**ONBOARDING**: indicates that this business phone number is still in the onboarding process.**THROUGHPUT\_UPGRADE**: indicates that the throughput level of this business phone number has been increased to a higher throughput.**UNFLAGGED**: indicates that if this business phone number continues to receive positive feedback, it is eligible for an increase in its messaging limit.**UPGRADE**: indicates that the business phone number's message limit has been increased. |
| messageLimit       | String    | Yes      | Optional values:  **Unlimited**: meaning there is no limit on the number of messages sent  **0**: indicates that this business phone number has not yet been used to send messages.  **50**: indicates a message limit of 50  **250**: indicates a message limit of 250  **1000**: indicates a message limit of 1,000  **10000**: indicates a message limit of 10,000  **100000**: indicates a message limit of 100,000                                                                                                                                                                                                                                                                                                                                                         |

<pre class="language-json"><code class="lang-json">{
    "id": "fd201190-50dc-4151-baec-1d16c8a704e1",
    "type": "whatsapp_phone_number_quality_update",
    "eventTime": "2023-10-16T13:04:57.644Z",
    "body": {
<strong>        "messageLimit": "100000",
</strong><strong>        "event": "UPGRADE",
</strong>        "displayPhoneNumber": "1086***36726376",
        "wabaId": "1101295***80569"
    }
}

</code></pre>

## Phone number name update

This event is triggered when the submitted sender name changes: whatsapp\_phone\_number\_name\_update

| Field                 | Data type | Required | Description                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
| --------------------- | --------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| wabaId                | String    | Yes      | WabaId                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
| displayPhoneNumber    | String    | Yes      | sender number                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
| decision              | String    | Yes      | Indicates the result of the business phone number display name verification process.**APPROVED**: indicates that the display name has been approved and will now appear at the top of the business phone number profile in the WhatsApp client.**DEFERRED**: indicates that the decision has been deferred.**PENDING**: indicates that the decision is still pending further review.**REJECTED**: indicates that the display name has been rejected. You can edit the name in WhatsApp Manager. Before editing, please review our display name guidelines.                                                                                                                                                                                                                                                                                        |
| requestedVerifiedName | String    | Yes      | The business phone number display name collected when the number is created, or the name submitted when editing an approved display name                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
| rejectionReason       | String    | Yes      | If the business phone number display name is rejected, this explains why. Please review our display name guidelines for common rejection reasons. Optional values:**NAME\_EMPLOYEE\_ISSUE**: rejected because the display name tends to be a personal name or employee identifier.**NAME\_ENDCLIENT\_NOTRELATED**: rejected because the display name tends to be an unrelated business name.**NAME\_FORMAT\_UNACCEPTABLE**: rejected because the display name uses an unacceptable format.**NAME\_INDIVIDUAL\_ISSUE**: rejected because the display name tends to be a personal name or employee identifier. — NAME\_NOT\_CONSISTENT rejected because the display name is inconsistent with the business's brand.**null**: indicates that the name has been accepted.**UNKNOWN**: rejected for an unknown reason. Please contact customer support |

{"id": "fd201190-50dc-4151-baec-1d16c8a704e1","type": "whatsapp\_phone\_number\_name\_update","eventTime": "2023-10-16T13:04:57.644Z","body": {"decision": "REJECTED","requestedVerifiedName": "zhangsan","rejectionReason": "NAME\_EMPLOYEE\_ISSUE","displayPhoneNumber": "108672\*\*\*726376","wabaId": "110129\*\*\*\*080569"}}


# Waba Account Callback

This event is triggered when the WABA account changes: whatsapp\_account\_updated

| Field  | Data type | Required | Description |
| ------ | --------- | -------- | ----------- |
| wabaId | String    | Yes      | WabaId      |
| value  | String    | Yes      | value       |

**ACCOUNT\_VIOLATION \[Account Violation]  Violation types see appendix**

```json
{
    "body": {
        "value": {
            "event": "ACCOUNT_VIOLATION",
            "violation_info": {
                "violation_type": "SCAM"
            }
        },
        "wabaId": "268498****5345"
    },
    "eventTime": "2026-07-06T08:08:40.454Z",
    "id": "fca0d830-423c-45ff-a727-49ca5e83d8a0",
    "type": "whatsapp_account_updated"
}
```

**ACCOUNT\_DELETED \[Account Deleted]**

```json
{
    "body": {
        "value": {
            "event": "ACCOUNT_DELETED"
        },
        "wabaId": "268498****5345"
    },
    "eventTime": "2026-07-06T08:27:48.786Z",
    "id": "cc6b59e7-725f-4fd9-a1ef-0e3ebfd3c2e8",
    "type": "whatsapp_account_updated"
}
```

**DISABLED\_UPDATE\[Disable Update]**

```json
{
    "body": {
        "value": {
            "ban_info": {
                "waba_ban_date": "April 17, 2025",//Indicates the time when the WABA was banned
                "waba_ban_state": "REINSTATE"//WABA ban status [DISABLE — indicates the WABA has been disabled. REINSTATE — indicates the WABA has been restored. SCHEDULE_FOR_DISABLE — indicates the WABA has been scheduled for disablement]
            },
            "event": "DISABLED_UPDATE"
        },
        "wabaId": "268498****5345"
    },
    "eventTime": "2026-07-06T08:49:31.625Z",
    "id": "8c37fe08-25de-41c9-8516-825db4f2c352",
    "type": "whatsapp_account_updated"
}
```

**ACCOUNT\_RESTRICTION \[Account Restriction]**

```json
{
    "body": {
        "value": {
            "event": "ACCOUNT_RESTRICTION",
            "restriction_info": [
                {
                    "restriction_type": "RESTRICTED_ADD_PHONE_NUMBER_ACTION",
                    "expiration": "2026-06-20T02:41:53+0000"
                },
                {
                    "restriction_type": "RESTRICTED_BIZ_INITIATED_MESSAGING",
                    "expiration": "2026-06-20T02:41:53+0000"
                },
                {
                    "restriction_type": "RESTRICTED_CUSTOMER_INITIATED_MESSAGING",
                    "expiration": "2026-06-20T02:41:53+0000"
                }
            ]
        },
        "wabaId": "268498****5345"
    },
    "eventTime": "2026-07-07T08:43:47.442Z",
    "id": "6773e97c-7025-4e6f-bad4-087f12732871",
    "type": "whatsapp_account_updated"
}
```

**AUTH\_INTL\_PRICE\_ELIGIBILITY\_UPDATE \[International identity verification eligibility]**

```json
{
    "body": {
        "value": {
            "auth_international_rate_eligibility": {
                "exception_countries": [
                    {
                        "country_code": "ID",
                        "start_time": 1751347424
                    }
                ],
                "start_time": 1748780624
            },
            "event": "AUTH_INTL_PRICE_ELIGIBILITY_UPDATE"
        },
        "wabaId": "268498****5345"
    },
    "eventTime": "2026-07-07T09:32:05.342Z",
    "id": "5c254119-2777-4c62-a0ef-1ddd0bd58078",
    "type": "whatsapp_account_updated"
}
```

Appendix:

**ACCOUNT\_VIOLATION \[Account Violation]    Violation type \[violation\_type]**

| Violation type                   | Description (if there are examples, click the arrow symbol in the left sidebar)                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
| -------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `ADULT`                          | <p>Merchants may not engage in transactions related to the sale or use of adult products or services. Example:</p><ul><li>Advertisements for family planning and contraceptive products must focus on the contraceptive function of the product and must not emphasize sexual pleasure or enhancement of sexual function.</li><li>Sex toys</li><li>Adult entertainment videos or live streaming shows</li><li>Sex enhancement products</li><li>Sexually suggestive services</li></ul>                                                                                                                                                                                                               |
| `ALCOHOL`                        | <p>Merchants may not engage in transactions related to the sale of alcohol. Example:</p><ul><li>Books or DVDs about alcohol</li><li>Alcohol-related merchandise, including glasses, coolers, and wine racks</li><li>Alcoholic beverages</li><li>Brewing equipment</li></ul>                                                                                                                                                                                                                                                                                                                                                                                                                         |
| `ANIMALS`                        | <p>Merchants may not engage in transactions related to the sale of any animals. Example:</p><ul><li>Animal cages</li><li>Animal supplies (such as toys and collars)</li><li>Veterinary services</li><li>Grooming and boarding services</li><li>Pet adoption services</li><li>Live animals</li><li>Livestock</li><li>Animal body parts prohibited by law, including but not limited to bones, teeth, horns, ivory, taxidermy, organs, extremities, secretions, or carcasses</li><li>Any products or parts, including but not limited to feathers, skin, leather, fur, or hair from any cat, dog, endangered, or threatened animal</li></ul>                                                          |
| `BODY_PARTS_FLUIDS`              | <p>Merchants may not engage in transactions related to the sale of human organs or bodily fluids. Example:</p><ul><li>Blood donation centers</li><li>Blood</li><li>Wigs and hairpieces</li><li>Urine</li><li>Body parts</li><li>Organs</li><li>Human tissue</li><li>Teeth</li></ul>                                                                                                                                                                                                                                                                                                                                                                                                                 |
| `DATING`                         | Merchants may not engage in or facilitate transactions related to online dating or matchmaking services.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
| `DIGITAL_SERVICES_PRODUCTS`      | <p>Merchants may not engage in transactions related to the sale of the following: any digital content, digital subscription services, or subscriptions, renewals, or upgrades to digital accounts, including processing or linking to such content or services. Example:</p><ul><li>Genuine audio or video CDs, DVDs, and Blu-ray digital devices, including smartphones, video game consoles, and TVs</li><li>Downloadable content, including PDFs, music, games, and movies</li><li>Digital accounts, including game accounts</li><li>Digital subscriptions and internet streaming services, including TV, mobile devices, etc.</li><li>Electronic coupons</li></ul>                              |
| `DRUGS`                          | <p>Merchants may not engage in transactions related to the sale of illegal drugs, prescription drugs, or recreational drugs, except for non-direct manufacturers and medical service providers. Example:</p><ul><li>Controlled substances, including marijuana and cannabis products</li><li>Drug paraphernalia, including pipes and bongs</li><li>Prescription drugs</li></ul>                                                                                                                                                                                                                                                                                                                     |
| `GAMBLING`                       | Merchants may not engage in or support transactions related to gambling, games of skill, or lotteries, including online casinos involving money, sports betting platforms, bingo games, or card games.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
| `HEALTHCARE`                     | <p>Merchants may not engage in transactions related to specific healthcare products, including medical devices and nicotine-containing smoking cessation products, except for non-direct manufacturers and medical service providers. Example:</p><ul><li>Medical devices</li><li>Fashion accessories and fitness accessories</li><li>Contact lenses, bandages, and braces for treating personal injuries</li><li>Thermometers</li><li>Test kits for detecting medical conditions or diseases</li><li>Breast pumps</li><li>First aid kits</li><li><p>Smoking cessation products</p><ul><li>Nicotine patches, nicotine gum</li></ul></li></ul>                                                       |
| `ILLEGAL_PRODUCTS`               | Merchants may not engage in transactions involving the operation or exchange of illegal goods or services.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
| `MISLEADING`                     | <p>WhatsApp prohibits business models, goods, items, or services that we believe may be fraudulent, misleading, offensive, or deceptive, or may be exploitative, inappropriate, or place undue pressure on the target group. Example:</p><ul><li>Multi-level distribution</li><li>Penny auctions</li><li>Initial Coin Offerings (ICOs) and binary options</li><li>Payday loans, check advance services, P2P lending, debt collection services, and bail bonds</li><li>Diet or other health products that imply or attempt to induce negative self-perception</li></ul>                                                                                                                              |
| `OVERTLY_SEXUALIZED_POSITIONING` | <p>Merchants may not present goods or services in a sexually suggestive way. Example:</p><ul><li>Implied nudity</li><li>Implied sexual activity</li><li>Enlarged pornographic images</li></ul>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
| `REAL_FAKE_CURRENCY`             | <p>Merchants may not engage in transactions related to the sale of real, virtual, or counterfeit currency. Example:</p><ul><li>Real money (cash, coins, or cash equivalents)</li><li>Counterfeit currency or prop money</li><li>Digital currency or cryptocurrency</li><li>Activated bank credit or debit cards</li><li>Store credit cards or coupons</li><li>Prepaid credit or debit cards</li><li>Checks or checkbooks</li><li>Devices used to counterfeit currency or financial instruments</li></ul>                                                                                                                                                                                            |
| `SCAM`                           | Merchants may not engage in or facilitate any transaction related to promoting scams.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
| `SUPPLEMENTS`                    | <p>Merchants may not engage in transactions related to the sale of unsafe edible supplements, as determined by WhatsApp at its sole discretion. Example:</p><ul><li>Synthetic steroids</li><li>Chitosan</li><li>Comfrey</li><li>Dehydroepiandrosterone</li><li>Ephedra</li><li>Human growth hormone</li></ul>                                                                                                                                                                                                                                                                                                                                                                                       |
| `THIRD_PARTY_INFRINGEMENTS`      | <p>Transactions must not contain content that infringes or violates any third-party intellectual property rights, including copyrights or trademarks. This includes, but is not limited to, the sale of counterfeit goods, such as products that copy the trademarks (names or logos) and/or distinctive features of other companies to pass them off as genuine.</p><ul><li>Counterfeit, imitation, or copied branded products, or posts containing products that may confuse consumers about origin, sponsorship, or affiliation.</li><li>Unauthorized or pirated copyrighted works, such as videos, movies, TV shows, radio programs, video games, books, CDs, or other musical works.</li></ul> |
| `TOBACCO`                        | <p>Merchants may not engage in transactions related to the sale of tobacco products or related accessories. Example:</p><ul><li>Clothing bearing tobacco brand logos</li><li>Tobacco, cigars, and chewing tobacco</li><li>Pipes and cigarette-making accessories, cigarette rolling machines</li><li>Hookahs</li><li>Bongs</li><li>Cigarette papers</li><li>E-cigarettes or vaping devices</li></ul>                                                                                                                                                                                                                                                                                                |
| `UNAUTHORIZED_MEDIA`             | <p>Merchants may not engage in transactions related to the sale of devices that facilitate or encourage the following: streaming unauthorized digital content; interfering with other electronic devices from performing their function. Example:</p><ul><li>Accessories for streaming devices, such as keyboards and remote controls</li><li>Selling streaming devices loaded with software that facilitates unauthorized access to content</li><li>Jailbroken or preloaded devices</li><li>Interference or descrambling devices</li><li>Eavesdropping devices</li></ul>                                                                                                                           |
| `WEAPONS`                        | <p>Merchants may not engage in transactions related to the sale or use of weapons, ammunition, or explosives. Example:</p><ul><li>Promoting safety training or licenses for lawful weapons</li><li>Firearms and firearm parts</li><li>Paintball guns</li><li>BB guns</li><li>Fireworks</li><li>Pepper spray</li><li>Tasers</li><li>Shooting ranges</li><li>Gun shows</li></ul>                                                                                                                                                                                                                                                                                                                      |


# Error Codes

In general, we recommend that you build your application's error-handling logic around `code` values and `details` payload properties. These properties and their values better reflect the underlying error. As `message` is part of the value, the code name does not have a dedicated property in the API error response payload. However, we recommend that you do not rely on the code name to build error-handling logic, because the code name will eventually be deprecated.


# Custom Error Codes

## API error codes

| **Status code** | **Status description**                                                         | **English description**                                                       |
| --------------- | ------------------------------------------------------------------------------ | ----------------------------------------------------------------------------- |
| **0**           | **Submission successful**                                                      | **Submitted success**                                                         |
| 101             | Account does not exist                                                         | Account does not exist                                                        |
| 118             | Sending number does not exist                                                  | send phone number does not exist                                              |
| 102             | Incorrect password                                                             | Password wrong                                                                |
| 103             | Incorrect pull count format                                                    | Incorrect number of pulls                                                     |
| 104             | Pull count not within range                                                    | Pull number is not in the range                                               |
| 105             | Batch ID exceeds 128 characters                                                | uid length exceeds 128 character limit                                        |
| 106             | SMS content exceeds 3000 character limit                                       | Text message length exceeds 3000 character limit                              |
| 108             | Phone number format error                                                      | Wrong format of phone number                                                  |
| 109             | Incorrect number of phone numbers                                              | Wrong phone number                                                            |
| 110             | Insufficient balance                                                           | Account balance is insufficient                                               |
| 112             | Product configuration error                                                    | Product configuration error                                                   |
| 114             | Client IP error                                                                | Client IP error                                                               |
| 115             | No domestic SMS permission                                                     | No domestic SMS permission                                                    |
| 116             | Account deleted or disabled                                                    | Account deleted or disabled                                                   |
| 117             | Access number exceeds 20 characters                                            | senderId length exceeds 20 character limit                                    |
| 123             | SMS content cannot be empty                                                    | SMS content cannot be empty                                                   |
| 124             | Introduction or verification code cannot be empty                              | Introduction or verification code cannot be empty                             |
| 125             | A specific customer phone number cannot be used more than ten times in one day | Specific customer mobile phone number cannot exceed ten times on the same day |
| 126             | Scheduled SMS send time cannot be empty                                        | Timing SMS sending time cannot be empty                                       |
| 127             | Scheduled SMS send time error                                                  | Timed SMS sending time error                                                  |
| 128             | Account length exceeds 50 characters                                           | Account length exceeds 50 digits                                              |
| 129             | Product price configuration error                                              | Product price configuration error                                             |
| 130             | Unknown exception                                                              | Unknown anomaly                                                               |
| 131             | Exceeded daily sending limit                                                   | Exceeded daily sending limit                                                  |
| 132             | Exceeded monthly sending limit                                                 | Exceeded monthly sending limit                                                |
| 133             | Exceeded sending limit                                                         | Exceeded sending limit                                                        |
| 134             | Exceeded anti-complaint limit                                                  | Exceeded counter-complaint limit                                              |
| 135             | SMS content does not match                                                     | messages don't match                                                          |
| 136             | SMS billing failed                                                             | message charge error                                                          |
| 137             | Insufficient account balance                                                   | Insufficient account balance                                                  |
| 138             | Blacklist sending restriction                                                  | blacklist send limit                                                          |
| 139             | WhatsApp template ID mismatch                                                  | whatsApp templateId match error                                               |
| 140             | Exceeded daily sending amount limit                                            | Exceeded daily money limit                                                    |
| 141             | Number is a dead/disconnected number                                           | Phone number is vacant                                                        |
| 142             | New users must configure an IP whitelist                                       | Client IP is required                                                         |
| 143             | Rate limiting error                                                            | Traffic control error                                                         |
| 201             | Sender number is invalid                                                       | Send number is invalid                                                        |
| 202             | No available sender                                                            | No sender available                                                           |
| 203             | No sending price                                                               | Price not found                                                               |
| 204             | WhatsApp template does not exist                                               | WhatsApp template not found                                                   |
| 205             | WhatsApp template type error                                                   | WhatsApp category error                                                       |
| 206             | Please configure WhatsApp sending channel                                      | WhatsApp gateway not found                                                    |
| 207             | WhatsApp channel attributes do not match                                       | WhatsApp gateway attribute mismatch                                           |
| 208             | WABA account not bound                                                         | WABA account unknown                                                          |
| 100000          | Token failed                                                                   | Token Failed                                                                  |
| 100001          | Token validation failed                                                        | Invalid Token                                                                 |
| 100002          | Token missing                                                                  | Token Missing                                                                 |
| 100003          | Not logged in                                                                  | Not Login                                                                     |
| 100004          | Username or password incorrect                                                 | Username or Password Error                                                    |
| 100005          | Ticket missing                                                                 | Ticket Missing                                                                |
| 100006          | Ticket validation failed                                                       | Ticket Invalid                                                                |
| 100007          | Logout failed                                                                  | Logout Failed                                                                 |
| 100008          | IP validation failed                                                           | IP Error                                                                      |
| 100009          | Signature validation failed                                                    | Sign Error Or Invalid                                                         |
| 101000          | AES encryption or decryption failed                                            | AES Encrypt or Decrypt Failed                                                 |
| 200001          | Data not found                                                                 | Data Not Existed                                                              |
| 200002          | Data already exists                                                            | Data Existed                                                                  |
| 200003          | Parameter error                                                                | Param Error                                                                   |
| 200004          | File processing failed                                                         | File Processing Failure                                                       |
| 300001          | Member verification failed                                                     | membership check failed                                                       |
| 500             | Internal server error                                                          | Server Internal Error                                                         |


# Meta Error Codes

## Throttling error

| Code                                                                                             | Details                                                                                                                                                                    | Possible causes and solutions                                                                                                                                                                                                                                                                                                                     | HTTP status code |
| ------------------------------------------------------------------------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------- |
| <p><code>4</code></p><p>Too many API calls</p>                                                   | This app has reached its API call traffic limit.                                                                                                                           | In[App Dashboard](https://developers.facebook.com/apps)load this app, then check the**App Rate Limits**section to confirm whether this app has reached its[rate limits](https://developers.facebook.com/docs/graph-api/overview/rate-limiting#wa-biz-api). If it has, try again later or reduce how often or how many API queries this app makes. | `400`Bad request |
| <p><code>80007</code></p><p>Rate limit issue</p>                                                 | The WhatsApp Business account has reached its rate limit.                                                                                                                  | See the WhatsApp Business account[rate limits](https://developers.facebook.com/documentation/business-messaging/whatsapp/about-the-platform#rate-limits). Try again later; or reduce how often or how many API queries this app makes.                                                                                                            | `400`Bad request |
| <p><code>130429</code></p><p>Throughput reached</p>                                              | Cloud API message throughput reached.                                                                                                                                      | This app has reached the API throughput limit. See[Throughput](https://developers.facebook.com/documentation/business-messaging/whatsapp/throughput). Try again later; or reduce how frequently this app sends messages.                                                                                                                          | `400`Bad request |
| <p><code>131048</code></p><p>Spam rate limit reached</p>                                         | This phone number is limited in how many messages it can send, so message sending failed. This can be because too many messages were previously blocked or marked as spam. | Check your quality status in the WhatsApp Manager. See[Template limits](https://developers.facebook.com/documentation/business-messaging/whatsapp/templates/overview#template-limits)and[Template quality](https://developers.facebook.com/documentation/business-messaging/whatsapp/templates/template-quality).                                 | `400`Bad request |
| <p><code>131056</code></p><p>Pairing rate limit reached (business account, consumer account)</p> | Too many messages were sent in a short time from the sender phone number to the same recipient phone number.                                                               | If you need to send messages to the same phone number, wait and retry the operation. You can still send messages to other numbers without waiting                                                                                                                                                                                                 | `400`Bad request |
| <p><code>133016</code></p><p>Exceeded account registration/unregistration attempt limit</p>      | Failed to successfully register or unregister this phone number due to too many attempts in a short period.                                                                | This business phone number was blocked for reaching the maximum number of registration/unregistration attempts. After the number is unblocked, try again. See the[Registration](https://developers.facebook.com/documentation/business-messaging/whatsapp/business-phone-numbers/registration)documentation's "Limits" section.                   | `400`Bad request |

## Other errors

<table data-header-hidden><thead><tr><th></th><th width="192.45703125"></th><th width="353.25390625"></th><th></th></tr></thead><tbody><tr><td>Code</td><td>Details</td><td>Possible causes and solutions</td><td>HTTP status code</td></tr><tr><td><p><code>130472</code></p><p>User's number involved in an experiment</p></td><td>The message was not sent as part of an<a href="https://developers.facebook.com/documentation/business-messaging/whatsapp/support/experiments">experiment</a>.</td><td>See<a href="https://developers.facebook.com/documentation/business-messaging/whatsapp/support/experiments#marketing-message-experiment">Marketing message experiment</a>.</td><td><code>400</code>Bad request</td></tr><tr><td><p><code>131000</code></p><p>errored</p></td><td>An unknown error occurred, so message sending failed.</td><td>Try again. If the error persists, create a<a href="https://business.facebook.com/direct-support">direct support</a>ticket. For WhatsApp Flows that use the endpoint - when<a href="https://developers.facebook.com/docs/whatsapp/cloud-api/reference/whatsapp-business-encryption#set-business-public-key">Setting the business public key</a>the signature cannot be computed or the GraphQL endpoint cannot be called, or the GraphQL endpoint returns an error.</td><td><code>500</code>Internal server error</td></tr><tr><td><p><code>131005</code></p><p>Access denied</p></td><td>Permission not granted or permission removed.</td><td>Use the<a href="https://developers.facebook.com/tools/debug/accesstoken">Access Token Debugger</a>to confirm whether your app has the permissions required by the endpoint. See<a href="https://developers.facebook.com/documentation/business-messaging/whatsapp/support#authentication-authorization">Authentication and authorization errors</a>.</td><td><code>403</code>Forbidden</td></tr><tr><td><p><code>131008</code></p><p>Required parameter missing</p></td><td>A required parameter is missing from the request.</td><td>See the endpoint reference docs to determine which parameters are required.</td><td><code>400</code>Bad request</td></tr><tr><td><p><code>131009</code></p><p>Invalid parameter value</p></td><td>One or more parameter values are invalid.</td><td>See the reference docs for this endpoint to determine which values each parameter supports; see<a href="https://developers.facebook.com/documentation/business-messaging/whatsapp/business-phone-numbers/phone-numbers">Phone numbers</a>to learn how to add phone numbers to a WhatsApp Business account.</td><td><code>400</code>Bad request</td></tr><tr><td><p><code>131016</code></p><p>Service unavailable</p></td><td>Service temporarily unavailable.</td><td>Visit the <a href="https://l.facebook.com/l.php?u=https%3A%2F%2Fmetastatus.com%2Fwhatsapp-business-api%3Ffbclid%3DIwZXh0bgNhZW0CMTAAYnJpZBExbE9VS2JWNHdDYmhoeGEyTHNydGMGYXBwX2lkEDIyMjAzOTE3ODgyMDA4OTIAAR7EwI3ZeWkET0sv1d6qOrSD0EpoQ_Q1Mk2PQW7RwhWbCn75U-eiQJ_KDp0ngQ_aem_4xCDGSMuoqb1wpbLeXHEtA&#x26;h=AT1-HiPjeXGiLt1BiGu1049D_WZ7upc-8sNO1mNYIEEZACB3rt71Yz171vvn4L_RFbrd3KCzjpPyD04aw8m3d2RL5XpZJ5FokjpSwGDAoZ3z0nupqTZS6e4zgm-Xa1D5jKbRobWTbfM">WhatsApp Business Platform Status</a>page to view API status information, then try again.</td><td><code>500</code>Internal server error</td></tr><tr><td><p><code>131021</code></p><p>Recipient cannot be the sender</p></td><td>Sender and recipient phone numbers are the same.</td><td>Send the message to a phone number different from the sender.</td><td><code>400</code>Bad request</td></tr><tr><td><p><code>131026</code></p><p>Message undeliverable</p></td><td><p>The message could not be delivered. Reasons may include:</p><ul><li>The recipient's phone number is not a WhatsApp number.</li><li>The recipient has not accepted our new Terms of Service and Privacy Policy.</li><li><p>The recipient is using an old version of WhatsApp; they must use the following WhatsApp versions or newer:</p><ul><li>Android: 2.21.15.15</li><li>SMBA: 2.21.15.15</li><li>iOS: 2.21.170.4</li><li>SMBI: 2.21.170.4</li><li>KaiOS: 2.2130.10</li><li>Web: 2.2132.6</li></ul></li></ul></td><td><p>If using a non‑WhatsApp contact method, ask the WhatsApp user to:</p><ul><li>Confirm they can actually send messages to your WhatsApp Business phone number.</li><li>Confirm they have accepted our latest Terms of Service (if they haven't yet accepted, the system will prompt them to accept the latest terms/policies in<strong>Settings</strong> > <strong>Help</strong>or in<strong>Settings</strong> > <strong>App Info</strong>).</li><li>Update to the latest WhatsApp client.</li></ul></td><td><code>400</code>Bad request</td></tr><tr><td><p><code>131037</code></p><p>Phone numbers provided by WhatsApp require an approved display name before messages can be sent.</p></td><td>The <a href="https://developers.facebook.com/documentation/business-messaging/whatsapp/embedded-signup/overview#555-business-phone-numbers">555 business phone number</a>used to send the request does not have an approved<a href="https://developers.facebook.com/documentation/business-messaging/whatsapp/docs/whatsapp/display-names">display name</a>.</td><td>for the 555 business phone number. Also see our Help Center article<a href="https://developers.facebook.com/documentation/business-messaging/whatsapp/display-names">display name</a>How to change your WhatsApp Business display name<a href="https://www.facebook.com/business/help/378834799515077">for instructions.</a>article.</td><td><code>400</code>Bad request</td></tr><tr><td><p><code>131042</code></p><p>Business payment eligibility issue</p></td><td>There is an issue with your payment method.</td><td><p>See <a href="https://www.facebook.com/business/help/2225184664363779">Billing overview for WhatsApp Business account</a>to confirm whether you have set up billing correctly. Common issues:</p><ul><li>WhatsApp Business account not linked to a payment account</li><li>Quota exceeded</li><li>Quota not set or enabled (payment account)</li><li>WhatsApp Business account deleted</li><li>WhatsApp Business account deactivated</li><li>Timezone not set</li><li>Currency not set</li><li>MessagingFor request (on behalf) pending or denied</li></ul></td><td><code>400</code>Bad request</td></tr><tr><td><p><code>131045</code></p><p>Incorrect certificate</p></td><td>Message sending failed because of a phone number registration error.</td><td><a href="https://developers.facebook.com/documentation/business-messaging/whatsapp/business-phone-numbers/registration">Register the phone number</a>and then retry.</td><td><code>500</code>Internal server error</td></tr><tr><td><p><code>131047</code></p><p>Re‑engagement message</p></td><td>More than 24 hours have passed since the recipient last replied to the sender number.</td><td>Instead, send the recipient a<a href="https://developers.facebook.com/documentation/business-messaging/whatsapp/templates/overview">template message</a>.</td><td><code>400</code>Bad request</td></tr><tr><td><p><code>131049</code></p><p>Meta chose not to deliver.</p></td><td>To maintain a healthy ecosystem, this message was not delivered.</td><td>If you receive this error code and suspect it is due to this restriction, wait at least 24 hours before resending a template message. Because this restriction can be enforced at varying times, resending immediately will likely result in another error response. See<a href="https://developers.facebook.com/documentation/business-messaging/whatsapp/templates/marketing-templates/per-user-limits">Marketing template message limit per user</a>.</td><td><code>400</code>Bad request</td></tr><tr><td><p><code>131050</code></p><p>User opted out of marketing messages.</p></td><td>Message undeliverable. The recipient has chosen to stop receiving marketing messages from businesses via WhatsApp.</td><td>Do not attempt to send messages to this user again, because they will not receive them. To be notified whenever a WhatsApp user stops or resumes receiving marketing template messages from you, subscribe to <a href="https://developers.facebook.com/documentation/business-messaging/whatsapp/webhooks/reference/user_preferences">user_preferences webhook</a>.</td><td><code>400</code>Bad request</td></tr><tr><td><p><code>131051</code></p><p>Message type not supported</p></td><td>Message type not supported.</td><td>See<a href="https://developers.facebook.com/documentation/business-messaging/whatsapp/messages/send-messages#message-types">Message</a>to learn about supported message types, then retry using a supported message type.</td><td><code>400</code>Bad request</td></tr><tr><td><p><code>131052</code></p><p>Error downloading media</p></td><td>Unable to download media sent by the user.</td><td>We cannot download the media included in the message sent by this WhatsApp user. For details, see any<strong>Message</strong> value in the Webhook that was triggered when the message was received. <code>error.error_data.details</code> Have the WhatsApp user send the media file to you using a non‑WhatsApp method.</td><td><code>400</code>Bad request</td></tr><tr><td><p><code>131053</code></p><p>Error uploading media</p></td><td>Unable to upload the media used in the message.</td><td>We couldn't upload the media for one or more reasons (for example, unsupported media type). For details, see any<strong>Message</strong> value in the Webhook that was triggered when the message was received. <code>error.error_data.details</code> values triggered when message sending failed. We recommend checking any media files that caused the error and confirming those files are actually supported. For example, on UNIX you can check a file's MIME type from the command line using:<code>file -I rejected-file.mov</code>Then you can confirm whether its MIME type is supported. See<a href="https://developers.facebook.com/documentation/business-messaging/whatsapp/business-phone-numbers/media#supported-media-types">Supported media types</a>.</td><td><code>400</code>Bad request</td></tr><tr><td><p><code>131057</code></p><p>Account in maintenance mode</p></td><td>Business account in maintenance mode</td><td>The WhatsApp Business account is currently in maintenance mode. One possible reason is that the account is undergoing an<a href="https://developers.facebook.com/documentation/business-messaging/whatsapp/throughput">Throughput</a>upgrade.</td><td><code>500</code>Bad request</td></tr><tr><td><p><code>132000</code></p><p>Template parameter count mismatch</p></td><td>The number of variable parameter values included in the request does not match the number of variables defined in the template.</td><td>See our<a href="https://developers.facebook.com/documentation/business-messaging/whatsapp/templates/overview#parameter-formats">Templates</a>documentation to learn about parameters, and ensure the request includes all parameter values the template requires.</td><td><code>400</code>Bad request</td></tr><tr><td><p><code>132001</code></p><p>Template does not exist</p></td><td>The template does not exist in the specified language or has not yet been approved.</td><td>Ensure your template is approved and that the template name and language settings are correct. See our<a href="https://developers.facebook.com/documentation/business-messaging/whatsapp/templates/overview">Templates</a>documentation for details about templates.</td><td><code>404</code>Not found</td></tr><tr><td><p><code>132005</code></p><p>Template filler text too long</p></td><td>Translated text too long.</td><td>Check WhatsApp Manager to confirm the template has been translated. See our<a href="https://developers.facebook.com/documentation/business-messaging/whatsapp/templates/template-quality">Template quality</a>documentation to learn how to check template status.</td><td><code>400</code>Bad request</td></tr><tr><td><p><code>132007</code></p><p>Violation of template formatting character policy</p></td><td>Template content violates WhatsApp policies.</td><td>See our<a href="https://developers.facebook.com/documentation/business-messaging/whatsapp/templates/template-review">Template review</a>documentation to learn possible reasons for violations.</td><td><code>400</code>Bad request</td></tr><tr><td><p><code>132012</code></p><p>Template parameter format mismatch</p></td><td>Variable parameter values have incorrect format.</td><td>The variable parameter values included in the request do not use the format specified in the template. See our<a href="https://developers.facebook.com/documentation/business-messaging/whatsapp/templates/overview#parameter-formats">Templates</a>documentation for details about template parameters and formatting.</td><td><code>400</code>Bad request</td></tr><tr><td><p><code>132015</code></p><p>Template suspended</p></td><td>The template was suspended due to<a href="https://developers.facebook.com/documentation/business-messaging/whatsapp/templates/template-quality">low quality</a>so you cannot send this template in a template message.</td><td><a href="https://developers.facebook.com/documentation/business-messaging/whatsapp/templates/template-management#edit-templates">Edit the template</a>to improve its quality, and retry after the template is approved.</td><td><code>400</code>Bad request</td></tr><tr><td><p><code>132016</code></p><p>Template disabled</p></td><td>The template has been suspended multiple times for<a href="https://developers.facebook.com/documentation/business-messaging/whatsapp/templates/template-quality">low quality</a>and is now permanently disabled.</td><td>Create a new template with different content.</td><td><code>400</code>Bad request</td></tr><tr><td><p><code>132068</code></p><p>Flows blocked</p></td><td>Flows are in a blocked state.</td><td>Correct Flows</td><td><code>400</code>Bad request</td></tr><tr><td><p><code>132069</code></p><p>Flows throttled</p></td><td>Flows are throttled; 10 messages using this Flow have been sent in the past hour.</td><td>Correct Flows</td><td><code>400</code>Bad request</td></tr><tr><td><p><code>133000</code></p><p>Unregistration incomplete</p></td><td>A previous unregistration attempt failed.</td><td>Re<a href="https://developers.facebook.com/documentation/business-messaging/whatsapp/business-phone-numbers/registration#deregister-phone">unregister</a>the number and then<a href="https://developers.facebook.com/documentation/business-messaging/whatsapp/business-phone-numbers/registration">Registration</a>.</td><td><code>500</code>Internal server error</td></tr><tr><td><p><code>133004</code></p><p>Server temporarily unavailable</p></td><td>Server temporarily unavailable.</td><td>Visit the <a href="https://l.facebook.com/l.php?u=https%3A%2F%2Fmetastatus.com%2Fwhatsapp-business-api%3Ffbclid%3DIwZXh0bgNhZW0CMTAAYnJpZBExbE9VS2JWNHdDYmhoeGEyTHNydGMGYXBwX2lkEDIyMjAzOTE3ODgyMDA4OTIAAR5fR8pg0B-IicB7-ftrE6-418relABYe1kdgQ5a2bXacuVyTSfzGxYw2C4Z6w_aem_QF3mdEnurygRKixWZdHStg&#x26;h=AT1-HiPjeXGiLt1BiGu1049D_WZ7upc-8sNO1mNYIEEZACB3rt71Yz171vvn4L_RFbrd3KCzjpPyD04aw8m3d2RL5XpZJ5FokjpSwGDAoZ3z0nupqTZS6e4zgm-Xa1D5jKbRobWTbfM">WhatsApp Business Platform Status</a>page to view API status info, check the <code>details</code> value in the response, and then try again.</td><td><code>503</code>Service unavailable</td></tr><tr><td><p><code>133005</code></p><p>Two‑step verification PIN mismatch</p></td><td>Two‑step verification PIN is incorrect.</td><td>Confirm the two‑step verification PIN included in the request is correct. To reset the PIN, disable two‑step verification, then set a new PIN. See<a href="https://developers.facebook.com/documentation/business-messaging/whatsapp/business-phone-numbers/phone-numbers#two-step-verification">Two‑step verification</a>.</td><td><code>400</code>Bad request</td></tr><tr><td><p><code>133006</code></p><p>Phone number needs re‑verification</p></td><td>The phone number must be verified before registration.</td><td><a href="https://developers.facebook.com/documentation/business-messaging/whatsapp/solution-providers/registering-phone-numbers">Verify and register the phone number</a>.</td><td><code>400</code>Bad request</td></tr><tr><td><p><code>133008</code></p><p>Two‑step verification PIN attempts exceeded</p></td><td>Too many two‑step verification PIN attempts for this phone number.</td><td>In <code>details</code> Retry after the time specified in the response value.</td><td><code>400</code>Bad request</td></tr><tr><td><p><code>133009</code></p><p>Two‑step verification PIN attempts too fast</p></td><td>Two‑step verification PIN entered too quickly.</td><td>Check the <code>details</code> response value, then try again.</td><td><code>400</code>Invalid request</td></tr><tr><td><p><code>133010</code></p><p>Phone number not registered</p></td><td>The phone number is not registered on the WhatsApp Business Platform.</td><td><a href="https://developers.facebook.com/documentation/business-messaging/whatsapp/business-phone-numbers/registration">Register the phone number</a>and then retry.</td><td><code>400</code>Invalid request</td></tr><tr><td><p><code>133015</code></p><p>Wait a few minutes and then try registering the phone number again</p></td><td>The phone number you are currently trying to register was recently deleted but deletion is not yet complete.</td><td>Wait 5 minutes and then retry the request.</td><td><code>400</code>Invalid request</td></tr><tr><td><p><code>134011</code></p><p>Has not accepted WhatsApp payment terms</p></td><td>Message sending failed because this WhatsApp Business account is awaiting acceptance of WhatsApp payment terms.</td><td>Accept the WhatsApp payment terms using the link provided in the error message, then retry.</td><td><code>400</code>Invalid request</td></tr><tr><td><p><code>135000</code></p><p>General user error</p></td><td>There was an unknown error in your request parameters, so message sending failed.</td><td>See the<a href="https://developers.facebook.com/documentation/business-messaging/whatsapp/overview">reference docs</a>for this endpoint to confirm the syntax you used to query the endpoint is correct. If you continue to receive this error code in responses, contact<a href="https://developers.facebook.com/support/">Customer Support</a>.</td><td></td></tr></tbody></table>

## WhatsApp Marketing Messages API error codes

The WhatsApp Marketing Messages API uses the same error codes as the Cloud API and adds some additional error codes listed below.

<table data-header-hidden><thead><tr><th></th><th></th><th width="161.1015625"></th><th width="220.62890625"></th><th></th></tr></thead><tbody><tr><td>Code</td><td>Message</td><td>Details</td><td>Possible causes and solutions</td><td>HTTP<br>status<br>code</td></tr><tr><td><code>100</code></td><td><code>(#100) Invalid parameter</code></td><td><code>Message must be a template message.</code></td><td>You are attempting to send a non‑template message. Message type must be <code>template</code>. Please retry using a marketing template.</td><td>400 Bad Request</td></tr><tr><td><code>131009</code></td><td><code>(#131009) Parameter value is not valid</code></td><td><code>One or more parameter values are invalid.</code></td><td>A parameter you used may be invalid. Confirm you are using<a href="https://developers.facebook.com/documentation/business-messaging/whatsapp/marketing-messages/send-marketing-messages">valid parameters</a>and then retry. Ad sync may not be complete. Wait 10 minutes and try again. If the problem persists, contact support.</td><td>400 Bad Request</td></tr><tr><td><code>131055</code></td><td><code>(#131055) Method not allowed</code></td><td><code>Only marketing template messages are supported</code></td><td>You might be attempting to send a non‑template message or an authentication or utility template. Try sending again using a marketing template message.</td><td>400 Bad Request</td></tr><tr><td><code>134100</code></td><td><code>(#134100) Only marketing messages supported</code></td><td><code>You're only able to send marketing messages on this API.</code></td><td><em>Will be launched in Graph API v23.0.</em>You are attempting to send utility or authentication templates. Only <code>MARKETING</code> class templates are supported.</td><td>400 Bad Request</td></tr><tr><td><code>134101</code></td><td><code>(#134101) Your template is still syncing</code></td><td><code>When you send a message from a template, the template syncing process can take up to 10 minutes to complete. Wait a few minutes, and then try sending your message again.</code></td><td><em>Will be launched in Graph API v23.0.</em>You are attempting to send a newly created template whose ad sync has not completed. Ad sync can take up to 10 minutes. Wait 10 minutes and try again.</td><td>400 Bad Request</td></tr><tr><td><code>134102</code></td><td><code>(#134102) Template unavailable for use</code></td><td><code>Please check your eligibility status to ensure you are onboarded (/documentation/business-messaging/whatsapp/marketing-messages/onboarding#ensure-you-are-eligible-to-onboard) or contact Meta's customer support.</code></td><td><em>Will be launched in Graph API v23.0.</em>We couldn't complete ad sync for the template you attempted to send, or you might not be eligible to use the WhatsApp Marketing Messages API.<a href="https://developers.facebook.com/documentation/business-messaging/whatsapp/marketing-messages/onboarding#check-waba-onboarding-status-and-eligibility">Check your eligibility status</a>. If the WhatsApp Business account's <code>marketing_messages_lite_api_status</code>value is <code>ONBOARDED</code> and the issue persists,<a href="https://business.facebook.com/direct-support/">contact support</a>.</td><td>500 Internal Server Error</td></tr><tr><td><code>1752041</code></td><td><code>(#1752041) Duplicate Request</code></td><td><code>Duplicate Request is thrown when a client has already been invited to onboard by any partner.</code></td><td>Onboarding requests are limited to one per business customer; only the first partner that calls the Intention API can successfully submit the request. Once a customer is onboarded, all eligible WhatsApp Business Accounts (WABA) for that customer are automatically included in the process. If you receive an error indicating an onboarding request has already been made, no further action is required because all eligible WABAs for that customer will be included without additional steps.</td><td>400 Bad Request</td></tr></tbody></table>


# Language Code

| **Encoding** | **Display name** | **Encoding** | **Display name** |
| ------------ | ---------------- | ------------ | ---------------- |
| **af**       | Afrikaans        | **ko**       | Korean           |
| **sq**       | Albanian         | **lo**       | Lao              |
| **ar**       | Arabic           | **lv**       | Latvian          |
| **az**       | Azerbaijani      | **lt**       | Lithuanian       |
| **bn**       | Bengali          | **mk**       | Macedonian       |
| **bg**       | Bulgarian        | **ms**       | Malay            |
| **ca**       | Catalan          | **ml**       | Malayalam        |
| **zh\_CN**   | Chinese (CHN)    | **mr**       | Marathi          |
| **zh\_HK**   | Chinese (HKG)    | **nb**       | Norwegian        |
| **zh\_TW**   | Chinese (TAI)    | **fa**       | Persian          |
| **hr**       | Croatian         | **pl**       | Polish           |
| **cs**       | Czech            | **pt\_BR**   | Portuguese (BR)  |
| **da**       | Danish           | **pt\_PT**   | Portuguese (POR) |
| **nl**       | Dutch            | **pa**       | Punjabi          |
| **en**       | English          | **ro**       | Romanian         |
| **en\_GB**   | English (UK)     | **ru**       | Russian          |
| **en\_US**   | English (US)     | **sr**       | Serbian          |
| **et**       | Estonian         | **sk**       | Slovak           |
| **fil**      | Filipino         | **sl**       | Slovenian        |
| **fi**       | Finnish          | **es**       | Spanish          |
| **fr**       | French           | **es\_AR**   | Spanish (ARG)    |
| **de**       | German           | **es\_MX**   | Spanish (MEX)    |
| **el**       | Greek            | **es\_ES**   | Spanish (SPA)    |
| **gu**       | Gujarati         | **sw**       | Swahili          |
| **ha**       | Hausa            | **sv**       | Swedish          |
| **he**       | Hebrew           | **ta**       | Tamil            |
| **hi**       | Hindi            | **te**       | Telugu           |
| **hu**       | Hungarian        | **th**       | Thai             |
| **id**       | Indonesian       | **tr**       | Turkish          |
| **ga**       | Irish            | **uk**       | Ukrainian        |
| **it**       | Italian          | **ur**       | Urdu             |
| **ja**       | Japanese         | **uz**       | Uzbek            |
| **kn**       | Kannada          | **vi**       | Vietnamese       |
| **kk**       | Kazakh           | **zu**       | Zulu             |




---

[Next Page](/llms-full.txt/1)

