Rivya AI ドキュメント

Files API ガイド

MIME チェック、サイズ制限、duration token を使いながら、Rivya API 生成リクエスト向けに画像、動画、音声の参照ファイルをアップロードします。

2026/05/11 最終レビュー

画像、動画、音声入力を必要とするモデル向けに参照メディアをアップロードするには、POST /api/v1/files を使います。

Files API は参照入力専用です。それ自体では生成タスクを作成しません。アップロード後、返された url とメタデータをモデルの params に渡します。通常は params.referenceMediaItems を使います。

エンドポイント

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 キーに files:create スコープが必要で、メタデータを取得するには files:read が必要です。新しく作成された Rivya API キーには、デフォルトで両方のスコープが含まれます。

Multipart フィールド

フィールド必須メモ
filebinaryyesアップロードする画像、動画、音声ファイルです。
kindstringyesimagevideoaudio のいずれかです。
modelstringno公開モデル ID です。指定すると、Rivya はそのモデルがこのファイル種別を受け付けるか検証します。
client_request_idstringnoあなた側のトレース ID です。最大 128 文字です。

ファイルを特定のモデルで使う予定がある場合は model を使ってください。ファイルが受理される前に、モデル固有の MIME とサイズ検証を受けられます。

アップロード制限

Files API は Rivya の参照アップロードと同じポリシーを使います。

デフォルト制限:

種別デフォルト最大サイズ一般的な MIME type
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 を渡し、ユーザーアップロードを受け付ける前に モデル API リファレンス を読んでください。

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 としてコピーしてください。

ファイルメタデータを取得する

同じ Rivya アカウントが所有するファイルのメタデータを読み取るには、GET /api/v1/files/{fileId} を使います。

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

応答はアップロード時と同じ PublicApiFile 形式を使います。ファイルが別のアカウントに属している、または利用できなくなっている場合、API は not_found を返します。

生成 params でアップロードを使う

POST /api/v1/generations にトップレベルの files フィールドを送らないでください。

新しい統合では、アップロード結果を 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 フィールドを使います。モデル API リファレンス が特定のパラメータを文書化している場合は、新しいフィールドを作り出さず、そのモデルページに従ってください。

エラー

Files API は Rivya API の他の部分と同じ公開エラーエンベロープを使います。

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

一般的なケース:

HTTPコード原因
400validation_failedfile の欠落、未対応の kind、未対応の MIME type、ファイルサイズ超過、またはモデルが選択した種別を受け付けない場合です。
401api_key_missing / api_key_invalidBearer API キーが欠落しているか無効です。
403api_scope_deniedキーに、要求された操作に必要な files:create または files:read が含まれていません。
429rate_limited現在の 1 分間にファイルアップロードが多すぎます。
503public_api_disabled現在の環境で Public API が無効化されています。

セキュリティメモ

完全な API キーをブラウザ、モバイルクライアント、ログ、analytics イベント、スクリーンショットに保存しないでください。

アップロードされたファイル URL と duration_token 値は、一時的な統合素材として扱ってください。後続の生成リクエストを組み立てるためにのみ使い、公開ページに露出させないでください。

関連ページ

目次