نِت اَرز · مستندات API هوش مصنوعی
همهٔ مستندات
مدل‌ها و قیمت‌ها مرجع تعاملی دریافت کلید

تولید ویدیو

ساخت ویدیو با Sora و Veo گوگل: endpoint یک «کار» برمی‌گرداند که وضعیتش را می‌پرسید و فایلش را می‌گیرید. قاب تا 4K، قیمت‌گذاری ثانیه‌ای و برگشت خودکار هزینهٔ رندر ناموفق.

base_url: https://netarz.ir/api/ai/v1 به‌روزرسانی: 1405/07/16
POST /api/ai/v1/videos نیازمند کلید API

ساخت ویدیوی کوتاه از روی توصیف متنی، با مدل‌های Sora شرکت OpenAI و Veo گوگل. خروجی یک فایل MP4 همراه با صداست و هر دو خانواده با همین endpoint و همین کلید کار می‌کنند. فهرست مدل‌ها و قیمت هر ثانیه در صفحهٔ مدل‌ها.

این endpoint فایل برنمی‌گرداند، «کار» برمی‌گرداند

رندر یک ویدیو یک تا چند دقیقه طول می‌کشد و هیچ درخواست HTTP این‌قدر باز نمی‌ماند. پس POST /videos بلافاصله یک شناسهٔ کار (vid_…) می‌دهد؛ شما هر چند ثانیه وضعیتش را می‌پرسید و وقتی status برابر completed شد، فایل را می‌گیرید.

سه قدم کامل

Python
import time

job = client.videos.create(
    model="sora-2",
    prompt="نمای هوایی از جادهٔ کوهستانی در مه صبحگاهی، دوربین آرام جلو می‌رود",
    seconds="8",
    size="1280x720",
)

while job.status in ("queued", "in_progress"):
    time.sleep(5)
    job = client.videos.retrieve(job.id)

if job.status == "completed":
    content = client.videos.download_content(job.id)
    content.write_to_file("clip.mp4")
Node.js
import { writeFile } from "node:fs/promises";

let job = await client.videos.create({
  model: "sora-2",
  prompt: "نمای هوایی از جادهٔ کوهستانی در مه صبحگاهی، دوربین آرام جلو می‌رود",
  seconds: "8",
  size: "1280x720",
});

while (job.status === "queued" || job.status === "in_progress") {
  await new Promise((r) => setTimeout(r, 5000));
  job = await client.videos.retrieve(job.id);
}

if (job.status === "completed") {
  const file = await client.videos.downloadContent(job.id);
  await writeFile("clip.mp4", Buffer.from(await file.arrayBuffer()));
}
cURL
# ۱) ساخت کار
curl https://netarz.ir/api/ai/v1/videos \
  -H "Authorization: Bearer $NETARZ_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "sora-2",
    "prompt": "نمای هوایی از جادهٔ کوهستانی در مه صبحگاهی",
    "seconds": "8",
    "size": "1280x720"
  }'

# ۲) پرسیدن وضعیت (هر چند ثانیه یک‌بار)
curl https://netarz.ir/api/ai/v1/videos/vid_xxx \
  -H "Authorization: Bearer $NETARZ_API_KEY"

# ۳) گرفتن فایل، وقتی status برابر completed شد
curl https://netarz.ir/api/ai/v1/videos/vid_xxx/content \
  -H "Authorization: Bearer $NETARZ_API_KEY" -o clip.mp4
پاسخ قدم اول
{
  "id": "vid_9f2c4a1b7e5d3c8a0b6f1e2d",
  "object": "video",
  "created_at": 1790108108,
  "completed_at": null,
  "expires_at": null,
  "model": "sora-2",
  "status": "queued",
  "progress": 0,
  "seconds": "8",
  "size": "1280x720",
  "usd": "1.120000",
  "refunded": false,
  "error": null
}

پارامترها

پارامترتوضیح
model الزامیsora-2، sora-2-pro، veo-3.1، veo-3.1-fast، veo-3.1-lite یا یکی از مدل‌های OpenRouter. مدت‌ها و ابعاد مجاز هر مدل در capabilities.seconds و capabilities.sizes آمده است.
prompt الزامیتوصیف صحنه، تا ۴۰۰۰ کاراکتر. فارسی را مستقیم بفرستید.
secondsمدت ویدیو. Sora: 4، 8 یا 12؛ Veo: 4، 6 یا 8 (قاعدهٔ 1080p و 4K). پیش‌فرض ۴ ثانیه. هزینه دقیقاً به همین نسبت بالا می‌رود.
sizeقاب تصویر: 1280x720 و 720x1280 روی هر دو مدل؛ 1792x1024 و 1024x1792 فقط روی sora-2-pro. اندازه‌های Veo در بخش Veo آمده است. اگر نفرستید یا auto بگذارید، اولین اندازهٔ همان مدل انتخاب می‌شود.

وضعیت کار

statusیعنی
queuedپذیرفته شده و در نوبت رندر است.
in_progressدر حال ساخت؛ progress درصد پیشرفت را می‌گوید.
completedآماده است؛ فایل را از /videos/{id}/content بگیرید.
failedساخته نشد. علت در error می‌آید و هزینه به اعتبارتان برمی‌گردد.

Endpointهای دیگر این خانواده

  • GET /videos — فهرست کارهای این پروژه، تازه‌ترین اول. پارامتر limit تا ۱۰۰.
  • GET /videos/{id} — وضعیت یک کار.
  • GET /videos/{id}/content — خود فایل. در Sora با ?variant=thumbnail تصویر بندانگشتی (WebP) و با ?variant=spritesheet نوار فریم‌ها (JPEG) را می‌گیرید؛ Veo این دو را نمی‌سازد و فقط خود ویدیو را دارد.
  • DELETE /videos/{id} — لغو یک رندر. اگر هنوز تحویل نشده باشد، هزینه‌اش برمی‌گردد.

Veo (Google)

مدل‌های ویدیوی گوگل همان سه قدم بالا را دارند: ساخت کار، پرسیدن وضعیت و گرفتن فایل. کد Sora را فقط با عوض کردن model و در صورت نیاز seconds و size برای Veo به کار می‌برید و به کلید یا کتابخانهٔ گوگل نیازی ندارید.

cURL — قدم اول با Veo
curl https://netarz.ir/api/ai/v1/videos \
  -H "Authorization: Bearer $NETARZ_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "veo-3.1-fast",
    "prompt": "دست‌های نانوا خمیر را ورز می‌دهند، صدای ملایم نانوایی",
    "seconds": "8",
    "size": "1920x1080"
  }'
شناسهٔ مدلقاب‌ها (size)
veo-3.11280x720، 720x1280، 1920x1080، 1080x1920، 3840x2160، 2160x3840
veo-3.1-fastهمان شش قاب، از جمله 4K
veo-3.1-lite1280x720، 720x1280، 1920x1080، 1080x1920 (بدون 4K)
  • مدت: 4، 6 یا 8 ثانیه. قاب‌های 1080p و 4K فقط ۸ ثانیه‌ای ساخته می‌شوند؛ مدت دیگر در این قاب‌ها خطای ۴۰۰ با کد invalid_seconds می‌گیرد، پیش از آنکه هزینه‌ای کم شود. پیش‌فرض seconds چهار ثانیه است، پس برای 1080p و 4K مقدار "8" را حتماً بفرستید.
  • صدا: Veo همیشه ویدیو را همراه صدا می‌سازد.
  • فیلتر محتوا: اگر فیلتر محتوایی گوگل رندر را متوقف کند، status برابر failed می‌شود و کل هزینه خودکار برمی‌گردد. توصیف را تغییر دهید و دوباره بفرستید.
  • فایل: گوگل فایل را حدود ۴۸ ساعت نگه می‌دارد؛ همان اول دانلودش کنید. برای Veo تصویر بندانگشتی و نوار فریم ساخته نمی‌شود.

ویدیو از راه OpenRouter

مدل‌های ویدیوی دیگر، مثل Kling، Seedance، Wan، Hailuo، Grok Imagine، Runway Gen-4.5 و FLUX Video، با شناسهٔ openrouter/… همین سه قدم را دارند. فقط model، seconds و size را با مقدارهای همان مدل بفرستید.

  • مدت و قاب: هر مدل مدت‌ها (capabilities.seconds) و قاب‌های خودش (capabilities.sizes) را دارد؛ مثلاً بعضی تا ۱۵ یا ۳۰ ثانیه می‌سازند. مقداری که مدل نداشته باشد، پیش از هر هزینه‌ای خطای ۴۰۰ با کد invalid_seconds یا invalid_size و فهرست مقدارهای مجاز می‌گیرد.
  • تصویر اول: مدلی که capabilities.image_input دارد، تصویر اول ویدیو را از فیلد image (base64 یا data URI) می‌گیرد. اگر سرویس‌دهنده برای تصویر ورودی جدا هزینه بگیرد، همان مبلغ (capabilities.image_input_cost) به هزینهٔ ویدیو اضافه می‌شود.
  • صدا: مدلی که capabilities.audio دارد، ویدیو را همراه صدا می‌سازد و قیمتش هم قیمت همراه صداست.
  • فایل: فقط خود MP4؛ تصویر بندانگشتی و نوار فریم برای این مدل‌ها ساخته نمی‌شود. لغو با DELETE هزینه را برمی‌گرداند، ولی رندری که سرویس‌دهنده شروع کرده متوقف نمی‌شود.

قیمت‌گذاری

ویدیو به‌ازای هر ثانیهٔ ویدیوی ساخته‌شده حساب می‌شود، و نرخ هر ثانیه به ابعاد تصویر بستگی دارد. طول پرامپت در هزینه اثری ندارد.

  • هزینه در همان لحظه‌ای که ارائه‌دهنده کار را می‌پذیرد از اعتبارتان کم می‌شود؛ مبلغ دقیق در فیلد usd همان پاسخ اول آمده است.
  • اگر رندر با شکست تمام شود یا ارائه‌دهنده تحویلش ندهد، کل مبلغ خودکار به اعتبارتان برمی‌گردد و refunded برابر true می‌شود. لازم نیست چیزی بخواهید.
  • در Sora، قاب 1024p حدود ۱٫۶۷ برابر 720p هزینه دارد.
  • در Veo، هر مدل ضریب قاب‌های خودش را دارد و قاب بزرگ‌تر ممکن است نرخ ثانیه را بالا ببرد. ضریب هر قاب در capabilities.size_multipliers همان مدل آمده است (GET /models)، و مدت‌های مجاز هر قاب در capabilities.seconds_by_size.
  • نرخ دقیق هر مدل به تومان و دلار در صفحهٔ مدل‌ها و کلید per_second در فهرست قیمت‌ها.

نکات

  • فایل ساخته‌شده ۴۸ ساعت در دسترس است؛ همان اول دانلودش کنید و در فضای خودتان نگه دارید. بعد از آن /content خطای video_expired می‌دهد.
  • هر کار متعلق به همان پروژه‌ای است که ساخته‌ شده؛ کلید پروژهٔ دیگر آن را نمی‌بیند.
  • کاری که بیش از ۲۵ دقیقه باز بماند، ناموفق حساب و هزینه‌اش برگردانده می‌شود.
  • ویرایش ویدیوی موجود، ادامه‌دادن (extend) و remix روی درگاه ارائه نمی‌شود.