宝塔面板 API 怎么用?接口密钥、双重 MD5 签名与调用示例
宝塔面板 API 是面板开放的一套 HTTP 接口,通过它可以程序化地管理网站、数据库、计划任务、SSL 证书等,实现自动化运维。用法就三步:先在「面板设置 → API 接口」里开启并拿到接口密钥 api_sk;每次请求用 request_time + request_token 做双重 MD5 签名认证;最后按模块路由发 POST 请求调用对应接口。
下面按「拿密钥 → 算签名 → 看模块」的顺序讲清,最后附一条官方的重要提醒。
怎么开启 API 并拿到接口密钥?
- 登录宝塔面板,进入「面板设置 → API 接口」,打开 API 管理页面。

- 点击「创建密钥」按钮,生成一个接口密钥。

- 创建成功后即可看到密钥,这个字符串就是
api_sk,复制保存好,后续所有请求都要用它算签名。

接口密钥相当于面板的调用凭据,泄露后别人可以拿它操作你的面板,务必妥善保管,不要提交到公开仓库。
认证机制:双重 MD5 签名怎么算?
宝塔面板 API 的认证方式是双重 MD5 签名。每次请求必须携带两个参数:
| 参数 | 说明 |
|---|---|
request_time |
当前时间戳(秒),用于防重放 |
request_token |
签名结果,用下面算法算出 |
签名的计算过程分两步:先对接口密钥 api_sk 做一次 MD5,再把 request_time 与这个 MD5 结果拼接后做第二次 MD5。官方 API 概览文档里给出的 Python 示例代码如下:
import hashlib, time
request_time = str(int(time.time()))
request_token = hashlib.md5(
(request_time + hashlib.md5(api_sk.encode()).hexdigest()).encode()
).hexdigest()
简单说就是:request_token = md5(request_time + md5(api_sk))。
拿到这两个值后,把它们作为表单参数和业务参数一起 POST 过去即可。以「获取计划任务列表」接口为例,文档给出的请求形如:
POST /crontab HTTP/1.1
Content-Type: application/x-www-form-urlencoded
request_time=1700000000&request_token=xxx&action=GetCrontab
其中 action=GetCrontab 就是这次要调的具体接口,每个模块下的接口都通过 action 字段区分。
有哪些模块可以调用?
官方 API 概览文档列出了 17 类模块路由。要调哪类能力,就向对应路由发 POST 请求,再通过 action 指定具体接口:
| 模块 | 路由 |
|---|---|
| 系统管理 | /system |
| 网站管理 | /site |
| 数据库管理 | /database |
| 文件管理 | /files |
| SSL 证书 | /ssl |
| ACME 证书 | /acme |
| Java 项目 | /mod/java/project/ |
| 计划任务 | /crontab |
| FTP 管理 | /ftp |
| SSH 安全 | /ssh_security |
| 消息推送 | /push |
| 后台任务 | /task |
| SSH 终端 | /xterm |
| 数据查询 | /data |
| 安全扫描 | /warning |
| 密码管理 | /password |
| 项目部署 | /deployment |
每个模块下还有更细的接口文档,会写清该接口的路由、action 值、输入参数和输出参数。例如计划任务模块的 GetCrontab 接口:路由 POST /crontab、action 固定为 GetCrontab,返回数组,每项包含任务 ID、名称、周期类型、执行时间、状态等字段。写代码前先查对应接口文档,确认参数名和取值,不要凭面板页面猜测。
官方也提供了完整的 API 文档 PDF,以及 PHP、Python、Java 三份 Demo,还有第三方 PHP-SDK,可以从《面板API》页直接下载,照着改比自己从零写快得多。
重要提醒:接口不保证稳定性
官方在 API 概览文档里明确标注了这样一条警告:
API 接口可能随面板版本变更,不保证稳定性,仅供参考。
这意味着:你写的脚本里用到的接口名、参数、路由,在面板升级后可能发生变化。如果是用在生产环境的自动化流程里,建议在面板版本更新后重新核对一次接口文档,避免调用失效。宝塔官方文档给出的模块表也是「基于面板 v11.7.0 源码实测验证,测试环境 Debian 13」这一版本的结果,具体以你当前面板版本和官方文档为准。
信息来源
本文事实以宝塔官方文档为准:《宝塔面板 API 概览》、《面板API》、《GetCrontab》。
常见问题
宝塔面板 API 在哪里开启?怎么拿接口密钥?
登录宝塔面板,进入「面板设置 → API 接口」,在 API 管理里创建密钥即可拿到接口密钥 api_sk。这个密钥就是后续所有请求的认证凭据,需要妥善保管。
宝塔面板 API 的认证签名是怎么算的?
采用双重 MD5 签名:先对接口密钥 api_sk 做一次 MD5,再把 request_time 和这个结果拼起来做第二次 MD5,得到 request_token。每次请求必须同时携带 request_time 和 request_token 两个参数。
调用宝塔面板 API 用什么请求方式和 Content-Type?
请求方式统一用 POST,Content-Type 用 application/x-www-form-urlencoded,参数以表单形式提交。
宝塔面板 API 有哪些模块可以调用?
文档列出的模块路由共 17 类,包括系统管理 /system、网站管理 /site、数据库管理 /database、文件管理 /files、SSL 证书 /ssl、计划任务 /crontab、FTP 管理 /ftp 等,具体以官方 API 文档为准。
宝塔面板 API 接口稳定吗?升级面板会不会失效?
官方明确提示:API 接口可能随面板版本变更,不保证稳定性,仅供参考。生产环境里写死的接口名和参数在面板升级后可能变化,需要随版本核对。
有没有现成的调用示例代码?
官方提供 PHP、Python、Java 三份 Demo 下载,另有第三方 PHP-SDK;API 概览文档里也直接给出 Python 双重 MD5 签名示例代码,可以直接照用。