本站对外开放的接口一览,全部返回 JSON,支持跨域调用。点击接口路径即可查看真实返回数据。
无需登录,任何人、任何站点都可以直接调用。
14 个
需要登录账号(例如图床的上传接口)。
1 个
需要管理员账号登录后携带会话 Cookie 才能调用。
5 个
| 方法 | 路径 | 说明 | 权限 |
|---|---|---|---|
| GET |
/api
API 列表 |
本页面:列出站点所有可用的 API 接口,加 ?format=json 可获取 JSON 版本。 | 公开 |
| GET |
/api/admin/health
健康检查 |
探活接口,返回站点是否正常及站点名称。 | 公开 |
| GET |
/api/donate/config
赞助支付配置 |
赞助页可用的支付方式、快捷金额与金额范围(不含商户密钥),方便自定义前端页面。 | 公开 |
| POST |
/api/donate/create
创建赞助订单 |
创建一笔易支付订单并返回收银台地址 pay_url(GET 打开即可付款)。支付成功后由易支付异步通知入账,并自动显示在赞助公示里。 | 公开 |
| GET POST |
/api/donate/notify
易支付异步通知 |
易支付服务器回调地址:验签 + 核对金额通过后把订单写入赞助公示,并返回纯文本 success。商户后台填这个地址。 | 公开 |
| GET |
/api/donate/order
赞助订单状态 |
按商户订单号查询订单状态(pending / paid),赞助页用它轮询支付结果。 | 公开 |
| GET |
/api/donate/return
易支付同步跳转 |
用户支付完成后浏览器跳回的页面,展示订单状态并自动轮询确认。 | 公开 |
| GET |
/api/donate_info
赞助信息 |
赞助公示记录列表 + 汇总数据(总笔数、总金额、最近一次赞助时间)。 | 公开 |
| GET |
/api/server_info
服务器信息 |
站点信息 + 服务器列表(名称、类型、地区、连接地址),可选附带实时在线状态。 | 公开 |
| GET |
/api/server_player_history
在线人数历史 |
按 30 秒采样(页面展示近 24 小时)的各服务器在线人数历史数据。 | 公开 |
| GET |
/api/server_status
服务器状态(页面轮询用) |
服务器状态页使用的接口,返回各服务器状态与在线人数历史。 | 公开 |
| GET |
/api/server_status_image
服务器状态图(图片) |
把服务器画成一张 PNG 长图:每台服务器一块,左侧是 IP / 版本 / MOTD / 在线状态 / 在线人数 / 全部在线玩家名单,右侧是这台服务器自己的 24 小时在线人数趋势图,顶部还有全站汇总。不带 server 参数时只画后台勾选了「出现在状态图」的线路,带 server 参数只画指定的一台(一张图一台服务器,不受开关限制)。 | 公开 |
| GET |
/api/server_status_image/<int:server_id>
服务器状态图(图片) |
把服务器画成一张 PNG 长图:每台服务器一块,左侧是 IP / 版本 / MOTD / 在线状态 / 在线人数 / 全部在线玩家名单,右侧是这台服务器自己的 24 小时在线人数趋势图,顶部还有全站汇总。不带 server 参数时只画后台勾选了「出现在状态图」的线路,带 server 参数只画指定的一台(一张图一台服务器,不受开关限制)。 | 公开 |
| GET |
/api/tuchuang
图床文件列表 |
列出图床目录里的图片和视频,返回直链 / Markdown / BBCode / HTML,可直接用于其它接口调用。 | 公开 |
| GET POST |
/api/admin/donations
赞助记录管理 |
GET 返回全部赞助记录;POST JSON 传入 action 进行 create / edit / delete。 | 管理员 |
| GET POST |
/api/admin/servers
服务器节点管理 |
GET 返回全部服务器节点;POST JSON 传入 action 进行 create / edit / delete。 | 管理员 |
| GET POST |
/api/admin/updates
更新日志管理 |
GET 返回全部更新日志;POST JSON 传入 action 进行 create / edit / delete。 | 管理员 |
| POST |
/api/tuchuang/delete
图床删除 |
删除图床里的图片或视频,POST JSON:{"file": "a.png"} 或 {"files": ["a.png", "b.png"]}。 | 管理员 |
| POST |
/api/tuchuang/rename
图床重命名 |
重命名图床里的图片或视频,POST JSON:{"file": "avatar/a.png", "name": "b.png"}。 | 管理员 |
| POST |
/api/tuchuang/upload
图床上传 |
上传图片或视频到图床目录,multipart/form-data,字段名为 file,可一次传多个。 | 登录用户 |
/api/donate/create| 参数 | 默认值 | 说明 |
|---|---|---|
money |
- | 赞助金额,需在后台设置的最低 / 最高金额之间 |
pay_type |
第一个通道 | 支付通道标识,如 alipay / wxpay / qqpay |
game_id |
- | 游戏 ID,支付成功后显示在赞助公示里 |
name |
- | 昵称 / 留言,没填 game_id 时用它占位 |
/api/donate/order| 参数 | 默认值 | 说明 |
|---|---|---|
out_trade_no |
- | 创建订单时返回的商户订单号 |
/api/donate_info| 参数 | 默认值 | 说明 |
|---|---|---|
limit |
0 | 返回条数,0 表示全部 |
offset |
0 | 起始偏移,配合 limit 分页 |
/api/server_info| 参数 | 默认值 | 说明 |
|---|---|---|
status |
1 | 是否附带实时状态(在线人数 / 版本 / 延迟 / MOTD / 玩家名单);0 只返回静态信息,更快 |
/api/server_player_history| 参数 | 默认值 | 说明 |
|---|---|---|
hours |
24 | 时间范围(小时),1-168 |
/api/server_status| 参数 | 默认值 | 说明 |
|---|---|---|
hours |
24 | 在线人数历史范围(小时),1-168 |
/api/server_status_image| 参数 | 默认值 | 说明 |
|---|---|---|
server |
(空) | 只画这一台服务器,可用 id 或名称,例如 ?server=3 或 ?server=GTL;路径写法 /api/server_status_image/3 等价 |
status |
1 | 是否附带实时状态;0 只画最近一次缓存的数据,响应更快 |
refresh |
0 | 1 = 强制重新查询服务器,忽略缓存 |
theme |
light | 图片配色:light 浅色 / dark 深色 |
style |
compact | 排版:compact 紧凑版(一行一台服务器,图更短)/ classic 经典大卡片版 |
layout |
wide | 服务器块排法:wide 一横一竖(每行一台,信息在左、趋势图在右)/ grid 一横两竖(每行两台,信息在上、趋势图在下);默认取后台设置 |
total |
1 | 是否在汇总下面画「全站总人数趋势图」(所有线路合计),0 表示不画 |
players |
1 | 是否画在线玩家名单;0 只显示人数 |
players_limit |
0(不限制) | 每台服务器最多取几个玩家名;0 或不填 = 不限制。图上标签最多铺 2 行,放不下的折成「+N 人」 |
history |
24 | 在线人数趋势图的时间范围(小时,0-168),0 表示不画趋势图 |
width |
1200 | 图片宽度(760-2000) |
format |
png | png 直接返回图片 / json 返回图片地址与数据 / url 返回纯文本直链 / html 预览页 |
download |
0 | 1 = 按附件下载图片 |
/api/server_status_image/<int:server_id>| 参数 | 默认值 | 说明 |
|---|---|---|
server |
(空) | 只画这一台服务器,可用 id 或名称,例如 ?server=3 或 ?server=GTL;路径写法 /api/server_status_image/3 等价 |
status |
1 | 是否附带实时状态;0 只画最近一次缓存的数据,响应更快 |
refresh |
0 | 1 = 强制重新查询服务器,忽略缓存 |
theme |
light | 图片配色:light 浅色 / dark 深色 |
style |
compact | 排版:compact 紧凑版(一行一台服务器,图更短)/ classic 经典大卡片版 |
layout |
wide | 服务器块排法:wide 一横一竖(每行一台,信息在左、趋势图在右)/ grid 一横两竖(每行两台,信息在上、趋势图在下);默认取后台设置 |
total |
1 | 是否在汇总下面画「全站总人数趋势图」(所有线路合计),0 表示不画 |
players |
1 | 是否画在线玩家名单;0 只显示人数 |
players_limit |
0(不限制) | 每台服务器最多取几个玩家名;0 或不填 = 不限制。图上标签最多铺 2 行,放不下的折成「+N 人」 |
history |
24 | 在线人数趋势图的时间范围(小时,0-168),0 表示不画趋势图 |
width |
1200 | 图片宽度(760-2000) |
format |
png | png 直接返回图片 / json 返回图片地址与数据 / url 返回纯文本直链 / html 预览页 |
download |
0 | 1 = 按附件下载图片 |
/api/tuchuang| 参数 | 默认值 | 说明 |
|---|---|---|
folder |
- | 只列出某个子目录,例如 avatar;留空表示全部 |
q |
- | 按文件名或路径关键字过滤 |
kind |
全部 | kind=image 只看图片,kind=video 只看视频 |
limit |
最多 1000 | 最多返回多少张 |
base |
当前站点 | 自定义链接前缀,例如 https://img.example.com |
format |
json | format=list 时返回纯文本直链,每行一个,方便脚本使用 |
/api/admin/donations| 参数 | 默认值 | 说明 |
|---|---|---|
action |
- | POST JSON:不传为新增,edit 修改,delete 删除 |
game_id / money / pay_type / remark / id |
- | 赞助人游戏 ID、金额、支付方式、备注、记录 ID |
/api/admin/servers| 参数 | 默认值 | 说明 |
|---|---|---|
action |
- | POST JSON:不传为新增,edit 修改,delete 删除 |
server_type / name / domain / ip / port / query_port / area |
- | 节点类型、名称、域名、IP、端口、Query 端口、地区 |
show_in_status |
1 | 是否画进 /api/server_status_image 的总览图(0 / false 表示隐藏) |
/api/admin/updates| 参数 | 默认值 | 说明 |
|---|---|---|
action |
- | POST JSON:不传为新增,edit 修改,delete 删除 |
title / content / id |
- | 标题、正文、记录 ID |
/api/tuchuang/delete| 参数 | 默认值 | 说明 |
|---|---|---|
file |
- | 要删除的图片,支持一次删多张时用 files 数组 |
token |
- | 配置 TUCHUANG_UPLOAD_TOKEN 后可用它免登录调用 |
/api/tuchuang/rename| 参数 | 默认值 | 说明 |
|---|---|---|
file |
- | 图片在图床目录中的相对路径 |
name |
- | 新文件名,可省略后缀 |
token |
- | 配置 TUCHUANG_UPLOAD_TOKEN 后可用它免登录调用 |
/api/tuchuang/upload| 参数 | 默认值 | 说明 |
|---|---|---|
file |
- | 要上传的文件,可重复出现;图片支持 png / jpg / gif / webp 等,视频支持 mp4 / webm / mov / mkv 等 |
folder |
根目录 | 上传到哪个已存在的子目录,例如 avatar |
name |
- | 只传一张时可自定义文件名,可省略后缀 |
overwrite |
0 | 同名时是否覆盖,默认自动追加序号 |
token |
- | 配置 TUCHUANG_UPLOAD_TOKEN 后可用它免登录调用 |
图床不再放在首页入口,改为纯 API 调用:可以上传图片和视频,拿到直链、Markdown、BBCode、 HTML 几种现成写法,直接发群或嵌进论坛帖子。
GET /api/tuchuang
列出文件与直链(支持 folder / q / kind / limit / format=list)
POST /api/tuchuang/upload
上传图片 / 视频,multipart/form-data,字段名 file(可多张)
POST /api/tuchuang/rename
重命名,JSON:{"file": "a.png", "name": "b.png"}
POST /api/tuchuang/delete
删除,JSON:{"file": "a.png"} 或 {"files": ["a.png", "b.png"]}
图片格式:avif、bmp、gif、ico、jpeg、jpg、png、svg、webp;视频格式:avi、m4v、mkv、mov、mp4、ogv、webm。 单张图片最大 8.0 MB,单个视频最大 64.0 MB。
# 1. 列出图床文件(返回直链 / Markdown / BBCode / HTML)
curl "https://locraft.cn/api/tuchuang?limit=20"
curl "https://locraft.cn/api/tuchuang?kind=image&folder=avatar"
curl "https://locraft.cn/api/tuchuang?format=list" # 纯文本直链,每行一个
# 2. 上传(需要登录会话;配置 TUCHUANG_UPLOAD_TOKEN 后也可用 token 免登录)
curl -X POST "https://locraft.cn/api/tuchuang/upload" \
-F "file=@screenshot.png" -F "folder=" -F "name="
# 3. 改名 / 删除(管理员)
curl -X POST "https://locraft.cn/api/tuchuang/rename" \
-H "Content-Type: application/json" \
-d "{\"file\": \"a.png\", \"name\": \"b.png\"}"
curl -X POST "https://locraft.cn/api/tuchuang/delete" \
-H "Content-Type: application/json" \
-d "{\"files\": [\"a.png\", \"b.png\"]}"
/tuchuang 已从导航隐藏,只能在浏览器里直接输入地址访问(仅供自己管理用);
对外统一走上面的 API。
第一个是全部服务器总览图,下面是每台服务器单独的图片(一图一台,内容包含在线状态、地址、版本、延迟、 在线人数、MOTD、在线玩家和近 24 小时人数趋势)。图片可以直接发到群里、嵌入网页或论坛。










Access-Control-Allow-Origin: *,可以直接在其他站点或机器人里跨域调用。
# 服务器信息(含实时在线状态)
curl "https://locraft.cn/api/server_info"
# 只要静态信息,响应更快
curl "https://locraft.cn/api/server_info?status=0"
# 赞助信息,最近 10 条
curl "https://locraft.cn/api/donate_info?limit=10"
# 服务器状态图:直接返回一张 PNG 长图,可以发群 / 嵌入网页
curl -o status.png "https://locraft.cn/api/server_status_image"
# 只要某一台服务器的图(换成对应 id 或名称即可)
curl -o server3.png "https://locraft.cn/api/server_status_image/3"
curl -o gtL.png "https://locraft.cn/api/server_status_image?server=GTL"
# 深色版 + 强制刷新 + 不画玩家名单
curl -o status.png "https://locraft.cn/api/server_status_image?theme=dark&refresh=1&players=0"
# 只要图片直链,附带 Markdown / HTML / BBCode 现成写法
curl "https://locraft.cn/api/server_status_image?format=json"
const res = await fetch("https://locraft.cn/api/server_info?status=0");
const data = await res.json();
console.log(data.summary.online, "/", data.summary.total);