鉴权密钥即用户 Token(首页底部「API 密钥」)。兑换卡密后次数绑定到该 Token。
https://upi.fengl.cc/api
Authorization: Bearer 你的页面底部 API 密钥
GET /api/v1/me
curl -H "Authorization: Bearer TOKEN" https://upi.fengl.cc/api/v1/me
POST /api/v1/redeem
Content-Type: application/json
{"code":"ABCD1234..."}
与上游 AT 机器人协议对齐。每条有效 AT 消耗 1 次。建议带 Idempotency-Key。
POST /api/v1/at/submit
Authorization: Bearer TOKEN
Content-Type: application/json
Idempotency-Key: order-20260727-0001
{
"at_data": [
"第一条完整AT数据",
"第二条完整AT数据"
]
}
成功 HTTP 202:
{
"ok": true,
"accepted": [{"order_id":"A...","status":"extracting","task_id":1,"charged":"0.83"}],
"rejected": [],
"balance": "9"
}
GET /api/v1/at/orders/{order_id}
curl -H "Authorization: Bearer TOKEN" \ https://upi.fengl.cc/api/v1/at/orders/A2026072616085698054881
GET /api/v1/tasks
GET /api/v1/tasks/{task_id}
| status | 说明 |
|---|---|
| extracting / pending / processing | 处理中,请轮询 |
| success | 完成 |
| failed / error / rejected | 失败(失败会尝试退回次数) |
import requests, uuid, time
BASE = "https://upi.fengl.cc/api"
TOKEN = "你的token"
H = {"Authorization": f"Bearer {TOKEN}", "Content-Type": "application/json",
"Idempotency-Key": str(uuid.uuid4())}
r = requests.post(f"{BASE}/v1/at/submit", headers=H, json={"at_data":["AT数据..."]}, timeout=30)
print(r.status_code, r.json())
order_id = r.json()["accepted"][0]["order_id"]
while True:
q = requests.get(f"{BASE}/v1/at/orders/{order_id}", headers={"Authorization": f"Bearer {TOKEN}"}, timeout=30)
st = q.json()["order"]["status"]
print(st)
if st in ("success","failed","error","rejected"):
break
time.sleep(25)
本站作为中间层:用户用卡密充次数 → 本站用后台配置的上游 tg_ Key 调用
api/AT机器人API开发文档.md 中的 /api/v1/at/submit 与订单查询,并在本地 SQLite 记账。