01
快速开始
直接通过网页或 API 创建任务,无需登录或 Token。
开放访问
所有 API、远端文件下载与本地上传分享链接均无需鉴权。
返回值中的 job.id 是后续查询、下载、取消和删除操作使用的
JOB_ID;downloadUrl 可在返回 202
后立即开始下载,不必等待任务进入 ready。
网页端可在资源 URL 输入框中每行填写一个链接并批量创建任务;批量模式会为每个链接自动推断文件名。
02
查询与 CLI 下载
创建任务后即可下载;Worker 会等待首个 R2 分片并持续输出后续内容。
Shell · 查询状态
export JOB_ID="从创建任务响应中取得的 UUID"
curl --fail-with-body --silent \
"$R2_PROXY_URL/api/jobs/$JOB_ID" | jq
浏览器 / curl
适合小文件或快速测试,使用一个标准 HTTP 下载连接。
aria2c(推荐)
使用多路 Range 请求,跨境链路通常比浏览器单连接更快。
Shell · 用 aria2c 下载
aria2c -c -x 8 -s 8 -k 4M \
--file-allocation=none \
"$R2_PROXY_URL/api/files/$JOB_ID"
依赖
macOS 可运行 brew install aria2 jq。公开下载链接在文件
到期或任务被删除后失效;任务拉取失败时,进行中的下载会以连接中断结束。
Shell · 取消或删除
# 取消正在运行的任务
curl --fail-with-body --silent -X POST \
"$R2_PROXY_URL/api/jobs/$JOB_ID/cancel" | jq
# 删除任务记录、R2 对象和未完成分片
curl --fail-with-body --silent -X DELETE \
"$R2_PROXY_URL/api/jobs/$JOB_ID"
公开链接
链接格式为 /share/<UPLOAD_ID>。任何拿到链接的人都能
下载文件,文件到期或被删除后链接立即失效。
Shell · 上传一个不超过 64 MiB 的文件
export FILE="./example.bin"
export FILE_SIZE=$(wc -c < "$FILE" | tr -d ' ')
UPLOAD=$(curl --fail-with-body --silent \
-X POST "$R2_PROXY_URL/api/uploads" \
-H "Content-Type: application/json" \
--data "{\"filename\":\"$(basename "$FILE")\",\"contentType\":\"application/octet-stream\",\"contentLength\":$FILE_SIZE}")
UPLOAD_ID=$(printf '%s' "$UPLOAD" | jq -r '.job.id')
PART=$(curl --fail-with-body --silent \
-X PUT "$R2_PROXY_URL/api/uploads/$UPLOAD_ID/parts/1" \
-H "Content-Type: application/octet-stream" \
-H "X-Upload-Size: $FILE_SIZE" \
--data-binary "@$FILE" | jq -c '.part')
curl --fail-with-body --silent \
-X POST "$R2_PROXY_URL/api/uploads/$UPLOAD_ID/complete" \
-H "Content-Type: application/json" \
--data "{\"parts\":[$PART]}" | jq
大于 64 MiB 的文件请直接使用网页,浏览器会自动切片并显示上传进度。
04
REST API
响应均为 JSON;删除成功时返回空的 204 响应。
| 方法 |
路径 |
用途 |
| GET |
/health |
无需鉴权的健康检查 |
| POST |
/api/jobs |
创建拉取任务,返回 202 和立即可用的下载 URL |
| GET |
/api/jobs |
列出全部任务摘要 |
| GET |
/api/jobs/:id |
读取任务进度和 Workflow 状态 |
| POST |
/api/jobs/:id/sign |
兼容旧客户端,返回公开下载 URL |
| POST |
/api/jobs/:id/cancel |
终止任务并清理未完成上传 |
| POST |
/api/uploads |
初始化本地 multipart 上传 |
| PUT |
/api/uploads/:id/parts/:part |
上传一个 64 MiB 分片 |
| POST |
/api/uploads/:id/complete |
合并分片并返回公开分享 URL |
| DELETE |
/api/jobs/:id |
删除任务及其 R2 文件 |
| GET |
/api/files/:id |
无需鉴权;拉取中可同步下载,支持单段 Range |
| HEAD |
/api/files/:id |
读取文件大小、ETag 和下载元数据 |
| GET |
/share/:id |
无需鉴权的公开下载,支持 Range 和 HEAD |
queued
→
probing
→
downloading
→
ready
任一步骤失败会进入 error;主动取消会进入
canceled。
05
创建任务字段
POST /api/jobs 接收以下 JSON 对象。
| 字段 |
类型 |
说明 |
url |
string |
必填,任意绝对 HTTP(S) 资源地址 |
filename |
string | null |
可选;为空时从 URL 或响应头推断 |
headers |
object |
可选;发往源站的请求头,例如源站 Authorization |
forwardSensitiveHeaders |
boolean |
跨域重定向后是否继续发送敏感请求头,默认 false |
JSON · 带源站鉴权
{
"url": "https://example.com/private/model.safetensors",
"filename": "model.safetensors",
"headers": {
"Authorization": "Bearer <SOURCE_TOKEN>"
},
"forwardSensitiveHeaders": false
}
06
安全与保留规则
这个服务当前以公开下载中转方式运行。
- 所有人都能创建、查看、取消和删除任务,也能下载尚未过期的文件。
- 不要在公开任务中填写不希望暴露给其他使用者的源站凭据。
-
跨域重定向默认移除
Authorization、Cookie 和
Proxy-Authorization。
- 文件在任务完成 24 小时后自动从 R2 删除。
- 远端文件和本地上传文件都公开下载,不执行下载鉴权。
- 下载支持断点续传;无效或超出文件范围的 Range 返回 416。