跳至主要內容

💻 开放平台接口文档


Open API 开放平台接口文档

1. 概述

本文档描述了 Open API 开放平台的接口规范,供开发者接入使用。
所有接口均基于 HTTP/HTTPS 协议,响应数据格式为 JSON。

1.1 环境配置

  • 接口地址: https://openapi.a2c.chat/api/openapi

2. 认证鉴权

开放平台使用 Bearer Token 进行鉴权。在调用业务接口前,需先通过认证接口获取 accessToken,并在后续请求头中携带该 Token。

请求头示例:

Authorization: Bearer <your_access_token>

3. 接口列表

3.1 认证管理

3.1.1 获取访问令牌

获取用于后续接口调用的访问令牌。

  • 接口地址: /open/auth/token
  • 请求方式: POST
  • Content-Type: application/json

请求参数 (Body):

参数名类型必填说明
appIdString应用ID
appSecretString应用密钥

响应参数:

参数名类型说明
codeInteger状态码 (200表示成功)
msgString提示信息
dataObject响应数据
└─ accessTokenString访问令牌
└─ expireInLong过期时间(秒)

3.2 模板管理

3.2.1 获取模板列表

分页查询模板列表。

  • 接口地址: /v1/templates
  • 请求方式: GET

请求参数 (Query):

参数名类型必填说明
wabaIdStringWABA ID
pageNumInteger页码 (默认1)
pageSizeInteger每页条数 (默认10)

响应参数:

参数名类型说明
codeInteger状态码
msgString提示信息
totalLong总记录数
rowsArray模板列表数据
└─ idLong模板ID
└─ nameString模板名称
└─ wabaIdStringWABA ID
└─ languageString语言
└─ categoryInteger类别
└─ statusInteger状态
└─ bodyString模板内容
└─ templateTypeInteger模板类型
└─ qualityRatingInteger质量评级
└─ headerVariableMap头部变量示例
└─ bodyVariableMap正文变量示例

3.2.2 获取可发送的模板

查询状态为 APPROVED (已批准) 的模板列表。

  • 接口地址: /v1/templates/sendable
  • 请求方式: GET

请求参数 (Query):

参数名类型必填说明
wabaIdStringWABA ID

响应参数:

参数名类型说明
codeInteger状态码
msgString提示信息
dataArray模板列表 (字段同上)

3.2.3 获取模板详情 (根据名称和语言)

  • 接口地址: /v1/templates/{name}
  • 请求方式: GET

请求参数:

参数名类型位置必填说明
nameStringPath模板名称
languageStringQuery语言代码

响应参数:

参数名类型说明
codeInteger状态码
msgString提示信息
dataObject模板详情 (字段同上)

3.2.4 获取模板详情 (根据ID)

  • 接口地址: /v1/templates/detail/{id}
  • 请求方式: GET

请求参数:

参数名类型位置必填说明
idStringPath模板ID

响应参数:

参数名类型说明
codeInteger状态码
msgString提示信息
dataObject模板详情 (字段同上)

3.3 账号管理

3.3.1 查询 API 账号列表

  • 接口地址: /v1/accounts
  • 请求方式: GET

请求参数 (Query):

参数名类型必填说明
wabaIdStringWABA ID
apiAccountStringAPI 账号 (发送号码)
statusInteger状态
numberStatusInteger号码状态

响应参数:

参数名类型说明
codeInteger状态码
msgString提示信息
dataArray账号列表
└─ apiPhoneStringAPI 发送号码
└─ wabaIdStringWABA ID
└─ statusInteger状态
└─ numberStatusInteger号码状态
└─ qualityRatingInteger质量评级
└─ messagingLimitInteger消息限制
└─ verifiedNameString已验证名称

3.3.2 获取指定客户手机号的 API 账号

根据客户手机号智能选择合适的 API 发送账号。

  • 接口地址: /v1/accounts/{customerPhone}/account
  • 请求方式: GET

请求参数:

参数名类型位置必填说明
customerPhoneStringPath客户手机号

响应参数:

参数名类型说明
codeInteger状态码
msgString提示信息
dataObject账号信息
└─ apiPhoneStringAPI 账号 (发送号码)
└─ typeInteger状态类型 (1:有效会话, 2:会话已过期, 3:无会话记录, 5:号码无效, 6:号码不存在, 7:号码未启用)
└─ wabaIdStringWABA ID
└─ expirationTimeDate会话过期时间
└─ numberStatusString号码状态

3.3.3 获取账号分组列表

  • 接口地址: /v1/accounts/groups
  • 请求方式: GET

请求参数 (Query):

参数名类型必填说明
groupTypeInteger分组类型
accountGroupTypeInteger账号分组子类型

响应参数:

参数名类型说明
codeInteger状态码
msgString提示信息
dataArray分组列表
└─ idLong分组ID
└─ groupNameString分组名称
└─ groupTypeInteger分组类型

3.3.4 生成设备码

用于生成扫码登录所需的设备码。

  • 接口地址: /v1/accounts/device-code
  • 请求方式: POST
  • Content-Type: application/json

请求参数 (Body):

参数名类型必填说明
groupIdLong分组ID
groupTypeInteger分组类型 (1:普通组, 2:养号组)
accountTypeInteger账号类型 (1:web个人版, 2:web商业版)
ipModeIntegerIP模式 (1:系统自动分配, 2:个人)
scanTypeInteger扫码类型 (1:web扫码, 2:安卓扫码, 3:设备码)
ipIntegerIP ID (用户自定义IP时传入)
ipTypeIntegerIP类别 (系统自动分配时传入: 1:动态ip, 2:养号IP, 3:业务IP)
ipCountryCodeStringIP国家代码
phoneString手机号 (设备码登录必填)
countryString国家

响应参数:

参数名类型说明
codeInteger状态码
msgString提示信息
dataObject响应数据
└─ keyString二维码Key

3.3.5 查询设备码状态

查询设备码的扫码状态和登录结果。

  • 接口地址: /v1/accounts/device-code/query
  • 请求方式: POST
  • Content-Type: application/json

请求参数 (Body):

参数名类型必填说明
keyString二维码Key

响应参数:

参数名类型说明
codeInteger状态码
msgString提示信息
dataObject响应数据
└─ qrCodeString二维码内容
└─ qrCodeStatusInteger二维码状态 (1:已生成, 2:已扫码, 3:已过期, 4:异常, 5:可用云设备数不足, 6:账号存在于回收站, 7:账号存在于账号列表)

3.4 WABA 管理

3.4.1 获取 WABA 账号列表

  • 接口地址: /v1/wabas
  • 请求方式: GET

请求参数 (Query):

参数名类型必填说明
nameStringWABA名称 (模糊查询)

响应参数:

参数名类型说明
codeInteger状态码
msgString提示信息
dataArrayWABA列表
└─ wabaIdStringWABA账户ID
└─ nameString姓名
└─ statusInteger状态 (1:PENDING, 2:APPROVED, 3:REJECTED)
└─ apiConfigTypeIntegerAPI配置类型 (1:ycloud, 2:chatApp, 3:cloudapi)

3.5 消息发送

3.5.1 发送普通消息

支持发送文本、图片、视频、音频、文档等类型的消息。

  • 接口地址: /v1/messages
  • 请求方式: POST
  • Content-Type: application/json

请求参数 (Body):

参数名类型必填说明
toString接收方手机号
senderPhoneNumberString发送人手机号
typeInteger消息类型 (1:文本, 2:图片, 3:视频, 4:音频, 5:文档)
contentString条件必填文本内容 (当 type=1 时必填)
urlString条件必填媒体文件链接 (当 type=2/3/4/5 时必填)
captionString媒体附言
fileNameString文件名

响应参数:

参数名类型说明
codeInteger状态码
msgString提示信息
dataString消息ID

3.5.2 发送模板消息

发送模板消息,支持在没有会话记录的情况下自动创建客户和会话。

  • 接口地址: /v1/messages/template
  • 请求方式: POST
  • Content-Type: application/json

请求参数 (Body):

参数名类型必填说明
senderPhoneNumberString发送人手机号
toString接收方手机号
templateIdLong模板ID
headerVariablesMap头部变量 (Key:变量名, Value:变量值)
bodyVariablesMap内容变量 (Key:变量名, Value:变量值)
buttonVariablesList按钮变量 (按顺序排列)

响应参数:

参数名类型说明
codeInteger状态码
msgString提示信息
dataString消息ID

3.6 IP资源管理

3.6.1 查询个人可用IP列表

  • 接口地址: /v1/ipPool/listAvailable
  • 请求方式: GET

请求参数 (Query):

参数名类型必填说明
hostStringIP地址
groupIdLong分组ID
pageNumInteger页码 (默认1)
pageSizeInteger每页条数 (默认10)

响应参数:

参数名类型说明
codeInteger状态码
msgString提示信息
totalLong总记录数
rowsArrayIP列表数据
└─ idInteger主键ID
└─ hostStringIP地址
└─ portInteger端口
└─ userIdString用户名
└─ passwordString密码

4. Webhook 通知

4.1 概述

开放平台支持通过 Webhook 将关键事件(如客户消息)实时推送到开发者配置的服务器地址。
开发者需要在应用后台配置 Webhook URL。当事件触发时,开放平台会向该 URL 发送 HTTP POST 请求。

  • 请求方式: POST
  • Content-Type: application/json

4.2 消息格式

4.2.1 外层消息结构

所有 Webhook 推送消息均遵循统一的外层结构:

参数名类型说明
idString消息唯一ID (UUID)
timestampLong推送时间戳 (毫秒)
typeString消息类型 (CUSTOMER_MESSAGE)
dataObject业务数据对象

4.2.2 客户消息数据 (type=CUSTOMER_MESSAGE)

typeCUSTOMER_MESSAGE 时,data 字段包含具体的客户消息内容:

参数名类型说明
messageIdString消息ID
contentString消息内容 (文本消息时非空)
fromString发送方手机号
toString接收方手机号
msgTypeString消息类型 (text, image, video, audio, document)
timestampLong消息发送时间戳
nicknameString发送方昵称
headImgString发送方头像URL
fileNameString文件名 (媒体消息)
urlString媒体文件链接
captionString媒体附言
durationInteger语音/视频时长(秒)
thumbnailString缩略图/封面图链接

4.3 响应与重试

  • 响应: 开发者服务器在接收到 Webhook 请求后,应返回 HTTP 200 状态码表示接收成功。
  • 重试: 如果请求失败(非 200 响应或超时),开放平台将自动重试 3 次。

4.4 示例

请求示例 (文本消息):

{
  "id": "550e8400-e29b-41d4-a716-446655440000",
  "timestamp": 1710654000000,
  "type": "CUSTOMER_MESSAGE",
  "data": {
    "messageId": "wamid.HBgNN...",
    "content": "Hello World",
    "from": "1234567890",
    "to": "0987654321",
    "msgType": "text",
    "timestamp": 1710654000,
    "nickname": "John Doe",
    "headImg": "https://example.com/avatar.jpg"
  }
}