diff --git a/docs/README.md b/docs/README.md
index a8fbecebac..e439aac482 100644
--- a/docs/README.md
+++ b/docs/README.md
@@ -2284,3 +2284,9 @@ category 对应的关键词有
+
+### TSSstatus
+
+
+
+> board 和 build 可在[这里](http://api.ineal.me/tss/status)查看
diff --git a/router.js b/router.js
index 2f495aedd8..13677e0e8f 100644
--- a/router.js
+++ b/router.js
@@ -787,6 +787,9 @@ router.get('/eeo/:category?', require('./routes/eeo/index'));
// 腾讯视频
router.get('/tencentvideo/playlist/:id', require('./routes/tencent/video/playlist'));
+// TSSstatus
+router.get('/tssstatus/:board/:build', require('./routes/tssstatus'));
+
// Anime1
router.get('/anime1/anime/:time/:name', require('./routes/anime1/anime'));
router.get('/anime1/search/:keyword', require('./routes/anime1/search'));
diff --git a/routes/tssstatus/index.js b/routes/tssstatus/index.js
new file mode 100644
index 0000000000..8dc464b19a
--- /dev/null
+++ b/routes/tssstatus/index.js
@@ -0,0 +1,35 @@
+const axios = require('../../utils/axios');
+
+module.exports = async (ctx) => {
+ const { board, build } = ctx.params;
+ const response = await axios({
+ method: 'get',
+ url: `http://api.ineal.me/tss/${board}/${build}`,
+ });
+
+ const resultItem = Object.values(response.data).map((item) => {
+ const firmware = item.firmwares[0];
+ const description = `
+ signing: ${firmware.signing.toString()}
+ started: ${firmware.started}
+ stopped: ${firmware.stopped}
+ model: ${item.model}
+ board: ${item.board}
+ version: ${firmware.version}
+ build: ${firmware.build}
+ `;
+
+ return {
+ title: `signing: ${firmware.signing.toString()}-${item.model}-${firmware.version}`,
+ description,
+ guid: `${firmware.started} / ${firmware.stopped}`,
+ };
+ });
+
+ ctx.state.data = {
+ title: 'TSSstatus',
+ link: 'http://api.ineal.me/tss/status',
+ description: "Real time status of every iOS firmware currently being signed by Apple's TSS server.",
+ item: resultItem,
+ };
+};