面向普通用户

推送消息接口

使用项目接口密钥(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 包含 urlfieldspublicUrl、实际字节数 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请求过快,请稍后重试