按能力

上传文件

当客户端只有本地图片、视频、音频、PDF、表格或其他文件时,请使用平台文件上传流程。接口会返回临时上传地址和稳定的 public_url,客户端无需感知文件存储的具体实现。

#选择公网地址、上传或 Base64

现有输入推荐方式原因
已有公网 HTTPS 地址直接发送地址无需重复上传,请求体也最小。
设备上的本地文件先上传,再发送 public_url适合大文件,并可在重试时复用。
小型内联图片,且模型明确支持 Base64可以使用 Base64仅在所选模型契约明确允许时使用。

#本地文件上传流程

  1. 1

    读取当前上限

    使用同一个 API Key,以应用该用户的专属上限。

    GET /v1/media/upload-policy
  2. 2

    创建上传凭证

    发送 kind、明确的 content_type 和精确字节数。

    POST /v1/media/upload-policy
  3. 3

    上传文件

    将所有返回的 fields 字段和文件一起 POST 到 upload_url。

    multipart/form-data
  4. 4

    使用返回地址

    将 public_url 放入模型支持的媒体字段。

    public_url
create-policy.sh
curl https://www.aisplice.store/v1/media/upload-policy \
  -H "Authorization: Bearer sk-YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "kind": "file",
    "content_type": "application/pdf",
    "size": 1048576
  }'

#将上传字段视为不透明数据

原样发送 fields 返回的每一个键值,不要重命名、过滤或缓存。上传凭证有效期很短,并绑定到唯一生成的文件路径。

browser.ts
const form = new FormData();
for (const [key, value] of Object.entries(policy.fields)) {
  form.append(key, String(value));
}
form.append("file", file); // keep the file field last

const uploaded = await fetch(policy.upload_url, {
  method: "POST",
  body: form,
});
if (!uploaded.ok) throw new Error(await uploaded.text());

const modelInputUrl = policy.public_url;

#文件类型与模型支持

上传成功不代表模型可以读取

上传接口可以保存 PDF、Excel、文本等通用文件,但只有模型请求契约声明了匹配的文件或地址字段时,模型才能读取。仅支持图片的模型不会因为表格具有公网地址就能读取它。
查看所选模型的请求契约

全部字段:见 API 参考里的 /v1/media/upload-policy →

还是没解决?

把请求 ID 或报错信息发给我们,我们来查。