跳转到主要内容
文档目录

兼容接口 v4 · Gateway 0.1.0

文档解析 API

沿用熟悉的 MinerU v4 接口,通过一个 Gateway Key 提交文档、追踪进度并获取结构化结果。

接入概览

所有示例中的 GATEWAY_BASE_URL 均指你的网关域名,不是 mineru.net。文档页面只展示示例,不发起解析请求。

5 个兼容接口每批 1–50 个文件异步提交与轮询

先获取管理员分配的 Gateway Key,再提交文档 URL 或申请文件上传链接。保存返回的 Gateway ID,轮询至 done 后读取 full_zip_url。

地址与鉴权

业务请求使用 Authorization: Bearer <Gateway Key>。上游 MinerU Token 由网关管理;管理控制台的登录会话不能替代 Gateway Key。

HTTP
Authorization: Bearer <Gateway Key>
Content-Type: application/json
Idempotency-Key: <unique-operation-id>

任务与批次按 Key 所有者隔离,查询需要同一所有者的有效 Key。PDF 上传扩展则必须使用创建批次的原始 Key。

运行示例前设置环境变量。ID、上传链接取自前一步响应;幂等值由调用方生成,同一次创建重试时保持不变。

参数类型说明
GATEWAY_BASE_URLURL你的网关地址,不含末尾斜杠,例如 https://your-gateway.example。
GATEWAY_API_KEYstring管理员分配的 Gateway Key;仅在你自己的运行环境中设置。
DOCUMENT_URLURL上游可以访问的公开文档 URL。私网、环回与云元数据地址被拒绝。
IDEMPOTENCY_KEYstring一次创建操作的唯一标识;1–128 字节不含空格的可打印 ASCII。
TASK_ID / BATCH_IDUUID前一步返回的 Gateway task_id / batch_id;不能使用 MinerU 原始 ID。
UPLOAD_URLURL申请上传批次返回的 file_urls 对应项。此地址应只在内存中处理。

创建单文件任务

通过文档 URL 创建解析任务。此接口接收 JSON,不接收文件二进制。code=0 只表示创建成功,解析结果需后续查询。

POST/api/v4/extract/task

请求参数

参数类型必填说明
urlstring必填文档的公开 URL,需通过网关 URL 安全校验。HTML 文件须选择 MinerU-HTML。
model_versionstring可选pipeline(默认)、vlm、MinerU-HTML。HTML 必须显式指定 MinerU-HTML。
page_rangesstring可选如 1、2,4-6、2--2(第 2 页至倒数第 2 页)。省略时解析全文;额度预占按所选范围的最大可能页数计算。
解析选项见通用参数

请求示例

cURL
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

响应示例

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 获取结果。

GET/api/v4/extract/task/{task_id}

请求参数

参数类型必填说明
task_idUUID · path必填创建接口返回的 Gateway Task UUID。

请求示例

cURL
curl --request GET "$GATEWAY_BASE_URL/api/v4/extract/task/$TASK_ID" \
  --header "Authorization: Bearer $GATEWAY_API_KEY"

响应示例

JSON
{
  "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。即使只上传一个本地文件,也使用此接口。

POST/api/v4/file-urls/batch

请求参数

参数类型必填说明
filesobject[]必填1–50 个文件对象。
files[].namestring必填带扩展名的文件名,最长 255 字节,不得含目录分隔符或换行。
files[].data_idstring可选业务关联标识,1–128 字符,只含字母、数字、下划线、短划线和英文句号。批次内建议唯一。
files[].is_ocrboolean可选默认 false。启用 OCR,仅适用于 pipeline / vlm。
files[].page_rangesstring可选如 1、2,4-6、2--2(第 2 页至倒数第 2 页)。省略时解析全文;额度预占按所选范围的最大可能页数计算。
解析选项见通用参数

请求示例

cURL
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

响应示例

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
curl --request PUT --upload-file ./document.pdf "$UPLOAD_URL"

创建 URL 批量任务

一次提交 1–50 个可访问的文档 URL。每个文件建议提供唯一 data_id,便于关联解析结果和页数结算;不要假定结果顺序与请求顺序相同。

POST/api/v4/extract/task/batch

请求参数

参数类型必填说明
filesobject[]必填1–50 个文件对象。
files[].urlstring必填文档的公开 URL,需通过网关 URL 安全校验。HTML 文件须选择 MinerU-HTML。
files[].data_idstring可选业务关联标识,1–128 字符,只含字母、数字、下划线、短划线和英文句号。批次内建议唯一。
files[].is_ocrboolean可选默认 false。启用 OCR,仅适用于 pipeline / vlm。
files[].page_rangesstring可选如 1、2,4-6、2--2(第 2 页至倒数第 2 页)。省略时解析全文;额度预占按所选范围的最大可能页数计算。
解析选项见通用参数

请求示例

cURL
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

响应示例

JSON
{
  "code": 0,
  "msg": "ok",
  "trace_id": "gw_example",
  "data": {
    "batch_id": "22222222-2222-4222-8222-222222222222"
  }
}

示例值仅用于说明;实际 ID 和链接请读取接口响应。

查询批量结果

适用于上传批次和 URL 批次。extract_result 逐文件返回状态和结果,整个批次可能同时包含成功、处理中和失败的文件。

GET/api/v4/extract-results/batch/{batch_id}

请求参数

参数类型必填说明
batch_idUUID · path必填创建接口返回的 Gateway Batch UUID。

请求示例

cURL
curl --request GET "$GATEWAY_BASE_URL/api/v4/extract-results/batch/$BATCH_ID" \
  --header "Authorization: Bearer $GATEWAY_API_KEY"

响应示例

JSON
{
  "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 到此接口。

PUT/gateway/v1/batches/{batch_id}/files/{ordinal}

请求参数

参数类型必填说明
batch_idUUID · path必填创建接口返回的 Gateway Batch UUID。
ordinalinteger · path必填文件在创建批次请求中的序号,从 0 开始。
bodyapplication/pdf必填PDF 原始字节,非 multipart/form-data。

请求示例

cURL
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

响应示例

JSON
{
  "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_versionstringpipeline(默认)、vlm、MinerU-HTML。HTML 必须显式指定 MinerU-HTML。
is_ocrboolean默认 false。启用 OCR,仅适用于 pipeline / vlm。
enable_formulaboolean默认 true。识别公式;vlm 中仅影响行内公式。
enable_tableboolean默认 true。识别表格,仅适用于 pipeline / vlm。
languagestring默认 ch。按文档语言设置,如 ch、en;仅适用于 pipeline / vlm,其他取值参考官方文档。
data_idstring业务关联标识,1–128 字符,只含字母、数字、下划线、短划线和英文句号。批次内建议唯一。
page_rangesstring如 1、2,4-6、2--2(第 2 页至倒数第 2 页)。省略时解析全文;额度预占按所选范围的最大可能页数计算。
extra_formatsstring[]Markdown、JSON 默认包含;额外导出可选 docx、html、latex,不重复。HTML 源文件不适用。
no_cacheboolean默认 false;true 时忽略 URL 内容缓存,重新获取内容。
cache_toleranceinteger非负整数,默认 900 秒。no_cache=false 时允许使用的缓存时长。
callback / seedstring非空 callback 或 seed 被拒绝,HTTP 422 / -70009。

响应与任务状态

响应使用 code / msg / trace_id / data。code 可以是数字或上游字符串;同时检查 HTTP 状态与 code。code=0 不等于文档已完成。JSON trace_id 与 X-Gateway-Trace-Id 一致,可用于定位请求。

响应字段

参数类型说明
codeinteger | string接口状态码,成功为 0;上游错误可能为字符串。
msgstring接口处理信息,不等于任务状态。
trace_idstring本次请求的 Gateway Trace ID,与响应头 X-Gateway-Trace-Id 相同。
data.task_id / batch_idUUID创建时返回的 Gateway UUID,用于后续查询。
data.file_urlsstring[]上传 URL 列表,与创建请求的文件顺序对应,仅在申请或有效幂等回放中返回。
data.extract_resultobject[]批量结果数组,每项包含文件状态,可能含 file_name、data_id、full_zip_url、err_msg 和 extract_progress。
full_zip_urlstringstate=done 时的解析结果 ZIP 下载地址,可能包含签名且会过期。
err_msgstringstate=failed 时的失败原因。
extract_progressobject运行中可能提供 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 只查询,不新建。

HTTP 202 · 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含义与处理方式
-500400 / 411 / 413 / 415 / 422请求参数、JSON、文件或 Content-Type 不合法;修正后再提交。
-70001401缺少 Gateway Key,补充 Authorization。
-70002401Key 无效、禁用或过期,核对 Key 或联系管理员。
-70003403来源 IP 不在允许范围,检查网络与白名单。
-70004429Key 限流或并发耗尽,遵守 Retry-After。
-70005409幂等值对应不同请求。恢复原请求,或为新的操作生成新值。
-70006404ID 不存在或不可见;检查 Gateway ID、所有者与保留期。
-70007503暂无可用渠道,按 Retry-After 等待后重试。
-70008202上游接收结果不明;保存返回的 ID,只查询,不重复创建。
-70009422非空 callback / seed 不支持,改为轮询。
-70009409批次不再等待上传,先查询当前状态。
-70010502任务绑定的上游凭据不可用,联系管理员排查。
-70011500 / 502网关或上游响应异常,使用 Trace ID 排查;提交或上传结果不明时先查询。
-70012402账户或 Key 额度不足,增加额度或缩小 page_ranges。
-70012410上传链接已过期,用新的幂等值申请新批次。
-70014503共享协调暂不可用,按 Retry-After 使用原请求与原幂等值重试。
-70015429账号文件桶或上游限流。遵守 Retry-After,并按幂等与重试章节处理。
-70016503相同幂等请求正在提交,按 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
curl "$GATEWAY_BASE_URL/gateway/v1/health/live"
curl "$GATEWAY_BASE_URL/gateway/v1/health/ready"
JSON
{ "status": "ok" }

管理接口 /admin/v1 使用独立的会话鉴权,不属于本文的 Gateway Key 接口。