接口概览
API推送服务平台提供简单易用的HTTP API,支持多种消息推送渠道。您可以通过API将消息推送到企业微信、钉钉、飞书、邮件等渠道。
API基础地址:
接口版本:V1
https://pushhub.fengye.wang接口版本:V1
接口特点
- ✅ 支持 GET 和 POST 请求方式
- ✅ 支持多渠道同时发送
- ✅ 按渠道数量扣费,发送多个渠道扣多次额度
- ✅ 实时返回发送结果和剩余配额
认证方式
所有API请求都需要通过Token进行认证。Token可以在用户中心的 "API令牌" 页面创建和管理。
安全提示:请妥善保管您的API Token,不要在客户端代码中暴露Token。如需在公共环境使用,建议配合后端服务调用。
请求方式
将Token作为URL参数传递:
URL参数
/api/send?token=YOUR_API_TOKEN
配额说明
系统采用三级配额管理机制:
| 配额类型 | 说明 | 重置周期 |
|---|---|---|
| 日配额 | 每天最多调用次数 | 每天0点重置 |
| 月配额 | 每月最多调用次数 | 每月1号重置 |
| 总配额 | 整个使用期间最多调用次数 | 永不重置 |
扣费规则:按渠道数量扣费。例如:发送给企业微信和邮件两个渠道,扣2次额度。
发送消息
通过此接口发送消息到指定渠道。如果不指定渠道,将发送到Token绑定的所有渠道。
请求地址
GET/POST
https://pushhub.fengye.wang/api/send
请求参数
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| token | string | 是 | API令牌(已绑定渠道) |
| title | string | 否 | 消息标题 |
| content | string | 是 | 消息内容 |
渠道说明:Token 在创建时已绑定指定渠道,调用 API 时会自动发送到这些渠道,无需额外指定渠道参数。
响应参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| status | boolean | 请求是否成功 |
| code | int | 状态码,200表示成功 |
| msg | string | 响应消息 |
| data.success_count | int | 成功发送的渠道数量 |
| data.total_count | int | 总共发送的渠道数量 |
| data.results | object | 各渠道发送结果 |
| data.remaining_quota | object | 剩余配额信息 |
成功响应示例
200 OK - 发送成功
{
"status": true,
"code": 200,
"msg": "发送成功",
"data": {
"success_count": 1,
"total_count": 1,
"results": {
"wecom": {
"status": true,
"msg": "发送成功"
}
},
"remaining_quota": {
"daily": 79,
"monthly": 2979,
"total": 379
}
},
"time": 1774967730
}
错误响应示例
401 Unauthorized
{
"status": false,
"code": 401,
"msg": "Token无效或已过期",
"data": [],
"time": 1774966976
}
状态码说明
| 状态码 | 说明 |
|---|---|
| 200 | 请求成功 |
| 400 | 请求参数错误 |
| 401 | Token无效或已过期 |
| 403 | 无权限访问(IP不在白名单或会员已过期) |
| 429 | 配额已用完或请求过于频繁 |
| 500 | 服务器内部错误 |
详细错误码
系统采用统一的错误码体系,格式为 A-BB-CCC:
- A: 系统标识 (1=系统级, 2=业务级, 3=第三方)
- BB: 模块标识 (01=认证, 02=配额, 03=渠道, 04=队列等)
- CCC: 具体错误序号
系统级错误 (1-xx-xxx)
| 错误码 | 说明 | 解决建议 |
|---|---|---|
| 100001 | 系统繁忙 | 请稍后重试 |
| 100003 | 请求过于频繁 | 降低请求频率,建议60秒后再试 |
| 100004 | 请求参数错误 | 检查请求参数是否符合规范 |
认证模块错误 (2-01-xxx)
| 错误码 | 说明 | 解决建议 |
|---|---|---|
| 201001 | 缺少Token参数 | 在URL中添加token参数 |
| 201002 | Token不存在或已失效 | 检查Token是否正确,或重新创建Token |
| 201003 | Token已停用 | 在用户中心启用该Token |
| 201005 | 用户不存在 | 联系管理员检查账号状态 |
| 201006 | 用户已被禁用 | 联系管理员解除禁用 |
| 201007 | 会员已过期 | 及时续费恢复会员服务 |
| 201008 | IP不在白名单中 | 将当前IP添加到白名单,或关闭IP白名单 |
配额模块错误 (2-02-xxx)
| 错误码 | 说明 | 解决建议 |
|---|---|---|
| 202001 | 日配额已用完 | 等待次日0点重置,或升级套餐 |
| 202002 | 月配额已用完 | 等待次月1号重置,或升级套餐 |
| 202003 | 总配额已用完 | 升级套餐获取更多配额 |
渠道模块错误 (2-03-xxx)
| 错误码 | 说明 | 解决建议 |
|---|---|---|
| 203001 | Token未绑定任何渠道 | 在"API令牌"页面绑定推送渠道 |
| 203002 | 渠道已停用 | 在"推送渠道"页面启用渠道 |
| 203003 | 渠道配置错误 | 检查渠道配置参数是否正确 |
| 203005 | 所有渠道发送失败 | 检查各渠道配置和网络状态 |
消息内容错误 (2-05-xxx)
| 错误码 | 说明 | 解决建议 |
|---|---|---|
| 205003 | 消息内容不能为空 | 添加content参数 |
| 205004 | 消息内容超过500字符 | 缩短消息内容长度 |
| 205005 | 消息内容包含非法字符 | 移除特殊字符或HTML标签 |
高级功能
幂等性请求
为防止重复发送,可以使用幂等性Key。相同Key在24小时内只会处理一次。
幂等性请求示例
# 添加 idempotency_key 参数
curl "https://pushhub.fengye.wang/api/send?token=YOUR_TOKEN&idempotency_key=order_12345&title=订单通知&content=您有新订单"
请求限流
系统采用Token级别限流,每个Token每分钟有独立的请求配额。超限后会返回429错误。
限流规则:基于Token+IP组合限流,防止代理IP绕过。限流配额可在后台设置。
cURL示例
GET方式发送
Bash
curl "https://pushhub.fengye.wang/api/send?token=YOUR_TOKEN&title=测试标题&content=测试内容"
PHP示例
GET方式
PHP
<?php
// 你的API Token
$token = 'YOUR_TOKEN';
$title = urlencode('告警通知');
$content = urlencode('服务器异常,请尽快处理');
// 构建请求URL
$url = 'https://pushhub.fengye.wang/api/send?token=' . $token . '&title=' . $title . '&content=' . $content;
$response = file_get_contents($url);
$result = json_decode($response, true);
if ($result['status']) {
echo "发送成功!剩余日配额:" . $result['data']['remaining_quota']['daily'];
} else {
echo "发送失败:" . $result['msg'];
}
Python示例
Python
import requests
import urllib.parse
token = 'YOUR_TOKEN'
title = '系统告警'
content = '磁盘空间不足,请及时清理'
# 编码参数
title_encoded = urllib.parse.quote(title)
content_encoded = urllib.parse.quote(content)
url = f"https://pushhub.fengye.wang/api/send?token={token}&title={title_encoded}&content={content_encoded}"
response = requests.get(url)
result = response.json()
if result['status']:
print(f"发送成功!剩余配额:日{result['data']['remaining_quota']['daily']}")
else:
print(f"发送失败:{result['msg']}")
JavaScript示例
JavaScript
const token = 'YOUR_TOKEN';
const title = encodeURIComponent('新订单通知');
const content = encodeURIComponent('您有新的订单,请及时处理');
const url = `https://pushhub.fengye.wang/api/send?token=${token}&title=${title}&content=${content}`;
fetch(url)
.then(response => response.json())
.then(data => {
if (data.status) {
console.log('发送成功!');
console.log('剩余日配额:', data.data.remaining_quota.daily);
} else {
console.error('发送失败:', data.msg);
}
})
.catch(error => {
console.error('请求错误:', error);
});