跳转到内容

消息 API (Message)

Message API 用于发送顶层瞬时通知。它适合告警、完成提醒、带图片的快照、价格提醒等“不需要后续更新或关闭”的场景。

POST /message

请求体必须是 JSON。未知扩展字段会被忽略;当前动作明确禁止的已知字段仍会被拒绝。私有 Gateway 如果启用了 PUSHGO_TOKEN,还需要 Authorization: Bearer <token>

Header必填说明
Content-Type: application/json请求体格式。
Authorization: Bearer <token>视网关配置而定仅私有 Gateway 开启 PUSHGO_TOKEN 时必填。
字段类型必填说明
channel_idstring目标频道 ID。
passwordstring频道密码;先 trim,再按 8-128 字节校验。
titlestring消息标题,不能为空。
bodystring消息正文,可包含 Markdown。
op_idstring幂等键,1-128 个字符,只允许字母、数字、_:-
thing_idstring将消息归入某个 Thing ID;1-64 个字符,可用字母、数字、_:-。Gateway 只校验格式,不要求服务端已存在 Thing 记录。
occurred_atnumber 或数字字符串接受 Unix 秒或毫秒并归一化为毫秒;传入 thing_id 时必填。
severitystringcriticalhighnormallow;未知值按 normal 处理。
ttlnumber 或数字字符串接受 Unix 秒或毫秒;provider 投递 TTL 上限为 30 天。
urlstring点击跳转 URL。
imagesstring[]最多 32 个图片 URL,每个最长 2048 字节。
tagsstring[]最多 32 个标签,每个最长 64 字节,trim 后去重。
ciphertextstring可选 E2EE 密文载荷。
metadataobject自定义标量键值;key <= 64 字节,非空标量文本 <= 512 字节;拒绝嵌套对象、数组和 null。

message_id 由 Gateway 生成,客户端传入会被拒绝。未知字段会被忽略且不会生效,因此请注意字段拼写。

severityAPNs interruption levelFCM priority
criticalcriticalHIGH
hightime-sensitiveHIGH
normalactiveHIGH
lowpassiveNORMAL
Terminal window
curl -X POST https://gateway.pushgo.cn/message \
-H "Content-Type: application/json" \
-d '{
"channel_id": "YOUR_CHANNEL_ID",
"password": "YOUR_CHANNEL_PASSWORD",
"title": "备份完成",
"body": "NAS 每日备份已经完成。",
"severity": "normal"
}'

如果这条提醒属于某个长期实体,可以传 thing_id

{
"channel_id": "YOUR_CHANNEL_ID",
"password": "YOUR_CHANNEL_PASSWORD",
"thing_id": "8a1fc4b3d9f04fd2857f92f66f7cc5d1",
"occurred_at": 1713750000000,
"title": "家庭 NAS 磁盘预警",
"body": "volume1 使用率已达到 92%。",
"severity": "high",
"tags": ["nas", "disk"]
}

相同 op_id 配合相同的归一化请求内容和作用域会返回最初结果;用于不同内容或作用域会返回 409。省略时由 Gateway 生成。

{
"success": true,
"data": {
"op_id": "00191f23cc000-0123456789abcdef0123456789abcdef",
"message_id": "8a1fc4b3d9f04fd2857f92f66f7cc5d1"
}
}

success=true 表示 Gateway 已持久受理请求,不代表推送提供商已成功或设备已展示。需要粗粒度分发状态时,保存 op_id 并查询 GET /send_status/{op_id}

状态码典型原因
400必填字段缺失/无效、传入 message_idtitle 为空或 metadata 无效。
401私有 Gateway 要求 Bearer Token,但 Header 缺失或错误。
404频道不存在或频道凭据无法匹配。
409op_id 被用于不同的请求内容或作用域。
413请求体超过 32 KiB(32,768 字节)。
503Gateway 无法受理本次提交。

更多限制见 限制与错误

为兼容旧调用,Gateway 仍支持 GET /message。它以 query 参数接收上述标量字段;imagestags 使用逗号分隔,metadata 是 JSON 编码字符串。新集成应使用 JSON POST,因为 URL、访问日志和浏览器历史可能暴露频道密码或载荷。

PushGo 还提供 ntfy、Bark 和 ServerChan 兼容入口,便于迁移旧脚本。兼容接口的字段覆盖能力有限;需要 thing_id、E2EE 或完整模型语义时,请使用原生 /message。迁移方式见 迁移指南