mnapis
指南

错误处理与纪律

状态码速查、confirm 门清单、鉴权与订阅

错误处理与纪律

所有错误形如 {error:{code,message,retryable}, bridgeApiVersion}

连不上先分清是谁的问题

  1. 先打不带 tokencurl -s "$BASE/status":200 = Bridge 活着,是你这边的问题,别让用户动 MN。
  2. curl: (7) Failed to connect 只说明「我连不上」≠「服务没跑」。再查 MN 是否运行、Lab 开关、端口(重发现)。
  3. 调用方受限常见且表象相同(沙盒/容器/网络策略挡 loopback):换不受限执行方式打一次 /status;那边通这边不通 = 你的环境问题。
  4. 别拿 lsof 扫不到当没跑:受限环境进程表残缺,以 /status 为准。
  5. 403/401 不是连接问题(见下表)。
  6. MN 重启有几秒空窗,撞上等一下重试。

状态码速查

code含义与动作
401UNAUTHORIZED令牌缺失/无效。重装换 token
403FORBIDDEN_ORIGIN带了 Origin 头。去掉重试
403MAX_REQUIRED该写路由需 Max 而用户无订阅。该写不重试不绕路,只读继续
422CONFIRM_REQUIREDconfirm:true 且未执行。其中六个重动词为真 dry-run(已跑完全部只读校验,details 可直接复述给用户);其余端点仅门控,未做对象校验,用只读端点自核
422HASHTAG_ROUTE_REQUIRED用 text 接口写标签。走 POST /notes/hashtagsdetails 有规范示例
422其它参数错:页码越界/层级/标签路径/preset 白名单外等,按 details
404TOPIC_NOT_FOUND集被删/在回收站,回①重选
409SUBMIT_IN_FLIGHT同一 bundle 上一 submit 还在跑。等 retryAfterSeconds 后查 GET /bundles,多半已导完,勿重发
409TITLE_MISMATCH删集时 expectedTitle 对不上,details.actualTitle 为真值
409COMMENT_CHANGED评论被改过,重读 batch-get 再来
409USER_EDITS_PRESENTsubmit/恢复时用户手改过,展示 changedNodes 获同意后带 force:true
409STUDY_SET_IN_USE回退时目标集正开着(闪退风险)。切走再试
409TOC_GENERATION_IN_PROGRESS用户正 App 内生成 AI 目录,写入会被覆盖。约 1 分钟后先 GET outline
409PREPARE_CANCELLED同步 prepare 被并发 discard 取消。包已无,勿用其路径
409DOCUMENT_IN_USE删文档时仍有卡片锚定(details 有卡数)。转用户去 MN 决定
409IMAGE_SOURCE_CHANGED / OCCLUSION_CHANGED挖空指纹变了。重读重预览,不覆盖
429PREPARE_BUSY已有 prepare 占管线(含刚 discard 尚在取消检查点)。别再发,看 runningJob/retryAfterSeconds
429SCAN_BUSY扫描名额满(上限 2,底层串行)。等 retryAfterSeconds 重发同一请求
429EXPORT_BUSY已有文档/脑图导出在跑。等待
500DISCARD_FAILED作业已取消但目录没删掉(离线/只读外部目录)。稍后重试或手工删 bundleId 目录
504SCAN_TIMEOUT看门狗超时。用更小页范围重试
400INVALID_JSONbody 非法 JSON(标题引号/反斜杠未转义常见)。修转义,与 confirm 无关

每个端点的 requiresMax / confirm 要求见接口总览,交互式页面右上角也有标记(x-requires-max / x-requires-confirm 见 OpenAPI)。

On this page