Files API
Muat naik fail rujukan imej, video, atau audio untuk permintaan penjanaan Rivya API, lengkap dengan semakan MIME, had saiz, dan token tempoh.
Terakhir disemak pada 2026/08/26
Gunakan POST /api/v1/files untuk memuat naik media rujukan bagi model yang memerlukan input imej, video, atau audio.
Files API hanya digunakan untuk input rujukan. API ini tidak mencipta tugasan penjanaan dengan sendirinya. Selepas muat naik, masukkan url dan metadata yang dikembalikan ke dalam params model, biasanya melalui params.referenceMediaItems.
Titik akhir
POST https://rivya.ai/api/v1/files
GET https://rivya.ai/api/v1/files/{fileId}Pengepala yang diperlukan:
Authorization: Bearer rvya_sk_...
Content-Type: multipart/form-dataKunci API mesti menyertakan skop files:create untuk memuat naik dan files:read untuk mendapatkan metadata. Kunci Rivya API yang baru dicipta menyertakan kedua-dua skop secara lalai.
Medan multipart
| Medan | Jenis | Diperlukan | Catatan |
|---|---|---|---|
file | binary | ya | Fail imej, video, atau audio yang hendak dimuat naik. |
kind | string | ya | Salah satu daripada image, video, atau audio. |
model | string | tidak | ID model awam. Apabila disertakan, Rivya mengesahkan bahawa model menerima jenis fail ini. |
client_request_id | string | tidak | ID penjejakan anda, sehingga 128 aksara. |
Gunakan model apabila fail ditujukan kepada model tertentu. Ini membolehkan MIME dan saiz disahkan mengikut model sebelum fail diterima.
Had muat naik
Files API menggunakan dasar muat naik yang sama seperti muat naik rujukan Rivya.
Had lalai:
| Jenis | Saiz maksimum lalai | Jenis MIME lazim |
|---|---|---|
image | 10 MB | image/jpeg, image/png, image/webp |
video | 50 MB | video/mp4, video/quicktime, video/webm |
audio | 10 MB | audio/mpeg, audio/mp4, audio/wav, audio/x-wav, audio/aac, audio/ogg |
Sesetengah model mempunyai had yang berbeza. Contohnya, model imej rujukan tertentu membenarkan imej yang lebih besar, manakala model video rujukan tertentu membenarkan fail sehingga had muat naik selamat produk. Sentiasa sertakan model apabila anda mengetahui model sasaran, dan baca Rujukan API Model sebelum menerima muat naik pengguna.
Had rujukan imej bertandatangan termasuk:
| Model | Imej maksimum | Had setiap imej | Jenis MIME imej yang diterima |
|---|---|---|---|
seedream-5-pro | 10 | 10 MB | JPEG, PNG, WebP |
seedream-5-pro-layer-decomposition | tepat 1 | 30 MB | JPEG, PNG, WebP, BMP, GIF, TIFF |
nano-banana-2-lite | 10 | 30 MB | JPEG, PNG, WebP |
qwen-image-3 / qwen-image-3-pro | 3 | 10 MB | JPEG, PNG, WebP, BMP, GIF, TIFF |
grok-imagine-image-2-0 | 5 | 10 MB | JPEG, PNG, WebP |
wan-3-0-video | 10 dalam mod rujukan; 1–2 dalam mod bingkai | 20 MB | JPEG, PNG tanpa ketelusan, WebP, BMP |
Setiap imej rujukan Image5, Grok Imagine Image 2.0, atau Wan 3.0 mesti dimuat naik dengan model sasarannya. Simpan width, height, size_bytes, dan image_dimensions_token daripada respons asal; permintaan penjanaan mesti menghantarnya sebagai width, height, sizeBytes, dan imageDimensionsToken. URL imej luaran sebarangan tidak memenuhi pengesahan terikat model ini.
Penguraian lapisan turut mengesahkan dimensi imej yang dikesan sebelum muat naik: jumlah 262,144–36,000,000 piksel dan nisbah bidang dari 1:16 hingga 16:1.
Had muat naik khusus model Video8 termasuk:
| Model | Input imej | Input video | Input audio |
|---|---|---|---|
kling-3-turbo | 1 × 10 MB; JPEG atau PNG | tidak diterima | tidak diterima |
seedance-2-mini | sehingga 9 × 30 MB; JPEG, PNG, WebP, BMP, GIF, atau TIFF | sehingga 3 × 50 MB; MP4 atau MOV | sehingga 3 × 15 MB; MP3 atau WAV |
seedance-2-5 | sehingga 30 × 30 MB; JPEG, PNG, WebP, BMP, GIF, atau TIFF | sehingga 10 × 95 MB; MP4 atau MOV | sehingga 10 × 15 MB; MP3 atau WAV |
minimax-h3 | sehingga 9 × 30 MB; JPEG, PNG, atau WebP | sehingga 3 × 50 MB; MP4 atau MOV | sehingga 3 × 15 MB; MP3 atau WAV |
happyhorse-1-1 | sehingga 9 × 20 MB; JPEG, PNG, atau WebP | tidak diterima | tidak diterima |
omnihuman-1-5 | 1 × 10 MB; JPEG, PNG, atau WebP | tidak diterima | 1 × 10 MB; MP3, M4A, WAV, AAC, atau OGG |
volcengine-video-lip-sync | tidak diterima | 1 × 95 MB; MP4 atau MOV | 1 × 10 MB; MP3, M4A, WAV, AAC, atau OGG |
wan-3-0-video | bingkai: 1 diperlukan dan 1 pilihan; rujukan: sehingga 10 × 20 MB; JPEG, PNG tanpa ketelusan, WebP, atau BMP | rujukan: sehingga 5 × 95 MB; MP4 atau MOV; setiap satu 1–15 saat dan jumlah 15 saat | rujukan: sehingga 5 × 15 MB; MP3 atau WAV; setiap satu 1–15 saat dan jumlah 15 saat; tidak diterima bersendirian |
Ini ialah had muat naik yang diterima Rivya, yang mungkin lebih rendah daripada had perkhidmatan huluan. Muat naik setiap rujukan Video8 atau Wan 3.0 dengan model sasarannya. Video rujukan memerlukan bukti tempoh bertandatangan dan metadata video bertandatangan daripada respons muat naik asal yang terikat pada model. Token tempoh audio Wan 3.0 turut terikat pada jenis MIME yang dikesan dan saiz bait muat naik.
Setiap sisi imej Wan 3.0 mesti berukuran 240–8,000 piksel dan setiap sisi video mesti berukuran 240–4,096 piksel; kedua-duanya mesti kekal dalam sempadan nisbah bidang 1:8–8:1. Dalam mod rujukan, video dan audio mempunyai had jumlah 15 saat yang berasingan, dan audio tidak boleh menjadi satu-satunya jenis rujukan.
Rivya mengesahkan tandatangan fail yang dikesan, bukan hanya sambungan nama fail.
Contoh 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-lite" \
-F "client_request_id=asset-123"Contoh 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-lite");
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);Contoh 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-lite",
"client_request_id": "asset-123",
},
timeout=60,
)
uploaded_file = response.json()
print(uploaded_file["id"], uploaded_file["url"])Respons
{
"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,
"width": 1024,
"height": 1024,
"image_dimensions_token": "signed_image_metadata_token",
"video_width": null,
"video_height": null,
"frames_per_second": null,
"video_bitrate_mbps": null,
"video_file_size_bytes": null,
"video_metadata_token": null,
"created_at": "2026-05-11T00:00:00.000Z",
"expires_at": null
}Untuk muat naik video dan audio, duration_seconds mungkin diisi. Apabila model memerlukan pengesahan tempoh, salin duration_token ke dalam parameter penjanaan berkaitan sebagai durationToken.
Bagi muat naik imej yang disokong, width dan height dikesan daripada bait fail. Kelima-lima model Image5, Grok Imagine Image 2.0, dan Wan 3.0 memerlukan image_dimensions_token bertandatangan daripada respons muat naik asal yang terikat pada model; salinnya ke dalam item rujukan sebagai imageDimensionsToken, dan salin size_bytes sebagai sizeBytes. Pengambilan metadata fail kemudian mungkin mengembalikan token itu sebagai null, jadi muat naik semula imej sumber jika token asal tidak tersedia atau telah tamat tempoh.
Bagi muat naik video Video8 dan Wan 3.0 yang disokong, Rivya memeriksa bait MP4 atau MOV dan mengembalikan video_width, video_height, frames_per_second, video_bitrate_mbps, video_file_size_bytes, dan video_metadata_token. Salinnya ke dalam item rujukan sebagai width, height, framesPerSecond, videoBitrateMbps, sizeBytes, dan videoMetadataToken. Token itu terikat pada akaun, model sasaran, URL, jenis MIME, dimensi, kadar bingkai, kadar bit, dan saiz muat naik. Tempoh disahkan secara berasingan melalui durationToken. Pengambilan metadata fail kemudian mungkin mengembalikan video_metadata_token sebagai null; muat naik semula video sumber dan jangan mereka-reka metadata.
Dapatkan metadata fail
Gunakan GET /api/v1/files/{fileId} untuk membaca metadata fail yang dimiliki oleh akaun Rivya yang sama:
curl https://rivya.ai/api/v1/files/file_... \
-H "Authorization: Bearer rvya_sk_..."Respons menggunakan bentuk PublicApiFile yang sama seperti muat naik. Jika fail itu milik akaun lain atau tidak lagi tersedia, API mengembalikan not_found.
Gunakan muat naik dalam parameter penjanaan
Jangan hantar medan files peringkat atas kepada POST /api/v1/generations.
Untuk integrasi baharu, masukkan hasil muat naik melalui params.referenceMediaItems:
{
"model": "nano-banana-2-lite",
"prompt": "Restyle this product photo for a clean editorial catalog page",
"params": {
"referenceMediaItems": [
{
"url": "https://...",
"kind": "image",
"name": "reference.png",
"mimeType": "image/png",
"width": 1024,
"height": 1024,
"sizeBytes": 482314,
"imageDimensionsToken": "image_dimensions_token_from_files_api"
}
]
},
"client_request_id": "order-123-preview"
}Untuk video atau audio:
{
"url": "https://...",
"kind": "video",
"name": "source.mov",
"mimeType": "video/quicktime",
"durationSeconds": 12.4,
"durationToken": "duration_token_from_files_api",
"width": 1920,
"height": 1080,
"framesPerSecond": 30,
"videoBitrateMbps": 8.5,
"sizeBytes": 26214400,
"videoMetadataToken": "video_metadata_token_from_files_api"
}Medan video bertandatangan yang lengkap di atas diperlukan untuk rujukan video Video8 dan Wan 3.0. Rujukan audio Wan 3.0 menggunakan mimeType, sizeBytes, durationSeconds, dan durationToken; rujukan imej menggunakan kontrak metadata imej khusus model yang diterangkan di atas.
Bagi Seedream 5.0 Pro Layer Decomposition, hantar tepat satu imej dan metadata bertandatangan yang dikembalikan oleh muat naik terikat modelnya:
{
"model": "seedream-5-pro-layer-decomposition",
"prompt": "Separate the product, shadow, typography, and background into clean layers",
"params": {
"size": "auto",
"output_format": "png",
"referenceMediaItems": [
{
"url": "https://...",
"kind": "image",
"name": "campaign.tiff",
"mimeType": "image/tiff",
"width": 2048,
"height": 2048,
"sizeBytes": 6291456,
"imageDimensionsToken": "image_dimensions_token_from_files_api"
}
]
}
}Sesetengah parameter model lama masih menggunakan medan URL khusus model. Jika Rujukan API Model mendokumenkan parameter tertentu, ikuti halaman model itu dan jangan mereka-reka medan baharu.
Ralat
Files API menggunakan sampul ralat awam yang sama seperti bahagian Rivya API yang lain:
{
"error": {
"code": "validation_failed",
"message": "The request is invalid.",
"requestId": "req_..."
}
}Kes lazim:
| HTTP | Kod | Punca |
|---|---|---|
| 400 | validation_failed | file tiada, kind tidak disokong, jenis MIME tidak disokong, fail terlalu besar, atau model tidak menerima jenis yang dipilih. |
| 401 | api_key_missing / api_key_invalid | Kunci API Bearer tiada atau tidak sah. |
| 403 | api_scope_denied | Kunci tidak menyertakan files:create atau files:read untuk tindakan yang diminta. |
| 429 | rate_limited | Terlalu banyak muat naik fail dalam minit semasa. |
| 503 | public_api_disabled | Public API dilumpuhkan dalam persekitaran semasa. |
Catatan keselamatan
Jangan simpan kunci API penuh dalam pelayar, klien mudah alih, log, peristiwa analitik, atau tangkapan skrin.
Anggap URL fail yang dimuat naik serta nilai duration_token, image_dimensions_token, dan video_metadata_token sebagai bahan integrasi sementara. Gunakannya hanya untuk membina permintaan penjanaan susulan, dan jangan dedahkannya pada halaman awam.
