mnapis

错误处理

状态码、confirm、鉴权

错误处理

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

连接失败时先定位

  1. 先请求不带 token 的 curl -s "$BASE/status"。200 表示 Bridge 正常,问题在请求侧。
  2. curl: (7) Failed to connect 只说明本次连接失败,不代表服务未运行。再查 MarginNote 运行状态、Lab 开关、端口。
  3. 沙盒、容器、网络策略可能挡住 loopback,表象与服务未运行相同。换不受限环境请求一次 /status。那边通这边不通,问题在当前环境。
  4. lsof 扫不到不代表未运行,受限环境的进程表可能残缺。连接状态看 /status。
  5. 403 与 401 见下表,与连接无关。
  6. MarginNote 重启有几秒空窗,遇到后等待重试。

状态码速查

码code含义与动作
401UNAUTHORIZED令牌缺失或无效。更换 token 后重试
403FORBIDDEN_ORIGIN请求带了 Origin 头。去掉 Origin 头重试
422CONFIRM_REQUIRED缺少 confirm,请求未执行。move、copy、delete、fold、metadata、hashtags 为真 dry-run,返回 422 与已校验的 details。其余端点只做门控,用只读端点自行核对
422HASHTAG_ROUTE_REQUIRED标签写入走了 text 接口。走 POST /notes/hashtags,details 有规范示例
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_PROGRESSApp 内正在生成 AI 目录,写入会被覆盖。约 1 分钟后先 GET outline
409PREPARE_CANCELLED并行的 prepare 被 discard 取消。包已不存在
409DOCUMENT_IN_USE删除文档时仍有卡片锚定,数量见 details。在 MarginNote 中处理后重试
429PREPARE_BUSY已有 prepare 占用管线,含刚 discard 尚在取消检查点的。查看 runningJob 与 retryAfterSeconds,不重发
429SCAN_BUSY扫描并发已满,上限 2,底层串行。等待 retryAfterSeconds 后重发同一请求
500DISCARD_FAILED作业已取消但目录未删除,离线或只读外部目录时出现。稍后重试,或手动删除 bundleId 目录
504SCAN_TIMEOUT服务端超时。用更小页范围重试
400INVALID_JSONbody 不是合法 JSON,常见于标题引号或反斜杠未转义。修正转义后重试,与 confirm 无关

每个端点的 confirm 要求见各交互式页面的请求示例。

On this page