API
1. 发送通知
POST https://send.meowpush.com/
Content-Type: application/json公共请求字段
key:单个设备、设备组或应用的推送密钥keys:设备和设备组 Push Key 可混合批量发送,最大 50 个,不能重复
一个请求中,key 或 keys 不能同时使用。
限制:使用应用推送密钥发送通知时,其只能在一次请求中单独使用,不能与其他应用、设备或设备组密钥一起批量发送。
推送请求字段
| 字段 | 类型 | 说明 |
|---|---|---|
title | 字符串,1–256 个字符 | 通知标题 |
subtitle | 字符串,1–256 个字符 | 通知副标题;展示方式因平台而异 |
body | 字符串,1–4000 个字符 | 通知内容 |
level | passive、active、time-sensitive默认值: active | |
badge | 整数,0–99 | 绝对角标值;0 清除角标 |
icon | HTTPS URL,1–2048 个字符 | 来源头像或图标;呈现能力因平台而异 |
image | HTTPS URL,1–2048 个字符 | 通知媒体图片;呈现能力因平台而异 |
url | URI,1–2048 个字符 | 要附加的链接,点击通知后跳转 |
group | 字符串,1–64 个字符 | 将相关通知放入同一分组 |
collapse_id | [A-Za-z0-9_-]{1,32} | 用相同标识替换之前的展示内容 |
ttl | 整数,单位为秒,0–2419200 默认值: 86400 | 通知有效时间 |
data | JSON 对象 | 传给 App 的自定义数据 |
除 body 外,消息字段均为可选。
响应
成功处理后的响应会汇总每个最终投递结果。响应示例:
{
"notification_id": "019cf5f1-7f2d-7d18-8be1-6f27e1916b52",
"accepted": 1,
"failed": 0,
"results": [
{
"key": "mpdv0000000000000001",
"source_keys": ["mpdv0000000000000001"],
"status": "accepted",
"transport": "apns",
"message_id": "provider-message-id"
}
]
}| 字段 | 说明 |
|---|---|
notification_id | 本次 Push Request 的服务端通知标识 |
accepted / failed | 接受和失败的最终设备数 |
results[].key | 该结果的主来源 Push Key |
results[].source_keys | 最终解析到同一设备的来源 Push Key 列表 |
results[].status | accepted 或 failed |
results[].transport | apns、fcm、hms、wns 或 unifiedpush;未解析到设备时可能为 null |
results[].message_id | 上游返回的可选消息标识 |
results[].reason | 失败时的稳定原因代码 |
results[].retry_at | 配额失败时可能返回的最早重试时间 |
accepted 只表示对应上游推送平台(如 APNs、FCM 等)已接收消息投递,最终送达通常会稍晚于响应时间,并受到上游平台和设备状态的影响。
频率限制
发送频率限制(IP 粒度):100 次/秒。
2. 请求应用授权
这是程序使用的创建应用的授权接口。适用于来自 AI Agent、脚本、任务、第三方应用或平台等快速向用户申请专属推送密钥,以发送通知给用户。
在创建应用时,请求方应标明自身应用名称、用途描述等。将获取到的 authorization_url 交给用户请求授权,通过查询或定时轮询结果来获取应用推送密钥。
创建授权请求
POST https://accounts.meowpush.com/api/v1/application-authorization-requests
Content-Type: application/json请求字段
| 字段 | 类型 | 说明 |
|---|---|---|
mode | create 或 reauthorize | 授权请求的模式。必填 |
application_id | 字符串 | 已有应用授权的标识;reauthorize 时必填,create 时不传 |
metadata | JSON 对象 | 应用基础信息;创建时需包含 name,重授权时可传 {}。必填 |
请求有两种模式(mode):create 用于申请新应用授权,reauthorize 用于已有授权的应用重新授权。
mode | Authorization | 请求体 |
|---|---|---|
create | 无需 | mode、metadata;metadata.name 必填 |
reauthorize | Bearer <reauthorization_token> | mode、application_id、metadata;应用标识和凭证来自已有授权 |
申请创建应用授权示例:
{
"mode": "create",
"metadata": { "name": "Daily Summary" }
}重授权示例:
{
"mode": "reauthorize",
"application_id": "019f1000-0000-7000-8000-000000000017",
"metadata": {}
}metadata 字段:
| 字段 | 类型 | 说明 |
|---|---|---|
name | 字符串,1–64 个 Unicode 字符,创建时必填 | 应用名称 |
description | 字符串,最多 1024 个 Unicode 字符 | 应用功能描述 |
website_url | HTTP(S) URL,最多 2048 字节 | 应用的网站链接 |
icon_url | HTTPS URL,最多 2048 字节 | 应用图标 |
在重授权时,可省略字段保留原值,null 清空可选字段;当用户批准重新授权后,之前的推送密钥保持不变,且不会返回新的重授权凭证。
响应
请求授权成功时,返回 HTTP 201,示例:
{
"request_id": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
"authorization_url": "https://accounts.meowpush.com/new-app?rid=AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
"poll_secret": "BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBA",
"expires_at": "2026-10-10T05:00:00.000Z",
"poll_interval_seconds": 2
}| 字段 | 说明 |
|---|---|
request_id | 本次授权请求的标识,用于查询结果 |
authorization_url | 交给用户的私密授权邀请链接 |
poll_secret | 查询结果的凭证,应仅由申请方临时使用 |
expires_at | 授权请求的过期时间,UTC |
poll_interval_seconds | 查询结果的最小间隔,单位为秒 |
查询授权结果
该接口用于查询授权请求的结果,通常在用户点击授权链接返回交互后触发查询,或由请求方定时轮询。
GET https://accounts.meowpush.com/api/v1/application-authorization-requests/<request_id>/result
Authorization: Bearer <poll_secret>响应
成功返回 HTTP 200,示例:
{
"status": "approved",
"result": {
"application_id": "019f1000-0000-7000-8000-000000000017",
"push_key": "mpap00000000000000000000000001",
"reauthorization_token": "CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCA",
"key_version": 1,
"connection_version": 1,
"expires_at": "2026-10-10T04:15:00.000Z"
},
"expires_at": "2026-10-10T04:15:00.000Z",
"poll_interval_seconds": 2
}| 字段 | 说明 |
|---|---|
status | 授权请求的状态,取值见下表 |
result | 有效的 approved 状态返回应用凭证对象,其余状态为 null |
expires_at | 请求或领取期限,UTC;具体含义见下文 |
poll_interval_seconds | 查询结果的最小间隔,单位为秒 |
result.application_id | 创建的应用的标识符,可用于重授权和存储 |
result.push_key | 应用推送密钥,可用于 发送通知 |
result.reauthorization_token | 可选重授权凭证;重授权请求的结果将省略此字段,保留原凭证 |
result.key_version / result.connection_version | 推送密钥和接入凭证版本 |
result.expires_at | 本次凭证结果的领取期限 |
status 取值:
status | result | 建议处理方式 |
|---|---|---|
pending | null | 按 poll_interval_seconds 的间隔继续轮询 |
approved | 应用凭证对象 | 已授权。应保存凭证并停止轮询 |
rejected | null | 用户拒绝。应停止轮询 |
expired | null | 请求或领取窗口过期。应停止轮询 |
invalidated | null | 请求无效。应停止轮询 |
顶层 expires_at 在 pending 时表示请求期限(默认为 1 小时),在 approved 时表示获取结果的有效期限(默认为批准后 30 分钟)。
错误响应
非 2xx 响应为 {"error": {"code": "…", "message": "…"}},需按 error.code 判断处理。
| HTTP | error.code | 建议处理方式 |
|---|---|---|
429 | rate_limited | 按 Retry-After 指定的秒数退避 |
404 | application_authorization_request_not_found | 请求或领取凭证不可访问。应停止查询 |
