Rivya AI-dokumentation

Skapa generation

Skicka asynkrona Rivya API-genereringsjobb med model, prompt, params, Idempotency-Key och offentliga svarsfält.

Senast granskad 2026/08/25

Använd POST /api/v1/generations för att skicka ett asynkront bild-, video- eller ljudgenereringsjobb.

För chattmodeller, använd Chat API. POST /api/v1/generations skapar inte chattsessioner eller assistentmeddelanden.

API-rutt

POST https://rivya.ai/api/v1/generations

Nödvändiga headers:

Authorization: Bearer rvya_sk_...
Content-Type: application/json

Rekommenderad header:

Idempotency-Key: your-unique-request-key

Request body

{
  "model": "z-image",
  "prompt": "A clean editorial product image on a soft studio background",
  "params": {
    "aspect_ratio": "1:1"
  },
  "client_request_id": "order-123-preview"
}

Fält:

  • model: obligatoriskt offentligt modell-ID

  • prompt: prompttext, krävs av många modeller

  • params: modellspecifikt parameterobjekt

  • client_request_id: valfritt trace-ID från ditt system

Läs modellreferensen för API för modellspecifika params.

Referensfiler i params

För modeller som accepterar uppladdad referensmedia, anropa först Files API. Skicka sedan uppladdningsresultatet via modellens params; lägg inte till ett toppnivåfält files i genereringsbegäran.

Använd params.referenceMediaItems för nya integrationer:

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

För ljud- eller videoinput som kräver durationsverifiering, inkludera duration_token som returneras av /api/v1/files som durationToken på den relaterade referenceMediaItems-posten.

Varje Image5-referensbild kräver width, height, size_bytes och image_dimensions_token från det ursprungliga modellbundna Files API-svaret, skickade som width, height, sizeBytes och imageDimensionsToken. En token som saknas, har gått ut, inte stämmer eller har hittats på av klienten leder till fel före uppgiftsskapande och kreditreservation. Layer Decomposition kräver dessutom exakt en bild inom de dokumenterade geometrigränserna.

Grok Imagine Image 2.0 använder samma gräns för signerad bildmetadata. Skicka inga referensposter för text-till-bild; för vanlig bildredigering skickar du 1–5 unika signerade JPEG-, PNG- eller WebP-poster. Text-till-bild accepterar 1:1, 2:3, 3:2, 16:9 eller 9:16; bildredigering accepterar dessutom auto. Segment Map och Segment Edit kan inte anropas som Public API-lägen.

Varje Video8-referensvideo kräver det ursprungliga modellbundna svarets duration_seconds, duration_token, video_width, video_height, frames_per_second, video_bitrate_mbps, video_file_size_bytes och video_metadata_token. Skicka dem som durationSeconds, durationToken, width, height, framesPerSecond, videoBitrateMbps, sizeBytes och videoMetadataToken. Båda de signerade tokenvärdena verifieras före uppgiftsskapande och kreditreservation.

Wan 3.0 använder tre ömsesidigt uteslutande värden för seedance_scene. text accepterar inga uppladdade medier; frames kräver en första bild och tillåter en valfri sista bild; reference accepterar ett signerat paket med bilder, videor och ljud, men ljud får inte vara det enda mediet. Alla referens-URL:er måste komma från ursprungliga modellbundna uppladdningar i Files API. Genvägar från fil till video och från länk till video förblir otillgängliga.

Ange variant som standard eller prime, resolution som 480P, 720P eller 1080P och aspect_ratio som adaptive, 16:9, 4:3, 1:1, 3:4 eller 9:16. duration accepterar heltal från 2 till 30 eller -1 för intelligent varaktighet; audio styr modellskapat ljud och seed accepterar 0 till 2147483647. Den trimmade prompten måste innehålla 1–20 000 tecken.

Wan 3.0 Standard reserverar 8, 16 eller 32 krediter per begärd utmatningssekund vid 480P, 720P eller 1080P. Prime reserverar 12,2, 25,2 eller 50,4 krediter per sekund. Rivya avrundar den kombinerade reservationen uppåt en gång; intelligent varaktighet reserverar 30 sekunder. Giltig faktisk användning som inte överstiger reservationen regleras och mellanskillnaden återbetalas. Om den faktiska användningen saknas, är ogiltig eller högre behålls reservationen och går till avstämning utan dold extra debitering.

I Wan 3.0-referensläge skickar du högst 10 bilder, 5 videor och 5 ljudklipp. Video- och ljudklipp får vardera vara 1–15 sekunder, och varje typ har en separat sammanlagd gräns på 15 sekunder. duration=-1 kan inte användas med referensvideo; med videoindata får verifierade sekunder för indatavideon plus begärda utmatningssekunder inte överstiga 30.

Exempel på en Video8-begäran för en läppsynkroniseringsuppgift med video och ljud:

{
  "model": "volcengine-video-lip-sync",
  "prompt": "",
  "params": {
    "mode": "lite",
    "separate_vocal": "false",
    "open_scenedet": "false",
    "referenceMediaItems": [
      {
        "url": "https://.../source.mov",
        "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"
      },
      {
        "url": "https://.../dialogue.wav",
        "kind": "audio",
        "name": "dialogue.wav",
        "mimeType": "audio/wav",
        "durationSeconds": 12.4,
        "durationToken": "audio_duration_token_from_files_api"
      }
    ]
  }
}

curl-exempel

curl https://rivya.ai/api/v1/generations \
  -H "Authorization: Bearer rvya_sk_..." \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: product-preview-001" \
  -d '{
    "model": "z-image",
    "prompt": "A clean editorial product image on a soft studio background",
    "params": {
      "aspect_ratio": "1:1"
    }
  }'

JavaScript-exempel

const response = await fetch("https://rivya.ai/api/v1/generations", {
  method: "POST",
  headers: {
    Authorization: `Bearer ${process.env.RIVYA_API_KEY}`,
    "Content-Type": "application/json",
    "Idempotency-Key": "product-preview-001"
  },
  body: JSON.stringify({
    model: "z-image",
    prompt: "A clean editorial product image on a soft studio background",
    params: { aspect_ratio: "1:1" }
  })
});

const generation = await response.json();
console.log(generation.id, generation.status);

Python-exempel

import os
import requests

response = requests.post(
    "https://rivya.ai/api/v1/generations",
    headers={
        "Authorization": f"Bearer {os.environ['RIVYA_API_KEY']}",
        "Content-Type": "application/json",
        "Idempotency-Key": "product-preview-001",
    },
    json={
        "model": "z-image",
        "prompt": "A clean editorial product image on a soft studio background",
        "params": {"aspect_ratio": "1:1"},
    },
    timeout=30,
)

generation = response.json()
print(generation["id"], generation["status"])

Svar

{
  "id": "task_public_id",
  "status": "queued",
  "model": "z-image",
  "reserved_credits": 1,
  "final_credits": 0,
  "created_at": "2026-05-10T00:00:00.000Z",
  "updated_at": "2026-05-10T00:00:00.000Z",
  "result": null,
  "error": null
}

Spara id och polla genereringsstatus. Om du konfigurerar API-webhooks kan Rivya också skicka en signerad generation.succeeded- eller generation.failed-händelse när uppgiften når ett terminalt tillstånd.

Idempotens

Använd Idempotency-Key för retries. Om samma nyckel och samma request body spelas upp igen kan Rivya returnera det sparade offentliga svaret i stället för att skapa en duplicerad uppgift.

Om samma nyckel återanvänds med annan indata returnerar API:et idempotency_conflict.

Relaterade sidor