ویدیوها
همه مدلهای ویدیو با یک ساختار درخواست یکسان. اعتبار هر مدل، مدتها، کیفیتها و سطحها در بخش «مدلهای ویدیو» در صفحه معرفی آمدهاند.
تولید ویدیو
یک تسک تولید ویدیو ارسال میشود و اعتبار آن کسر میشود. فیلدهای پذیرفتهشده بسته به خانواده مدل فرق میکنند. توضیح هر فیلد در ادامه مشخص میکند کدام مدلها آن را میخوانند و فیلدهایی که مدل نمیخواند، بهجای رد شدن، نادیده گرفته میشوند.
هر مقدار duration، quality، aspect_ratio، model_level،
seedance_mode، sync_mode یا output_format که خارج از مجموعه مقادیر
مدل در GET /models/ باشد، با خطای 400 invalid_request رد میشود و پیام
خطا نام فیلد و مقادیر مجاز را اعلام میکند. این مقادیر را بهصورت string
JSON بفرستید. اگر duration، quality یا aspect_ratio را نفرستید،
مقدار پیشفرض مدل به کار میرود. برای درخواست ردشده اعتباری کسر نمیشود،
اما درخواستی که پس از به کار گرفتن آیدیهای آپلود رد شود، آن آیدیها را
مصرف کرده است؛ پیش از تلاش دوباره، فایلها را دوباره آپلود کنید.
فیلد prompt برای همه مدلها الزامی است، بهجز kling-motion و
genjutsu (که در آنها حرکت گرفتهشده از ویدیوی رفرنس را دقیقتر میکند) و
lipsync (که از پرامپت استفاده نمیکند). اگر طول آن از max_prompt_chars
مدل بیشتر باشد، با خطای prompt_too_long رد میشود.
تصویرهای ورودی یا آیدیهای آپلود در image1…imageN هستند (این
اندپوینت uploads را نمیخواند) یا URLهای هاستشده https:// در
image_urls که بهترتیب کمشمارهترین جایگاههای خالی imageN را پر
میکنند. برای پیوست مستقیم فایلهای تصویر با نامهای image1…imageN،
بهجای JSON از multipart/form-data استفاده کنید. ویدیو و صوت رفرنس باید
حتماً آیدی آپلود باشند.
هدرها
Idempotency-Keyتلاش دوباره برای این ارسال را بیخطر میکند. تکرار درخواست ظرف 15 دقیقه،
body اصلی را با وضعیت 200 برمیگرداند و دوباره اعتباری کسر نمیشود؛ تکرار
در حالی که درخواست اول هنوز در حال پردازش است، 409 request_in_progress
برمیگرداند.
کلید همراه با پرامپت درخواست (در گفتار، دیالوگ آن) هویت درخواست را تعیین
میکند؛ پس استفاده دوباره از یک کلید با پرامپتی متفاوت، تولید جدیدی را
شروع میکند. فیلد client_request_id در body هم دقیقاً همینطور عمل
میکند.
تولید ویدیو › body درخواست
modelبا نام mode هم پذیرفته میشود؛ اگر هر دو فرستاده شوند، model اولویت دارد. مقدار ناشناخته با خطای invalid_model رد میشود.
promptبرای همه مدلها بهجز kling-motion، lipsync و genjutsu الزامی است.
اگر طول آن از max_prompt_chars مدل بیشتر باشد، درخواست رد میشود.
durationمدت بر حسب ثانیه، بهصورت string، از میان durations مدل در
GET /models/؛ هر مقدار دیگری رد میشود و اگر آن را نفرستید، پیشفرض
مدل به کار میرود. حتماً بهصورت string بفرستید: عدد JSON از بررسی عبور
میکند، اما مدل در این حالت مدت پیشفرض خودش را میسازد. در مواردی که
مدت از ورودی گرفته میشود نادیده گرفته میشود: kling-motion،
lipsync، genjutsu، gemini-omni-video وقتی video1 فرستاده شود،
و seedance25 در seedance_mode: edit.
qualityیکی از 480، 720، 1080 یا 4k بسته به مدل، از میان qualities
آن در GET /models/؛ هر مقدار دیگری رد میشود و اگر آن را نفرستید،
پیشفرض مدل به کار میرود. مثل duration، این مقدار را هم بهصورت string
بفرستید. kling فقط کیفیت 1080 دارد و lipsync فقط auto را
میپذیرد.
aspect_ratioمجموعه مقادیر هر مدل را از GET /models/ بگیرید. با image، در
مدلهایی که پشتیبانی میکنند، خروجی از تصویر ورودی پیروی میکند (این
مقدار بهصورت auto یا adaptive برای پرووایدر فرستاده میشود). هر
مقدار خارج از مجموعه مدل رد میشود؛ اگر آن را نفرستید، پیشفرض مدل به
کار میرود.
model_levelنسخه مورد نظر را در خانواده مدل انتخاب میکند و قیمت هم به آن بستگی دارد.
| مدل | مقادیر | پیشفرض |
|---|---|---|
seedance2 | pro, mini, fast | mini |
kling-motion | 2.6, 3.0 | 2.6 |
lipsync | v2-pro, v3 | v3 |
genjutsu | standard, lite | standard |
مقدار خارج از مجموعه مدل رد میشود. آن را بهصورت string بفرستید: عدد
JSON مانند 2.6 خوانده نمیشود و پیشفرض به کار میرود. lipsync در
سطح v2-pro به ورودی ویدیویی نیاز دارد؛ v3 یا یک ویدیو میگیرد یا
یک تصویر. genjutsu در سطح lite ویدیوی رفرنسی با حداکثر 15 ثانیه
میگیرد. seedance2 کیفیتهای 1080 و 4k را فقط در سطح pro
میسازد؛ درخواست آنها در سطح دیگر رد میشود، نه اینکه بیخبر به کیفیت
پایینتر تبدیل شود.
veo_modeفقط برای veo3. اگر آن را نفرستید، از روی تعداد تصویرهای ورودی تعیین
میشود: بدون تصویر، text-to-video؛ یک تصویر، first-frame-last-frame
با آن تصویر بهعنوان فریم اول؛ دو یا سه تصویر، image-to-video با
تصویرها بهعنوان رفرنس. برای استفاده از دو تصویر بهعنوان فریم اول و
آخر، first-frame-last-frame را صریحاً بفرستید. image-to-video بین 1
تا 3 تصویر و first-frame-last-frame یک یا دو تصویر میگیرد.
seedance_modeفقط برای seedance2 و seedance25. اگر آن را نفرستید، اینطور تعیین
میشود: بدون تصویر، text-to-video؛ یک تصویر، image-to-video؛ دو
تصویر، در seedance2 حالت first-frame-last-frame اما در seedance25
حالت reference-to-video؛ سه تصویر یا بیشتر، یا هر video1/audio1،
حالت reference-to-video.
reference-to-video صحنه چندوجهی است و دستکم به یک تصویر یا ویدیو
نیاز دارد. محدودیتها:
seedance25 | seedance2 | |
|---|---|---|
| تصویرها | 30 | 9 |
| ویدیوها | 10 | 3 |
| فایلهای صوتی | 10 | 3 |
| هر ویدیو یا صوت رفرنس | 2 تا 30 ثانیه | 2 تا 15 ثانیه |
| مجموع طول رفرنسها | 30 ثانیه | 15 ثانیه |
| حجم ویدیوی رفرنس | 200 مگابایت | 50 مگابایت |
edit و extend فقط در seedance25 وجود دارند و دستکم به یک ویدیوی
ورودی نیاز دارند. در edit خروجی از ویدیوی ورودی پیروی میکند، پس مدت،
نسبت تصویر و حالت از آن گرفته میشوند و هر ویدیوی ورودی باید دستکم 4
ثانیه باشد؛ در این حالت اعتبار به اندازه دو برابر ثانیههای ورودی
بهعلاوه 3 ثانیه با نرخ «با ویدیو» رزرو میشود. extend ویدیو را ادامه
میدهد و هزینه ورودی بهعلاوه duration درخواستی را کسر میکند. هزینه
هر دو حالت پس از تحویل، بر اساس ثانیههای ورودی بهعلاوه ثانیههای
تحویلشده تسویه میشود.
generate_audioبرای seedance2 و seedance25. قیمت در هر دو حالت یکسان است، پس روشن
گذاشتن آن هیچ هزینه اضافهای ندارد.
web_searchدیگر هیچ اثری ندارد. درخواستهای متن به ویدیوی seedance2 همیشه صحنه را بر پایه جستوجوی وب میسازند.
output_formatفقط برای seedance25.
sync_modeفقط برای lipsync. تعیین میکند ویدیو و صوتی با طولهای متفاوت چطور با
هم تطبیق داده شوند: bounce ویدیو را رفتوبرگشتی پخش میکند، loop آن
را تکرار میکند، cut_off طولانیتر را کوتاه میکند، silence صوت را با
سکوت تکمیل میکند و remap سرعت ویدیو را تغییر میدهد. قیمت از طول
خروجی پیروی میکند: طول صوت، بهجز در silence که طول بلندتر از این دو
و در cut_off که طول کوتاهتر ملاک است.
character_orientationبرای kling-motion. تعیین میکند جهت قرارگیری شخصیت از کدام منبع گرفته شود. با image، ویدیوی رفرنس حداکثر 10 ثانیه میتواند باشد.
background_sourceفقط برای kling-motion با model_level: 3.0. تعیین میکند پسزمینه از کدام منبع گرفته شود.
image_urlsتصویرهای ورودی هاستشده، فقط با https:// و نه روی هاستهای مدیای هوشا؛ این URLها همانطور که هستند به پرووایدر داده میشوند. آنها
کمشمارهترین جایگاههای خالی image1…imageN را پر میکنند: اگر فقط
image2 را فرستاده باشید، اولین URL به image1 تبدیل میشود. این
تصویرها در سقف تصویر مدل حساب میشوند.
image1تصویر ورودی: یک آیدی آپلود (/videos/ آیدیهای آپلود را فقط از همین
فیلدهای شمارهدار میخواند، نه از uploads)، یا یک بخش فایل در
multipart (png، jpg، jpeg، webp یا gif، حداکثر 10,000,000
بایت، بدون تبدیل). با image2، image3، … ادامه دهید.
تعداد تصویرهایی که هر مدل میخواند: seedance25 تا 30، seedance2 تا
9، genjutsu تا 8 (دستکم 1 تصویر الزامی است)، grok-imagine تا 7،
gemini-omni-video تا 7 (و وقتی video1 فرستاده شود تا 5)، veo3 تا
3، kling3 فقط 1، kling-motion دقیقاً 1، lipsync یک تصویر وقتی
video1 فرستاده نشود (در صورت وجود ویدیو نادیده گرفته میشود)، runway
و seedance فقط image1. در kling، image2 فریم پایانی است. فقط
grok-imagine و genjutsu تصویرهای اضافه را با خطای too_many_images
رد میکنند؛ در بقیه مدلها تصویرهای بیشتر از حد مجاز کنار گذاشته
میشوند. در first-frame-last-frame، image1 فریم اول و image2 فریم
آخر است.
video1ویدیوی رفرنس، بهصورت آیدی آپلود. برای kling-motion (3 تا 30 ثانیه)،
برای genjutsu (5 تا 30 ثانیه، در lite 5 تا 15 ثانیه، حداکثر 200
مگابایت) و برای lipsync با model_level: v2-pro الزامی است؛ در v3
اختیاری است و در نبود آن از image1 استفاده میشود. gemini-omni-video
فقط video1 را میخواند (حداکثر 10 ثانیه و 100 مگابایت). صحنههای رفرنس
seedance25 تا video10 و صحنههای رفرنس seedance2 تا video3
میپذیرند.
audio1صوت رفرنس، بهصورت آیدی آپلود. برای lipsync الزامی است؛ در این مدل طول
صوت (2 تا 30 ثانیه، و همراه با تصویر 2 تا 15 ثانیه) مبنای محاسبه هزینه
است و فایلهای بزرگتر از 10 مگابایت رد میشوند. صحنههای رفرنس
seedance25 تا audio10 و صحنههای رفرنس seedance2 تا audio3
میپذیرند.
تولید ویدیو › پاسخها
تکرار درخواست با همان Idempotency-Key ظرف 15 دقیقه. body پاسخ
بایتبهبایت با پاسخ 202 اصلی یکسان است و دوباره اعتباری کسر نشده است.
idوضعیت را با GET /generations/{id}/ بررسی کنید.
typeنوع مدیای تسک.
modelمدل، همانطور که در درخواست فرستادهاید.
statusهمیشه processing؛ هنوز چیزی ساخته نشده است.
credits_chargedاز قبل کسر شده است. این قیمت نهایی است، بهجز در تسکهای edit/extend مدل seedance25 که این مبلغ رزرو اعتبار است و پس از تحویل، بخشی از آن بازگردانده میشود.
created_at