本文是一篇实录型教程作者用自己的账号昵称桂棹碧波创建了一个真实应用「交付机器人」用真实文件、真实调用了文档里的每一个接口所有截图和响应报文都来自这次真实的接入过程没有摆拍也没有任何推销话术。它能回答三个问题1. 怎么用代码把一支 28MB 的视频发给客户生成客户打开就能下载的链接2. 怎么把文件直传进文件库和项目——文件字节不经过应用服务器还支持断点续传3. 传完之后交付链接、下载回执、积分账单怎么对账每一笔消耗归谁看得见吗写在前面这篇教程的几点说明演示账号作者自己的测试账号昵称桂棹碧波手机号 137****6510已开通个人套餐。演示环境截图取自本地部署的测试环境部分截图中链接显示为localhost:18099开头。实际接入时把接口域名换成冰梭正式站点即可接口与流程完全一致。演示应用在开放平台创建的应用「交付机器人」AppKey 为ak_ba8a55b6adc74b27b70cc4f0。AppSecret 属于敏感凭证文中与截图均已打码——你的 Secret 只在创建时完整显示一次请妥善保管。演示文件一支 28MB 的视频《春夏季新品宣传片_初剪.mp4》、一个 9MB 的素材压缩包《外景拍摄素材_上午场.zip》、一份 679 字节的《品牌授权书_签署版.pdf》均为作者自造的测试文件。接入语言文中的调用示例用 Node.js 写成fetch原生可用但开放平台是纯 HTTP 协议curl、Python、Java、C# 任何能发 HTTP 请求的语言都能接入浏览器环境推荐直接用官方 JS SDK第八节。每一步的真实响应报文作者都落盘留档了下文代码块里的 JSON 均为原样摘录超长的预签名 URL 以……截断。一、开放平台长什么样门户与接口文档未登录也能浏览开放平台门户和接口文档。门户入口在官网顶部导航的「开放」接口文档覆盖传输、文件库、项目交付、计费等全部开放能力左侧是目录树点击切换右侧内容每个接口都给出请求方法、路径、参数和输入输出格式先建立一个整体认知——开放平台把「大文件传输」拆成了四种业务形态后文按场景逐一实测形态适合干什么文件字节走哪安全中转relay给客户发一支片子生成取件链接浏览器/程序 → 对象存储服务器只发预签名 URLP2P 直传p2p双方都在线实时点对点双方浏览器直连不落盘分块直传upload-sessions把文件传进你的文件库 / 项目 / 收件箱客户端直连对象存储应用服务器不碰文件交付delivery把项目里的文件打包成一条交付链接给客户确认复用项目文件无需重新上传二、创建应用拿到 AppKey 与 AppSecret登录后进入「应用管理」这里是所有开放平台应用的入口点击「创建应用」填写名称和描述。描述建议写清楚用途方便以后审计创建成功后系统一次性展示 AppKey 和 AppSecret。Secret 只显示这一次关掉弹窗就再也查不到了只能重置。下面的截图里 Secret 已经打码关闭弹窗应用列表里出现了「交付机器人」点开应用详情可以看到调用统计和调用日志——每次 API 调用都有留痕接入了多少次、什么时候调的、调的哪个接口一目了然三、签名鉴权五个请求头一次算对所有开放接口都要求携带认证头。服务端验证签名与时间窗后以「应用创建者本人」的身份执行请求——和页面登录同权。其中四个必填X-Algorithm可选不传时服务端按 SM3 国密口径校验。请求头必填说明X-App-Key是应用的 AppKeyX-Timestamp是Unix 秒级时间戳与服务器时差超过±300 秒即拒绝X-Nonce是随机串参与签名串确保同一时间戳内每次请求的签名各不相同X-Algorithm可选摘要算法SM3国密缺省值或SHA-256用于请求体哈希与签名X-Signature是HMAC 签名十六进制小写3.1 签名怎么算三步请求体哈希bodyHash SHA-256(body)声明 SM3 时则为 SM3 哈希本文示例统一声明 SHA-256不声明时服务端按 SM3 校验十六进制小写GET 请求或空请求体时为空字符串。构造签名串把appKey timestamp nonce METHOD path bodyHash裸拼接无分隔符、无换行。METHOD 大写path 只取请求路径如/api/open/relay/create不含域名、不含 query 参数。计算签名X-Signature HMAC-SHA256(appSecret, 签名串)X-Algorithm 为 SM3 时用 HMAC-SM3。作者实测用的 Node.js 签名函数后续所有场景都基于它import crypto from crypto; const APP_KEY ak_ba8a55b6adc74b27b70cc4f0; const APP_SECRET 9c1b****af5c; // 你的 AppSecret切勿写进前端代码 const API https://www.wringcloud.com; // 实际接入时替换为正式站点 const sha256hex b crypto.createHash(sha256).update(b).digest(hex); function authHeaders(method, path, body) { const ts Math.floor(Date.now() / 1000).toString(); const nc crypto.randomBytes(8).toString(hex); // Nonce每次随机 const bodyHash body body.length ? sha256hex(body) : ; // GET/空体为空串 const signString APP_KEY ts nc method.toUpperCase() path bodyHash; const sign crypto.createHmac(sha256, APP_SECRET).update(signString).digest(hex); return { X-App-Key: APP_KEY, X-Timestamp: ts, X-Nonce: nc, X-Signature: sign, X-Algorithm: SHA-256 }; }两个容易踩的坑都是作者实测验证过的1.签名串里只放路径不放 query 参数。比如/api/open/delivery/list?projectId37参与签名的是/api/open/delivery/list。2.本机时钟要准。时间戳窗口只有 ±300 秒系统时间漂移会直接 401。3.2 统一响应格式所有接口统一返回{code:num,data:...,message:...}业务数据在data错误说明在messagecode同时反映在 HTTP 状态码里。3.3 真实报错长什么样作者故意发了两次错误请求留了真实报文不带任何认证头调用/api/open/billing/pointsHTTP 401 { code: 401, data: null, message: 缺少认证参数 }用错误的 Secret 计算签名HTTP 401 { code: 401, data: null, message: 签名验证失败 }四、场景一安全中转——用 API 给客户发一支 28MB 视频这是最常用的场景程序自动创建一条中转任务拿到取件链接发给客户客户打开链接就能下载不需要注册。4.1 创建中转任务文档页的「创建中转任务」接口页调用POST /api/open/relay/create声明文件名、大小和取件策略{ fileName: 春夏季新品宣传片_初剪.mp4, fileSize: 29360128, maxReceiveCount: 3, expireHours: 72, isOffline: true }真实响应{ code: 200, message: success, data: { transferId: depgGWrjKR, receiveToken: 46d33dc9bacc44d38524efd71866ad30, chunkSize: 4194304, firstChunkSize: 1048576, totalChunks: 8, expiresIn: 259200, downloadLink: https://www.wringcloud.com/r/depgGWrjKR?token46d33dc9……, preAuthId: f0dc817190ee408ab10cffe118aca1e3 } }注意三点分块策略首块 1MB之后每块 4MB28MB 被切成 8 块expiresIn: 259200任务有效期 72 小时和请求里的expireHours一致maxReceiveCount: 3这个链接最多被下载 3 次防止外泄后被反复下载。4.2 分块上传拿凭证 → 直传对象存储 → 回执每一块都是同一个循环签发凭证 → PUT 对象存储 → 确认回执。第一步POST /api/open/relay/{transferId}/chunk-upload-url请求某一块的上传凭证服务端返回一个预签名 URL有效期 3600 秒{ code: 200, message: success, data: { uploadUrl: https://wringcloud-bs.oss-cn-hangzhou.aliyuncs.com/oss_relay/20261006/27300124_…….mp4?Expires1791282351OSSAccessKeyIdLTAI5tA……SignatureQp%2B0kyL8pn019WytWxIbhP5TfaU%3DuploadId0C5199AB……partNumber1, chunkSize: 1048576, expiresIn: 3600 } }第二步拿着这个 URL 把分块字节PUT到对象存储——文件字节直接进对象存储不经过应用服务器const cred (await call(POST, /api/open/relay/${transferId}/chunk-upload-url, { chunkIndex: i })).data; const chunk buf.subarray(offset, offset cred.chunkSize); await fetch(cred.uploadUrl, { method: PUT, body: chunk });第三步POST /api/open/relay/{transferId}/chunk-uploaded确认这一块已落地{ code: 200, message: success, data: { chunkIndex: 0 } }8 块循环完成后POST /api/open/relay/{transferId}/complete通知服务端合并{ code: 200, message: success, data: { transferId: depgGWrjKR, message: 上传完成, status: 2 } }4.3 查询任务与生成下载地址GET /api/open/relay/{transferId}查询任务状态{ code: 200, message: success, data: { transferId: depgGWrjKR, fileName: 春夏季新品宣传片_初剪.mp4, fileSize: 29360128, transferMode: oss_relay, status: 2, maxReceiveCount: 3, receiveCount: 0, createdAt: 2026-10-06T17:25:51, expiredAt: 2026-10-09T17:25:51 } }GET /api/open/transfer/{transferId}/download-url?token{receiveToken}生成整文件下载地址也可以直接把创建时返回的downloadLink发给客户效果相同{ code: 200, message: success, data: { downloadUrl: https://www.wringcloud.com/api/oss-relay/open-file/depgGWrjKR?token46d33dc9……, expiresInSeconds: 300, billingNote: 链接被访问时按整文件大小扣发送方下载流量每次访问计费一次 } }billingNote把计费口径说得很直白客户每打开一次链接按整文件大小扣一次发送方的下载流量。4.4 客户视角打开链接就能下载把链接发给客户作者用无痕浏览器模拟。客户打开链接不需要注册、不需要装任何软件页面上标注了文件信息和剩余接收次数点「下载文件」浏览器分块下载作者把下载到的文件和原始文件做了逐字节比对29,360,128 字节完全一致。4.5 发送方视角传输记录有留痕回到页面端「传输记录」这条 API 创建的任务和手动发送的任务并列出现模式、状态、过期时间都可见五、场景二分块直传——文件不经过应用服务器还支持断点续传第四节的分块上传是给客户发文件这一节是把文件传进自己的文件库/项目。这是冰梭 v2.1.0 直传协议的主场客户端凭预签名 URL 直连对象存储应用服务器从头到尾不接触文件字节。无论你用服务器脚本、浏览器还是别的任何 HTTP 客户端协议完全一致。接口文档的「文件库域」页顶部蓝色提示框写明了直传协议的五步5.1 直传协议全景整个流程五步一张时序图说清初始化会话POST /api/open/upload-sessions声明业务类型drive文件库 /project项目 /collect收件箱和文件指纹批量签发凭证POST /api/open/upload-sessions/{sessionKey}/credentials一次最多签 64 块直传对象存储凭预签名 URL 逐块PUT逐块回执POST /api/open/upload-sessions/{sessionKey}/chunks/{index}/ack合并落地POST /api/open/upload-sessions/{sessionKey}/complete。5.2 实测直传 9MB 素材包进文件库先在文件库建一个归档文件夹POST /api/open/drive/folders返回folderId: 11。然后初始化直传会话{ bizType: drive, bizRef: { folderId: 11 }, fileName: 外景拍摄素材_上午场.zip, fileSize: 9437184, fileHash: 20ff1481……文件的 SHA-256十六进制 }真实响应{ code: 200, message: success, data: { sessionKey: c3c9105a59d74174a2c4f0f27f82cbdc, bizType: drive, fileName: 外景拍摄素材_上午场.zip, fileSize: 9437184, chunkSize: 8388608, totalChunks: 2, uploadedChunks: [], resumed: false } }直传的块比中转更大每块 8MB9MB 文件共 2 块。接着一次签发两块凭证{ code: 200, message: success, data: { credentials: [ { chunkIndex: 0, uploadUrl: https://wringcloud-bs.oss-cn-hangzhou.aliyuncs.com/drive/20261006/…….zip?Expires1791282629……partNumber1, expiresIn: 3600 }, { chunkIndex: 1, uploadUrl: https://wringcloud-bs.oss-cn-hangzhou.aliyuncs.com/drive/20261006/…….zip?Expires1791282629……partNumber2, expiresIn: 3600 } ] } }逐块PUT→ 逐块ack→complete合并落地{ code: 200, message: success, data: { fileName: 外景拍摄素材_上午场.zip, fileSize: 9437184, transferId: f744fd81245d4a2e83e93e8d5df7cbdf } }落地后用GET /api/open/drive/files/{transferId}/download-url拿下载地址把文件拉回来逐字节比对9,437,184 字节完全一致。打开页面端「我的文件库」新文件夹和文件都在5.3 直传协议的三个内建机制实测验证断点续传初始化会话时服务端按「同一用户 相同文件哈希」匹配未完成的会话响应里的uploadedChunks会列出已上传的块、resumed标记为true凭据签发时这些块直接跳过。传到一半断网重跑同一份文件即可续传不用从头再来。会话与应用隔离直传会话归属于创建它的应用用应用 A 的密钥去操作应用 B 创建的会话服务端直接返回 403。作者在 SDK 黑盒测试里专门验证过这一条。凭证限时预签名 URL 有效期 3600 秒过期重签即可批量签发一次最多 64 块超大文件按批循环。六、场景三项目交付——API 全自动传文件进项目 发交付链接这个场景把前两节拼起来文件直传进项目 → 创建交付链接 → 客户凭提取码取件 → 拿交付回执。这是把给客户交片整段流水线自动化的核心。6.1 项目与文件作者提前在页面上建好了演示项目「自动化交付演示」projectId: 37。用GET /api/open/projects/37查详情、GET /api/open/projects列出全部项目然后直传一份《品牌授权书_签署版.pdf》进项目——和文件库是同一套五步直传协议只是bizType换成project{ bizType: project, bizRef: { projectId: 37 }, fileName: 品牌授权书_签署版.pdf, fileSize: 679, fileHash: …… }合并落地的响应和文件库不一样多了项目维度的归属信息{ code: 200, message: success, data: { transferId: 18652d5b3daf4798881bc4920e1f20b2, fileId: 831, projectId: 37, fileName: 品牌授权书_签署版.pdf, fileSize: 679 } }GET /api/open/projects/37/files确认文件已入库uploaderName显示为应用创建者桂棹碧波6.2 重要前提审核后交付如果你的空间或项目开启了「审核后交付」通过 API 上传的文件同样要先审核通过或被标记为可交付才能创建交付链接——API 与页面端执行同一套审核判定不存在绕过审核的后门。页面端的上传与审核流程作者的演示项目在项目设置里把「交付内容审核」设为了关闭所以直传落地的文件可以直接交付。如果你的项目开着审核请先走完审核再执行 6.3——创建交付链接时未过审的文件会被跳过响应里的skippedCount会告诉你跳过了几个。6.3 创建交付链接POST /api/open/delivery/create把fileId: 831打包成交付链接附上提取码、有效期和一段给客户看的交付说明{ projectId: 37, scope: files, taskIds: [831], password: bs2026, expireDays: 7, note: 初剪版本请于 7 日内确认有任何修改意见直接回复本条交付。 }真实响应{ code: 200, message: success, data: { id: 17, projectId: 37, scope: files, token: 147a496904b34250b65334c0352e74cd, password: bs2026, expireAt: 2026-10-13T17:30:47, maxDownloads: 0, downloadCount: 0, fileCount: 1, skippedCount: 0, note: 初剪版本请于 7 日内确认有任何修改意见直接回复本条交付。, creatorName: 桂棹碧波 } }拼出客户取件链接https://www.wringcloud.com/delivery.html?token{token}演示环境为http://localhost:18099/delivery.html?token147a496904b34250b65334c0352e74cd。页面端「交付」标签页里这条 API 创建的交付链接同步可见状态生效中6.4 客户取件提取码 下载客户打开交付链接输入提取码bs2026后进入取件页看到交付说明信和文件列表6.5 交付回执客户下载了没有API 可查GET /api/open/delivery/17查详情GET /api/open/delivery/list?projectId37列出项目全部交付链接GET /api/open/delivery/17/records?page1size10查交付回执——本次演示时客户还没有下载所以回执列表是空的total: 0客户下载后每一次取件都会生成一条回执记录谁在什么时候下载了哪个文件有据可查。七、场景四收件收集与 P2P 直传简述7.1 收件箱直传collect客户给你传文件也能走 API先在页面端「收件管理」生成一条收件链接拿到 token然后直传协议第五步不变bizType换成collectbizRef传入收件令牌和提交人身份{ bizType: collect, bizRef: { token: 收件链接中的token, uploaderName: 张明 }, fileName: 外景拍摄素材_下午场.zip, fileSize: 9437184, fileHash: …… }合并落地返回{ fileName, fileSize, autoAccepted }——autoAccepted表示该收件链接开启了自动入库客户传完直接进收件箱不需要你手动领取。7.2 P2P 直传p2p双方都在线时的实时直传POST /api/open/p2p/create创建任务后API 返回信令地址、ICE 服务器配置和信令 token实际的点对点传输由浏览器完成服务器只做撮合文件不落盘{ code: 200, message: success, data: { transferId: depgJRUIto, receiveLink: https://www.wringcloud.com/r/depgJRUIto?token258cbcbf……, signalingUrl: wss://www.wringcloud.com/ws/signaling, iceServers: [ { urls: stun:www.wringcloud.com:3478 }, { urls: turn:www.wringcloud.com:3478, username: iceshuttle, credential: …… } ], expiresIn: 86400 } }P2P 需要处理 WebRTC 信令建议直接用官方 JS SDK下一节SDK 把信令、ICE、断线重连全部封装好了。八、用 SDK 接入iceshuttle-js推荐上面的 HTTP 协议适合任何语言如果你的运行环境是浏览器官方 JS SDK 把签名、分块、并发、断点续传全部封装好了推荐直接用 SDK。8.1 安装与初始化SDK 提供三种构建产物iceshuttle.min.js生产script 引入、iceshuttle.esm.jsES Moduleimport 引入、iceshuttle.umd.js兼容两种。下载地址见开放平台文档页「SDK 安装与初始化」当前版本v2.1.0。!-- 方式一script 标签 -- script src./sdk/iceshuttle.min.js/script script const { IceShuttle, downloadBlob, sha256Hex } window.IceShuttle; /script// 方式二ES Module import { IceShuttle, sha256Hex } from ./sdk/iceshuttle.esm.js; const client new IceShuttle({ appKey: ak_ba8a55b6adc74b27b70cc4f0, // 你的 AppKey appSecret: 9c1b****af5c, // 你的 AppSecret切勿暴露在前端代码 serverDomain: https://www.wringcloud.com, debug: false });8.2 一行代码的大文件直传v2.1.0 起 SDK 内置了第五节的整套直传协议。高层 APIuploadFile一行完成全部五步算哈希 → 初始化会话 → 并发上传 → 逐块回执 → 合并落地const result await client.uploadFile(file, { bizType: drive, // drive文件库 / project项目 / collect收件箱 bizRef: { folderId: 11 }, // 按 bizType 传入目录 ID / 项目 ID / 收件 token onProgress: (percent, detail) console.log(percent %) }); // drive 返回 { transferId }project 返回 { transferId, fileId, projectId } // collect 返回 { fileName, fileSize, autoAccepted }需要自己控制并发、断点续传或中途取消时用低层 APIconst uploader await client.createUploader({ bizType: drive, bizRef: { folderId: 0 }, fileName: file.name, fileSize: file.size, fileHash: await sha256Hex(file), // SDK 直接导出 sha256Hex 工具函数 concurrency: 3 // 并发数 1-8 }); await uploader.upload(file, { onProgress: p console.log(p %) }); await client.completeUploadSession(uploader.sessionKey); // 中途放弃await uploader.abort(); 服务端清理会话P2P 与安全中转同样有现成方法P2PSender/P2PReceiver/RelaySender/RelayReceiver/UniversalReceiver详见接口文档页的 SDK 小节。8.3 在线 Demo 实测文档页提供在线 Demo/sdk/iceshuttle-js/demo/index.html填入 AppKey/AppSecret 即可在浏览器里体验三种模式。作者用 Demo 的「开放平台直传」tab 真实传了一遍 28MB 的视频分 4 块、每块 8MB进度条走到 100%日志区打出了落地结果{fileName:春夏季新品宣传片_初剪.mp4,fileSize:29360128,transferId:5b5d5c3e……}九、积分对账每一笔消耗都归因到应用开放平台的所有计费动作都记录在案而且明确区分「谁消耗的」和「消耗的是谁的」。9.1 API 对账接口GET /api/open/billing/points查余额总览{ code: 200, message: success, data: { memberPointsTotal: 1500, transferRemaining: 750, pointsBalance: 1.875, trafficQuotaBytes: 1610612736000, trafficUsedBytes: 134872039 } }GET /api/open/billing/logs?page1size10查消耗流水。这是作者实测的一条真实记录——注意source: open_api和appName: 交付机器人两个字段{ fileName: 外景拍摄素材_上午场.zip, source: open_api, appName: 交付机器人, consumeType: drive_download, bytes: 9437184, memberPoints: 0.008, createdAt: 2026-10-06T17:26:15 }9.2 页面端对账页面端「积分消耗」页同步展示这些记录API 产生的消耗带「开放平台 · 交付机器人」角标与网页手动操作标访客清晰区分9.3 计费口径均为实测动作谁付费计费方式本次实例直传上传文件库/项目/收件不计费上传不计费—中转/文件库文件被下载发送方按下载流量约 1 积分 ≈ 1GB9MB 扣 0.008 积分交付链接被客户下载发送方同上按下载流量见积分流水P2P 实时直传不计费点对点不经过服务器—三点提醒积分扣的是应用创建者的。客户下载文件产生的流量从你的积分池扣客户本身不需要付费、不需要注册。API 消耗和页面消耗在同一个池子里流水里逐条标注了来源open_api/web与应用名对账时按这两个字段筛选即可。积分不足时接口会直接报错并给出建议见第十节的 413 样例。十、错误处理真实报错样例与排查清单10.1 错误码与真实报文HTTPcodemessage 实例什么时候发生401401缺少认证参数请求没带认证头401401签名验证失败Secret 不对、签名串拼错、bodyHash 不符以及时间戳超出 ±300 秒窗口时间戳过期对外同样报签名验证失败服务端日志里才细分时间戳过期作者核对过后端实现401401无效的AppKeyAppKey 不存在或拼写错误403403应用已被禁用/应用已被拉黑{原因}应用状态非启用被手动禁用或违规拉黑403403应用隔离拦截用应用 A 的密钥操作应用 B 创建的直传会话413413剩余下载积分不足约1409积分1积分1GB下载流量。可分卷压缩后分次发送、购买加油包¥12积分永久有效或开通套餐获得本期积分个人套餐200/工作室套餐600/团队套餐1500积分/年文件超出剩余可用下载流量作者传了一个 99TB 的文件实测413 这条报错值得点赞报错信息直接给出了下一步怎么办。同样的思路建议你的代码也把message透传给用户而不是只报上传失败。10.2 排查清单接入调试时按这个顺序核对作者实测全部踩过或验证过401 签名验证失败→ 依次检查Secret 是否正确、签名串是否裸拼接无分隔符、METHOD 是否大写、path 是否不含 query、bodyHash 算法与X-Algorithm是否一致核对完还是 401→ 校准本机时钟NTP时间戳窗口只有 ±300 秒过期对外统一报签名验证失败服务端日志里才细分时间戳过期403 应用隔离→ 确认操作会话用的 AppKey 和创建会话时一致413 流量不足→ 分卷压缩、购买加油包或升级套餐交付链接创建后文件被跳过→ 检查项目是否开启审核先审核再交付见 6.2。FAQQ一定要用 JS SDK 吗后端语言能接入吗A能。开放平台是纯 HTTP 协议本文第三到七节的全部示例都是 Node.jsfetch直调的没有依赖任何 SDK。JS SDK 的价值在于浏览器环境里帮你封装了签名、WebRTC 信令和直传并发逻辑。Q直传协议支持哪些客户端A任何能发 HTTP 请求的客户端——服务器脚本、浏览器、curl、移动端。文件字节直连对象存储的预签名 URL应用服务器不碰文件所以不存在必须用某种 SDK的限制。Q上传到一半程序崩了怎么办A重新初始化会话即可。服务端按「同一用户 相同文件哈希」匹配未完成会话已上传的块在uploadedChunks里列出凭据签发自动跳过这些块只传剩下的部分。Q文件会不会被别的应用看到A不会。直传会话与应用绑定跨应用访问返回 403数据归属与页面端一致都挂在你的账号空间下。Q支持国密算法吗A支持。X-Algorithm可选SM3默认或SHA-256签名相应使用 HMAC-SM3 或 HMAC-SHA256JS SDK 初始化时传useSM3: true即可切换。Q客户下载需要注册吗A不需要。中转链接、交付链接客户打开即可下载交付链接可加提取码保护收件链接客户也无需注册填提交人身份即可上传。Q怎么区分一条积分消耗是 API 产生的还是页面操作产生的A看两个维度source字段区分来源渠道open_api/webappName字段标注具体是哪个应用消耗的。页面端「积分消耗」页有对应的「开放平台 · 应用名」角标。结语把整个接入过程串起来冰梭开放平台解决的是一件事把大文件交付这条链路做成你的系统可以自动调用的能力。发一个relay/create加分块循环28MB 视频变成客户打开就能下载的链接不用教客户操作传一套五步直传协议通吃文件库、项目、收件箱三个业务文件字节不经过应用服务器断点续传与应用隔离内建交文件直传落地 → 一条delivery/create生成带提取码的交付链接回执可查审核门槛与页面端同一套口径管调用留痕在应用详情、积分归因到open_api 应用名每一笔消耗都能对上账。签名只有五个头、一次 HMAC直传只有五个步骤、一张时序图。对于需要把交付流水线接进自己业务系统的工作室和团队来说这套东西的上手成本主要在读文档而不是斗协议。