Rivya AI ডকস

ফাইল API নির্দেশিকা

MIME যাচাই, আকারের সীমা ও সময়কালের টোকেনসহ Rivya API-র তৈরির অনুরোধের জন্য ছবি, ভিডিও বা অডিওর রেফারেন্স ফাইল আপলোড করুন।

শেষ পর্যালোচনা 2026/08/26

ছবি, ভিডিও বা অডিও ইনপুট দরকার এমন মডেলের রেফারেন্স মাধ্যম আপলোড করতে POST /api/v1/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 কীতে পূর্বনির্ধারিতভাবে উভয় অনুমতিই থাকে।

মাল্টিপার্ট ফিল্ড

ক্ষেত্রধরনআবশ্যিকনোট
fileবাইনারিহ্যাঁআপলোডের ছবি, ভিডিও বা শব্দের ফাইল।
kindস্ট্রিংহ্যাঁimage, video বা audio-এর একটি।
modelস্ট্রিংনাপ্রকাশ্য মডেল পরিচয়। থাকলে Rivya যাচাই করে মডেলটি এই ধরনের ফাইল গ্রহণ করে কি না।
client_request_idস্ট্রিংনাআপনার অনুসরণ পরিচয়, সর্বোচ্চ 128 অক্ষর।

ফাইলটি নির্দিষ্ট মডেলের জন্য হলে model ব্যবহার করুন। এতে ফাইল গৃহীত হওয়ার আগে মডেলভিত্তিক MIME ও আকার যাচাই হবে।

আপলোডের সীমা

ফাইল API Rivya-র রেফারেন্স আপলোডের একই নীতি ব্যবহার করে।

পূর্বনির্ধারিত সীমা:

ধরনপূর্বনির্ধারিত সর্বোচ্চ আকারসাধারণ MIME ধরন
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 রেফারেন্স পড়ুন।

স্বাক্ষরিত ছবি-রেফারেন্সের সীমার মধ্যে রয়েছে:

মডেলসর্বোচ্চ ছবির সংখ্যাপ্রতি ছবির সীমাগ্রহণযোগ্য ছবির MIME ধরন
seedream-5-pro1010 MBJPEG, PNG, WebP
seedream-5-pro-layer-decompositionঠিক 1টি30 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-videoরেফারেন্স পদ্ধতিতে 10টি; ফ্রেম পদ্ধতিতে 1–2টি20 MBJPEG, স্বচ্ছতাবিহীন PNG, WebP, BMP

প্রতিটি Image5, Grok Imagine Image 2.0 বা Wan 3.0 রেফারেন্স ছবি তার লক্ষ্য model দিয়ে আপলোড করতে হবে। মূল প্রতিক্রিয়ার width, height, size_bytesimage_dimensions_token সংরক্ষণ করুন; তৈরির অনুরোধে এগুলো যথাক্রমে width, height, sizeBytesimageDimensionsToken হিসেবে পাঠাতে হবে। বাইরের কোনো ছবির URL এই মডেল-নির্ভর যাচাই পূরণ করে না।

Layer Decomposition আপলোডের আগে শনাক্ত করা ছবির মাপও যাচাই করে: মোট 262,144–36,000,000 পিক্সেল এবং 1:16 থেকে 16:1 পর্যন্ত অনুপাত।

Video8 মডেলের নির্দিষ্ট আপলোড সীমার মধ্যে রয়েছে:

মডেলছবির ইনপুটভিডিওর ইনপুটশব্দের ইনপুট
kling-3-turbo1 × 10 MB; JPEG বা PNGগ্রহণ করা হয় নাগ্রহণ করা হয় না
seedance-2-miniসর্বোচ্চ 9 × 30 MB; JPEG, PNG, WebP, BMP, GIF বা TIFFসর্বোচ্চ 3 × 50 MB; MP4 বা MOVসর্বোচ্চ 3 × 15 MB; MP3 বা WAV
seedance-2-5সর্বোচ্চ 30 × 30 MB; JPEG, PNG, WebP, BMP, GIF বা TIFFসর্বোচ্চ 10 × 95 MB; MP4 বা MOVসর্বোচ্চ 10 × 15 MB; MP3 বা WAV
minimax-h3সর্বোচ্চ 9 × 30 MB; JPEG, PNG বা WebPসর্বোচ্চ 3 × 50 MB; MP4 বা MOVসর্বোচ্চ 3 × 15 MB; MP3 বা WAV
happyhorse-1-1সর্বোচ্চ 9 × 20 MB; JPEG, PNG বা WebPগ্রহণ করা হয় নাগ্রহণ করা হয় না
omnihuman-1-51 × 10 MB; JPEG, PNG বা WebPগ্রহণ করা হয় না1 × 10 MB; MP3, M4A, WAV, AAC বা OGG
volcengine-video-lip-syncগ্রহণ করা হয় না1 × 95 MB; MP4 বা MOV1 × 10 MB; MP3, M4A, WAV, AAC বা OGG
wan-3-0-videoফ্রেম: 1টি আবশ্যিক ও 1টি ঐচ্ছিক; রেফারেন্স: সর্বোচ্চ 10 × 20 MB; JPEG, স্বচ্ছতাবিহীন PNG, WebP বা BMPরেফারেন্স: সর্বোচ্চ 5 × 95 MB; MP4 বা MOV; প্রতিটি 1–15 সেকেন্ড এবং মোট 15 সেকেন্ডরেফারেন্স: সর্বোচ্চ 5 × 15 MB; MP3 বা WAV; প্রতিটি 1–15 সেকেন্ড এবং মোট 15 সেকেন্ড; একমাত্র রেফারেন্স হিসেবে গ্রহণ করা হয় না

এগুলো Rivya-র গ্রহণযোগ্য আপলোডের সর্বোচ্চ সীমা, যা উজানের সেবার সীমার চেয়ে কম হতে পারে। প্রতিটি Video8 বা Wan 3.0 রেফারেন্স তার লক্ষ্য model দিয়ে আপলোড করুন। রেফারেন্স ভিডিওর জন্য মডেলের সঙ্গে বাঁধা মূল আপলোড প্রতিক্রিয়ার স্বাক্ষরিত সময়কালের প্রমাণ ও স্বাক্ষরিত ভিডিও মেটাডেটা—দুটিই প্রয়োজন। Wan 3.0 শব্দের সময়কাল টোকেনে শনাক্ত করা MIME ধরন ও আপলোডের বাইট আকারও বাঁধা থাকে।

Wan 3.0 ছবির প্রতিটি পাশ 240–8,000 পিক্সেল এবং ভিডিওর প্রতিটি পাশ 240–4,096 পিক্সেল হতে হবে; উভয়ের অনুপাত 1:8–8:1 সীমার মধ্যে থাকতে হবে। রেফারেন্স পদ্ধতিতে ভিডিও ও শব্দের জন্য আলাদা 15 সেকেন্ডের মোট সীমা আছে এবং শব্দ একমাত্র রেফারেন্সের ধরন হতে পারে না।

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-lite" \
  -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-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 উদাহরণ

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"])

উত্তর

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

ভিডিও ও অডিও আপলোডে duration_seconds পূরণ হয়ে আসতে পারে। মডেলে সময়কাল যাচাই প্রয়োজন হলে সংশ্লিষ্ট তৈরির প্যারামিটারে duration_token-এর মান durationToken হিসেবে পাঠান।

সমর্থিত ছবি আপলোডে ফাইলের বাইট থেকে widthheight শনাক্ত করা হয়। পাঁচটি Image5 মডেল, Grok Imagine Image 2.0 এবং Wan 3.0-এর প্রতিটির জন্য লক্ষ্য মডেলের সঙ্গে বাঁধা মূল আপলোড প্রতিক্রিয়ার স্বাক্ষরিত image_dimensions_token প্রয়োজন। রেফারেন্সের উপাদানে এটি imageDimensionsToken হিসেবে এবং size_bytes-এর মান sizeBytes হিসেবে পাঠান। পরে ফাইলের মেটাডেটা নিলে টোকেনটি null হতে পারে; মূল টোকেন না পাওয়া গেলে বা মেয়াদ শেষ হলে উৎস ছবিটি আবার আপলোড করুন।

সমর্থিত Video8 ও Wan 3.0 ভিডিও আপলোডে Rivya MP4 বা MOV বাইট যাচাই করে video_width, video_height, frames_per_second, video_bitrate_mbps, video_file_size_bytesvideo_metadata_token ফেরত দেয়। রেফারেন্সের উপাদানে এগুলো যথাক্রমে width, height, framesPerSecond, videoBitrateMbps, sizeBytesvideoMetadataToken হিসেবে পাঠান। টোকেনটি অ্যাকাউন্ট, লক্ষ্য মডেল, URL, MIME ধরন, মাপ, ফ্রেমের হার, বিটরেট ও আপলোডের আকারের সঙ্গে বাঁধা থাকে। সময়কাল আলাদাভাবে durationToken দিয়ে যাচাই হয়। পরে ফাইলের মেটাডেটা নিলে video_metadata_token-এর মান null হতে পারে; মেটাডেটা নিজে বানিয়ে না দিয়ে উৎস ভিডিওটি আবার আপলোড করুন।

ফাইলের মেটাডেটা নিন

একই Rivya অ্যাকাউন্টের নিজস্ব ফাইলের মেটাডেটা দেখতে GET /api/v1/files/{fileId} ব্যবহার করুন:

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

প্রতিক্রিয়াটি আপলোড প্রতিক্রিয়ার মতো একই PublicApiFile গঠন ব্যবহার করে। ফাইলটি অন্য অ্যাকাউন্টের হলে বা আর পাওয়া না গেলে API not_found ফেরত দেয়।

তৈরির প্যারামিটারে আপলোডটি ব্যবহার করুন

POST /api/v1/generations-এ শীর্ষ স্তরে files ফিল্ড পাঠাবেন না।

নতুন সমন্বয়ের ক্ষেত্রে আপলোডের ফলাফল 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"
}

video বা audio-এর জন্য:

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

উপরের সব স্বাক্ষরিত ভিডিও ফিল্ড Video8 ও Wan 3.0 ভিডিও রেফারেন্সের জন্য আবশ্যিক। Wan 3.0 অডিও রেফারেন্সে mimeType, sizeBytes, durationSecondsdurationToken ব্যবহৃত হয়; ছবি রেফারেন্সে উপরে বর্ণিত মডেল-নির্দিষ্ট ছবি মেটাডেটার চুক্তি প্রযোজ্য।

Seedream 5.0 Pro Layer Decomposition-এর জন্য ঠিক একটি ছবি এবং সেই মডেলের সঙ্গে বাঁধা আপলোড থেকে পাওয়া স্বাক্ষরিত মেটাডেটা পাঠান:

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

কিছু পুরোনো মডেল প্যারামিটারে এখনও মডেল-নির্দিষ্ট URL ফিল্ড ব্যবহৃত হয়। মডেল API রেফারেন্সে কোনো নির্দিষ্ট প্যারামিটার নথিভুক্ত থাকলে নতুন ফিল্ড বানাবেন না; সংশ্লিষ্ট মডেলের পাতার নির্দেশনা অনুসরণ করুন।

ত্রুটি

ফাইল API, Rivya API-র বাকি অংশের মতো একই প্রকাশ্য ত্রুটি-প্রতিক্রিয়ার গঠন ব্যবহার করে:

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

সাধারণ ক্ষেত্র:

HTTPকোডকারণ
400validation_failedfile নেই, kind সমর্থিত নয়, MIME ধরন সমর্থিত নয়, ফাইল অতিরিক্ত বড় অথবা নির্বাচিত মডেল ওই kind গ্রহণ করে না।
401api_key_missing / api_key_invalidBearer API কী নেই বা বৈধ নয়।
403api_scope_deniedঅনুরোধ করা কাজের জন্য কীতে files:create বা files:read নেই।
429rate_limitedচলতি মিনিটে অতিরিক্ত ফাইল আপলোড করা হয়েছে।
503public_api_disabledবর্তমান পরিবেশে প্রকাশ্য API বন্ধ।

নিরাপত্তা নোট

সম্পূর্ণ API কী ব্রাউজার, মোবাইল ক্লায়েন্ট, লগ, বিশ্লেষণমূলক ঘটনা বা পর্দার ছবিতে সংরক্ষণ করবেন না।

আপলোড করা ফাইলের URL এবং duration_token, image_dimensions_tokenvideo_metadata_token-এর মানকে সাময়িক সমন্বয়-উপকরণ হিসেবে বিবেচনা করুন। এগুলো শুধু পরবর্তী তৈরির অনুরোধ গঠনে ব্যবহার করুন; প্রকাশ্য পাতায় দেখাবেন না।

সম্পর্কিত পৃষ্ঠা