Fil-API
Ladda upp bild-, video- eller ljudreferensfiler för Rivya API-genereringsbegäranden, med MIME-kontroller, storleksgränser och varaktighetstoken.
Senast granskad 2026/08/26
Använd POST /api/v1/files för att ladda upp referensmedia för modeller som behöver bild-, video- eller ljudinput.
Files API är endast för referensindata. Det skapar inte genereringsuppgifter på egen hand. Efter uppladdning skickar du vidare den returnerade url och metadata till modellens params, oftast via params.referenceMediaItems.
API-rutt
POST https://rivya.ai/api/v1/files
GET https://rivya.ai/api/v1/files/{fileId}Nödvändiga headers:
Authorization: Bearer rvya_sk_...
Content-Type: multipart/form-dataAPI-nyckeln måste ha behörigheten files:create för uppladdning och files:read för att hämta metadata. Nya Rivya API-nycklar innehåller båda behörigheterna som standard.
Multipartfält
| Fält | Typ | Krävs | Anteckningar |
|---|---|---|---|
file | binary | ja | Bild-, video- eller ljudfilen som ska laddas upp. |
kind | string | ja | En av image, video eller audio. |
model | string | nej | Offentligt modell-ID. När det finns validerar Rivya att modellen accepterar den här filtypen. |
client_request_id | string | nej | Ditt trace-ID, upp till 128 tecken. |
Använd model när filen är avsedd för en specifik modell. Då får du modellspecifik MIME- och storleksvalidering innan filen accepteras.
Uppladdningsgränser
Files API använder samma uppladdningspolicy som Rivyas referensuppladdningar.
Standardgränser:
| Typ | Standard maxstorlek | Vanliga MIME-typer |
|---|---|---|
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 |
Vissa modeller har andra gränser. Exempelvis tillåter vissa referensbildmodeller större bilder, och vissa videoreferensmodeller tillåter filer upp till produktens säkra uppladdningstak. Skicka alltid model när du vet målmodellen, och läs modellreferensen för API innan du accepterar användaruppladdningar.
Gränser för signerade bildreferenser omfattar:
| Modell | Maximalt antal bilder | Gräns per bild | Godkända MIME-typer för bilder |
|---|---|---|---|
seedream-5-pro | 10 | 10 MB | JPEG, PNG, WebP |
seedream-5-pro-layer-decomposition | exakt 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 i referensläge; 1–2 i bildruteläge | 20 MB | JPEG, PNG utan genomskinlighet, WebP, BMP |
Varje referensbild för Image5, Grok Imagine Image 2.0 eller Wan 3.0 måste laddas upp med sin målmodell i model. Behåll originalsvarets width, height, size_bytes och image_dimensions_token; genereringsbegäran måste skicka dem som width, height, sizeBytes och imageDimensionsToken. Godtyckliga externa bild-URL:er uppfyller inte den här modellbundna valideringen.
Lageruppdelning validerar dessutom de detekterade bildmåtten före uppladdning: totalt 262,144–36,000,000 pixlar och ett bildförhållande från 1:16 till 16:1.
Modellspecifika uppladdningsgränser för Video8 omfattar:
| Modell | Bildindata | Videoindata | Ljudindata |
|---|---|---|---|
kling-3-turbo | 1 × 10 MB; JPEG eller PNG | accepteras inte | accepteras inte |
seedance-2-mini | upp till 9 × 30 MB; JPEG, PNG, WebP, BMP, GIF eller TIFF | upp till 3 × 50 MB; MP4 eller MOV | upp till 3 × 15 MB; MP3 eller WAV |
seedance-2-5 | upp till 30 × 30 MB; JPEG, PNG, WebP, BMP, GIF eller TIFF | upp till 10 × 95 MB; MP4 eller MOV | upp till 10 × 15 MB; MP3 eller WAV |
minimax-h3 | upp till 9 × 30 MB; JPEG, PNG eller WebP | upp till 3 × 50 MB; MP4 eller MOV | upp till 3 × 15 MB; MP3 eller WAV |
happyhorse-1-1 | upp till 9 × 20 MB; JPEG, PNG eller WebP | accepteras inte | accepteras inte |
omnihuman-1-5 | 1 × 10 MB; JPEG, PNG eller WebP | accepteras inte | 1 × 10 MB; MP3, M4A, WAV, AAC eller OGG |
volcengine-video-lip-sync | accepteras inte | 1 × 95 MB; MP4 eller MOV | 1 × 10 MB; MP3, M4A, WAV, AAC eller OGG |
wan-3-0-video | bildrutor: 1 obligatorisk och 1 valfri; referens: upp till 10 × 20 MB; JPEG, PNG utan genomskinlighet, WebP eller BMP | referens: upp till 5 × 95 MB; MP4 eller MOV; 1–15 sekunder vardera och totalt 15 sekunder | referens: upp till 5 × 15 MB; MP3 eller WAV; 1–15 sekunder vardera och totalt 15 sekunder; accepteras inte som enda referens |
Det här är Rivyas godkända uppladdningstak, som kan vara lägre än en uppströmstjänsts gräns. Ladda upp varje Video8- eller Wan 3.0-referens med sin målmodell i model. Referensvideor kräver både det signerade varaktighetsbeviset och den signerade videometadatan från det ursprungliga modellbundna uppladdningssvaret. Varaktighetstoken för Wan 3.0-ljud binder även den detekterade MIME-typen och uppladdningens byte-storlek.
Wan 3.0-bilder måste vara 240–8 000 pixlar per sida och videor 240–4 096 pixlar per sida; båda måste hålla sig inom bildförhållandet 1:8–8:1. I referensläge har video och ljud separata sammanlagda gränser på 15 sekunder, och ljud får inte vara den enda referenstypen.
Rivya validerar den detekterade filsignaturen, inte bara filnamnsändelsen.
curl-exempel
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"JavaScript-exempel
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);Python-exempel
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"])Svar
{
"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
}För video- och ljuduppladdningar kan duration_seconds fyllas i. När en modell kräver durationsverifiering kopierar du duration_token till den relaterade genereringsparametern som durationToken.
För bildformat som stöds detekteras width och height från filens byteinnehåll. Samtliga fem Image5-modeller, Grok Imagine Image 2.0 och Wan 3.0 kräver det signerade image_dimensions_token från det ursprungliga modellbundna uppladdningssvaret; kopiera det till referensposten som imageDimensionsToken och kopiera size_bytes som sizeBytes. En senare hämtning av filmetadata kan returnera token som null, så ladda upp källbilden igen om originaltoken saknas eller har gått ut.
För Video8- och Wan 3.0-videouppladdningar som stöds granskar Rivya MP4- eller MOV-innehållet och returnerar video_width, video_height, frames_per_second, video_bitrate_mbps, video_file_size_bytes och video_metadata_token. Kopiera dem till referensposten som width, height, framesPerSecond, videoBitrateMbps, sizeBytes och videoMetadataToken. Token är bunden till kontot, målmodellen, URL:en, MIME-typen, måtten, bildfrekvensen, bithastigheten och uppladdningsstorleken. Varaktigheten verifieras separat med durationToken. En senare hämtning av filmetadata kan returnera video_metadata_token som null; ladda upp källvideon igen i stället för att hitta på metadata.
Hämta filmetadata
Använd GET /api/v1/files/{fileId} för att läsa metadata för en fil som ägs av samma Rivya-konto:
curl https://rivya.ai/api/v1/files/file_... \
-H "Authorization: Bearer rvya_sk_..."Svaret använder samma PublicApiFile-form som uppladdning. Om filen tillhör ett annat konto eller inte längre är tillgänglig returnerar API:et not_found.
Använd uppladdningen i genereringsparams
Skicka inte ett toppnivåfält files till POST /api/v1/generations.
För nya integrationer skickar du uppladdningsresultatet via 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"
}För video eller ljud:
{
"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"
}De fullständiga signerade videofälten ovan krävs för Video8- och Wan 3.0-videoreferenser. Wan 3.0-ljudreferenser använder mimeType, sizeBytes, durationSeconds och durationToken; bildreferenser använder det modellspecifika bildmetadatakontrakt som beskrivs ovan.
För Seedream 5.0 Pro Layer Decomposition ska du skicka exakt en bild och den signerade metadatan som returnerades av dess modellbundna uppladdning:
{
"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"
}
]
}
}Vissa äldre modellparametrar använder fortfarande modellspecifika URL-fält. Om modellreferensen för API dokumenterar en specifik parameter, följ den modellsidan i stället för att hitta på ett nytt fält.
Fel
Files API använder samma offentliga felkuvert som resten av Rivya API:
{
"error": {
"code": "validation_failed",
"message": "The request is invalid.",
"requestId": "req_..."
}
}Vanliga fall:
| HTTP | Code | Orsak |
|---|---|---|
| 400 | validation_failed | file saknas, kind stöds inte, MIME-typen stöds inte, filen är för stor eller modellen accepterar inte den valda typen. |
| 401 | api_key_missing / api_key_invalid | Bearer API-nyckel saknas eller är ogiltig. |
| 403 | api_scope_denied | Nyckeln innehåller inte files:create eller files:read för den begärda åtgärden. |
| 429 | rate_limited | För många filuppladdningar under den aktuella minuten. |
| 503 | public_api_disabled | Public API är inaktiverat i den aktuella miljön. |
Säkerhetsnoteringar
Lagra inte fullständiga API-nycklar i webbläsare, mobilklienter, loggar, analys-events eller skärmbilder.
Behandla uppladdade fil-URL:er samt värden för duration_token, image_dimensions_token och video_metadata_token som tillfälligt integrationsmaterial. Använd dem endast för att bygga den efterföljande genereringsbegäran och exponera dem inte på offentliga sidor.
