面向普通用户
推送消息接口
使用项目接口密钥(API Key)调用一个接口,即可向当前账号的有效设备发送通知。
1. 准备接口密钥
在 PushNow 应用的“项目”中创建项目并复制密钥,之后可以随时回到项目详情再次复制。
不要把接口密钥放进客户端、网页前端、公开仓库或日志,只在自己的服务端或可信脚本中使用。
下载 PushNow Skill
下载后可交给支持 Skill 的智能体安装。公开 Skill 文件不包含任何项目接口密钥,安装后需要单独配置自己的密钥。
下载 Skill 文件2. 发送消息
POST
/api/v1/messages/push请求头
Authorization: Bearer <API_KEY> Content-Type: application/json
请求参数
| 参数 | 说明 | 限制 |
|---|---|---|
title | 通知标题,核心信息前置,通常显示一行 | 必填,最多 20 个 Unicode 字符 |
subtitle | 通知副标题,优先说明结果、状态或动作,通常显示两行以内 | 必填,最多 40 个 Unicode 字符 |
content | 消息正文,支持安全内联样式以及 section、p、span、strong、u、s、blockquote、ul、ol、li、img、table、tbody、tr、th、td、a、br 标签;其他标签和不安全属性会被删除 | 必填,不限制长度 |
request_id | 业务请求唯一标识;重复提交不会重复推送 | 可选,最多 100 字 |
标题和副标题必须在限制内表达完整信息,不要依赖 iOS 自动截断;较长的说明请放入 content。
调用示例
curl -X POST 'https://你的域名/api/v1/messages/push' \
-H 'Authorization: Bearer <API_KEY>' \
-H 'Content-Type: application/json' \
-d '{"title":"服务器告警","subtitle":"处理器使用率过高","content":"当前使用率为 96%","request_id":"warning-001"}'
3. 上传图片、音频或视频(可选)
消息需要媒体时,先获取临时上传地址,再上传文件,并把返回的公开地址直接拼接到 content 中。
POST
/api/v1/media/presign请求参数
| 参数 | 说明 | 限制 |
|---|---|---|
filename | 原始文件名 | 必填,最多 200 字 |
content_type | 文件类型,例如 image/png | 必填;仅图片、音频、视频 |
size | 文件实际字节数 | 必填;图片 2 MiB、音频和视频 50 MiB 以内 |
获取上传地址
curl -X POST 'https://你的域名/api/v1/media/presign' \
-H 'Authorization: Bearer <API_KEY>' \
-H 'Content-Type: application/json' \
-d '{"filename":"status.png","content_type":"image/png","size":12345}'
成功响应的 data 包含 url、fields、publicUrl、实际字节数 size 和便于显示的 size_text。将 fields 中的全部字段按原值加入 multipart 表单,最后加入名为 file 的文件,再以 POST 提交到 url。表单字段必须位于文件之前,实际文件超过请求中的 size 会被 COS Policy 拒绝。
上传文件示例
curl -X POST '<data.url>' \ --form-string 'key=<data.fields.key>' \ --form-string 'Content-Type=image/png' \ --form-string 'success_action_status=200' \ --form-string 'policy=<data.fields.policy>' \ --form-string 'q-sign-algorithm=<data.fields.q-sign-algorithm>' \ --form-string 'q-ak=<data.fields.q-ak>' \ --form-string 'q-sign-time=<data.fields.q-sign-time>' \ --form-string 'q-key-time=<data.fields.q-key-time>' \ --form-string 'q-signature=<data.fields.q-signature>' \ -F 'file=@status.png;type=image/png'
4. 判断调用结果
{
"code": 0,
"data": {
"message_id": "...",
"push_status": "pending"
}
}
HTTP 201 表示创建新消息成功;HTTP 200 表示相同 request_id 已处理,不会重复推送。
pending 表示已进入推送队列;no_device 表示当前没有可接收推送的设备。
常见错误
HTTP 400 | 字段缺失、超长或包含未支持的参数 |
HTTP 401 | 接口密钥无效、已禁用或已删除 |
HTTP 429 | 请求过快,请稍后重试 |