文档目录
兼容接口 v4 · Gateway 0.1.0
文档解析 API
沿用熟悉的 MinerU v4 接口,通过一个 Gateway Key 提交文档、追踪进度并获取结构化结果。
接入概览
所有示例中的 GATEWAY_BASE_URL 均指你的网关域名,不是 mineru.net。文档页面只展示示例,不发起解析请求。
先获取管理员分配的 Gateway Key,再提交文档 URL 或申请文件上传链接。保存返回的 Gateway ID,轮询至 done 后读取 full_zip_url。
地址与鉴权
业务请求使用 Authorization: Bearer <Gateway Key>。上游 MinerU Token 由网关管理;管理控制台的登录会话不能替代 Gateway Key。
Authorization: Bearer <Gateway Key>
Content-Type: application/json
Idempotency-Key: <unique-operation-id>任务与批次按 Key 所有者隔离,查询需要同一所有者的有效 Key。PDF 上传扩展则必须使用创建批次的原始 Key。
运行示例前设置环境变量。ID、上传链接取自前一步响应;幂等值由调用方生成,同一次创建重试时保持不变。
| 参数 | 类型 | 说明 |
|---|---|---|
GATEWAY_BASE_URL | URL | 你的网关地址,不含末尾斜杠,例如 https://your-gateway.example。 |
GATEWAY_API_KEY | string | 管理员分配的 Gateway Key;仅在你自己的运行环境中设置。 |
DOCUMENT_URL | URL | 上游可以访问的公开文档 URL。私网、环回与云元数据地址被拒绝。 |
IDEMPOTENCY_KEY | string | 一次创建操作的唯一标识;1–128 字节不含空格的可打印 ASCII。 |
TASK_ID / BATCH_ID | UUID | 前一步返回的 Gateway task_id / batch_id;不能使用 MinerU 原始 ID。 |
UPLOAD_URL | URL | 申请上传批次返回的 file_urls 对应项。此地址应只在内存中处理。 |
创建单文件任务
通过文档 URL 创建解析任务。此接口接收 JSON,不接收文件二进制。code=0 只表示创建成功,解析结果需后续查询。
/api/v4/extract/task请求参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
url | string | 必填 | 文档的公开 URL,需通过网关 URL 安全校验。HTML 文件须选择 MinerU-HTML。 |
model_version | string | 可选 | pipeline(默认)、vlm、MinerU-HTML。HTML 必须显式指定 MinerU-HTML。 |
page_ranges | string | 可选 | 如 1、2,4-6、2--2(第 2 页至倒数第 2 页)。省略时解析全文;额度预占按所选范围的最大可能页数计算。 |
请求示例
curl --request POST "$GATEWAY_BASE_URL/api/v4/extract/task" \
--header "Authorization: Bearer $GATEWAY_API_KEY" \
--header "Idempotency-Key: $IDEMPOTENCY_KEY" \
--header 'Content-Type: application/json' \
--data @- <<JSON
{
"url": "$DOCUMENT_URL",
"model_version": "pipeline",
"page_ranges": "1",
"enable_formula": true,
"enable_table": true
}
JSON响应示例
{
"code": 0,
"msg": "ok",
"trace_id": "gw_example",
"data": {
"task_id": "11111111-1111-4111-8111-111111111111"
}
}示例值仅用于说明;实际 ID 和链接请读取接口响应。
查询单文件任务
使用创建响应中的 task_id 查询。网关始终查询任务绑定的渠道。只有 state=done 时才应使用 full_zip_url 获取结果。
/api/v4/extract/task/{task_id}请求参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
task_id | UUID · path | 必填 | 创建接口返回的 Gateway Task UUID。 |
请求示例
curl --request GET "$GATEWAY_BASE_URL/api/v4/extract/task/$TASK_ID" \
--header "Authorization: Bearer $GATEWAY_API_KEY"响应示例
{
"code": 0,
"msg": "ok",
"trace_id": "gw_example",
"data": {
"task_id": "11111111-1111-4111-8111-111111111111",
"state": "done",
"full_zip_url": "https://results.example/result.zip",
"err_msg": ""
}
}示例值仅用于说明;实际 ID 和链接请读取接口响应。
申请本地文件上传
传入文件列表,返回一个 batch_id 与按请求顺序对应的 file_urls。即使只上传一个本地文件,也使用此接口。
/api/v4/file-urls/batch请求参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
files | object[] | 必填 | 1–50 个文件对象。 |
files[].name | string | 必填 | 带扩展名的文件名,最长 255 字节,不得含目录分隔符或换行。 |
files[].data_id | string | 可选 | 业务关联标识,1–128 字符,只含字母、数字、下划线、短划线和英文句号。批次内建议唯一。 |
files[].is_ocr | boolean | 可选 | 默认 false。启用 OCR,仅适用于 pipeline / vlm。 |
files[].page_ranges | string | 可选 | 如 1、2,4-6、2--2(第 2 页至倒数第 2 页)。省略时解析全文;额度预占按所选范围的最大可能页数计算。 |
请求示例
curl --request POST "$GATEWAY_BASE_URL/api/v4/file-urls/batch" \
--header "Authorization: Bearer $GATEWAY_API_KEY" \
--header "Idempotency-Key: $IDEMPOTENCY_KEY" \
--header 'Content-Type: application/json' \
--data @- <<JSON
{
"files": [
{
"name": "document.pdf",
"data_id": "document-001",
"page_ranges": "1"
}
],
"model_version": "pipeline"
}
JSON响应示例
{
"code": 0,
"msg": "ok",
"trace_id": "gw_example",
"data": {
"batch_id": "22222222-2222-4222-8222-222222222222",
"file_urls": [
"https://storage.example/upload-placeholder"
]
}
}示例值仅用于说明;实际 ID 和链接请读取接口响应。
第二步:直接上传文件
curl --request PUT --upload-file ./document.pdf "$UPLOAD_URL"创建 URL 批量任务
一次提交 1–50 个可访问的文档 URL。每个文件建议提供唯一 data_id,便于关联解析结果和页数结算;不要假定结果顺序与请求顺序相同。
/api/v4/extract/task/batch请求参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
files | object[] | 必填 | 1–50 个文件对象。 |
files[].url | string | 必填 | 文档的公开 URL,需通过网关 URL 安全校验。HTML 文件须选择 MinerU-HTML。 |
files[].data_id | string | 可选 | 业务关联标识,1–128 字符,只含字母、数字、下划线、短划线和英文句号。批次内建议唯一。 |
files[].is_ocr | boolean | 可选 | 默认 false。启用 OCR,仅适用于 pipeline / vlm。 |
files[].page_ranges | string | 可选 | 如 1、2,4-6、2--2(第 2 页至倒数第 2 页)。省略时解析全文;额度预占按所选范围的最大可能页数计算。 |
请求示例
curl --request POST "$GATEWAY_BASE_URL/api/v4/extract/task/batch" \
--header "Authorization: Bearer $GATEWAY_API_KEY" \
--header "Idempotency-Key: $IDEMPOTENCY_KEY" \
--header 'Content-Type: application/json' \
--data @- <<JSON
{
"files": [
{
"url": "$DOCUMENT_URL",
"data_id": "document-001",
"page_ranges": "1"
}
],
"model_version": "pipeline"
}
JSON响应示例
{
"code": 0,
"msg": "ok",
"trace_id": "gw_example",
"data": {
"batch_id": "22222222-2222-4222-8222-222222222222"
}
}示例值仅用于说明;实际 ID 和链接请读取接口响应。
查询批量结果
适用于上传批次和 URL 批次。extract_result 逐文件返回状态和结果,整个批次可能同时包含成功、处理中和失败的文件。
/api/v4/extract-results/batch/{batch_id}请求参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
batch_id | UUID · path | 必填 | 创建接口返回的 Gateway Batch UUID。 |
请求示例
curl --request GET "$GATEWAY_BASE_URL/api/v4/extract-results/batch/$BATCH_ID" \
--header "Authorization: Bearer $GATEWAY_API_KEY"响应示例
{
"code": 0,
"msg": "ok",
"trace_id": "gw_example",
"data": {
"batch_id": "22222222-2222-4222-8222-222222222222",
"extract_result": [
{
"file_name": "document.pdf",
"data_id": "document-001",
"state": "done",
"full_zip_url": "https://results.example/result.zip",
"err_msg": ""
}
]
}
}示例值仅用于说明;实际 ID 和链接请读取接口响应。
通过网关上传 PDF
为浏览器无法直接访问存储上传链接的情况提供同源上传。先申请本地文件上传批次,再将 PDF 原始字节 PUT 到此接口。
/gateway/v1/batches/{batch_id}/files/{ordinal}请求参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
batch_id | UUID · path | 必填 | 创建接口返回的 Gateway Batch UUID。 |
ordinal | integer · path | 必填 | 文件在创建批次请求中的序号,从 0 开始。 |
body | application/pdf | 必填 | PDF 原始字节,非 multipart/form-data。 |
请求示例
curl --request PUT "$GATEWAY_BASE_URL/gateway/v1/batches/$BATCH_ID/files/0" \
--header "Authorization: Bearer $GATEWAY_API_KEY" \
--header 'Content-Type: application/pdf' \
--upload-file ./document.pdf响应示例
{
"code": 0,
"msg": "ok",
"trace_id": "gw_example",
"data": {
"batch_id": "22222222-2222-4222-8222-222222222222",
"uploaded_bytes": 1024
}
}示例值仅用于说明;实际 ID 和链接请读取接口响应。
解析参数
下面为单任务与批量解析选项。批量请求中,is_ocr、data_id、page_ranges 属于 files[];其余共享选项放在顶层。no_cache 和 cache_tolerance 仅在本文的单 URL 任务中使用。
| 参数 | 类型 | 说明 |
|---|---|---|
model_version | string | pipeline(默认)、vlm、MinerU-HTML。HTML 必须显式指定 MinerU-HTML。 |
is_ocr | boolean | 默认 false。启用 OCR,仅适用于 pipeline / vlm。 |
enable_formula | boolean | 默认 true。识别公式;vlm 中仅影响行内公式。 |
enable_table | boolean | 默认 true。识别表格,仅适用于 pipeline / vlm。 |
language | string | 默认 ch。按文档语言设置,如 ch、en;仅适用于 pipeline / vlm,其他取值参考官方文档。 |
data_id | string | 业务关联标识,1–128 字符,只含字母、数字、下划线、短划线和英文句号。批次内建议唯一。 |
page_ranges | string | 如 1、2,4-6、2--2(第 2 页至倒数第 2 页)。省略时解析全文;额度预占按所选范围的最大可能页数计算。 |
extra_formats | string[] | Markdown、JSON 默认包含;额外导出可选 docx、html、latex,不重复。HTML 源文件不适用。 |
no_cache | boolean | 默认 false;true 时忽略 URL 内容缓存,重新获取内容。 |
cache_tolerance | integer | 非负整数,默认 900 秒。no_cache=false 时允许使用的缓存时长。 |
callback / seed | string | 非空 callback 或 seed 被拒绝,HTTP 422 / -70009。 |
响应与任务状态
响应使用 code / msg / trace_id / data。code 可以是数字或上游字符串;同时检查 HTTP 状态与 code。code=0 不等于文档已完成。JSON trace_id 与 X-Gateway-Trace-Id 一致,可用于定位请求。
响应字段
| 参数 | 类型 | 说明 |
|---|---|---|
code | integer | string | 接口状态码,成功为 0;上游错误可能为字符串。 |
msg | string | 接口处理信息,不等于任务状态。 |
trace_id | string | 本次请求的 Gateway Trace ID,与响应头 X-Gateway-Trace-Id 相同。 |
data.task_id / batch_id | UUID | 创建时返回的 Gateway UUID,用于后续查询。 |
data.file_urls | string[] | 上传 URL 列表,与创建请求的文件顺序对应,仅在申请或有效幂等回放中返回。 |
data.extract_result | object[] | 批量结果数组,每项包含文件状态,可能含 file_name、data_id、full_zip_url、err_msg 和 extract_progress。 |
full_zip_url | string | state=done 时的解析结果 ZIP 下载地址,可能包含签名且会过期。 |
err_msg | string | state=failed 时的失败原因。 |
extract_progress | object | 运行中可能提供 extracted_pages、total_pages(整数)和 start_time(上游时间字符串);完成后可能不再返回。 |
| state | 说明 |
|---|---|
submitting | 网关正在提交;相同幂等请求并发到达时可能返回 -70016。 |
submission_unknown | 无法确认上游是否接受。HTTP 202 / -70008;保存 task_id 或 batch_id,只查询,不重新创建。 |
waiting-file | 批次文件等待上传。 |
pending | 任务已接受,正在排队。 |
running | 正在解析,可能附带 extract_progress。 |
converting | 解析内容正在转换为导出格式。 |
done | 已完成,可获取 full_zip_url;请及时下载。 |
failed | 已失败,查看 err_msg 并修正问题。 |
非 HTML 结果通常包含 full.md、内容列表 JSON、布局与模型结果,以及图片和所选额外格式;HTML 结果包含 full.md 和 main.html。具体文件随模型与上游输出变化。
查看 MinerU 输出文件说明幂等与重试
三个 POST 创建接口都接受可选的 Idempotency-Key,建议始终设置。作用域为 Gateway Key + 路由。相同值与相同请求返回原任务;变更请求内容却复用该值将返回 HTTP 409 / -70005。
单任务幂等记录保留 24 小时,批量保留 7 天。上传链接仅有效 24 小时,过期回放返回 HTTP 410 / -70012。创建超时后使用原 Key 与原请求;submission_unknown 只查询,不新建。
{
"code": -70008,
"msg": "upstream submission status is unknown",
"trace_id": "gw_example",
"data": {
"task_id": "11111111-1111-4111-8111-111111111111",
"state": "submission_unknown"
}
}限制与页数额度
精准解析按官方详细接口约束:每文件不超过 200 MB / 200 页,每批最多 50 个文件。文档格式支持取决于上游模型;网关 PDF 上传扩展仅接受 PDF。
官方列出的源格式包括 PDF、Word、PowerPoint、Excel、图片与 HTML;HTML 选择 MinerU-HTML,其他格式使用 pipeline 或 vlm。控制台文件测试目前仅支持 PDF。
启用额度的账户按 pages-v1 管理:1 页 = 1 额度。创建时同时冻结账户与 Key 可用额度,每文件默认预占 200 页;page_ranges 可缩小范围,批量累加。额度不足返回 HTTP 402 / -70012,整个提交回滚,不调用上游。
成功文件按确认的页数结算并释放差额;失败文件释放冻结。缺少页数或提交结果不明时保留冻结等待核账。查询不重复扣费。网关额度不是人民币定价,也不等于上游每日优先页数。
终态任务默认保留 90 天(可由管理员调整),结果下载链接的有效期由上游决定。任务仍可查询不代表下载链接永远有效。
错误码与处理
先看 HTTP 状态,再看 code 与 msg。同一错误码可能有不同 HTTP 语义;例如 -70012 在 402 表示额度不足,在 410 表示上传链接过期。
| 错误码 | HTTP | 含义与处理方式 |
|---|---|---|
-500 | 400 / 411 / 413 / 415 / 422 | 请求参数、JSON、文件或 Content-Type 不合法;修正后再提交。 |
-70001 | 401 | 缺少 Gateway Key,补充 Authorization。 |
-70002 | 401 | Key 无效、禁用或过期,核对 Key 或联系管理员。 |
-70003 | 403 | 来源 IP 不在允许范围,检查网络与白名单。 |
-70004 | 429 | Key 限流或并发耗尽,遵守 Retry-After。 |
-70005 | 409 | 幂等值对应不同请求。恢复原请求,或为新的操作生成新值。 |
-70006 | 404 | ID 不存在或不可见;检查 Gateway ID、所有者与保留期。 |
-70007 | 503 | 暂无可用渠道,按 Retry-After 等待后重试。 |
-70008 | 202 | 上游接收结果不明;保存返回的 ID,只查询,不重复创建。 |
-70009 | 422 | 非空 callback / seed 不支持,改为轮询。 |
-70009 | 409 | 批次不再等待上传,先查询当前状态。 |
-70010 | 502 | 任务绑定的上游凭据不可用,联系管理员排查。 |
-70011 | 500 / 502 | 网关或上游响应异常,使用 Trace ID 排查;提交或上传结果不明时先查询。 |
-70012 | 402 | 账户或 Key 额度不足,增加额度或缩小 page_ranges。 |
-70012 | 410 | 上传链接已过期,用新的幂等值申请新批次。 |
-70014 | 503 | 共享协调暂不可用,按 Retry-After 使用原请求与原幂等值重试。 |
-70015 | 429 | 账号文件桶或上游限流。遵守 Retry-After,并按幂等与重试章节处理。 |
-70016 | 503 | 相同幂等请求正在提交,按 Retry-After 重放原请求。 |
上游常见错误
合法的 MinerU 错误包尽量保留原 code / msg。遇到上游凭据或亲和问题,请提供 Gateway Trace ID 联系管理员,不向应用暴露上游 Token。
| 错误码 | 含义与处理方式 |
|---|---|
A0202 / A0211 | 上游 Token 认证或过期问题,联系管理员;不要直接更换应用的 Gateway Key 来重建任务。 |
-10003 | 上游账号会话问题,联系管理员诊断;不能仅据此认定 Token 永久无效。 |
-60002 / -60003 / -60004 / -60011 | 文件类型、读取或内容无效;确认扩展名、文件内容与 URL 可访问性。 |
-60005 / -60006 | 文件大小或页数超限,拆分后提交。 |
-60007 / -60008 / -60009 / -60010 | 模型繁忙、读取超时、队列满或解析失败;检查任务状态后再决定重试。 |
-60012 / -60013 | 未找到任务或访问不匹配;核对 Gateway ID 并联系管理员,不能自动切换渠道查询。 |
-60018 / -60019 | 上游每日任务或 HTML 额度限制,等待恢复并联系管理员确认。 |
健康检查
这两个接口不要求 Gateway Key,但部署网络策略可能限制访问。响应为简单 status 对象,不使用 code/msg/data 包络。live 返回 HTTP 200 / ok;ready 在依赖就绪时返回 200 / ok,否则 503 / not_ready。
curl "$GATEWAY_BASE_URL/gateway/v1/health/live"
curl "$GATEWAY_BASE_URL/gateway/v1/health/ready"{ "status": "ok" }管理接口 /admin/v1 使用独立的会话鉴权,不属于本文的 Gateway Key 接口。