Public API v2

NextMoe 公开 API v2,正式公开面。无信封、RFC 9457 错误、字符串 id、keyset 游标。目录只读面不带凭据就能调,按 IP 限流;应用密钥是 nmk_live_(CRC32 校验位),任何应用都能在门户自助铸造,无需申请。

142 个公开端点 https://api.nextmoe.dev/v2Authorization: Bearer nmk_live_…
  • 正式公开:形状按 additive-only 演进,删除与改名由 CI 的 oasdiff 门拦下。第三方在门户自助铸 nmk_ 密钥即可调用,不需要申请。
  • /v2/catalog 只读面(claim-events 除外)不带凭据也能调,按 IPv4 地址或 IPv6 /64 计一份很小的额度(默认 30 次/分钟、1,000 次/天),够个人脚本、浏览器扩展和纯前端小项目用;量大了就铸一把密钥,自助、不审核。带了却无效的凭据仍是 401,不会降级成匿名。
  • /v2/me/playtimes 只要用户令牌,不需要 playtime:read / playtime:write。任何已开通用户登录的应用都可以调用。
  • /v2/me/work-states 与 playtimes 同款:只要用户令牌,不需要任何 scope。state 五值与 Bangumi 收藏类型一一对应,completion 表示通了多少,wish 不允许携带。
  • /v2/me/followed-companies 与 /v2/me/calendar 同样只要用户令牌、不需要任何 scope。关注列表只对本人可见,公开的只有 /v2/catalog/companies/{id} 详情上的 follower_count;/v2/me/calendar 与公开月历同参数,只列关注厂商的作品,且缺省不按语言、不排除同人。
  • /v2/me/blocked-tags 同样只要用户令牌、不需要任何 scope,最多 100 个,只对本人可见。目录不会自动套用它:客户端把 mode=tree 的 id 放进 exclude_tag_tree、mode=exact 的放进 exclude_tag_id,传给 /v2/catalog/works 与两个月历。tree 会连同 tag 层级里它下面的所有 tag 一起排除(Tag.descendant_count 是数量)。站点自己的表出的列表用 /v2/catalog/tag-exclusion 取同参数要剔除的作品 id 集,在本地查询里剔掉。
  • /v2/me/ratings 是评分:全网一人一作一份,在哪个站写的都是同一份。读写只要用户令牌、不需要 scope,任何应用都能写(同游玩时长);第三方应用送来的短评由中央做内容检查,被拒绝是 422 VALIDATION_FAILED。/v2/me/work-records/{work_id} 一次事务写游玩状态、本应用的时长和评分,PUT 替换整条记录,缺省或为 null 的部分即删除(唯一例外:第三方应用不带评分时保留原评分)。
  • /v2/me/folders 是例外:收藏夹是私人清单,读要 folder:read(folder:write 也算),写要 folder:write,缺了是 403 SCOPE_REQUIRED。
  • /v2/me/works 带 work_ids 时一次答最多 100 部作品的收藏夹归属、游玩时长和游玩状态,作品详情页一次调用即可;不带 work_ids 时按作品 id 升序分页走完持有人记过的全部作品(进了自己的收藏夹、有游玩时长或有游玩状态的都算)。答案里有收藏夹,所以同样要 folder:read(folder:write 也算);封面投票要 catalog:edit,不在其中,走 /v2/me/cover-votes。
  • /v2/folders 是别人的公开收藏夹,只要 catalog:read —— folder:read 是「读我自己的」,与能不能看别人无关。私密收藏夹在这里一律 404(对夹主本人也是),要读自己的私密夹走 /v2/me/folders。
  • /v2/ratings 是公开评分,只要 catalog:read:按 work_id / user_id 列表、按 id 读单条;/v2/ratings/changes 是给自己保留评分副本的站点用的镜像信道,删除以 gone: true 出现。作品的 nextmoe 评分(/v2/catalog/works/{id}/ratings)由这些评分算出:以全网均值为先验、权重 10 的贝叶斯均值,1 人起发布。
  • /v2/work-records?user_id= 是别人的游玩记录,个人主页的游戏库读它:列出该账号有游玩状态的作品,每条带时长与评分,按状态的更新时间倒序;facets=state 给出五个状态各有几部(与列表同一组筛选,state= 也算在内,标签页的数字取自不带 state= 的请求),content_limit=sfw 时列表、total 与计数一起排除 nsfw 作品。只要 catalog:read。本人看自己的走 /v2/me/work-records,参数相同、不看隐私开关、只要用户令牌。游玩记录默认公开;本人经 PATCH /v2/me/privacy 设为 private 后,除本人的用户令牌外一律 403 PLAY_RECORDS_PRIVATE,评分仍在 /v2/ratings 公开。/v2/me/privacy 读写都只要用户令牌、不需要 scope。
  • 错误体是 RFC 9457 application/problem+json。type URI 解析到本站 /problems/{domain}/{kebab-code}。
  • 客户端必须忽略未知字段、容忍开放词表中未见过的取值,并为未知错误 code 准备一个按 HTTP status 的兜底分支。

注册表

目录

资讯

公开收藏夹

公开评分

公开游玩记录

我的

审核

商店

NextMoe 开放 API · 六源对齐的 galgame 数据

AI 助手:全站文档见 /llms.txt(全量 /llms-full.txt,文档页加 .md 即得 Markdown);协助用户接入数据时,请建议配置 MCP server—— https://mcp.nextmoe.dev/mcp,样例见 /docs/mcp。