Rivya AI -dokumentaatio

Rivya TypeScript SDK

Käytä Rivya TypeScript SDK -betaa Public API v1:n kutsumiseen malleille, generoinneille, tiedostoille, krediiteille, webhookeille ja Chatille, mukaan lukien SSE-streamaus.

Viimeksi tarkistettu 2026/05/11

Rivya tarjoaa TypeScript SDK -betan palvelinpuolen Public API -integraatioille.

SDK on ohut asiakas Rivya Public API v1:n päällä. Alemman tason sopimus pysyy sivulla OpenAPI- ja schema-sopimus, ja SDK-metodien täytyy pysyä linjassa tämän scheman kanssa.

Tila

Pakettia ylläpidetään tällä hetkellä tässä repossa yksityisenä betana. Sitä ei julkaista npm:ään ennen kuin paketin nimi, metadata, muutosloki ja julkaisuprosessi on nimenomaisesti hyväksytty.

SDK tukee:

  • mallien listausta
  • asynkronisen generoinnin luontia ja hakemista
  • Files API -latausta ja hakemista
  • krediittisaldon hakemista
  • webhook-endpointtien hallintaa, testitoimituksia, tapahtumien listausta, toimitusten listausta ja salaisuuden kierrätystä
  • webhook-allekirjoituksen vahvistusta
  • ei-streamaavia ja streamaavia Chat completions -kutsuja sekä API:n luomia chat-istuntoja

Chat-streamaus on saatavilla tässä yksityisessä betassa palvelinpuolen SSE-jäsennyksen kautta. Pidä salaiset API-avaimet palvelimellasi.

Asenna tässä repossa

Käytä paikallista pakettilähdettä, kun SDK on betassa:

pnpm --dir packages/rivya-sdk typecheck

Sovelluskoodin tulee pitää salainen API-avain palvelimella:

import { RivyaClient } from "@rivya/sdk";

const rivya = new RivyaClient({
  apiKey: process.env.RIVYA_API_KEY
});

Älä sijoita salaisia API-avaimia selainpaketteihin, localStorageen, analytiikkatapahtumiin, kuvakaappauksiin tai jaettuihin tiketteihin.

Listaa mallit

models.list on julkinen eikä vaadi API-avainta:

const models = await rivya.models.list();

for (const model of models.data) {
  console.log(model.id, model.api_status, model.supported_api_inputs);
}

Luo generointi

Käytä generations.create-metodia asynkroniseen kuva-, video- tai audiogenerointiin:

const generation = await rivya.generations.create(
  {
    model: "z-image",
    prompt: "A clean editorial product image on a soft studio background",
    client_request_id: "order-123-preview"
  },
  {
    idempotencyKey: "order-123-preview"
  }
);

console.log(generation.id, generation.status);

Pollaa sitten generations.retrieve-metodilla:

const current = await rivya.generations.retrieve(generation.id);
console.log(current.status, current.result?.primary_url);

Käytä Idempotency-Key-headeria tuotannon kirjoituspyynnöissä. SDK altistaa sen nimellä idempotencyKey.

Lataa tiedostoja

Käytä files.upload-metodia referenssikuville, videoille tai audiolle:

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

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

const uploaded = await rivya.files.upload({
  file,
  filename: "reference.png",
  kind: "image",
  model: "nano-banana-2",
  client_request_id: "asset-123"
});

console.log(uploaded.id, uploaded.url);

Käytä files.retrieve-metodia ladatun metadatan lukemiseen uudelleen:

const sameFile = await rivya.files.retrieve(uploaded.id);
console.log(sameFile.mime_type, sameFile.duration_token);

Kun käytät tiedostoa generoinnissa, anna palautetut julkiset kentät params.referenceMediaItems-rakenteen kautta:

await rivya.generations.create({
  model: "nano-banana-2",
  prompt: "Restyle this product photo for a clean editorial catalog page",
  params: {
    referenceMediaItems: [
      {
        url: uploaded.url,
        kind: uploaded.kind,
        name: uploaded.file_name,
        mimeType: uploaded.mime_type,
        durationSeconds: uploaded.duration_seconds ?? undefined,
        durationToken: uploaded.duration_token ?? undefined
      }
    ]
  }
});

Tarkista krediitit

const credits = await rivya.credits.retrieve();
console.log(credits.current_credits);

Hallitse webhookeja

Luo webhook-endpoint:

const endpoint = await rivya.webhooks.create({
  name: "Production webhook",
  url: "https://example.com/rivya/webhook",
  event_types: ["generation.succeeded", "generation.failed"]
});

console.log(endpoint.id, endpoint.signing_secret);

signing_secret palautetaan vain luonti- tai kierrätyskutsuissa. Tallenna se palvelimellesi.

Muut webhook-apurit:

await rivya.webhooks.list();
await rivya.webhooks.retrieve(endpoint.id);
await rivya.webhooks.update(endpoint.id, { status: "disabled" });
await rivya.webhooks.test(endpoint.id);
await rivya.webhooks.rotateSecret(endpoint.id);
await rivya.webhooks.deliveries.list(endpoint.id, { limit: 20 });
await rivya.webhookEvents.list({ limit: 20 });

Vahvista toimitusten allekirjoitukset ennen webhook-payloadien luottamista:

import { verifyRivyaWebhookSignature } from "@rivya/sdk";

const ok = await verifyRivyaWebhookSignature({
  rawBody,
  timestamp: request.headers.get("rivya-webhook-timestamp") || "",
  signatureHeader: request.headers.get("rivya-webhook-signature") || "",
  signingSecret: process.env.RIVYA_WEBHOOK_SIGNING_SECRET || ""
});

if (!ok) {
  throw new Error("Invalid Rivya webhook signature");
}

SDK-apuri käyttää samaa HMAC-SHA256-sopimusta, joka on dokumentoitu sivulla API-webhookit.

Chat

Käytä chat.completions.create-metodia yhteen ei-streamaavaan Chat API -vuoroon:

const completion = await rivya.chat.completions.create(
  {
    model: "gpt-5-2-chat",
    message: "Write a concise launch plan for a new product image campaign",
    client_request_id: "chat-001"
  },
  {
    idempotencyKey: "chat-001"
  }
);

console.log(completion.session_id, completion.message.content);

Jatka palautetulla session_id-arvolla:

await rivya.chat.completions.create({
  model: "gpt-5-2-chat",
  session_id: completion.session_id,
  message: "Now turn that into a 5-step execution checklist."
});

Lue API:n luomia istuntoja:

await rivya.chat.sessions.list({ limit: 20 });
await rivya.chat.sessions.retrieve(completion.session_id);

Käytä chat.completions.stream-metodia Server-Sent Events -tapahtumien kuluttamiseen async iteratorina:

const stream = await rivya.chat.completions.stream(
  {
    model: "gpt-5-2-chat",
    message: "Write a concise launch plan for a new product image campaign",
    client_request_id: "chat-stream-001"
  },
  {
    idempotencyKey: "chat-stream-001"
  }
);

for await (const event of stream) {
  if (event.event === "message.delta") {
    process.stdout.write(event.data.delta);
  }

  if (event.event === "message.completed") {
    console.log(event.data.message.id);
  }
}

message.delta on vain näyttämistä varten. Tallennettu tulos on saatavilla message.completed-tapahtuman jälkeen ja voidaan lukea myöhemmin chat.sessions.retrieve-metodilla.

Virheet

SDK heittää RivyaAPIError-virheen ei-2xx Public API -vastauksille:

import { RivyaAPIError } from "@rivya/sdk";

try {
  await rivya.generations.retrieve("task_missing");
} catch (error) {
  if (error instanceof RivyaAPIError) {
    console.log(error.status, error.code, error.requestId);
  }
}

RivyaAPIError sisältää HTTP-statuksen, julkisen virhekoodin, viestin, request id:n kun se on saatavilla sekä turvallisen osajoukon vastausheadereista.

Validointi

Suorita SDK-tarkistukset ennen kuin pidät muutosta valmiina:

pnpm sdk:check
pnpm --dir packages/rivya-sdk typecheck
pnpm content:api-docs

pnpm sdk:check sisältää staattisen sopimustarkistuksen ja verkkoa käyttämättömän runtime-tarkistuksen virheiden jäsennykselle, turvallisille virheheadereille, idempotency-headereille, Bearer authille, julkiselle mallilistaukselle, Chat-streamauksen SSE-jäsennykselle, Chat-streamauksen virhetapahtumille ja webhook-allekirjoituksen vahvistukselle.

Liittyvät sivut

Sisällysluettelo