两种登录,游客搜索,账号阅读。
1.3.3:默认使用服务端共享账号。导入或登录一次后,所有前端共用同一账号;清除浏览器 Cookie、换浏览器及重启服务均保留账号。GET /api/session 返回 account_mode;共享模式的导入和 DELETE /api/session 会作用于所有前端。可用 --account-mode browser 恢复浏览器独立模式。POST /api/auth/sms 接收 username,POST /api/auth/sign-in 接收 username、digits;GET / PUT / POST /api/auth/captcha 用于图形验证。POST /api/session/import 支持 CK、抓包请求头和会话 JSON。所有 ID 使用字符串,未登录也可搜索。
GET /api/searchtitle?search_title=关键词 和 /api/search/recommend 始终使用服务端独立游客 token、Cookie 和设备,不使用账号 CK。游客 token 到期或搜索返回 401 时自动续取,原请求最多重试一次;403、429 和网络失败不会触发 token 轮换。搜索结果不会自动预取账号正文。
前端按 App 流程以 150 ms 防抖请求 /api/search/recommend,返回 suggestions 结构化建议及顶层 query_type、url、koc_keyword 等字段,保留原 items 标题数组。提交搜索复用当前词的推荐响应,有 URL 时直达,没有 URL 才请求 /api/searchtitle;点击建议使用该条目的路由信息,分页直接沿用 cursor。KOC 假名全程用游客解析,输入和展示联想不会请求账号正文。
POST /api/resolve_share 接收 {"url":"SOIA / OIA / story 链接"},返回 target.business_id 和 target.section_id。完整 story 章节路径本地提取,SOIA 分享解析及 story 专栏目录查询只用独立游客 token,不请求账号正文。“按链接阅读”完成解析后,再使用当前登录或导入的账号打开正文。
正文、取钥、权益复核、进度同步和阅读时长上报继续使用当前账号。POST /api/reader/sessions 返回 reading_id、generation 和通知地址。监听 stream 的 snapshot 事件,正文 ready 后读取 content;页面 rendered、restore_complete 后才复核权益和开始实际阅读。用 events 按 seq 顺序提交段落位置、可见性和暂停事件,最后调用 close。打开请求须携带 tab_id、client_open_id;事件须携带 generation。只有 accepted_through_seq 已确认的事件才能从客户端待发队列移除。本地保存 recording 与上游同步 upstream_sync 是两个独立状态。显式预取接口 /api/reader/preload 仍可用于已登录或导入的账号。
阅读使用 web_paragraph_v2 整数段落比例,offset_ratio 仅用于恢复,不强制末尾 100%。paywall 表示真实显示截断,rights_refresh 表示用户主动重新检查权益;两者都不声明支付成功。CK 可携带 reader_config / raw_zonfig 配置,TLS 会话恢复由 tls.session_resumption 显式选择。
/api/decrypt 只做离线解密。兼容正文和 TXT 接口不产生阅读记录。错误响应统一为 ok: false 和 error 对象。完整字段、SSE 示例与错误码见源码目录 API.md。下载 OpenAPI JSON ↗