发布其他类资源
POST /api/other-releases/publish —— 字幕组用 API Key 发布漫画、音乐、RAW、舞台剧资源;不绑定 bgmId。
/api/other-releases/publish 是字幕组发布非番剧资源的写入端点,适用于漫画、音乐、RAW、舞台剧。它使用同一套字幕组 API Key 鉴权,但不需要 bgmId,也不会混入番剧发布列表。
这是写入接口。Key 泄露会允许别人以你的字幕组名义发布其他类资源;请只在服务端脚本或 CI secret 中使用。
URL
POST https://anibt.net/api/other-releases/publish
Authorization: Bearer <YOUR_API_KEY>也支持 X-API-Key: <YOUR_API_KEY>,但推荐统一使用 Authorization: Bearer。
两种请求格式
上传 .torrent 文件,后端会自动提取磁力链接、标题、文件大小和 tracker。category 与 title 仍建议显式传入。需要 Nyaa 代发时也必须使用这种格式。
curl -X POST 'https://anibt.net/api/other-releases/publish' \
-H 'Authorization: Bearer <YOUR_API_KEY>' \
-F 'category=manga' \
-F 'title=Example Manga Vol.01' \
-F 'customTags=电子版,中文' \
-F 'notes=发布说明支持 Markdown。' \
-F 'nyaa=true' \
-F 'nyaaCategory=3_2' \
-F 'nyaaComplete=false' \
-F 'nyaaRemake=false' \
-F 'nyaaDescription=可选:覆盖提交到 Nyaa 的 Markdown 说明' \
-F 'torrent=@/path/to/release.torrent'customTags / tags 在表单里用逗号分隔;trackers 用换行或 JSON 数组字符串。
直接提交磁力链接,适合已有磁力但没有上传种子文件的自动化流程。
curl -X POST 'https://anibt.net/api/other-releases/publish' \
-H 'Authorization: Bearer <YOUR_API_KEY>' \
-H 'Content-Type: application/json' \
--data @- <<'JSON'
{
"category": "music",
"title": "Example Album FLAC",
"magnetLink": "magnet:?xt=urn:btih:...",
"fileSize": 734003200,
"customTags": ["FLAC", "BK"],
"notes": "**无损音源**,含 BK。"
}
JSONmagnetBase64 也可使用;它既接受原始 magnet,也接受 Base64 编码后的 magnet。
Nyaa 代发
其他类发布 API 使用和 /api/releases/publish 相同的 Nyaa 代发参数。启用后,发布记录会先写入 AniBT,再由后台 release_sync 队列提交到 Nyaa。
Nyaa 代发仅对白名单字幕组开放,并且必须使用 multipart/form-data 上传 .torrent 文件。种子的 announce 或 announce-list 必须包含 http://nyaa.tracker.wf:7777/announce,否则请求会被拒绝。
常用分类示例:
| 内容 | 建议 nyaaCategory | Nyaa 分类 |
|---|---|---|
| 漫画 / 轻小说翻译 | 3_2 | Literature - Non-English-translated |
| 无损音乐 / BK | 2_1 | Audio - Lossless |
| RAW 或实拍视频 | 4_4 | Live Action - Raw |
| 如果内容本质仍是动画 RAW | 1_4 | Anime - Raw |
curl -X POST 'https://anibt.net/api/other-releases/publish' \
-H 'Authorization: Bearer <YOUR_API_KEY>' \
-F 'category=manga' \
-F 'title=Example Manga Vol.01' \
-F 'notes=发布说明支持 Markdown。' \
-F 'torrent=@/path/to/release.torrent' \
-F 'nyaa=true' \
-F 'nyaaCategory=3_2' \
-F 'nyaaComplete=false' \
-F 'nyaaRemake=false' \
-F 'nyaaDescription=可选:覆盖提交到 Nyaa 的 Markdown 说明' \
-F 'nyaaInformation=https://anibt.net/group/example'字段别名和结构化 JSON 形态与番剧发布一致:
| 表单别名 | 结构化字段 | 必填 | 含义 |
|---|---|---|---|
nyaa / publishToNyaa | sitePublish.nyaa.enabled | 否 | 设为 true 表示请求 Nyaa 代发。只传 nyaaCategory 等 Nyaa 字段时,服务端也会视为启用。 |
nyaaCategory | sitePublish.nyaa.category | 启用代发时必填 | Nyaa 分类代码,必须使用 Nyaa 官方代码。完整代码表见 发布资源 API。 |
nyaaComplete | sitePublish.nyaa.complete | 否 | 对应 Nyaa 的 Complete 标记;合集、全卷、全季等完整资源可设为 true。默认 false。 |
nyaaRemake | sitePublish.nyaa.remake | 否 | 对应 Nyaa 的 Remake 标记;重传、修复版、重制版按需要设为 true。默认 false。 |
nyaaDescription | sitePublish.nyaa.description | 否 | 提交到 Nyaa 的 Markdown 说明,最多 20000 字符。不传时继承本站 notes。 |
nyaaInformation | sitePublish.nyaa.information | 否 | Nyaa information 字段,最多 500 字符,通常填写官网、字幕组页面、项目页或相关说明链接。 |
参数
属性
类型
category 和 title 必填;torrent、torrentStorageId、magnetLink、magnetBase64 至少提供一个。
参数值速查
分类代码
category 不是中文名,必须填写英文代码:
| 代码 | 页面分类 | RSS 路径 | 什么时候用 |
|---|---|---|---|
manga | 漫画 | /rss/other/manga.xml | 漫画、轻小说、书籍、画册等非番剧文本/图像阅读资源。 |
music | 音乐 | /rss/other/music.xml | OST、角色歌、专辑、单曲、演唱会音源、广播剧音频。 |
raw | RAW | /rss/other/raw.xml | 不绑定 Bangumi 番剧条目的 RAW 资源、合集、杂项视频源。 |
stage | 舞台剧 | /rss/other/stage.xml | 舞台剧、音乐剧、Live action 舞台相关资源。 |
种子、磁力和说明字段
| 字段 | 怎么填 | 说明 |
|---|---|---|
torrent | multipart 文件字段,-F 'torrent=@release.torrent' | 推荐方式。上传后会写入本站公共存储,并从种子提取 magnet、文件大小和 tracker。 |
magnetLink | 原始 magnet:?xt=urn:btih:... | JSON 或 multipart 都可传。表单字段 magnet 是兼容别名。 |
magnetBase64 | 原始 magnet 或 Base64 编码后的 magnet | 与 magnetLink 二选一即可;存在 torrent 时通常不用手填。 |
torrentStorageId | 已上传的公共 torrent key | 内部自动化场景使用。普通客户端不要手工构造。 |
fileSize | 字节数,例如 734003200 | 上传 torrent 时可自动提取;magnet 带 xl= 时也可推断。 |
trackers | JSON 数组或 multipart 换行文本 | 追加 tracker。不要把多个 URL 写成一个逗号字符串,除非是 customTags。 |
notes | Markdown 文本 | 发布页和 RSS 描述使用。 |
descriptionMarkdown | Markdown 文本 | notes 的兼容别名。content、description、intro 也会被兼容为说明文本。 |
customTags | JSON 数组或 multipart 逗号分隔 | 最多 20 个,每个最长 80 字符。例:FLAC,BK,自购。 |
tags | 同 customTags | customTags 的兼容别名。 |
返回
{
"ok": true,
"result": {
"releaseId": "orel_DYXiEZs5KMep",
"groupId": "org_xxx",
"category": "manga",
"createdTorrentFileKey": "torrent/..."
}
}releaseId 可拼成详情页:https://anibt.net/other-release/<releaseId>。发布后对应分类的 RSS 会出现新条目,见 其他类 RSS。
统一错误响应
JSON 磁力发布和 multipart 种子上传使用同一种错误 envelope;字段语义与 番剧资源发布 API 一致:
{
"ok": false,
"error": {
"code": "PUBLIC_SNAPSHOT_ENQUEUE_PAUSED",
"message": "System deployment in progress. Please retry shortly.",
"reason": "DEPLOYMENT_IN_PROGRESS",
"retryable": true,
"retryAfterMs": 15000,
"requestId": "req-example-123",
"i18n": {
"key": "error_deployment_in_progress"
}
}
}code 和 message 用于机器分支与安全回退提示;reason 给出更具体的业务原因;retryable / retryAfterMs 指示能否重试及等待时间;requestId 与响应头 X-Request-ID 相同;i18n.key(以及可选 i18n.params)用于本地化显示。reason、重试字段与 i18n 只在适用时返回。存在 retryAfterMs 时,响应头也会返回按秒向上取整的 Retry-After。
部署期间暂停发布交接会返回 503 Service Unavailable,code=PUBLIC_SNAPSHOT_ENQUEUE_PAUSED、reason=DEPLOYMENT_IN_PROGRESS、retryable=true。写入限流会返回 429 Too Many Requests,code=RATE_LIMIT_EXCEEDED、reason=RATE_LIMITED、retryable=true。两者都应按 Retry-After / retryAfterMs 退避。
常见错误
| HTTP | 原因 | 处理 |
|---|---|---|
| 400 | 缺少 category / title,或没有任何种子 / 磁力来源 | 补齐必填项;确认 category 是四个允许值之一 |
| 401 | 未传 API Key | 加上 Authorization: Bearer <YOUR_API_KEY> |
| 403 | API Key 无效、已撤销,或用户已不在字幕组 | 在字幕组后台重新生成 Key,确认成员权限 |
| 404 | torrentStorageId 指向的文件不存在 | 改用 multipart 上传,或确认文件 key 属于该字幕组 |
| 429 | reason=RATE_LIMITED,写入频率过高 | 按 Retry-After / retryAfterMs 退避 |
| 503 | reason=DEPLOYMENT_IN_PROGRESS,系统正在部署 | 按 Retry-After / retryAfterMs 等待后重试 |
下一步:订阅分类 RSS 用 /rss/other/<category>.xml;番剧资源仍走 /api/releases/publish。