OPEN API
开放接口
两件事对外开放:AI 味去除(站内那个润饰引擎)和朱雀检测(中转腾讯的 AIGC 检测)。 用你自己账户的积分,与网页上是同一个余额、同一份计价。
怎么开始
- 去 我的 页面底下建一把 API KEY(zq_ 开头)。明文只显示那一次。
- 每次请求带上 Authorization: Bearer <你的 KEY>。
- 先调 GET /api/v1/me 确认钥匙对不对——这一条不扣分。
curl https://testmoxu.dimexplore.com/api/v1/me \ -H "Authorization: Bearer zq_你的钥匙"
计费
| 接口 | 扣多少 | 什么时候扣 |
|---|---|---|
| AI 味去除 | 每 1500 汉字一档、5 积分(不足一档按一档) | 提交时扣。跑失败会全额退回,流水里能看到那一笔。 |
| 朱雀检测 | 每次 1 积分 | 检测成功之后才扣。上游出错(502)一分不扣。 |
单篇上限 9000 汉字,润饰和检测都一样,超了回 400。 每把 KEY 每分钟 20 次;润饰最多同时跑 3 篇 (网页那边单独算,互不占用)。
AI 味去除
同步:一次做完
curl https://testmoxu.dimexplore.com/api/v1/refine \
-H "Authorization: Bearer zq_你的钥匙" \
-H "Content-Type: application/json" \
-d '{"文本": "你的正文……", "mode": "screenplay"}'
这条要跑几十秒到几分钟,把你的 HTTP 客户端超时调到 600 秒以上。 被客户端掐掉的话任务照跑、分照扣,用下面那条 GET /api/v1/refine 把那一篇找回来。
{
"task_id": 1234,
"成稿": "……",
"mode": "screenplay",
"路线名": "剧本小说",
"原文汉字数": 1820,
"成稿汉字数": 1795,
"扣了": 10,
"余额": 90,
"自检": ["…提醒,可能为空数组…"],
"耗时秒": 74.2
}
异步:提交 + 轮询(批量用这个)
# 提交,立刻回 202 和 task_id(分在这一刻就扣了)
curl https://testmoxu.dimexplore.com/api/v1/refine/async \
-H "Authorization: Bearer zq_你的钥匙" \
-H "Content-Type: application/json" \
-d '{"文本": "你的正文……"}'
# 轮询(建议 5 秒一次)
curl https://testmoxu.dimexplore.com/api/v1/refine/1234 \
-H "Authorization: Bearer zq_你的钥匙"
查回来的 状态 是 running / done / failed 三个之一。failed 表示分已经退回去了,不用再找我们。
最近几篇
curl https://testmoxu.dimexplore.com/api/v1/refine \ -H "Authorization: Bearer zq_你的钥匙"
回最近 5 条(不含正文)。同步请求被你自己的客户端掐断之后,这里是找回 task_id 的唯一办法。
mode
可选,留空我们自己猜(猜不出来走通用)。可选值: screenplay 剧本小说 · business 商业办公 · academic 学术严谨 · generic 通用文本。
接口这边不带网页上那个「没到 85% 人工就自动再修一轮」的循环。 一次调用 = 修一轮 = 一笔扣分。要不要复检、要不要再修一轮,自己拿下面那条检测接口决定。
朱雀检测
curl https://testmoxu.dimexplore.com/api/v1/detect \
-H "Authorization: Bearer zq_你的钥匙" \
-H "Content-Type: application/json" \
-d '{"文本": "要检测的正文……"}'
腾讯朱雀返回什么,我们原样给你什么(labels_ratio、逐段落的 segment_labels 等等都在),只多加 扣了 / 余额 两个键。字段口径以朱雀那边为准,我们不翻译、不加工。
labels_ratio 里 "0" 是人写、 "1" 是 AI、"2" 是疑似 AI,按段落数算。 要「人工比例」取 "0" 那一项——不是 1 - "1", 那样会把疑似 AI 算成人写的。段落少的短文本只有很粗的刻度(3 段就只有 0 / 33 / 67 / 100)。
出错怎么读
出错时回 {"错": "一句中文", "码": "机器读的"}。 拿 码 判断,别去匹配那句中文——话术会改,码不会。
| HTTP | 码 | 什么意思 | 该怎么办 |
|---|---|---|---|
| 401 | 钥匙不对 | KEY 无效、已吊销,或者账号被停 | 重试没用,去建一把新的 |
| 429 | 调用太频繁 | 撞了每分钟 20 次 | 按响应头 Retry-After 等,别盲目重试 |
| 400 | 余额不足 | 体里带 缺口积分 和 建议充值元 | 去充值,重试没用 |
| 400 | 超出上限 | 超过 9000 汉字 | 把稿子拆开分次调 |
| 400 | 内容为空 | 没给 文本,或者不是合法 JSON | 查 Content-Type 和请求体 |
| 400 | 有一篇还在跑 | 同时在跑的润饰超过 3 篇 | 等在跑的那几篇出来 |
| 400 | 模型失败 | 上游模型这一次没出稿 | 分已经退回去了,可以直接重试 |
| 404 | 任务不存在 | 没这个 task_id,或者不是你的 | — |
| 502 | (朱雀那边的码) | 检测上游出错 | 一分不扣,隔几秒重试 |
几条要先知道的
装到你的 AI 客户端
不想自己写代码的话,这两个 Skill 装上就能直接对 AI 说 「把这稿子的 AI 味去掉」「查一下这段的 AI 率」。里头带好了脚本, 正文走文件不进命令行,长任务自己轮询。
- 先建一把 KEY(上面第一步),存成环境变量 MOXU_API_KEY——Skill 读的就是它。
- Claude Code:解压到 ~/.claude/skills/,解出来是 ~/.claude/skills/moxu-refine/ 这样一层目录,重开一个会话就认。
- claude.ai:在设置里的 Skills 那块直接传这个 zip,不用解压。
- 其它客户端:SKILL.md 就是一份纯文本说明, scripts/ 下的脚本只用 Python 标准库,不装任何依赖。
zip 是现下现打的,里面的地址、单价、限流次数跟这一页永远是同一份。