Rivya AI 文档

Files API

通过 Rivya API 上传图片、视频或音频参考文件,并使用 MIME 校验、大小限制和 duration token。

最近审阅于 2026/05/11

使用 POST /api/v1/files 上传模型生成所需的图片、视频或音频参考素材。

Files API 只用于参考输入,本身不会创建生成任务。上传完成后,把返回的 url 和元数据放入模型 params,通常使用 params.referenceMediaItems

Endpoint

POST https://rivya.ai/api/v1/files
GET https://rivya.ai/api/v1/files/{fileId}

必需 headers:

Authorization: Bearer rvya_sk_...
Content-Type: multipart/form-data

上传时 API Key 必须包含 files:create scope;重新读取元数据时必须包含 files:read scope。新创建的 Rivya API Key 默认包含这两个 scope。

Multipart 字段

字段类型必填说明
filebinary要上传的图片、视频或音频文件。
kindstringimagevideoaudio
modelstring公共模型 ID。传入后,Rivya 会校验该模型是否接受这种文件类型。
client_request_idstring你的追踪 ID,最多 128 个字符。

如果这个文件会用于某个确定模型,建议传入 model。这样可以在文件被接受前执行模型专属的 MIME 和大小校验。

上传限制

Files API 复用 Rivya 参考素材上传 policy。

默认限制:

类型默认最大大小常见 MIME
image10 MBimage/jpeg, image/png, image/webp
video50 MBvideo/mp4, video/quicktime, video/webm
audio10 MBaudio/mpeg, audio/mp4, audio/wav, audio/x-wav, audio/aac, audio/ogg

部分模型有不同限制。例如,部分参考图片模型允许更大的图片,部分视频参考模型允许使用产品边界内更高的上传上限。只要你知道目标模型,就应该传入 model,并在接收用户上传前阅读 模型 API Reference

Rivya 会校验文件签名识别出的 MIME,不只依赖文件扩展名。

curl 示例

curl https://rivya.ai/api/v1/files \
  -H "Authorization: Bearer rvya_sk_..." \
  -F "file=@./reference.png" \
  -F "kind=image" \
  -F "model=nano-banana-2" \
  -F "client_request_id=asset-123"

JavaScript 示例

import { readFile } from "node:fs/promises";

const form = new FormData();
const file = new Blob([await readFile("./reference.png")], {
  type: "image/png"
});

form.set("file", file, "reference.png");
form.set("kind", "image");
form.set("model", "nano-banana-2");
form.set("client_request_id", "asset-123");

const response = await fetch("https://rivya.ai/api/v1/files", {
  method: "POST",
  headers: {
    Authorization: `Bearer ${process.env.RIVYA_API_KEY}`
  },
  body: form
});

const uploadedFile = await response.json();
console.log(uploadedFile.id, uploadedFile.url);

Python 示例

import os
import requests

with open("./reference.png", "rb") as file_handle:
    response = requests.post(
        "https://rivya.ai/api/v1/files",
        headers={
            "Authorization": f"Bearer {os.environ['RIVYA_API_KEY']}",
        },
        files={"file": ("reference.png", file_handle, "image/png")},
        data={
            "kind": "image",
            "model": "nano-banana-2",
            "client_request_id": "asset-123",
        },
        timeout=60,
    )

uploaded_file = response.json()
print(uploaded_file["id"], uploaded_file["url"])

响应

{
  "id": "file_...",
  "object": "file",
  "kind": "image",
  "file_name": "reference.png",
  "mime_type": "image/png",
  "size_bytes": 482314,
  "url": "https://...",
  "duration_seconds": null,
  "duration_token": null,
  "created_at": "2026-05-11T00:00:00.000Z",
  "expires_at": null
}

视频和音频上传可能会返回 duration_seconds。如果模型需要时长校验,请把 duration_token 作为 durationToken 放入对应的生成参数。

查询文件元数据

使用 GET /api/v1/files/{fileId} 可以读取同一 Rivya 账户名下文件的元数据:

curl https://rivya.ai/api/v1/files/file_... \
  -H "Authorization: Bearer rvya_sk_..."

响应使用和上传接口相同的 PublicApiFile 结构。如果文件属于其他账户或已不可用,API 会返回 not_found

在生成参数中使用上传结果

不要给 POST /api/v1/generations 发送顶层 files 字段。

新集成优先把上传结果放入 params.referenceMediaItems

{
  "model": "nano-banana-2",
  "prompt": "Restyle this product photo for a clean editorial catalog page",
  "params": {
    "referenceMediaItems": [
      {
        "url": "https://...",
        "kind": "image",
        "name": "reference.png",
        "mimeType": "image/png"
      }
    ]
  },
  "client_request_id": "order-123-preview"
}

视频或音频可使用:

{
  "url": "https://...",
  "kind": "video",
  "name": "source.mov",
  "mimeType": "video/quicktime",
  "durationSeconds": 12.4,
  "durationToken": "duration_token_from_files_api"
}

部分旧参数仍使用模型专属 URL 字段。如果 模型 API Reference 写明了具体参数,请按该模型页面说明使用,不要自行发明新字段。

错误

Files API 使用和其他 Rivya API 一致的公共错误结构:

{
  "error": {
    "code": "validation_failed",
    "message": "The request is invalid.",
    "requestId": "req_..."
  }
}

常见情况:

HTTPCode原因
400validation_failed缺少 filekind 不支持、MIME 不支持、文件过大,或模型不接受该文件类型。
401api_key_missing / api_key_invalid缺少或无效 Bearer API Key。
403api_scope_deniedKey 不包含当前操作所需的 files:createfiles:read
429rate_limited当前分钟上传请求过多。
503public_api_disabled当前环境禁用了 Public API。

安全说明

不要把完整 API Key 存在浏览器、移动客户端、日志、分析事件或截图中。

上传后的文件 URL 和 duration_token 应按临时接入材料处理。只在构造后续生成请求时使用,不要暴露到公开页面。

相关页面

目录