宝塔面板博客官方技术博客
宝塔面板

宝塔面板 API 怎么用?接口密钥、双重 MD5 签名与调用示例

更新于 2026 年 9 月 18 日

宝塔面板 API 是面板开放的一套 HTTP 接口,通过它可以程序化地管理网站、数据库、计划任务、SSL 证书等,实现自动化运维。用法就三步:先在「面板设置 → API 接口」里开启并拿到接口密钥 api_sk;每次请求用 request_time + request_token 做双重 MD5 签名认证;最后按模块路由发 POST 请求调用对应接口。

下面按「拿密钥 → 算签名 → 看模块」的顺序讲清,最后附一条官方的重要提醒。

怎么开启 API 并拿到接口密钥?

  1. 登录宝塔面板,进入「面板设置 → API 接口」,打开 API 管理页面。

面板设置里的 API 管理入口

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

创建接口密钥按钮

  1. 创建成功后即可看到密钥,这个字符串就是 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 签名示例代码,可以直接照用。