Rivya AI Docs

Files API

Завантажуйте зображення, відео або аудіо як референс-файли для запитів генерації Rivya API з MIME-перевірками, лімітами розміру та duration tokens.

Востаннє переглянуто 2026/05/11

Використовуйте POST /api/v1/files, щоб завантажувати референс-медіа для моделей, яким потрібні зображення, відео або аудіо на вході.

Files API призначений лише для референс-вхідних даних. Він сам по собі не створює задачі генерації. Після завантаження передайте повернений url і метадані в params моделі, зазвичай через params.referenceMediaItems.

Endpoint

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

Обов'язкові заголовки:

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

Для завантаження API-ключ має містити scope files:create, а для читання метаданих потрібен files:read. Нові Rivya API-ключі за замовчуванням містять обидва scope.

Multipart-поля

ПолеТипОбов'язковоНотатки
filebinaryтакФайл зображення, відео або аудіо для завантаження.
kindstringтакОдне зі значень image, video або audio.
modelstringніПублічний ID моделі. Якщо передано, Rivya перевіряє, що модель приймає цей тип файлу.
client_request_idstringніВаш trace ID, до 128 символів.

Використовуйте model, коли файл призначений для конкретної моделі. Так ви отримаєте перевірку MIME та розміру з урахуванням моделі ще до прийняття файлу.

Ліміти завантаження

Files API використовує ту саму політику завантаження, що й референс-завантаження Rivya.

Стандартні ліміти:

ТипСтандартний максимальний розмірПоширені MIME types
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

Деякі моделі мають інші ліміти. Наприклад, окремі моделі для референс-зображень дозволяють більші зображення, а окремі моделі з відеореференсами дозволяють файли до безпечної граничної межі завантаження продукту. Завжди передавайте model, коли знаєте цільову модель, і прочитайте Model API Reference, перш ніж приймати користувацькі завантаження.

Rivya перевіряє виявлений підпис файлу, а не лише розширення імені файлу.

Приклад 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" \
  -F "client_request_id=asset-123"

Приклад 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");
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

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",
            "client_request_id": "asset-123",
        },
        timeout=60,
    )

uploaded_file = response.json()
print(uploaded_file["id"], uploaded_file["url"])

Відповідь

{
  "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,
  "created_at": "2026-05-11T00:00:00.000Z",
  "expires_at": null
}

Для відео й аудіозавантажень може заповнюватися duration_seconds. Коли модель потребує перевірки тривалості, скопіюйте duration_token у пов'язаний параметр генерації як durationToken.

Отримання метаданих файлу

Використовуйте GET /api/v1/files/{fileId}, щоб прочитати метадані файлу, який належить тому самому акаунту Rivya:

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

Відповідь використовує ту саму структуру PublicApiFile, що й завантаження. Якщо файл належить іншому акаунту або вже недоступний, API повертає not_found.

Використання завантаження в params генерації

Не надсилайте поле верхнього рівня files до POST /api/v1/generations.

Для нових інтеграцій передавайте результат завантаження через params.referenceMediaItems:

{
  "model": "nano-banana-2",
  "prompt": "Restyle this product photo for a clean editorial catalog page",
  "params": {
    "referenceMediaItems": [
      {
        "url": "https://...",
        "kind": "image",
        "name": "reference.png",
        "mimeType": "image/png"
      }
    ]
  },
  "client_request_id": "order-123-preview"
}

Для відео або аудіо:

{
  "url": "https://...",
  "kind": "video",
  "name": "source.mov",
  "mimeType": "video/quicktime",
  "durationSeconds": 12.4,
  "durationToken": "duration_token_from_files_api"
}

Деякі старіші параметри моделей досі використовують специфічні для моделі URL-поля. Якщо Model API Reference документує конкретний параметр, дотримуйтеся цієї сторінки моделі, а не вигадуйте нове поле.

Помилки

Files API використовує ту саму публічну обгортку помилки, що й решта Rivya API:

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

Поширені випадки:

HTTPКодПричина
400validation_failedВідсутній file, непідтримуваний kind, непідтримуваний MIME-тип, файл завеликий або модель не приймає вибраний тип.
401api_key_missing / api_key_invalidВідсутній або невалідний Bearer API key.
403api_scope_deniedКлюч не містить files:create або files:read для запитаної дії.
429rate_limitedЗабагато завантажень файлів у поточній хвилині.
503public_api_disabledPublic API вимкнено в поточному середовищі.

Нотатки з безпеки

Не зберігайте повні API-ключі у браузерах, мобільних клієнтах, журналах, аналітичних подіях або скриншотах.

Сприймайте URL завантажених файлів і значення duration_token як тимчасові інтеграційні матеріали. Використовуйте їх лише для побудови наступного запиту генерації й не показуйте їх на публічних сторінках.

Пов'язані сторінки

Зміст