法条检索
/v1/law_search
输入检索需求,AI 从法规库中匹配相关法条。可选 deep 免费模式或 expert 专家模式。
认证与请求
需要 law_search scope 和 Bearer API Key。
| 字段 | 类型 | 必填 | 规则 |
|---|---|---|---|
prompt | string | 是* | 推荐使用的检索字段;deep 最多 10,000 字符,expert 最多 30,000 字符。 |
query | string | 是* | 兼容旧版调用;填写了 prompt 时忽略此字段。 |
mode | string | 否 | 默认 deep(免费);expert 为专家模式。 |
stream | boolean | 否 | 默认为 false;设为 true 时使用流式返回。 |
额度、计费与限流
- deep(默认):每账号 Asia/Shanghai 自然日 100 次,0 点。
- expert:最多 30,000 字符,标准价按 5/10/15 点阶梯;限时免费至 2026-10-15 24:00(Asia/Shanghai),活动期间各字符档均为 0 点。
- 限流:同一 IP 或同一 Key 在 3 秒内最多请求 6 次。
使用说明
法条检索默认 stream: false(非流式)。deep(免费)模式响应较快,一般不会超时。但 expert 专家模式耗时较长(实测可达 40 秒以上),建议设置 stream: true 以利用心跳保活防止客户端断联。
响应格式
非流式(默认)
| 字段 | 类型 | 说明 |
|---|---|---|
status | string | "success" |
data | string | 匹配到的相关法条原文 |
流式(stream: true)
返回 NDJSON 行:heartbeat → original_content(一个完整 JSON 行即为全部结果)。
⚠️ 法条检索流式输出的键名是 original_content,不是 data。与其他接口不同。
常见错误:invalid_json、prompt_required、exceed_char_limit,以及 Key、权限、IP、额度或服务暂不可用等问题。
法律问答
/v1/qa
提交法律问题,选择 deep 免费模式或 expert 专家模式,AI 返回分析结果。支持流式输出和多轮对话。
认证与请求
请求使用 Authorization: Bearer ak_live_YOUR_API_KEY 和 Content-Type: application/json。
| 字段 | 类型 | 必填 | 规则 |
|---|---|---|---|
question | string | 是* | 推荐使用的问题字段。 |
prompt | string | 是* | 兼容旧版调用;填写了 question 时忽略此字段。 |
context_text | string | 否 | 非空时以两个换行拼接在问题前,并计入字符数。 |
mode | string | 否 | 默认为 deep;设为 expert 时使用专家模式。 |
history | string / array | 否 | 处理后的历史内容最多 20,000 字符。 |
stream | boolean | 否 | 默认为 true;设为 false 时一次性返回结果。 |
权限、额度与计费
| mode | scope | 字符限制 | 规则 |
|---|---|---|---|
| deep | qa_deep | 10,000 | 每账号 Asia/Shanghai 自然日 100 次,0 点。 |
| expert | qa_expert | 30,000 | 基础 5 点;超过 10,000/20,000 字符分别按 2/3 倍。 |
同一 IP 或同一 Key 在 3 秒内最多请求 6 次。
使用说明
Web 端支持上传 txt、docx、pdf 和图片(OCR 识别)并自动提取文字。使用 API 时,你需要自行完成文件到文字的转换,然后通过以下字段传入:
question(必填):你的法律问题。需要多轮对话时,通过history传入上下文。context_text(可选):将提取的文件文字通过此字段传入,代理会以两个换行拼接在question之前,拼接后的总长度即为计费字符数。例如,一份 3,000 字的合同文本 + 50 字的问题 = 3,050 字计费。- 建议使用流式(默认已开启
stream: true):耗时相对较长,非流式需调大客户端超时(建议至少 120 秒)。
响应格式
非流式(stream: false)
| 字段 | 类型 | 说明 |
|---|---|---|
status | string | "success" |
data | string | AI 生成的法律分析回答 |
original_content | string | 回答所参考的法条、司法解释等原文 |
流式(stream: true,默认)
返回 NDJSON 行:heartbeat → original_content → data 增量文本片段。详见「流式指南」标签页。
错误
| HTTP | 常见 error | 处理建议 |
|---|---|---|
| 400 | invalid_json、question_required、invalid_idempotency_key | 修正 JSON、必填问题或幂等键格式。 |
| 401 / 403 | api_key_invalid、scope_denied、ip_denied | 检查 Key、scope 与 IP。 |
| 413 | exceed_char_limit | 按返回的 limit 缩短输入。 |
| 409 | idempotency_payload_conflict | 不要复用其他业务操作的幂等键。 |
| 429 | too_many_requests、daily_quota_exceeded | 等待窗口恢复或检查每日额度。 |
| 500 / 503 | 配置或后端不可用错误 | 记录 request context 后稍后重试。 |
合同审查
/v1/contracts_review
提交合同内容和审查立场,AI 逐条分析风险并给出修改建议。总输入最多 30,000 字符。
认证与请求
需要 contract_review scope 和 Bearer API Key。
| 字段 | 类型 | 必填 | 规则 |
|---|---|---|---|
contract_text | string | 是* | 推荐使用的合同正文字段;同时兼容旧字段 user_input。 |
standpoint | string | 是* | 需要保护的合同一方;同时兼容旧字段 user_standpoint。 |
output_mode | string | 否 | json 返回结构化结果;其他值按 normal 处理。 |
history | string / array | 否 | 处理后的历史内容最多 20,000 字符。 |
stream | boolean | 否 | 默认为 true。合同审查目前始终按流式响应解析。 |
计费、限流与响应
- 1-10,000 字符 10 点;10,001-20,000 字符 20 点;20,001-30,000 字符 30 点。
- 限流:同一 IP 或同一 Key 在 5 秒内最多请求 3 次。
- ⚠️ 合同审查目前只提供流式响应。即使传入
stream: false,也请按 NDJSON 逐行解析。 - 主要错误:
invalid_json、contract_text_and_standpoint_required、exceed_char_limit,以及 Key、权限、IP、计费或服务暂不可用等问题。
响应格式
流式返回 NDJSON 行,三阶段:heartbeat → original_content(参考法条)→ data(审查意见)。
output_mode: "normal"(默认)— 审查意见以自然语言法律意见书形式输出。
output_mode: "json" — 拼接全部 data 后为结构化 JSON:
| 字段 | 类型 | 说明 |
|---|---|---|
metadata.overall_comment | string | 总体审查意见 |
revisions[].original | string | 原合同条款 |
revisions[].revised | string | 修改建议条款 |
revisions[].comment | string | 审查意见与法律依据 |
revisions[].author | string | 审查方立场标识 |
使用说明
Web 端支持上传合同文件(docx/pdf 等)并自动提取文字。使用 API 时,你需要自行提取合同文本后传入:
contract_text(必填):合同的完整正文。也支持旧字段名user_input。standpoint(必填):你的审查立场,例如"我是承租方"。也支持旧字段名user_standpoint。二者缺一不可,否则返回 400。- 计费字符数 =
contract_text长度 +standpoint长度,上限 30,000。 - 建议使用流式(默认已开启
stream: true):合同审查耗时较长,非流式需调大客户端超时(建议至少 120 秒)。
文书生成
/v1/documents_draft
描述案件事实和需求,可选上传参考材料,AI 自动生成起诉状、答辩状等法律文书草稿。总输入最多 30,000 字符。
认证与请求
需要 document_draft scope 和 Bearer API Key。
| 字段 | 类型 | 必填 | 规则 |
|---|---|---|---|
prompt | string | 是* | 推荐使用的写作要求字段;同时兼容旧字段 requirement。 |
reference_material | string | 否 | 可选参考材料,计入总字符。 |
sample_document | string | 否 | 可选样本文书,计入总字符。 |
history | string / array | 否 | 处理后的历史内容最多 20,000 字符。 |
stream | boolean | 否 | 默认为 true;设为 false 时一次性返回结果。 |
计费、限流与响应
- 1-10,000 字符 10 点;10,001-20,000 字符 20 点;20,001-30,000 字符 30 点。
- 限流:同一 IP 或同一 Key 在 5 秒内最多请求 3 次。
响应格式
非流式(stream: false):
| 字段 | 类型 | 说明 |
|---|---|---|
status | string | "success" |
data | string | AI 生成的文书草稿全文 |
original_content | string | 生成文书时参考的法条、司法解释等原文 |
流式(默认):NDJSON 行 — heartbeat → original_content → data 增量文本片段。详见「流式指南」标签页。
主要错误:prompt_required、exceed_char_limit,以及 Key、权限、IP、计费或服务暂不可用等问题。
使用说明
Web 端支持上传案件资料和范文并自动提取文字。使用 API 时,你需要自行完成文件到文字的转换后传入:
prompt(必填):文书写作要求。也支持旧字段名requirement。reference_material(可选):案件资料、证据描述等参考内容,计入总字符。sample_document(可选):示范文本,用于风格和格式模仿,计入总字符。- 计费字符数 =
prompt+reference_material+sample_document三者长度之和,上限 30,000。 - 建议使用流式(默认已开启
stream: true):文书生成耗时较长,非流式需调大客户端超时(建议至少 120 秒)。
Key 用量自查
/v1/account_usage
随时查询 API Key 的近 30 天调用聚合与最新 50 条记录。不消耗点数,任意有效 scope 均可访问。
请求与限制
- 无请求体,不需要额外权限;Key 必须有效且处于启用状态。
- 不计点数,也不消耗账号每日免费额度。
- 限流:同一 IP 或同一 Key 在 5 秒内最多请求 12 次。
- 成功响应是非流式 JSON;该 GET 接口不接受也不支持
stream参数。 summary聚合最近 30 天;recent是最新 50 条,不受 30 天过滤。- Key 自查 recent 不包含
client_ip;登录控制台的账号用量响应可以包含。
成功响应字段
| 区域 | 字段 | 含义 |
|---|---|---|
| summary | endpoint/status/count/chars/points | 按接口和结果分组的最近 30 天聚合。 |
| recent | request_id/generation_id/client_request_id/pricing_policy_version | 请求 ID、任务 ID、幂等键和本次调用使用的计费规则版本。 |
| recent | endpoint/mode/scope/status/error_code | 最新调用的接口、模式/权限和结果。 |
| recent | char_count/points_cost/latency_ms/created_at | 字符、点数、耗时和时间。 |
错误
常见错误为 api_key_required、api_key_invalid、too_many_requests 和 usage_backend_unavailable。如果返回 503,表示查询服务暂时不可用,不代表当前没有调用记录。
多轮对话
法律问答支持通过 history 参数实现多轮对话。合同审查和文书生成本身是单轮调用,如需追问,应切换到法律问答并携带之前的上下文。
哪些接口支持多轮?
- 法律问答 POST /v1/qa:支持
history参数,每一轮都可以传入之前的对话记录。 - 合同审查 POST /v1/contracts_review:单轮调用。提交合同文本和立场后返回审查结果。如需追问审查结论,应切换到法律问答,将审查结果和你的追问一并传入。
- 文书生成 POST /v1/documents_draft:单轮调用。如需修改或细化生成的文书,切换到法律问答进行后续对话。
history 参数格式
history 接受两种格式,最终都会被截断到 20,000 字符:
| 格式 | 示例 | 代理处理方式 |
|---|---|---|
| 字符串 | "User: 问题一\nAssistant: 回答一\nUser: 问题二" | 直接透传,不做格式转换。 |
| 数组 | [{"role":"user","content":"…"},{"role":"assistant","content":"…"}] | 自动拼接为 User: …\nAssistant: … 格式。 |
数组中的 role 只区分 assistant 和其他值:非 assistant 均视为 User。建议每轮交替传入用户和 AI 的消息,保持对话上下文完整。
question / contract_text / prompt 等主字段触发法律检索,受字数上限约束。history 仅作为对话背景传给 AI,不参与法律检索,因此不计入各接口的字符限制(10,000 / 30,000),也不影响计费。多轮对话时,必须把历史对话放入 history 参数,而不是拼接到 question 中。
合同审查 / 文书生成如何追问?
合同审查和文书生成自身不支持 history 参数用于多轮。但你可以这样实现追问:
- 先调用合同审查或文书生成,拿到结果。
- 将结果与你的追问组织为
history数组,调用 POST /v1/qa(使用 expert 模式可获得更大上下文窗口)。 - 后续每一轮都追加到
history,继续使用 QA 接口。
示例流程:合同审查 → 拿到审查意见 → QA expert 模式追问"请针对违约金条款做更详细的风险评估"。
关于流式与非流式
Neo-RAG 语义拆解耗时较长,非流式可能断联。详见流式处理标签。
流式处理
建议始终使用流式模式以保证连接稳定性。非流式模式下,如果请求耗时较长可能触发客户端超时断联。
为什么建议流式?
Neo-RAG 在检索前会对输入内容进行语义拆解,再发起检索并生成回答。这个过程耗时相对较长,如果使用非流式(stream: false),客户端在等待完整响应期间可能因超时断联。流式模式下,AI 生成的内容逐块返回,连接始终保持活跃。
各接口默认行为
| 接口 | 默认值 | 说明 |
|---|---|---|
| POST /v1/qa | true(流式) | 法律问答建议始终流式。 |
| POST /v1/law_search | false(非流式) | 法条检索响应较短,非流式一般不会超时。如需流式,设置 stream: true。 |
| POST /v1/contracts_review | true(流式) | 合同审查耗时较长,建议流式。 |
| POST /v1/documents_draft | true(流式) | 文书生成耗时较长,建议流式。 |
如何解析流式响应
流式模式(stream: true)返回换行分隔的 JSON(NDJSON),每一行都是一个完整 JSON 对象。一次网络读取可能只拿到半行,因此请先缓存未完成的部分,再逐行解析。
法条检索(/v1/law_search)
- 心跳保活 —
{"heartbeat": true},可能出现多次 - 完整检索结果 —
{"original_content": "全部法条检索结果"},以一个完整 JSON 行返回
法条检索流式响应不返回 data。original_content 就是最终检索结果,不是参考资料。
法律问答、合同审查、文书生成
- 心跳保活 —
{"heartbeat": true},可能出现多次 - 参考法条 —
{"original_content": "检索到的法条…"},通常以一个完整 JSON 行返回 - 生成正文 —
{"data": "增量文本片段"},可能出现多次,调用方按顺序拼接
请按行分割并逐行 JSON.parse。不要直接对每次读取到的网络数据执行解析,因为一行 JSON 可能被拆成多个数据块。
let searchResult = "";
let legalReferences = "";
let generatedContent = "";
function handleStreamEvent(obj, endpoint) {
if (Object.hasOwn(obj, "heartbeat")) return;
if (Object.hasOwn(obj, "original_content")) {
if (endpoint === "/v1/law_search") {
searchResult = obj.original_content;
} else {
legalReferences = obj.original_content;
}
}
if (Object.hasOwn(obj, "data")) {
generatedContent += obj.data;
}
}
curl
不加 --output 即可直接在终端看到逐行 JSON 输出。添加 --no-buffer 可禁用 curl 自身的缓冲。
JavaScript(fetch / Node.js)
浏览器端使用 response.body.getReader() 逐块读取,按换行分割后 JSON.parse;Node.js 端使用 fetch 的 response.body 流式读取或监听 data 事件。
Python
使用 requests 库时设置 stream=True,通过 response.iter_lines() 逐行读取并 json.loads;或使用 httpx 的异步流式接口。
非流式响应结构
非流式模式(stream: false)返回单个 JSON 对象:
| 字段 | 类型 | 出现于 | 说明 |
|---|---|---|---|
status | string | 全部接口 | "success" |
data | string | 全部接口 | AI 生成的法律分析、检索结果、审查意见或文书全文 |
original_content | string | QA / Draft | 回答或文书所参考的法条、司法解释等原文 |
法条检索(law_search)仅返回 data(检索结果即为正文,无额外的参考原文字段)。
⚠️ 合同审查注意:目前只提供流式返回。即使请求中设置了 stream: false,也请按 NDJSON 逐行解析。
非流式响应建议将客户端超时调至至少 120 秒。