API Reference

五个接口,三种语言,复制即用

在左侧选择接口,中间看字段和规则,右侧拿 curl、JavaScript、Python 代码。

POST

法律问答

/v1/qa

提交法律问题,选择 deep 免费模式或 expert 专家模式,AI 返回分析结果。支持流式输出和多轮对话。

认证与请求

请求使用 Authorization: Bearer ak_live_YOUR_API_KEYContent-Type: application/json

字段类型必填规则
questionstring是*推荐使用的问题字段。
promptstring是*兼容旧版调用;填写了 question 时忽略此字段。
context_textstring非空时以两个换行拼接在问题前,并计入字符数。
modestring默认为 deep;设为 expert 时使用专家模式。
historystring / array处理后的历史内容最多 20,000 字符。
streamboolean默认为 true;设为 false 时一次性返回结果。

权限、额度与计费

modescope字符限制规则
deepqa_deep10,000每账号 Asia/Shanghai 自然日 100 次,0 点。
expertqa_expert30,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

字段类型说明
statusstring"success"
datastringAI 生成的法律分析回答
original_contentstring回答所参考的法条、司法解释等原文

流式(stream: true,默认)

返回 NDJSON 行:heartbeatoriginal_contentdata 增量文本片段。详见「流式指南」标签页。

错误

HTTP常见 error处理建议
400invalid_jsonquestion_requiredinvalid_idempotency_key修正 JSON、必填问题或幂等键格式。
401 / 403api_key_invalidscope_deniedip_denied检查 Key、scope 与 IP。
413exceed_char_limit按返回的 limit 缩短输入。
409idempotency_payload_conflict不要复用其他业务操作的幂等键。
429too_many_requestsdaily_quota_exceeded等待窗口恢复或检查每日额度。
500 / 503配置或后端不可用错误记录 request context 后稍后重试。
POST

合同审查

/v1/contracts_review

提交合同内容和审查立场,AI 逐条分析风险并给出修改建议。总输入最多 30,000 字符。

认证与请求

需要 contract_review scope 和 Bearer API Key。

字段类型必填规则
contract_textstring是*推荐使用的合同正文字段;同时兼容旧字段 user_input
standpointstring是*需要保护的合同一方;同时兼容旧字段 user_standpoint
output_modestringjson 返回结构化结果;其他值按 normal 处理。
historystring / array处理后的历史内容最多 20,000 字符。
streamboolean默认为 true。合同审查目前始终按流式响应解析。

计费、限流与响应

  • 1-10,000 字符 10 点;10,001-20,000 字符 20 点;20,001-30,000 字符 30 点。
  • 限流:同一 IP 或同一 Key 在 5 秒内最多请求 3 次。
  • ⚠️ 合同审查目前只提供流式响应。即使传入 stream: false,也请按 NDJSON 逐行解析。
  • 主要错误:invalid_jsoncontract_text_and_standpoint_requiredexceed_char_limit,以及 Key、权限、IP、计费或服务暂不可用等问题。

响应格式

流式返回 NDJSON 行,三阶段:heartbeatoriginal_content(参考法条)→ data(审查意见)。

output_mode: "normal"(默认)— 审查意见以自然语言法律意见书形式输出。

output_mode: "json" — 拼接全部 data 后为结构化 JSON:

字段类型说明
metadata.overall_commentstring总体审查意见
revisions[].originalstring原合同条款
revisions[].revisedstring修改建议条款
revisions[].commentstring审查意见与法律依据
revisions[].authorstring审查方立场标识

使用说明

Web 端支持上传合同文件(docx/pdf 等)并自动提取文字。使用 API 时,你需要自行提取合同文本后传入:

  • contract_text(必填):合同的完整正文。也支持旧字段名 user_input
  • standpoint(必填):你的审查立场,例如"我是承租方"。也支持旧字段名 user_standpoint。二者缺一不可,否则返回 400。
  • 计费字符数 = contract_text 长度 + standpoint 长度,上限 30,000。
  • 建议使用流式(默认已开启 stream: true):合同审查耗时较长,非流式需调大客户端超时(建议至少 120 秒)。
POST

文书生成

/v1/documents_draft

描述案件事实和需求,可选上传参考材料,AI 自动生成起诉状、答辩状等法律文书草稿。总输入最多 30,000 字符。

认证与请求

需要 document_draft scope 和 Bearer API Key。

字段类型必填规则
promptstring是*推荐使用的写作要求字段;同时兼容旧字段 requirement
reference_materialstring可选参考材料,计入总字符。
sample_documentstring可选样本文书,计入总字符。
historystring / array处理后的历史内容最多 20,000 字符。
streamboolean默认为 true;设为 false 时一次性返回结果。

计费、限流与响应

  • 1-10,000 字符 10 点;10,001-20,000 字符 20 点;20,001-30,000 字符 30 点。
  • 限流:同一 IP 或同一 Key 在 5 秒内最多请求 3 次。

响应格式

非流式stream: false):

字段类型说明
statusstring"success"
datastringAI 生成的文书草稿全文
original_contentstring生成文书时参考的法条、司法解释等原文

流式(默认):NDJSON 行 — heartbeatoriginal_contentdata 增量文本片段。详见「流式指南」标签页。

主要错误:prompt_requiredexceed_char_limit,以及 Key、权限、IP、计费或服务暂不可用等问题。

使用说明

Web 端支持上传案件资料和范文并自动提取文字。使用 API 时,你需要自行完成文件到文字的转换后传入:

  • prompt(必填):文书写作要求。也支持旧字段名 requirement
  • reference_material(可选):案件资料、证据描述等参考内容,计入总字符。
  • sample_document(可选):示范文本,用于风格和格式模仿,计入总字符。
  • 计费字符数 = prompt + reference_material + sample_document 三者长度之和,上限 30,000。
  • 建议使用流式(默认已开启 stream: true):文书生成耗时较长,非流式需调大客户端超时(建议至少 120 秒)。
GET

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;登录控制台的账号用量响应可以包含。

成功响应字段

区域字段含义
summaryendpoint/status/count/chars/points按接口和结果分组的最近 30 天聚合。
recentrequest_id/generation_id/client_request_id/pricing_policy_version请求 ID、任务 ID、幂等键和本次调用使用的计费规则版本。
recentendpoint/mode/scope/status/error_code最新调用的接口、模式/权限和结果。
recentchar_count/points_cost/latency_ms/created_at字符、点数、耗时和时间。

错误

常见错误为 api_key_requiredapi_key_invalidtoo_many_requestsusage_backend_unavailable。如果返回 503,表示查询服务暂时不可用,不代表当前没有调用记录。

GUIDE

多轮对话

法律问答支持通过 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 的消息,保持对话上下文完整。

history 不计入字符限制:question / contract_text / prompt 等主字段触发法律检索,受字数上限约束。history 仅作为对话背景传给 AI,不参与法律检索,因此不计入各接口的字符限制(10,000 / 30,000),也不影响计费。多轮对话时,必须把历史对话放入 history 参数,而不是拼接到 question 中。

合同审查 / 文书生成如何追问?

合同审查和文书生成自身不支持 history 参数用于多轮。但你可以这样实现追问:

  1. 先调用合同审查或文书生成,拿到结果。
  2. 将结果与你的追问组织为 history 数组,调用 POST /v1/qa(使用 expert 模式可获得更大上下文窗口)。
  3. 后续每一轮都追加到 history,继续使用 QA 接口。

示例流程:合同审查 → 拿到审查意见 → QA expert 模式追问"请针对违约金条款做更详细的风险评估"。

关于流式与非流式

Neo-RAG 语义拆解耗时较长,非流式可能断联。详见流式处理标签。

GUIDE

流式处理

建议始终使用流式模式以保证连接稳定性。非流式模式下,如果请求耗时较长可能触发客户端超时断联。

为什么建议流式?

Neo-RAG 在检索前会对输入内容进行语义拆解,再发起检索并生成回答。这个过程耗时相对较长,如果使用非流式(stream: false),客户端在等待完整响应期间可能因超时断联。流式模式下,AI 生成的内容逐块返回,连接始终保持活跃。

各接口默认行为

接口默认值说明
POST /v1/qatrue(流式)法律问答建议始终流式。
POST /v1/law_searchfalse(非流式)法条检索响应较短,非流式一般不会超时。如需流式,设置 stream: true
POST /v1/contracts_reviewtrue(流式)合同审查耗时较长,建议流式。
POST /v1/documents_drafttrue(流式)文书生成耗时较长,建议流式。

如何解析流式响应

流式模式(stream: true)返回换行分隔的 JSON(NDJSON),每一行都是一个完整 JSON 对象。一次网络读取可能只拿到半行,因此请先缓存未完成的部分,再逐行解析。

法条检索(/v1/law_search

  1. 心跳保活{"heartbeat": true},可能出现多次
  2. 完整检索结果{"original_content": "全部法条检索结果"},以一个完整 JSON 行返回

法条检索流式响应不返回 dataoriginal_content 就是最终检索结果,不是参考资料。

法律问答、合同审查、文书生成

  1. 心跳保活{"heartbeat": true},可能出现多次
  2. 参考法条{"original_content": "检索到的法条…"},通常以一个完整 JSON 行返回
  3. 生成正文{"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 端使用 fetchresponse.body 流式读取或监听 data 事件。

Python

使用 requests 库时设置 stream=True,通过 response.iter_lines() 逐行读取并 json.loads;或使用 httpx 的异步流式接口。

非流式响应结构

非流式模式(stream: false)返回单个 JSON 对象:

字段类型出现于说明
statusstring全部接口"success"
datastring全部接口AI 生成的法律分析、检索结果、审查意见或文书全文
original_contentstringQA / Draft回答或文书所参考的法条、司法解释等原文

法条检索(law_search)仅返回 data(检索结果即为正文,无额外的参考原文字段)。

⚠️ 合同审查注意:目前只提供流式返回。即使请求中设置了 stream: false,也请按 NDJSON 逐行解析。

非流式响应建议将客户端超时调至至少 120 秒