Tankoubon API
13 endpoints.
获取全部 Tankoubon
Section titled “获取全部 Tankoubon”分页获取 Tankoubon 列表。
查询参数
- pageinteger可选
- Tankoubon 列表的页码。
每页数量取决于服务端的
archives_per_page设置。
响应
200Tankoubon 列表
{
"filtered": 0,
"result": [
{
"archives": [
"e69e43e1355267f7d32a4f9b7f2fe108d2401ebf",
"e69e43e1355267f7d32a4f9b7f2fe108d2401eba"
],
"id": "TANK_1749925516",
"name": "sailor moon",
"progress": 0,
"summary": "",
"tags": ""
}
],
"total": 0
}请求失败 — 常见原因:实例地址填错或不可达;实例未开启「为客户端 API 启用 CORS」;或者文档站是 HTTPS 而实例是局域网内的纯 HTTP(浏览器按混合内容拦截)。可以用上面的「复制为 cURL」在终端里发同样的请求。
填写你自己的实例地址,请求由浏览器直接发往该地址。
创建 Tankoubon
Section titled “创建 Tankoubon”创建一个新 Tankoubon,或更新已有 Tankoubon 的名称。
请求体
application/x-www-form-urlencoded, multipart/form-data
响应
200成功响应
{
"operation": "create_tankoubon",
"success": 0,
"tankoubon_id": ""
}400错误响应
{
"error": "",
"operation": "",
"success": 0,
"successMessage": ""
}该端点需要管理员令牌:访客(只读)令牌会被服务端拒绝。
请求失败 — 常见原因:实例地址填错或不可达;实例未开启「为客户端 API 启用 CORS」;或者文档站是 HTTPS 而实例是局域网内的纯 HTTP(浏览器按混合内容拦截)。可以用上面的「复制为 cURL」在终端里发同样的请求。
填写你自己的实例地址,请求由浏览器直接发往该地址。
删除 Tankoubon
Section titled “删除 Tankoubon”从服务端移除一个 Tankoubon。这不会删除它底下的档案。
响应
200成功响应
{
"error": "",
"operation": "",
"success": 0,
"successMessage": ""
}400错误响应
{
"error": "",
"operation": "",
"success": 0,
"successMessage": ""
}423该 Tankoubon 当前被锁定,无法修改
{
"error": "",
"operation": "",
"success": 0,
"successMessage": ""
}该端点需要管理员令牌:访客(只读)令牌会被服务端拒绝。
请求失败 — 常见原因:实例地址填错或不可达;实例未开启「为客户端 API 启用 CORS」;或者文档站是 HTTPS 而实例是局域网内的纯 HTTP(浏览器按混合内容拦截)。可以用上面的「复制为 cURL」在终端里发同样的请求。
填写你自己的实例地址,请求由浏览器直接发往该地址。
获取单个 Tankoubon
Section titled “获取单个 Tankoubon”获取指定 tankoubon ID 的详情。
响应
200Tankoubon
{
"archives": [
""
],
"id": "",
"name": "",
"progress": 0,
"summary": "",
"tags": ""
}400错误响应
{
"error": "",
"operation": "",
"success": 0,
"successMessage": ""
}请求失败 — 常见原因:实例地址填错或不可达;实例未开启「为客户端 API 启用 CORS」;或者文档站是 HTTPS 而实例是局域网内的纯 HTTP(浏览器按混合内容拦截)。可以用上面的「复制为 cURL」在终端里发同样的请求。
填写你自己的实例地址,请求由浏览器直接发往该地址。
更新 Tankoubon 的元数据与内容
Section titled “更新 Tankoubon 的元数据与内容”修改 Tankoubon 的完整元数据(名称、摘要、附加标签)或它的内容。
如果你只需要改名称,考虑直接用 PUT /api/tankoubons。
注意:如果不需要更新 data 里某个键对应的内容,就不要发送那个键——否则可能产生非预期的结果。
路径参数
- idstring · min: 15 · max: 15 · pattern必填
- 要更新的 Tankoubon ID。
请求体
application/json
响应
200成功响应
{
"error": "",
"operation": "",
"success": 0,
"successMessage": ""
}400错误响应
{
"error": "",
"operation": "",
"success": 0,
"successMessage": ""
}423该 Tankoubon 当前被锁定,无法修改
{
"error": "",
"operation": "",
"success": 0,
"successMessage": ""
}该端点需要管理员令牌:访客(只读)令牌会被服务端拒绝。
请求失败 — 常见原因:实例地址填错或不可达;实例未开启「为客户端 API 启用 CORS」;或者文档站是 HTTPS 而实例是局域网内的纯 HTTP(浏览器按混合内容拦截)。可以用上面的「复制为 cURL」在终端里发同样的请求。
填写你自己的实例地址,请求由浏览器直接发往该地址。
把档案移出 Tankoubon
Section titled “把档案移出 Tankoubon”把某个档案移出一个 Tankoubon。
路径参数
- idstring · min: 15 · max: 15 · pattern必填
- 要更新的 Tankoubon ID。
- archivestring · min: 40 · max: 40 · pattern必填
- 要移除的档案 ID。
响应
200结果
{
"error": "",
"operation": "",
"success": 0,
"successMessage": ""
}400错误响应
{
"error": "",
"operation": "",
"success": 0,
"successMessage": ""
}423该 Tankoubon 当前被锁定,无法修改
{
"error": "",
"operation": "",
"success": 0,
"successMessage": ""
}该端点需要管理员令牌:访客(只读)令牌会被服务端拒绝。
请求失败 — 常见原因:实例地址填错或不可达;实例未开启「为客户端 API 启用 CORS」;或者文档站是 HTTPS 而实例是局域网内的纯 HTTP(浏览器按混合内容拦截)。可以用上面的「复制为 cURL」在终端里发同样的请求。
填写你自己的实例地址,请求由浏览器直接发往该地址。
把档案加入 Tankoubon
Section titled “把档案加入 Tankoubon”把一个档案追加到 Tankoubon 的最后一位。
路径参数
- idstring · min: 15 · max: 15 · pattern必填
- 要更新的 Tankoubon ID。
- archivestring · min: 40 · max: 40 · pattern必填
- 要追加的档案 ID。
响应
200成功响应
{
"error": "",
"operation": "",
"success": 0,
"successMessage": ""
}400错误响应
{
"error": "",
"operation": "",
"success": 0,
"successMessage": ""
}423该 Tankoubon 当前被锁定,无法修改
{
"error": "",
"operation": "",
"success": 0,
"successMessage": ""
}该端点需要管理员令牌:访客(只读)令牌会被服务端拒绝。
请求失败 — 常见原因:实例地址填错或不可达;实例未开启「为客户端 API 启用 CORS」;或者文档站是 HTTPS 而实例是局域网内的纯 HTTP(浏览器按混合内容拦截)。可以用上面的「复制为 cURL」在终端里发同样的请求。
填写你自己的实例地址,请求由浏览器直接发往该地址。
AI 重命名章节
Section titled “AI 重命名章节”尚未在此参考中描述。这个端点会被列出,是因为服务端确实注册了它,但它的请求与响应形状还没有写下来。
对应的 handler 是 ai_rename_chapter,位于 crates/lanrurugi-api/src/tankoubons.rs:1693。
响应
200该端点已响应;其确切结构尚未记录,见 crates/lanrurugi-api/src/tankoubons.rs:107 处的 handler。
该响应没有示例数据。
该端点需要管理员令牌:访客(只读)令牌会被服务端拒绝。
请求失败 — 常见原因:实例地址填错或不可达;实例未开启「为客户端 API 启用 CORS」;或者文档站是 HTTPS 而实例是局域网内的纯 HTTP(浏览器按混合内容拦截)。可以用上面的「复制为 cURL」在终端里发同样的请求。
填写你自己的实例地址,请求由浏览器直接发往该地址。
AI 重命名建议
Section titled “AI 重命名建议”尚未在此参考中描述。这个端点会被列出,是因为服务端确实注册了它,但它的请求与响应形状还没有写下来。
下面这段是 handler 自己的文档注释(crates/lanrurugi-api/src/tankoubons.rs:1585)的译文;原文以源码为准。
把 tankoubon 的标题、成员档案名与顺序发给 DeepSeek,返回 AI 生成的改名建议(tankoubon 名称 + 每个档案的章节名)。必须配置 LLM 密钥;未配置时返回 400。
响应
200该端点已响应;其确切结构尚未记录,见 crates/lanrurugi-api/src/tankoubons.rs:103 处的 handler。
该响应没有示例数据。
该端点需要管理员令牌:访客(只读)令牌会被服务端拒绝。
请求失败 — 常见原因:实例地址填错或不可达;实例未开启「为客户端 API 启用 CORS」;或者文档站是 HTTPS 而实例是局域网内的纯 HTTP(浏览器按混合内容拦截)。可以用上面的「复制为 cURL」在终端里发同样的请求。
填写你自己的实例地址,请求由浏览器直接发往该地址。
获取单个 Tankoubon 的完整详情
Section titled “获取单个 Tankoubon 的完整详情”获取指定 tankoubon ID 的详情,附带分页的档案元数据。
每页的档案数取决于服务端的 archives_per_page 设置。
查询参数
- pageinteger · default: -1可选
- 档案列表的页码。默认 -1,返回全部档案。
响应
200Tankoubon
{
"filtered": 0,
"result": {
"archives": [
""
],
"full_data": [
null
],
"id": "",
"name": "",
"progress": 0,
"summary": "",
"tags": ""
},
"total": 0
}400错误响应
{
"error": "",
"operation": "",
"success": 0,
"successMessage": ""
}请求失败 — 常见原因:实例地址填错或不可达;实例未开启「为客户端 API 启用 CORS」;或者文档站是 HTTPS 而实例是局域网内的纯 HTTP(浏览器按混合内容拦截)。可以用上面的「复制为 cURL」在终端里发同样的请求。
填写你自己的实例地址,请求由浏览器直接发往该地址。
更新 Tankoubon 阅读进度
Section titled “更新 Tankoubon 阅读进度”告诉服务端你当前正在阅读这个 Tankoubon 的第几页,以便它相应地更新内部的阅读进度。
页码是在该 tank 内所有档案上全局计数的(如果一个 tank 有两个档案,分别有 20 页和 25 页,那么第 26 页就是第 2 个档案的第 6 页)。
⚠ 如果服务端配置为使用客户端进度跟踪,这个 API 调用会返回错误!
调用前请务必先用 /api/info 确认服务端是否跟踪阅读进度。
路径参数
- idstring · min: 15 · max: 15 · pattern必填
- 要更新的 Tankoubon ID。
- pageinteger · min: 1必填
- 要更新到的全局页码,从 1 开始计数。必须是正整数。
响应
200成功响应
{
"id": "TANK_1589141306",
"lastreadtime": 123943543,
"operation": "update_tank_progress",
"page": 5,
"success": 1
}400通用错误响应
{
"error": "Server-side Progress Tracking is disabled on this instance.",
"operation": "update_tank_progress",
"success": 0
}401开启 authprogress 时需要认证
{
"error": "This operation requires authentication.",
"operation": "update_tank_progress",
"success": 0
}该端点需要管理员令牌:访客(只读)令牌会被服务端拒绝。
请求失败 — 常见原因:实例地址填错或不可达;实例未开启「为客户端 API 启用 CORS」;或者文档站是 HTTPS 而实例是局域网内的纯 HTTP(浏览器按混合内容拦截)。可以用上面的「复制为 cURL」在终端里发同样的请求。
填写你自己的实例地址,请求由浏览器直接发往该地址。
获取 Tankoubon 缩略图
Section titled “获取 Tankoubon 缩略图”获取指定 Tankoubon 的封面缩略图。 默认情况下,缩略图取自第一个档案的第一页。 如果缩略图尚不存在,这个端点会返回一张占位图。 若想把缩略图生成排入后台, 可以使用 no_fallback 查询参数。
查询参数
- no_fallbackstring · enum: true | false可选
- 关闭占位图,把缩略图排入提取队列,并返回 code 202 的 JSON。图片已存在时该参数不起作用。(无论哪种情况,只要图片已存在就会以 code 200 返回它)
响应
200如果缩略图已经提取过,会直接返回它。
该响应没有示例数据。
202缩略图已排入提取队列。用 `/api/minion/:jobid` 跟踪它何时就绪。
{
"job": 0,
"operation": "",
"success": 1
}400错误响应
{
"error": "",
"operation": "",
"success": 0,
"successMessage": ""
}请求失败 — 常见原因:实例地址填错或不可达;实例未开启「为客户端 API 启用 CORS」;或者文档站是 HTTPS 而实例是局域网内的纯 HTTP(浏览器按混合内容拦截)。可以用上面的「复制为 cURL」在终端里发同样的请求。
填写你自己的实例地址,请求由浏览器直接发往该地址。
更新 Tankoubon 缩略图
Section titled “更新 Tankoubon 缩略图”用跨该 tank 内所有档案(按顺序)的全局页码,设置指定 Tankoubon 的封面缩略图。全局页码会自动换算到正确的档案与其中的局部页码。
查询参数
- pageinteger · min: 1必填
- 跨整个 Tankoubon 内所有档案的全局页码,从 1 开始计数。第 1 页就是第一个档案的第一页,依此类推。
响应
200Tankoubon 缩略图已更新
{
"new_thumbnail": "",
"operation": "update_tankoubon_thumbnail",
"success": 0
}400错误响应
{
"error": "",
"operation": "",
"success": 0,
"successMessage": ""
}该端点需要管理员令牌:访客(只读)令牌会被服务端拒绝。
请求失败 — 常见原因:实例地址填错或不可达;实例未开启「为客户端 API 启用 CORS」;或者文档站是 HTTPS 而实例是局域网内的纯 HTTP(浏览器按混合内容拦截)。可以用上面的「复制为 cURL」在终端里发同样的请求。
填写你自己的实例地址,请求由浏览器直接发往该地址。