企业微信定时推送
企业微信定时推送:群机器人 webhook,文本/图片/图文,按分/时/天定时
企业微信定时推送:向企微群机器人 Webhook 推送文本、图片、图文消息。
可添加多个 webhook,配置按分钟/小时/天的推送频率与次数。
管理与配置免费;每次实际推送到企微扣 1 次套餐。支持立即推送测试。
可添加多个 webhook,配置按分钟/小时/天的推送频率与次数。
管理与配置免费;每次实际推送到企微扣 1 次套餐。支持立即推送测试。
调用地址:https://api.ynlskj.com.cn/gateway/wecompush
请求方法:POST
在其他地方怎么调用
- 请求地址用上面的调用地址,把 JSON 放在请求体里
- 方法用
POST - API Key 只能放在请求头
X-API-Key,不要写进网址,也不要写进 Query 框 - Key 在「个人中心 → API Key」里复制,登录后会自动填入你自己的 Key
参数说明
| 参数 | 位置 | 必填 | 说明 |
|---|---|---|---|
action | Body JSON | 是 | webhook_add / webhook_list / webhook_delete;任务 create / update / list / status / pause / resume / delete;push_now 立即推送 |
webhook_url | Body JSON | webhook_add 时 | 企微群机器人地址,须为 https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=... |
hook_id / hook_ids | Body JSON | 创建任务时 | 已添加的 webhook ID,可多个 |
freq_unit | Body JSON | create 时 | minute / hour / day |
freq_every | Body JSON | 否 | 每 N 个单位,默认 1(如每 5 分钟:unit=minute, every=5) |
times | Body JSON | 否 | 推送次数上限,0 表示不限,最大 1000 |
msg_type | Body JSON | 否 | text / markdown 富文本、image 图片、news 图文/网址 |
content / content_html | Body JSON | text 时 | 推送文本;个人中心富文本会生成 Markdown。也可直接传 markdown |
image_url / image_base64 / local_path | Body JSON | image 时 | 外链、Base64 上传,或先 upload_image 再传 local_path |
title / url / articles | Body JSON | news 时 | 单条可用 title+url;多条用 articles 数组(最多 8) |
job_id | Body JSON | 管理/立即推送时 | 任务 ID,格式 wj_xxx |
action=upload_image | Body JSON | 上传时 | 传入 image_base64,返回可复用的 image_url / local_path(免费) |
X-API-Key | Header | 是 | 你的 API Key |
这个接口是干什么的?
把「定时往企业微信群发消息」做成 API:先添加群机器人 Webhook,再配置推送内容与频率(按分钟 / 小时 / 天)。平台按计划向企微官方接口投递,无需你自建定时器。
典型场景:运营日报、运维告警、活动提醒、值班通知。也可在「个人中心 → 企微推送」可视化管理。
计费说明
- 免费:添加/删除 webhook、创建/改/暂停/查询任务等管理调用
- 扣次:每次真实推送到企微(含定时执行与
push_now),每个目标 webhook 扣 1 次 - 次数不足时任务会自动暂停,并写入错误「次数不足」
怎么用(3 步上手)
- 在企微群添加「群机器人」,复制 Webhook 地址
- 调用
webhook_add保存地址,拿到hook_id - 调用
create配置频率与内容;或用push_now立即测一条
消息类型
| msg_type | 说明 | 主要字段 |
|---|---|---|
text | 纯文本 | content |
markdown | 企微 Markdown(标题/加粗/链接等,个人中心富文本会自动转换) | content 或 content_html |
image | 图片(可上传或外链) | image_url / image_base64 / local_path |
news | 图文 / 网址卡片(1~8 条) | articles 或 title+url |
请求示例
| 场景 | Body 示例 |
|---|---|
| 添加 webhook | {"action":"webhook_add","name":"运营群","webhook_url":"https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=xxx"} |
| 上传图片 | {"action":"upload_image","image_base64":"iVBORw0KGgo..."} → 拿 local_path |
| 每小时文本 | {"action":"create","hook_ids":["wh_xxx"],"freq_unit":"hour","freq_every":1,"times":24,"msg_type":"text","content":"日报提醒"} |
| 用已上传图片 | {"action":"create","hook_id":"wh_xxx","freq_unit":"day","msg_type":"image","local_path":"uploads/wecompush/2026/08/u1_xxxx.png"} |
| 每天图文 | {"action":"create","hook_id":"wh_xxx","freq_unit":"day","msg_type":"news","title":"活动页","url":"https://example.com","description":"点击查看"} |
| 立即推送 | {"action":"push_now","job_id":"wj_xxx"} |
| 临时测一条 | {"action":"push_now","webhook_url":"https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=xxx","msg_type":"text","content":"测试"} |
| 暂停 / 恢复 | {"action":"pause","job_id":"wj_xxx"} / {"action":"resume","job_id":"wj_xxx"} |
说明与限制
- 仅支持企微官方群机器人域名
qyapi.weixin.qq.com - 每账号 webhook ≤ 20,活跃定时任务 ≤ 30;单任务最多关联 10 个 webhook
- 最短间隔 1 分钟;调度依赖现有队列 cron(每分钟)
- 图片支持个人中心直接上传,或 API
upload_image(Base64),最大约 2MB - 也可在「个人中心 → 企微推送」用富文本编辑器可视化配置
- 风控:单 webhook ≤ 约 18 条/分钟(对齐企微官方限流);账号级与全站限流;连续失败自动暂停并退避
返回说明
| 字段 | 说明 |
|---|---|
ret | ok 成功,err 失败 |
data.hook_id / webhook_url | webhook 相关字段 |
data.job_id | 定时任务 ID,格式 wj_xxx |
data.status | active / paused / completed / cancelled |
data.freq_unit / freq_every / next_run_at | 频率与下次执行时间 |
data.times_done / times_limit | 已推送次数 / 上限 |
data.ok_count / fail_count / deducted | 立即推送时的成功/失败/扣次 |
data.results | 各 webhook 推送明细 |
data.recent_logs | status 时最近推送日志 |
msg | 本站提示,如「次数充足,剩余 99 次」或「次数不足,剩余 0 次」 |
remain_quota | 本次调用后的剩余次数 |
可直接复制的代码
未登录时示例只显示「你的密钥」。登录后会自动填入你自己的 Key,不会展示别人的。
<?php
$ch = curl_init('https://api.ynlskj.com.cn/gateway/wecompush');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_HTTPHEADER => ['X-API-Key: 你的密钥', 'Content-Type: application/json'],
CURLOPT_POSTFIELDS => '{
"action": "create",
"hook_ids": [
"wh_xxxxxxxx"
],
"freq_unit": "hour",
"freq_every": 1,
"times": 24,
"msg_type": "text",
"content": "【日报】今日数据已更新,请查收。",
"name": "每小时日报"
}',
]);
echo curl_exec($ch);
请求参数演示
{"action":"create","hook_ids":["wh_xxxxxxxx"],"freq_unit":"hour","freq_every":1,"times":24,"msg_type":"text","content":"【日报】今日数据已更新,请查收。","name":"每小时日报"}
响应演示
{"ret":"ok","data":{"action":"create","job_id":"wj_xxxxxxxxxxxxxxxxxxxxxxxx","status":"active","freq_unit":"hour","freq_every":1,"next_run_at":"2026-08-29 15:44:14"}}