Rivya AI-dokumentasjon

Files API

Last opp bilde-, video- eller lydreferansefiler for Rivya API-genereringsforespørsler, med MIME-sjekker, størrelsesgrenser og duration tokens.

Sist gjennomgått 2026/08/26

Bruk POST /api/v1/files for å laste opp referansemedier for modeller som trenger bilde-, video- eller lydinput.

Files API er bare for referanseinput. Det oppretter ikke genereringsoppgaver alene. Etter opplasting sender du den returnerte url og metadata inn i modellens params, vanligvis gjennom params.referenceMediaItems.

Endepunkt

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

Påkrevde headers:

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

API-nøkkelen må inkludere scopet files:create for opplasting og files:read for å hente metadata. Nyopprettede Rivya API-nøkler inkluderer begge scopene som standard.

Multipart-felt

FieldTypeRequiredNotater
filebinaryyesBilde-, video- eller lydfilen som skal lastes opp.
kindstringyesEn av image, video eller audio.
modelstringnoOffentlig modell-ID. Når den er med, validerer Rivya at modellen godtar denne filtypen.
client_request_idstringnoDin trace ID, opptil 128 tegn.

Bruk model når filen er ment for en bestemt modell. Dette gir deg modellspesifikk MIME- og størrelsesvalidering før filen godtas.

Opplastingsgrenser

Files API bruker samme opplastingspolicy som Rivya-referanseopplastinger.

Standardgrenser:

KindStandard maks størrelseVanlige MIME-typer
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

Noen modeller har andre grenser. For eksempel tillater utvalgte referansebildemodeller større bilder, og utvalgte videoreferansemodeller tillater filer opp til produktets sikre opplastingsgrense. Send alltid med model når du kjenner målmodellen, og les modell-API-referanse før du godtar brukeropplastinger.

Grensene for signerte bildereferanser omfatter:

ModellMaksimalt antall bilderGrense per bildeGodtatte MIME-typer for bilder
seedream-5-pro1010 MBJPEG, PNG, WebP
seedream-5-pro-layer-decompositionnøyaktig 130 MBJPEG, PNG, WebP, BMP, GIF, TIFF
nano-banana-2-lite1030 MBJPEG, PNG, WebP
qwen-image-3 / qwen-image-3-pro310 MBJPEG, PNG, WebP, BMP, GIF, TIFF
grok-imagine-image-2-0510 MBJPEG, PNG, WebP
wan-3-0-video10 i referansemodus; 1–2 i bildemodus20 MBJPEG, PNG uten gjennomsiktighet, WebP, BMP

Hvert referansebilde for Image5, Grok Imagine Image 2.0 eller Wan 3.0 må lastes opp med den aktuelle målmodellen i model. Behold width, height, size_bytes og image_dimensions_token fra den opprinnelige responsen. Genereringsforespørselen må sende dem som width, height, sizeBytes og imageDimensionsToken. Vilkårlige eksterne bilde-URL-er oppfyller ikke denne modellbundne valideringen.

Layer Decomposition validerer i tillegg de registrerte bildedimensjonene før opplasting: totalt 262 144–36 000 000 piksler og et sideforhold fra 1:16 til 16:1.

Modellspesifikke opplastingsgrenser for Video8 omfatter:

ModellBildeinputVideoinputLydinput
kling-3-turbo1 × 10 MB; JPEG eller PNGgodtas ikkegodtas ikke
seedance-2-miniopptil 9 × 30 MB; JPEG, PNG, WebP, BMP, GIF eller TIFFopptil 3 × 50 MB; MP4 eller MOVopptil 3 × 15 MB; MP3 eller WAV
seedance-2-5opptil 30 × 30 MB; JPEG, PNG, WebP, BMP, GIF eller TIFFopptil 10 × 95 MB; MP4 eller MOVopptil 10 × 15 MB; MP3 eller WAV
minimax-h3opptil 9 × 30 MB; JPEG, PNG eller WebPopptil 3 × 50 MB; MP4 eller MOVopptil 3 × 15 MB; MP3 eller WAV
happyhorse-1-1opptil 9 × 20 MB; JPEG, PNG eller WebPgodtas ikkegodtas ikke
omnihuman-1-51 × 10 MB; JPEG, PNG eller WebPgodtas ikke1 × 10 MB; MP3, M4A, WAV, AAC eller OGG
volcengine-video-lip-syncgodtas ikke1 × 95 MB; MP4 eller MOV1 × 10 MB; MP3, M4A, WAV, AAC eller OGG
wan-3-0-videobilder: 1 påkrevd og 1 valgfritt; referanse: opptil 10 × 20 MB; JPEG, PNG uten gjennomsiktighet, WebP eller BMPreferanse: opptil 5 × 95 MB; MP4 eller MOV; 1–15 sekunder hver og totalt 15 sekunderreferanse: opptil 5 × 15 MB; MP3 eller WAV; 1–15 sekunder hver og totalt 15 sekunder; godtas ikke alene

Dette er Rivyas godtatte opplastingsgrenser, som kan være lavere enn grensene til en oppstrømstjeneste. Last opp hver Video8- eller Wan 3.0-referanse med den aktuelle målmodellen i model. Referansevideoer krever både det signerte varighetsbeviset og de signerte videometadataene fra den opprinnelige modellbundne opplastingsresponsen. Varighetstoken for Wan 3.0-lyd binder også den registrerte MIME-typen og opplastingens byte-størrelse.

Wan 3.0-bilder må være 240–8 000 piksler per side, og videoer må være 240–4 096 piksler per side; begge må holde seg innenfor sideforholdet 1:8–8:1. I referansemodus har video og lyd separate totalgrenser på 15 sekunder, og lyd kan ikke være den eneste referansetypen.

Rivya validerer den oppdagede filsignaturen, ikke bare filnavnendelsen.

curl-eksempel

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-eksempel

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-eksempel

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
}

For video- og lydopplastinger kan duration_seconds fylles ut. Når en modell krever varighetsverifisering, kopierer du duration_token inn i den relaterte genereringsparameteren som durationToken.

For støttede bildeopplastinger registreres width og height fra selve filbyteinnholdet. Alle de fem Image5-modellene, Grok Imagine Image 2.0 og Wan 3.0 krever den signerte image_dimensions_token fra den opprinnelige modellbundne opplastingsresponsen. Kopier den til referanseoppføringen som imageDimensionsToken, og kopier size_bytes som sizeBytes. Et senere kall for å hente filmetadata kan returnere tokenet som null; last derfor opp kildebildet på nytt hvis det opprinnelige tokenet ikke er tilgjengelig eller har utløpt.

For støttede Video8- og Wan 3.0-videoopplastinger undersøker Rivya MP4- eller MOV-byteinnholdet og returnerer video_width, video_height, frames_per_second, video_bitrate_mbps, video_file_size_bytes og video_metadata_token. Kopier dem til referanseoppføringen som width, height, framesPerSecond, videoBitrateMbps, sizeBytes og videoMetadataToken. Tokenet er bundet til kontoen, målmodellen, URL-en, MIME-typen, dimensjonene, bildefrekvensen, bithastigheten og opplastingsstørrelsen. Varigheten verifiseres separat med durationToken. Et senere kall for å hente filmetadata kan returnere video_metadata_token som null; last opp kildevideoen på nytt i stedet for å finne på metadata.

Hent filmetadata

Bruk GET /api/v1/files/{fileId} for å lese metadata for en fil som eies av samme Rivya-konto:

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

Responsen bruker samme PublicApiFile-form som opplasting. Hvis filen tilhører en annen konto eller ikke lenger er tilgjengelig, returnerer API-et not_found.

Bruk opplastingen i genereringsparams

Ikke send et toppnivåfelt kalt files til POST /api/v1/generations.

For nye integrasjoner sender du opplastingsresultatet gjennom 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"
}

For video eller lyd:

{
  "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"
}

Alle de signerte videofeltene ovenfor er påkrevd for Video8- og Wan 3.0-videoreferanser. Wan 3.0-lydreferanser bruker mimeType, sizeBytes, durationSeconds og durationToken; bildereferanser bruker den modellspesifikke bildemetadatakontrakten som er beskrevet ovenfor.

For Seedream 5.0 Pro Layer Decomposition sender du nøyaktig ett bilde og de signerte metadataene som ble returnert av den modellbundne opplastingen:

{
  "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"
      }
    ]
  }
}

Noen eldre modellparametere bruker fortsatt modellspesifikke URL-felt. Hvis modell-API-referanse dokumenterer en bestemt parameter, følg den modellsiden i stedet for å finne opp et nytt felt.

Feil

Files API bruker samme offentlige feilkonvolutt som resten av Rivya API:

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

Vanlige tilfeller:

HTTPCodeÅrsak
400validation_failedManglende file, ikke-støttet kind, ikke-støttet MIME-type, for stor fil eller modellen godtar ikke valgt type.
401api_key_missing / api_key_invalidManglende eller ugyldig Bearer API-nøkkel.
403api_scope_deniedNøkkelen inkluderer ikke files:create eller files:read for den forespurte handlingen.
429rate_limitedFor mange filopplastinger i det nåværende minuttet.
503public_api_disabledDen offentlige API-en er deaktivert i det nåværende miljøet.

Sikkerhetsnotater

Ikke lagre fullstendige API-nøkler i nettlesere, mobilklienter, logger, analytics-hendelser eller skjermbilder.

Behandle opplastede fil-URL-er, duration_token-, image_dimensions_token- og video_metadata_token-verdier som midlertidig integrasjonsmateriale. Bruk dem bare til å bygge den påfølgende genereringsforespørselen, og ikke eksponer dem på offentlige sider.

Relaterte sider