跳到主要内容
本页内容

API

接口参考

Transform 公共 API 的请求字段、响应结构和状态码。

本页路径均相对于 https://api.pdfcraft.ai/v1/pcc-api。每次 API 请求携带 Authorization: Bearer YOUR_API_KEY,JSON 请求体使用 Content-Type: application/json。响应为 JSON,请勿缓存。接口定义也可下载为 OpenAPI。

入门示例见首次转换,参数组合见转换与翻译。

创建任务

POST /transforms

JSON 字段必填说明
input_format是pdf 或 epub,创建后不可修改
input_filename否展示名称,1–255 个 Unicode 码点,不能全为空白;禁止控制字符和非法代理字符

未知字段会被拒绝。创建时 input_filename 不接受 null;它不决定下载名称或存储位置。

json
{  "input_format": "pdf",  "input_filename": "document.pdf"}

创建成功后返回 201,响应中包含任务信息。请保存 uuid,上传时会用到。过期时间以实际响应为准。

json
{  "uuid": "8ae07e41-6e94-4144-9562-5af4116cba7e",  "input_format": "pdf",  "input_filename": "document.pdf",  "status": "waiting_for_upload",  "created_at": "2026-10-29T08:00:00.000Z",  "updated_at": "2026-10-29T08:00:00.000Z",  "expires_at": "2026-10-29T09:00:00.000Z"}

查询任务

GET /transforms/{uuid} 返回 200 和任务信息。

响应字段出现条件说明
uuid、input_format、status始终任务标识、输入格式、生命周期状态
created_at、updated_at始终ISO 8601 时间
parameters启动被接受后规范化且不可变的启动参数
finished_at、expires_at可用时完成时间及服务决定的过期时间
input_filename已提供且未清除原文件展示名称
title、authors、language已提取并保存时原文档元数据;authors 是姓名数组,language 不保证使用 API 目标语言代码
statistics可用时processed_pages 和/或 processed_words,不是费用或实时百分比
error已记录错误时含 code 与 message 的对象

可选字段可能缺失。通过此接口读取状态,详细实时进度使用 observation。无权限、不存在或过期的任务返回 404。

修改原文件展示名称

PATCH /transforms/{uuid}

此接口只接受 input_filename,名称要求与创建任务时相同。传入 null 可清除名称,省略该字段则保持原值。

只要任务仍可访问,无论处于哪个状态,都可以改名。成功后返回 200 和更新后的任务信息。

json
{  "input_filename": "research.pdf"}

改名不会替换已上传文件、修改转换参数或设置下载文件名。

获取上传地址

GET /transforms/{uuid}/upload-urls

返回 200。原文件尚未上传且任务尚未启动时:

json
{  "put_url": "https://storage.example/source.pdf?signed",  "headers": {    "Content-Type": "application/pdf",    "x-oss-forbid-overwrite": "true"  }}

向 put_url 发送 PUT 请求,请求体为文件原始内容,并带上返回的请求头,无需传入 API Key。EPUB 文件的 Content-Type 为 application/epub+zip。

文件已上传时,返回的是原文件的读取地址:

json
{  "get_url": "https://storage.example/source.pdf?signed-get",  "head_url": "https://storage.example/source.pdf?signed-head"}

已上传的原文件不能覆盖。上述地址用于读取原文件,转换结果需通过下载接口获取。本页中的示例链接无法用于实际请求。

启动处理

POST /transforms/{uuid}/launch

JSON 字段必填取值/默认值
output_format是markdown、epub、pdf
target_language翻译时必填;EPUB 输入或 PDF 输出必须翻译支持列表中的区分大小写代码
rendering_mode否不翻译默认 source;翻译默认 replace;支持时可用 bilingual 或 bilingual-inline
translation_prompt否非空字符串,仅翻译时允许
footnotes否,仅 PDFdisabled(默认)、basic、refined

参见有效组合与语言代码。

json
{  "output_format": "epub",  "target_language": "en",  "rendering_mode": "bilingual"}

首次接受启动请求时返回 202。重复提交相同的规范化参数时返回 200,两种响应都包含完整的任务信息。

尚未上传文件、已达到并发上限或试图更改启动参数时,返回 409。具体原因由 error.code 区分,见错误处理。

下载结果

GET /transforms/{uuid}/download-urls

任务状态为 succeeded 时,返回 200 和 {get_url, head_url};其他状态返回 404。

下载文件使用 get_url,通过 HEAD 查看文件信息则使用 head_url。两个地址不能混用,这些请求也无需传入 API Key。

可选查询参数 filename 设置包含扩展名的下载名称。只进行一次 URL 编码:

bash
curl --fail-with-body --silent --show-error --get \  "$BASE/transforms/$TASK_UUID/download-urls" \  -H "Authorization: Bearer $PDF_CRAFT_API_KEY" \  --data-urlencode 'filename=research.markdown.zip'

名称不能全为空白,最多 255 个 UTF-8 字节;禁止控制字符、非法代理字符、/、\,不能是 . 或 ..。无效或重复的 filename 参数返回 400。下载名称仅对本次生成的链接有效,不会保存到任务中,也不会改变文件内容。请自行填写扩展名:Markdown 结果使用 .zip,EPUB 使用 .epub,PDF 使用 .pdf。获取链接后应原样使用,不能直接修改其中的文件名。

查询任务列表

接口内容排序
GET /transforms/waiting-for-upload/尚未启动的任务,包括已上传文件创建时间倒序
GET /transforms/running/启动已接受的任务,包括排队任务创建时间正序
GET /transforms/finished/成功、失败、已取消完成时间倒序

均接受 limit(1–100,默认 50)及 cursor,时间相同时按 UUID 排序。cursor 原样传回,不能用于其他列表。

json
{  "transforms": [    {      "uuid": "8ae07e41-6e94-4144-9562-5af4116cba7e",      "input_format": "pdf",      "input_filename": "document.pdf",      "status": "waiting_for_upload",      "created_at": "2026-10-29T08:00:00.000Z",      "updated_at": "2026-10-29T08:00:00.000Z",      "expires_at": "2026-10-29T09:00:00.000Z"    }  ],  "next_cursor": "opaque-cursor"}

示例为等待上传列表项。最后一页省略 next_cursor。列表只返回基本任务信息,不包含处理进度或下载链接。过期任务不再显示,见保留策略。

获取进度与预览

GET /transforms/{uuid}/observation 接受可选的 cursor 和正整数 preview_limit(默认 500,大于 500 时按 500)。返回 200,包含 status、preview,以及运行中的可选 progress、成功时的 download_urls。

GET /transforms/{uuid}/preview-assets/{stage}/{asset} 返回预览资源的 {get_url, head_url}。stage 为 extraction 或 converting;asset 为 64 位小写十六进制哈希加 .png 或 .pdf。

这些接口不提供完整文档归档。字节范围、cursor 更新和内容格式见进度与预览。