# 上传文件
> 上传图片、视频、音频,取得 7 天内有效的下载地址。
Base URL:`https://platform.sgt.site`
本页接口用于取得模型可访问的临时文件 URL。鉴权与文件输入方式见[文件与素材约定](business-auth.md);要在媒体生成请求里用 `file_id` 引用时,改用 `/media/v1/files`,选择方法见[参考文件与素材:选择上传接口](media-files.md#media-files-h-cf1470ee)。
| 方法 | 路径 |
| --- | --- |
| POST | `/api/files/upload` |
把图片、视频或音频存到平台存储,返回 7 天内有效的下载地址,适合把本地文件变成模型可访问的 URL。文件不进入素材库,也不经过审核。
## 请求
| 字段 | 类型 | 说明 |
| --- | --- | --- |
| `file` / `base64` / `url` | — | 文件内容,三选一,见[文件输入](business-auth.md#business-auth-section-2) |
| `content_type` | string | 配合纯 Base64 或 URL 声明 MIME;URL 省略时使用源站返回的 `Content-Type` |
| `asset_type` | string | 可选,`Image`/`Video`/`Audio`,填写时须与实际类型一致 |
不接受 `name`、`group_id`、`wait_seconds`,传入返回 400。
Base64 上传音频:
```http
POST /api/files/upload HTTP/1.1
Host: platform.sgt.site
Authorization: Bearer YOUR_VIRTUAL_KEY
Content-Type: application/json
```
```json
{"base64": "data:audio/wav;base64,BASE64_AUDIO_DATA"}
```
表单上传图片:
```bash
curl -X POST "$GATEWAY_ORIGIN/api/files/upload" \
-H "Authorization: Bearer $KEY" \
-F "file=@./first-frame.png;type=image/png"
```
转存公网文件:
```json
{"url": "https://media.example.com/reference.mp4"}
```
## 响应
```json
{
"success": true,
"data": {
"id": "file-example",
"file_url": "https://.tos-.volces.com/heighliner-files/<企业>/?<签名参数>",
"expires_at": 1791163200,
"asset_type": "Audio",
"content_type": "audio/wav",
"size": 32044
}
}
```
| 字段 | 说明 |
| --- | --- |
| `id` | 文件 ID |
| `file_url` | 带签名的下载地址,到期前任何持有者都能直接下载,无需鉴权 |
| `expires_at` | 地址到期时间,Unix 秒;为上传完成时刻加 604800 秒(7 天) |
| `asset_type` / `content_type` | 识别出的文件类型与 MIME |
| `size` | 文件字节数 |
- 地址不能续期;需要更长时间时重新上传。到期后文件会被清理,实际删除时间可能略晚于 `expires_at`。
- `file_url` 在有效期内可被任何人访问,不要公开发布。
- 使用 `url` 时由平台下载源文件再存储:只能访问公网地址,重定向逐跳检查,下载超时 2 分钟,大小限制同上表;平台不会把你的虚拟密钥发给源站。