一句话:拿一把 key,POST 一批号码过来,你在后台看数据就行。不需要理解内部怎么跑。
https://ios.ytai66.cc/openapi.php+86 都行)
跑通这条再往下做,排除 key 或网络问题。
curl "https://ios.ytai66.cc/openapi.php?do=ping&key=你的KEY"
正常返回:
{
"ok": true,
"team": { "code": "op01", "name": "自营一号队" },
"server_time": "2026-11-05 13:40:00",
"msg": "连通正常"
}
POST?do=push
| 字段 | 必填 | 说明 |
|---|---|---|
| key | 是 | 你的团队密钥 |
| phones | 是 | 号码文本,换行 / 逗号 / 空格 / 分号 分隔都认。+8613800138000 和 13800138000 等效 |
| remark | 否 | 这批的备注,方便你自己区分批次 |
| device | 否 | ios / android,不填默认不限 |
curl -X POST "https://ios.ytai66.cc/openapi.php?do=push" \
-H "Content-Type: application/json" \
-d '{
"key": "你的KEY",
"phones": "13800138000\n13900139000\n+8613700137000",
"remark": "1105第一批"
}'
import requests
r = requests.post(
"https://ios.ytai66.cc/openapi.php?do=push",
json={
"key": "你的KEY",
"phones": """13800138000
13900139000
13700137000""",
"remark": "1105第一批",
},
timeout=30,
)
print(r.json())
$ch = curl_init("https://ios.ytai66.cc/openapi.php?do=push");
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ['Content-Type: application/json'],
CURLOPT_POSTFIELDS => json_encode([
'key' => '你的KEY',
'phones' => "13800138000\n13900139000",
]),
]);
echo curl_exec($ch);
{
"ok": true,
"team": "op01",
"received": 3, // 收到几条
"added": 2, // 新增入库
"dup": 1, // 之前就有,不重复算钱
"invalid": 0, // 格式不对
"total": 1002, // 你这个团队现在总共多少条
"msg": "收到 3 条:新增 2,重复 1,无效 0"
}
dup。
GET?do=status
curl "https://ios.ytai66.cc/openapi.php?do=status&key=你的KEY"
{
"ok": true,
"team": { "code": "op01", "name": "自营一号队" },
"numbers": {
"total": 1002, // 你推过来的总数
"usable": 987 // 其中可触达的
},
"send": {
"sent": 640, // 已发出
"pending": 20, // 排队中
"failed": 12, // 失败
"today": 180 // 今天发的
},
"quota": { "daily": 0, "used_today": 180 }
}
quota.daily = 0 表示不限量。
你给一个 URL,我们每条发完就往这个地址 POST 一条结果。不需要就不设置。
curl -X POST "https://ios.ytai66.cc/openapi.php?do=callback" \
-H "Content-Type: application/json" \
-d '{ "key": "你的KEY", "url": "https://你的域名/callback" }'
| HTTP | code | 含义 / 怎么处理 |
|---|---|---|
| 200 | — | 成功 |
| 400 | no_action | 没传 do |
| 400 | no_phones | phones 是空的 |
| 401 | no_key | 没传 key |
| 401 | bad_key | key 不对,找对接人核对 |
| 403 | disabled | 团队已停用 |
| 429 | quota | 今日配额用完,明天再推 |
失败时统一返回:
{ "ok": false, "code": "bad_key", "msg": "key 无效" }
| # | 事项 |
|---|---|
| 1 | 号码格式不限,程序会自动标准化。国际号码建议带 + 前缀,如 +85252732507 |
| 2 | 单次 phones 建议 ≤ 5000 条,多了分几次推,每次间隔几秒 |
| 3 | 重复推送安全,不会重复计费 |
| 4 | key 不要写进前端代码、不要发群里。疑似泄露立刻找对接人换 |
| 5 | 所有时间都是北京时间(UTC+8) |
推送开放接口 · 文档版本 2026-11-05