ماڈلزقیمتانٹرپرائز
500+ AI ماڈل API، تمام ایک API میں۔ صرف CometAPI میں
ماڈلز API
ڈویلپر
فوری آغازدستاویزاتAPI ڈیش بورڈ
کمپنی
ہمارے بارے میںانٹرپرائز
وسائل
AI ماڈلزبلاگتبدیلیوں کا ریکارڈسپورٹ
خدمات کی شرائطرازداری کی پالیسی
© 2026 CometAPI · All rights reserved
Home/Models/Doubao/Doubao-Seedance-2-0
D

Doubao-Seedance-2-0

فی سیکنڈ:$0.08
Seedance 2.0، ByteDance کا اگلی نسل کا ملٹی موڈل ویڈیو فاؤنڈیشن ماڈل ہے جو سینیماٹک، ملٹی شاٹ بیانیہ ویڈیو جنریشن پر مرکوز ہے۔ سنگل شاٹ ٹیکسٹ ٹو ویڈیو ڈیموز کے برخلاف، Seedance 2.0 حوالہ پر مبنی کنٹرول (تصاویر، مختصر کلپس، آڈیو)، شاٹس کے درمیان کردار/اسٹائل کی مربوط یکسانیت، اور نیٹو آڈیو/ویڈیو ہم زمانی پر زور دیتا ہے — تاکہ AI ویڈیو کو پیشہ ورانہ تخلیقی اور پری ویژولائزیشن ورک فلوز کے لیے کارآمد بنایا جا سکے۔
نیا
تجارتی استعمال
Playground
خلاصہ
خصوصیات
قیمت
API
ورژن

Doubao Seedance 2.0 کی تکنیکی خصوصیات

آئٹمتفصیلات
پروڈکٹ فیملیByteDance Seedance ویڈیو جنریشن فیملی
CometAPI سلاگdoubao-seedance-2-0
مہیا کنندہByteDance / BytePlus ModelArk
ماڈل کی قسمویڈیو جنریشن ماڈل
ان پٹ طریقےمتن، تصویر، آڈیو، ویڈیو
حوالہ گنجائشایک واحد ملٹی موڈل درخواست میں زیادہ سے زیادہ 9 تصاویر، 3 ویڈیو کلپس، اور 3 آڈیو کلپس
آؤٹ پٹ قسمMP4 ویڈیو
آؤٹ پٹ ریزولوشن480p, 720p, 1080p
ایسپیکٹ ریشوز21:9, 16:9, 4:3, 1:1, 3:4, 9:16
آؤٹ پٹ دورانیہ4–15 سیکنڈ
API طرزغیر ہم زمانی، ٹاسک پر مبنی ویڈیو جنریشن

Doubao Seedance 2.0 کیا ہے؟

Doubao Seedance 2.0 ByteDance کا فلیگ شپ ملٹی موڈل ویڈیو جنریشن ماڈل ہے (فروری 2026 میں جاری). یہ ایک یکجا آڈیو-ویڈیو مشترکہ جنریشن آرکیٹیکچر استعمال کرتا ہے جو بیک وقت متعدد تصاویر، ویڈیو کلپس، اور آڈیو فائلوں کے حوالوں کے ذریعے ہدایت کار کے درجے کا عین کنٹرول دیتا ہے۔ یہ نیٹو آڈیو ہم آہنگی کے ساتھ سنیماٹک، موشن کے لحاظ سے مستحکم ویڈیوز بنانے میں ممتاز ہے — ان تخلیق کاروں کے لیے مثالی جو حقیقی طبیعیات، کرداروں کی یکسانیت، اور پیچیدہ منظر ترکیب چاہتے ہیں۔

CometAPI پر Doubao Seedance 2.0 کی نمایاں خصوصیات

  • یکجا ملٹی موڈل جنریشن: یہ ایک ہی ورک فلو میں متن، تصویر، آڈیو اور ویڈیو ان پٹ قبول کرتا ہے، تاکہ صارفین محض متن پر مبنی جنریٹر کے مقابلے میں زیادہ بھرپور حوالہ جاتی مواد کے ساتھ منظر کی ہدایت کر سکیں۔
  • ڈائریکٹر انداز کنٹرول: ماڈل کارکردگی، لائٹنگ، سائے، کیمرہ موومنٹ، موشن کی تال، اور آواز کی خصوصیات سے متعلق پرامپٹس پر عمل کرنے کے لیے بنایا گیا ہے۔
  • ویڈیو ایڈیٹنگ اور توسیع: Seedance 2.0 صرف ابتدائی جنریشن تک محدود نہیں؛ یہ مخصوص کلپس، کرداروں، اعمال اور کہانی لائنوں کی ایڈیٹنگ کے ساتھ ساتھ آگے/پیچھے کی توسیع کو بھی سپورٹ کرتا ہے۔
  • طاقتور آڈیو ویژول ہم آہنگی: ByteDance ڈوئل چینل اسٹیریو آؤٹ پٹ اور پس منظر موسیقی، ایمبینٹ ساؤنڈ، اور وائس اوور کے رویے کی ہم زمانی کو نمایاں کرتا ہے، تاکہ زیادہ دل نشین نتائج ملیں۔
  • پیچیدہ مناظر پر اعلیٰ قابو: Seedance 1.5 کے مقابلے میں پیچیدہ تعاملات، موشن مناظر، اور طبعی معقولیت کی بہتر ہینڈلنگ پر زور دیا گیا ہے۔
  • پروڈکشن پر مرکوز آؤٹ پٹ: API قابلِ ترتیب تناسب، دورانیہ اور واٹر مارک سیٹنگز سپورٹ کرتی ہے، جس سے یہ ماڈل دہرائے جانے والے مواد کے ورک فلو کے لیے عملی بنتا ہے۔

بینچ مارک کارکردگی

ByteDance کا کہنا ہے کہ Seedance 2.0 نے اندرونی SeedVideoBench-2.0 پر جانچ کی اور ٹیکسٹ-ٹو-ویڈیو، امیج-ٹو-ویڈیو، اور ملٹی موڈل ٹاسک جہتوں میں نمایاں پوزیشن حاصل کی۔ یہ ماڈل Seedance 1.5 کے مقابلے میں جنریشن کوالٹی، طبعی درستگی، حقیقت پسندی، اور کنٹرول کی صلاحیت بہتر کرتا ہے، خاص طور پر پیچیدہ تعامل اور موشن مناظر میں۔

CometAPI پر Seedance 2.0 API اور Seedance 2.0 Fast API موڈز

ماڈلCometAPI میں ماڈل کا نامموزوں برائےبنیادی فرق
Seedance 2.0doubao-seedance-2-0اعلیٰ معیار کی ملٹی موڈل ویڈیو تخلیقSeedance 2.0 فیملی میں سب سے وسیع حوالہ اسٹیک اور سب سے مضبوط کنٹرول کی صلاحیت۔
Seedance 2.0 fastdoubao-seedance-2-0-fastجب قدرے معیار کی قربانی دے کر زیادہ تیز پیداوار درکار ہوByteDance کے مطابق یہ Seedance 2.0 جیسی صلاحیتیں برقرار رکھتا ہے، مگر تیزی سے جنریٹ کرتا ہے۔
Seedance 1.5 Prodoubao-seedance-1-5-proپہلے کے دور کی آڈیو-ویڈیو تخلیقSeedance 1.5 Pro کو نیٹو مشترکہ آڈیو-ویڈیو ماڈل کے طور پر رکھا گیا ہے، جبکہ Seedance 2.0 ملٹی موڈل حوالہ اور ایڈیٹنگ اسٹیک کو وسعت دیتا ہے۔

حریفوں کے مقابلے میں مضبوط پہلو:

  • بنام Kling 3.0: بہتر ملٹی موڈل حوالہ کنٹرول اور نیٹو آڈیو۔
  • بنام Sora 2: حوالہ کی زیادہ درستگی اور ملٹی شاٹ صلاحیت؛ زیادہ سے زیادہ دورانیہ قدرے کم۔
  • بنام Veo 3.1: کردار کی یکسانیت اور حوالہ جات پر مبنی ورک فلو میں پرامپٹس کی پیروی میں مضبوط؛ جبکہ Veo خام سنیماٹک گریڈنگ اور طویل کلپس میں آگے ہے۔

انسانی مرکزیت اور کارکردگی پر مبنی ویڈیوز میں ممتاز۔

CometAPI پر Seedance 2.0 AI ویڈیو جنریٹر آزمائیں

Step 1: Step 1: API Key کے لیے سائن اپ کریں

بغیر کسی سیٹ اپ یا کوڈنگ کے Doubao Seedance 2.0 آزمانے کے لیے براہ راست CometAPI Playground سے آغاز کریں۔ بس اپنے CometAPI اکاؤنٹ میں لاگ ان کریں، doubao-seedance-2-0 کے ماڈل صفحے پر جائیں، اپنی حوالہ جاتی تصاویر، مختصر ویڈیو کلپس یا آڈیو فائلیں اپ لوڈ کریں، ایک وضاحتی پرامپٹ شامل کریں، اور فوری طور پر پری ویو ویڈیوز جنریٹ کریں۔ یہ Seedance 2.0 کی موشن یکسانیت، کردار کی ظاہری شکل، کیمرہ موومنٹس، اور نیٹو آڈیو ہم آہنگی کو سمجھنے کا تیز ترین طریقہ ہے۔

Step 2: CometAPI پر Seedance 2.0 کے لیے API رسائی حاصل کریں

Doubao Seedance 2.0 تک مکمل رسائی کے لیے اپنا نیا یا موجودہ CometAPI key استعمال کریں۔ لاگ ان کے بعد اپنی کنسول میں API Token سیکشن میں جائیں، نئی key جنریٹ کریں اور اسے کاپی کریں۔ پھر CometAPI پر Seedance 2.0 ماڈل کی تفصیل والے صفحے اور API دستاویز پر جائیں تاکہ اپنے پروجیکٹس میں انضمام کے لیے سپورٹڈ پیرا میٹرز کا جائزہ لے سکیں۔

Step 3: Seedance 2.0 API کے ساتھ اپنی پہلی درخواست بھیجیں

CometAPI اینڈ پوائنٹ استعمال کرتے ہوئے ایک واضح ٹیکسٹ پرامپٹ اور اختیاری حوالہ فائلیں (تصاویر، ویڈیو، یا آڈیو) کے ساتھ اپنی پہلی ویڈیو جنریشن درخواست جمع کریں۔ سسٹم ٹاسک کو غیر ہم زمانی طور پر پروسیس کرے گا، ایک ٹاسک ID واپس کرے گا، اور مکمل ہونے پر ڈاؤن لوڈ ایبل MP4 ویڈیو فراہم کرے گا۔ اس کے بعد آپ اپنے پرامپٹس کو بہتر بنا سکتے ہیں، سیٹنگز ایڈجسٹ کر سکتے ہیں، اور Seedance 2.0 کے ذریعے مارکیٹنگ ویڈیوز، سوشل میڈیا مواد، خودکار ویڈیو پائپ لائنز یا تخلیقی ایپلیکیشنز کے لیے بڑے پیمانے پر کام کر سکتے ہیں۔

یہ ورک فلو آپ کو پلی گراؤنڈ میں تیز تجربات اور CometAPI کے ذریعے پروڈکشن استعمال میں ہموار منتقلی فراہم کرتا ہے۔

CometAPI پر Seedance 2.0 منتخب کرنے کی نمایاں وجوہات

Seedance 2.0 کے لیے CometAPI کیوں استعمال کریں

  • API یا Playground کے ذریعے براہ راست رسائی
  • پیرا میٹرز پر آسان کنٹرول (دورانیہ، ریزولوشن، فارمیٹ)
  • دونوں ورک فلو سپورٹ کرتا ہے: ٹیکسٹ-ٹو-ویڈیو اور امیج-ٹو-ویڈیو
  • غیر ہم زمانی ویڈیو جنریشن کے لیے بلٹ اِن جاب ہینڈلنگ

متحدہ اور ڈویلپر-فرینڈلی API

CometAPI ایک صاف، معیاری اینڈ پوائنٹ فراہم کرتا ہے جو مانوس OpenAI-طرز فارمیٹس یا مخصوص ویڈیو ٹاسک اینڈ پوائنٹس کے ساتھ بغیر رکاوٹ کام کرتا ہے۔ آپ کو Volcengine کی پیچیدہ توثیق یا علاقائی پابندیوں سے نمٹے بغیر سیدھی سادی ٹاسک تخلیق، پولنگ، اور MP4 ڈاؤن لوڈز ملتے ہیں۔

لاگت مؤثر قیمتیں

CometAPI عموماً براہ راست فراہم کنندگان کے مقابلے میں فی سیکنڈ زیادہ مسابقتی نرخ فراہم کرتا ہے، جس سے آپ مارکیٹنگ، سوشل میڈیا یا خودکار پائپ لائنز کے لیے بڑے پیمانے پر اعلیٰ معیار کی ویڈیوز تیار کر سکتے ہیں، بغیر بجٹ بوجھ کے۔

Playground کے ساتھ تیز ٹیسٹنگ

فوراً CometAPI Playground میں تجربہ کریں۔ حوالہ جاتی تصاویر، ویڈیوز اور آڈیو فائلیں اپ لوڈ کریں، پرامپٹس کو ٹوِیک کریں، اور چند منٹوں میں نتائج کا پری ویو دیکھیں — پروڈکشن میں جانے سے پہلے اسٹائل، موشن اور آڈیو ہم آہنگی پر تیز رفتار تکرار کے لیے بہترین۔

خلاصہ یہ کہ، اگر آپ Seedance 2.0 کی تخلیقی طاقت — بہترین حوالہ کنٹرول، قدرتی موشن، اور نیٹو آڈیو — چاہتے ہیں، مگر براہِ راست ByteDance تک رسائی کے جھنجھٹ کے بغیر، تو CometAPI فی الحال بہترین پلیٹ فارمز میں سے ایک ہے۔

اکثر پوچھے جانے والے سوالات

What kinds of inputs does Seedance 2.0 support for video generation?

Seedance 2.0 ملٹی موڈل ان پٹس کی حمایت کرتا ہے، جن میں ٹیکسٹ پرامپٹس، زیادہ سے زیادہ 9 تصاویر، زیادہ سے زیادہ 3 مختصر ویڈیو کلپس، اور زیادہ سے زیادہ 3 آڈیو فائلیں شامل ہیں، جنہیں بھرپور اور قابلِ کنٹرول جنریشن کے لیے آزادانہ طور پر یکجا کیا جا سکتا ہے۔

Can Seedance 2.0 maintain character and style consistency across multiple video shots?

جی ہاں — Seedance 2.0 کو مربوط ملٹی شاٹ کہانی سنانے کے لیے ڈیزائن کیا گیا ہے، جس میں مناظر بھر میں کردار، بصری انداز اور فضا کی یکسانیت برقرار رہتی ہے، اور عام AI ویڈیو ڈرفٹ کے مسائل میں کمی آتی ہے۔

What outputs and quality levels can I expect from Seedance 2.0 videos?

Seedance 2.0 سینیما معیار کی ویڈیوز (زیادہ سے زیادہ 2K ریزولوشن تک) اصل آڈیو، ہم آہنگ مکالمے اور قدرتی موشن سنتھیسِس کے ساتھ تیار کر سکتا ہے، عموماً 5–60 سیکنڈ کے کلپس کی صورت میں۔

How does Seedance 2.0 handle audio and lip synchronization?

یہ ماڈل آڈیو اور ویڈیو کو مشترکہ طور پر جنریٹ کرتا ہے، اور قدرتی تقریر اور صوتی اثرات کے لیے 8 سے زائد زبانوں میں فونیم سطح پر لبوں کی ہم آہنگی کے ساتھ فطری آڈیو-ویژول ہم زمانی فراہم کرتا ہے۔

Is Seedance 2.0 suitable for professional creative projects like marketing or narrative shorts?

جی ہاں — Seedance 2.0 کا ملٹی موڈل کنٹرول، ملٹی شاٹ تسلسل، اور اعلیٰ فِڈیلیٹی آؤٹ پٹ اسے مارکیٹنگ ویڈیوز، بیانیہ شارٹس، اشتہارات اور دیگر پیشہ ورانہ استعمالات کے لیے موزوں بناتا ہے۔

How do referencing assets (images, video clips) work in Seedance 2.0 prompts?

صارفین حوالہ جاتی اثاثے اپ لوڈ کر سکتے ہیں اور پھر قدرتی زبان میں بیان کر سکتے ہیں کہ ہر ایک حرکت، کیمرہ موومنٹ یا اسلوبیاتی عناصر کو کیسے متاثر کرے، جس سے جنریٹ کیے گئے مواد پر باریک سطح کا کنٹرول ملتا ہے۔

Does Seedance 2.0 allow editing and extension of existing videos?

جی ہاں — یہ ماڈل ویڈیو کی توسیع اور ہدفی ترمیم کی حمایت کرتا ہے، جیسے مناظر کا اضافہ، کرداروں کی تبدیلی، یا مخصوص حصوں میں ترمیم، ساتھ ہی غیر ترمیم شدہ حصوں کو برقرار رکھتے ہوئے۔

What are known limitations or typical generation lengths with Seedance 2.0?

عام طور پر فی ویڈیو آؤٹ پٹ کی لمبائی ~5 سے ~60 سیکنڈ تک ہوتی ہے، اور بہت سے اثاثے یکجا کرنا یا ہائی ریزولوشن سیٹنگز استعمال کرنا جنریشن کے وقت میں اضافہ کر سکتا ہے۔

Doubao-Seedance-2-0 کے لیے خصوصیات

[ماڈل کا نام] کی اہم خصوصیات دریافت کریں، جو کارکردگی اور قابل استعمال کو بہتر بنانے کے لیے ڈیزائن کی گئی ہیں۔ جانیں کہ یہ صلاحیتیں آپ کے منصوبوں کو کیسے فائدہ پہنچا سکتی ہیں اور صارف کے تجربے کو بہتر بنا سکتی ہیں۔

Doubao-Seedance-2-0 کی قیمتیں

[ماڈل کا نام] کے لیے مسابقتی قیمتوں کو دریافت کریں، جو مختلف بجٹ اور استعمال کی ضروریات کے مطابق ڈیزائن کیا گیا ہے۔ ہمارے لچکدار منصوبے اس بات کو یقینی بناتے ہیں کہ آپ صرف اسی کے لیے ادائیگی کریں جو آپ استعمال کرتے ہیں، جس سے آپ کی ضروریات بڑھنے کے ساتھ ساتھ اسکیل کرنا آسان ہو جاتا ہے۔ دریافت کریں کہ [ماڈل کا نام] کیسے آپ کے پروجیکٹس کو بہتر بنا سکتا ہے جبکہ اخراجات کو قابو میں رکھتا ہے۔

doubao-seedance Video Generation Pricing

Parameters

ParameterDescription
Duration (seconds)4–15 seconds, default 5 seconds
Aspect Ratio (size)21:9 / 16:9 / 4:3 / 1:1 / 3:4 / 9:16, default 16:9
Resolution480p / 720p / 1080p*, default 720p

*1080p only available for doubao-seedance-1-5-pro and doubao-seedance-1-0-pro

Pricing (Per Second)

Model480p720p1080p
doubao-seedance-2-0$0.08$0.24—
doubao-seedance-2-0-fast$0.064$0.192—
doubao-seedance-1-5-pro$0.018$0.04147$0.09331
doubao-seedance-1-0-pro$0.01875$0.0432$0.0972

💡 Billed per second. Total cost = price per second × video duration (seconds). Duration range: 4–15 seconds.

Doubao-Seedance-2-0 کے لیے نمونہ کوڈ اور API

Doubao-Seedance-2-0 کے لیے جامع نمونہ کوڈ اور API وسائل تک رسائی حاصل کریں تاکہ آپ کے انضمام کے عمل کو آسان بنایا جا سکے۔ ہماری تفصیلی دستاویزات قدم بہ قدم رہنمائی فراہم کرتی ہیں، جو آپ کو اپنے پروجیکٹس میں Doubao-Seedance-2-0 کی مکمل صلاحیت سے فائدہ اٹھانے میں مدد کرتی ہیں۔
POST
/v1/videos
Python
JavaScript
Curl
import json
import os
import time

import requests

# Get your CometAPI key from https://www.cometapi.com/console/token, and paste it here
COMETAPI_KEY = os.environ.get("COMETAPI_KEY") or "<YOUR_COMETAPI_KEY>"
BASE_URL = "https://api.cometapi.com"
OUTPUT_DIR = "./output"
POLL_INTERVAL_SECONDS = 10
RETRY_DELAY_SECONDS = 5
MAX_CREATE_ATTEMPTS = 5
MAX_QUERY_ATTEMPTS = 3
TERMINAL_STATUSES = {"success", "completed", "failed", "error"}
SUCCESS_STATUSES = {"success", "completed"}

def is_progress_complete(progress):
    if isinstance(progress, int):
        return progress >= 100
    if isinstance(progress, float):
        return progress >= 100
    if isinstance(progress, str):
        try:
            return float(progress.rstrip("%")) >= 100
        except ValueError:
            return False
    return False

def is_transient_status(status_code):
    return status_code == 429 or 500 <= status_code < 600

def create_task(files):
    for attempt in range(1, MAX_CREATE_ATTEMPTS + 1):
        response = requests.post(
            f"{BASE_URL}/v1/videos",
            headers=headers,
            files=files,
            timeout=30,
        )
        if response.ok:
            return response
        if not is_transient_status(response.status_code) or attempt == MAX_CREATE_ATTEMPTS:
            response.raise_for_status()
        print(f"Create request returned {response.status_code}, retrying...")
        time.sleep(RETRY_DELAY_SECONDS)

    raise SystemExit("Failed to create task.")

def get_task(task_id):
    for attempt in range(1, MAX_QUERY_ATTEMPTS + 1):
        response = requests.get(
            f"{BASE_URL}/v1/videos/{task_id}",
            headers=headers,
            timeout=15,
        )
        if response.ok:
            return response
        if not is_transient_status(response.status_code) or attempt == MAX_QUERY_ATTEMPTS:
            response.raise_for_status()
        print(f"Status request returned {response.status_code}, retrying...")
        time.sleep(RETRY_DELAY_SECONDS)

    raise SystemExit("Failed to query task.")

if COMETAPI_KEY == "<YOUR_COMETAPI_KEY>":
    print("Set COMETAPI_KEY before running this example.")
    raise SystemExit(0)

headers = {"Authorization": f"Bearer {COMETAPI_KEY}"}

create_response = create_task(
    {
        "prompt": (None, "A slow cinematic camera push across a coastal landscape at sunrise."),
        "model": (None, "doubao-seedance-2-0"),
        "seconds": (None, "5"),
        "size": (None, "16:9"),
        "resolution": (None, "720p"),
    }
)
create_response.raise_for_status()
create_result = create_response.json()

task_id = create_result.get("id") or create_result.get("task_id")
if not task_id:
    print(json.dumps(create_result, indent=2))
    raise SystemExit("No task id returned.")

print(f"Task created: {task_id}")
print(f"Initial status: {create_result.get('status')}")

while True:
    task_response = get_task(task_id)
    task_response.raise_for_status()
    task = task_response.json()
    status = str(task.get("status") or "unknown")
    normalized_status = status.lower()
    progress = task.get("progress")
    should_try_download = normalized_status in SUCCESS_STATUSES or (
        normalized_status == "unknown" and is_progress_complete(progress)
    )

    print(f"Status: {status}, progress: {progress}")

    if should_try_download or normalized_status in TERMINAL_STATUSES:
        if should_try_download:
            video_url = task.get("video_url") or ""
            content_url = f"{BASE_URL}/v1/videos/{task_id}/content"
            output_path = os.path.join(OUTPUT_DIR, f"{task_id}.mp4")

            os.makedirs(OUTPUT_DIR, exist_ok=True)
            with requests.get(
                content_url,
                headers=headers,
                timeout=120,
                stream=True,
            ) as video_response:
                video_response.raise_for_status()
                with open(output_path, "wb") as output_file:
                    for chunk in video_response.iter_content(chunk_size=8192):
                        if chunk:
                            output_file.write(chunk)

            print(f"Video URL: {video_url}")
            print(f"Content endpoint: {content_url}")
            print(f"Saved to {output_path}")
            print(f"File size: {os.path.getsize(output_path)} bytes")
        else:
            print(json.dumps(task, indent=2))
            raise SystemExit(1)
        break

    time.sleep(POLL_INTERVAL_SECONDS)

Python Code Example

import json
import os
import time

import requests

# Get your CometAPI key from https://www.cometapi.com/console/token, and paste it here
COMETAPI_KEY = os.environ.get("COMETAPI_KEY") or "<YOUR_COMETAPI_KEY>"
BASE_URL = "https://api.cometapi.com"
OUTPUT_DIR = "./output"
POLL_INTERVAL_SECONDS = 10
RETRY_DELAY_SECONDS = 5
MAX_CREATE_ATTEMPTS = 5
MAX_QUERY_ATTEMPTS = 3
TERMINAL_STATUSES = {"success", "completed", "failed", "error"}
SUCCESS_STATUSES = {"success", "completed"}


def is_progress_complete(progress):
    if isinstance(progress, int):
        return progress >= 100
    if isinstance(progress, float):
        return progress >= 100
    if isinstance(progress, str):
        try:
            return float(progress.rstrip("%")) >= 100
        except ValueError:
            return False
    return False


def is_transient_status(status_code):
    return status_code == 429 or 500 <= status_code < 600


def create_task(files):
    for attempt in range(1, MAX_CREATE_ATTEMPTS + 1):
        response = requests.post(
            f"{BASE_URL}/v1/videos",
            headers=headers,
            files=files,
            timeout=30,
        )
        if response.ok:
            return response
        if not is_transient_status(response.status_code) or attempt == MAX_CREATE_ATTEMPTS:
            response.raise_for_status()
        print(f"Create request returned {response.status_code}, retrying...")
        time.sleep(RETRY_DELAY_SECONDS)

    raise SystemExit("Failed to create task.")


def get_task(task_id):
    for attempt in range(1, MAX_QUERY_ATTEMPTS + 1):
        response = requests.get(
            f"{BASE_URL}/v1/videos/{task_id}",
            headers=headers,
            timeout=15,
        )
        if response.ok:
            return response
        if not is_transient_status(response.status_code) or attempt == MAX_QUERY_ATTEMPTS:
            response.raise_for_status()
        print(f"Status request returned {response.status_code}, retrying...")
        time.sleep(RETRY_DELAY_SECONDS)

    raise SystemExit("Failed to query task.")

if COMETAPI_KEY == "<YOUR_COMETAPI_KEY>":
    print("Set COMETAPI_KEY before running this example.")
    raise SystemExit(0)

headers = {"Authorization": f"Bearer {COMETAPI_KEY}"}

create_response = create_task(
    {
        "prompt": (None, "A slow cinematic camera push across a coastal landscape at sunrise."),
        "model": (None, "doubao-seedance-2-0"),
        "seconds": (None, "5"),
        "size": (None, "16:9"),
        "resolution": (None, "720p"),
    }
)
create_response.raise_for_status()
create_result = create_response.json()

task_id = create_result.get("id") or create_result.get("task_id")
if not task_id:
    print(json.dumps(create_result, indent=2))
    raise SystemExit("No task id returned.")

print(f"Task created: {task_id}")
print(f"Initial status: {create_result.get('status')}")

while True:
    task_response = get_task(task_id)
    task_response.raise_for_status()
    task = task_response.json()
    status = str(task.get("status") or "unknown")
    normalized_status = status.lower()
    progress = task.get("progress")
    should_try_download = normalized_status in SUCCESS_STATUSES or (
        normalized_status == "unknown" and is_progress_complete(progress)
    )

    print(f"Status: {status}, progress: {progress}")

    if should_try_download or normalized_status in TERMINAL_STATUSES:
        if should_try_download:
            video_url = task.get("video_url") or ""
            content_url = f"{BASE_URL}/v1/videos/{task_id}/content"
            output_path = os.path.join(OUTPUT_DIR, f"{task_id}.mp4")

            os.makedirs(OUTPUT_DIR, exist_ok=True)
            with requests.get(
                content_url,
                headers=headers,
                timeout=120,
                stream=True,
            ) as video_response:
                video_response.raise_for_status()
                with open(output_path, "wb") as output_file:
                    for chunk in video_response.iter_content(chunk_size=8192):
                        if chunk:
                            output_file.write(chunk)

            print(f"Video URL: {video_url}")
            print(f"Content endpoint: {content_url}")
            print(f"Saved to {output_path}")
            print(f"File size: {os.path.getsize(output_path)} bytes")
        else:
            print(json.dumps(task, indent=2))
            raise SystemExit(1)
        break

    time.sleep(POLL_INTERVAL_SECONDS)

JavaScript Code Example

import fs from "fs";
import path from "path";

// Get your CometAPI key from https://www.cometapi.com/console/token, and paste it here
const api_key = process.env.COMETAPI_KEY || "<YOUR_COMETAPI_KEY>";
const base_url = "https://api.cometapi.com";
const output_dir = "./output";
const poll_interval_ms = 10_000;
const retry_delay_ms = 5_000;
const max_create_attempts = 5;
const max_query_attempts = 3;
const terminal_statuses = new Set(["success", "completed", "failed", "error"]);
const success_statuses = new Set(["success", "completed"]);

function is_progress_complete(progress) {
  if (typeof progress === "number") {
    return progress >= 100;
  }

  if (typeof progress === "string") {
    const numeric = Number(progress.replace(/%$/, ""));
    return Number.isFinite(numeric) && numeric >= 100;
  }

  return false;
}

function is_transient_status(status) {
  return status === 429 || status >= 500;
}

async function fetch_with_retry(url, options, attempts, label) {
  for (let attempt = 1; attempt <= attempts; attempt += 1) {
    const response = await fetch(url, options);
    if (response.ok) {
      return response;
    }

    if (!is_transient_status(response.status) || attempt === attempts) {
      return response;
    }

    console.log(`${label} returned ${response.status}, retrying...`);
    await new Promise((resolve) => setTimeout(resolve, retry_delay_ms));
  }

  throw new Error(`${label} failed`);
}

if (api_key === "<YOUR_COMETAPI_KEY>") {
  console.log("Set COMETAPI_KEY before running this example.");
  process.exit(0);
}

const headers = {
  Authorization: `Bearer ${api_key}`,
};

const form = new FormData();
form.set("prompt", "A slow cinematic camera push across a coastal landscape at sunrise.");
form.set("model", "doubao-seedance-2-0");
form.set("seconds", "5");
form.set("size", "16:9");
form.set("resolution", "720p");

const create_response = await fetch_with_retry(`${base_url}/v1/videos`, {
  method: "POST",
  headers,
  body: form,
}, max_create_attempts, "Create request");

if (!create_response.ok) {
  console.log(await create_response.text());
  process.exit(1);
}

const create_result = await create_response.json();
const task_id = create_result.id || create_result.task_id;

if (!task_id) {
  console.log(JSON.stringify(create_result, null, 2));
  process.exit(1);
}

console.log(`Task created: ${task_id}`);
console.log(`Initial status: ${create_result.status}`);

while (true) {
  const task_response = await fetch_with_retry(`${base_url}/v1/videos/${task_id}`, {
    headers,
  }, max_query_attempts, "Status request");

  if (!task_response.ok) {
    console.log(await task_response.text());
    process.exit(1);
  }

  const task = await task_response.json();
  const status = String(task.status || "unknown");
  const normalized_status = status.toLowerCase();
  const progress = task.progress;
  const should_try_download = success_statuses.has(normalized_status) || (
    normalized_status === "unknown" && is_progress_complete(progress)
  );

  console.log(`Status: ${status}, progress: ${progress}`);

  if (should_try_download || terminal_statuses.has(normalized_status)) {
    if (should_try_download) {
      const video_url = task.video_url || "";
      const content_url = `${base_url}/v1/videos/${task_id}/content`;
      const output_path = path.join(output_dir, `${task_id}.mp4`);

      if (!fs.existsSync(output_dir)) {
        fs.mkdirSync(output_dir, { recursive: true });
      }

      const video_response = await fetch(content_url, { headers });
      if (!video_response.ok) {
        console.log(await video_response.text());
        process.exit(1);
      }

      const video_buffer = Buffer.from(await video_response.arrayBuffer());
      fs.writeFileSync(output_path, video_buffer);

      console.log(`Video URL: ${video_url}`);
      console.log(`Content endpoint: ${content_url}`);
      console.log(`Saved to ${output_path}`);
      console.log(`File size: ${fs.statSync(output_path).size} bytes`);
    } else {
      console.log(JSON.stringify(task, null, 2));
      process.exit(1);
    }
    break;
  }

  await new Promise((resolve) => setTimeout(resolve, poll_interval_ms));
}

Curl Code Example

#!/bin/bash

set -euo pipefail

# Get your CometAPI key from https://www.cometapi.com/console/token
# Export it as: export COMETAPI_KEY="your-key-here"

if [[ -z "${COMETAPI_KEY:-}" ]]; then
  echo "Set COMETAPI_KEY before running this example."
  exit 0
fi

BASE_URL="https://api.cometapi.com"
OUTPUT_DIR="./output"
POLL_INTERVAL_SECONDS=10
RETRY_DELAY_SECONDS=5
MAX_CREATE_ATTEMPTS=5
MAX_QUERY_ATTEMPTS=3

is_progress_complete() {
  local progress="$1"
  local normalized="${progress%%%}"

  if [[ -z "$normalized" ]]; then
    return 1
  fi

  [[ "$normalized" =~ ^[0-9]+([.][0-9]+)?$ ]] || return 1
  awk -v value="$normalized" 'BEGIN { exit !(value >= 100) }'
}

create_task() {
  local attempt=1
  while (( attempt <= MAX_CREATE_ATTEMPTS )); do
    local response
    local status_code
    response=$(curl -sS -w $'\n%{http_code}' "${BASE_URL}/v1/videos" \
      -H "Authorization: Bearer $COMETAPI_KEY" \
      -F 'prompt="A slow cinematic camera push across a coastal landscape at sunrise."' \
      -F 'model="doubao-seedance-2-0"' \
      -F 'seconds="5"' \
      -F 'size="16:9"' \
      -F 'resolution="720p"')

    status_code=$(echo "$response" | tail -n 1)
    CREATE_RESPONSE=$(echo "$response" | sed '$d')

    if [[ "$status_code" =~ ^2 ]]; then
      return 0
    fi

    if [[ "$status_code" == "429" || "$status_code" =~ ^5 ]] && (( attempt < MAX_CREATE_ATTEMPTS )); then
      echo "Create request returned ${status_code}, retrying..."
      sleep "$RETRY_DELAY_SECONDS"
      (( attempt += 1 ))
      continue
    fi

    echo "$CREATE_RESPONSE"
    return 1
  done
}

get_task() {
  local task_id="$1"
  local attempt=1
  while (( attempt <= MAX_QUERY_ATTEMPTS )); do
    local response
    local status_code
    response=$(curl -sS -w $'\n%{http_code}' "${BASE_URL}/v1/videos/${task_id}" \
      -H "Authorization: Bearer $COMETAPI_KEY")

    status_code=$(echo "$response" | tail -n 1)
    TASK_RESPONSE=$(echo "$response" | sed '$d')

    if [[ "$status_code" =~ ^2 ]]; then
      return 0
    fi

    if [[ "$status_code" == "429" || "$status_code" =~ ^5 ]] && (( attempt < MAX_QUERY_ATTEMPTS )); then
      echo "Status request returned ${status_code}, retrying..."
      sleep "$RETRY_DELAY_SECONDS"
      (( attempt += 1 ))
      continue
    fi

    echo "$TASK_RESPONSE"
    return 1
  done
}

create_task

TASK_ID=$(echo "$CREATE_RESPONSE" | jq -r '.id // .task_id // empty')

if [[ -z "$TASK_ID" ]]; then
  echo "$CREATE_RESPONSE" | jq .
  echo "No task id returned."
  exit 1
fi

echo "Task created: $TASK_ID"
echo "Initial status: $(echo "$CREATE_RESPONSE" | jq -r '.status // empty')"

while true; do
  get_task "$TASK_ID"

  STATUS=$(echo "$TASK_RESPONSE" | jq -r '.status // empty')
  NORMALIZED_STATUS=$(echo "$STATUS" | tr '[:upper:]' '[:lower:]')
  PROGRESS=$(echo "$TASK_RESPONSE" | jq -r '.progress // empty')
  SHOULD_TRY_DOWNLOAD=0

  if [[ "$NORMALIZED_STATUS" == "success" || "$NORMALIZED_STATUS" == "completed" ]]; then
    SHOULD_TRY_DOWNLOAD=1
  elif [[ "$NORMALIZED_STATUS" == "unknown" ]] && is_progress_complete "$PROGRESS"; then
    SHOULD_TRY_DOWNLOAD=1
  fi

  echo "Status: ${STATUS}, progress: ${PROGRESS}"

  if [[ "$SHOULD_TRY_DOWNLOAD" == "1" || "$NORMALIZED_STATUS" == "failed" || "$NORMALIZED_STATUS" == "error" ]]; then
    if [[ "$SHOULD_TRY_DOWNLOAD" == "1" ]]; then
      VIDEO_URL=$(echo "$TASK_RESPONSE" | jq -r '.video_url // empty')
      CONTENT_URL="${BASE_URL}/v1/videos/${TASK_ID}/content"
      OUTPUT_PATH="${OUTPUT_DIR}/${TASK_ID}.mp4"

      mkdir -p "$OUTPUT_DIR"
      curl -fsS "$CONTENT_URL" \
        -H "Authorization: Bearer $COMETAPI_KEY" \
        -o "$OUTPUT_PATH"

      if [[ ! -s "$OUTPUT_PATH" ]]; then
        echo "Failed to download video"
        exit 1
      fi

      echo "Video URL: ${VIDEO_URL}"
      echo "Content endpoint: ${CONTENT_URL}"
      echo "Saved to ${OUTPUT_PATH}"
      echo "File size: $(wc -c < "$OUTPUT_PATH" | tr -d ' ') bytes"
    else
      echo "$TASK_RESPONSE" | jq .
      exit 1
    fi
    break
  fi

  sleep "$POLL_INTERVAL_SECONDS"
done

Doubao-Seedance-2-0 کے ورژن

Doubao-Seedance-2-0 کے متعدد سنیپ شاٹس کی وجوہات میں ممکنہ عوامل شامل ہوسکتے ہیں جیسے اپ ڈیٹس کے بعد آؤٹ پٹ میں تبدیلیاں جس کی وجہ سے مستقل مزاجی کے لیے پرانے سنیپ شاٹس کی ضرورت ہوتی ہے، ڈویلپرز کو ایڈاپٹیشن اور مائیگریشن کے لیے منتقلی کا وقت فراہم کرنا، اور عالمی یا علاقائی اینڈ پوائنٹس کے مطابق مختلف سنیپ شاٹس کا ہونا تاکہ صارف کے تجربے کو بہتر بنایا جاسکے۔ ورژنز کے درمیان تفصیلی فرق کے لیے براہ کرم سرکاری دستاویزات کا حوالہ دیں۔
version
doubao-seedance-2-0
doubao-seedance-2-0-fast

مزید ماڈلز

O

Sora 2 Pro

فی سیکنڈ:$0.24
Sora 2 Pro ہمارا سب سے جدید اور طاقتور میڈیا تخلیق کا ماڈل ہے، جو ہم آہنگ آڈیو کے ساتھ ویڈیوز تیار کرنے کی صلاحیت رکھتا ہے۔ یہ قدرتی زبان یا تصاویر سے تفصیلی اور متحرک ویڈیو کلپس بنا سکتا ہے۔
O

Sora 2

فی سیکنڈ:$0.08
انتہائی طاقتور ویڈیو تخلیق کا ماڈل، صوتی اثرات کے ساتھ، چیٹ فارمیٹ کی حمایت کرتا ہے۔
M

mj_fast_video

فی درخواست:$0.6
Midjourney video generation
X

Grok Imagine Video

فی سیکنڈ:$0.04
ٹیکسٹ پرامپٹس سے ویڈیوز تیار کریں، جامد تصاویر کو متحرک بنائیں، یا قدرتی زبان کے ذریعے موجودہ ویڈیوز میں ترمیم کریں۔ API تیار کردہ ویڈیوز کے لیے قابلِ ترتیب دورانیہ، ایسپیکٹ ریشو، اور ریزولوشن کی حمایت کرتی ہے — اور SDK غیر ہم زمانی پولنگ کو خودکار طور پر سنبھالتا ہے۔
G

Veo 3.1 Pro

فی سیکنڈ:$0.25
Veo 3.1-Pro سے مراد Google کی Veo 3.1 فیملی کی اعلیٰ صلاحیتوں والی رسائی/کنفیگریشن ہے — یہ مختصر فارمیٹ، آڈیو سے لیس ویڈیو ماڈلز کی ایک جنریشن ہے جو زیادہ بھرپور بِلٹ اِن آڈیو، بہتر بیانیہ/ایڈیٹنگ کنٹرولز اور سین ایکسٹینشن ٹولز فراہم کرتی ہے۔
G

Veo 3.1

فی سیکنڈ:$0.05
Veo 3.1، Google کی اپنی Veo متن-اور-تصویر→ویڈیو فیملی کے لیے تدریجی مگر معنی خیز اپ ڈیٹ ہے، جس میں مزید بھرپور نیٹو آڈیو، طویل تر اور زیادہ قابلِ کنٹرول ویڈیو آؤٹ پٹس، اور مزید نفیس ایڈیٹنگ اور سین-لیول کنٹرولز شامل ہیں۔

متعلقہ بلاگز

Seedance 2.0 API استعمال کرنے کا طریقہ
Apr 17, 2026

Seedance 2.0 API استعمال کرنے کا طریقہ

Seedance 2.0 API، ByteDance کا تازہ ترین ملٹی موڈل اے آئی ویڈیو جنریشن ماڈل ہے (April 9, 2026 کو لانچ کیا گیا)۔ یہ ایک ہی درخواست میں متن، تصاویر، ویڈیو کلپس اور آڈیو کو قبول کرتا ہے تاکہ سینیمیٹک 4–15 سیکنڈ کے MP4 ویڈیوز تیار کرے، جن میں نیٹیو آڈیو سنک، ڈائریکٹر-لیول کیمرہ کنٹرول، اور غیر معمولی موشن یکسانیت شامل ہو۔ اسے استعمال کرنے کے لیے: CometAPI.com پر سائن اپ کریں، ایک API key حاصل کریں، REST کے ذریعے ایک غیر ہم وقت ساز ٹاسک جمع کرائیں، تکمیل کے لیے پول کریں، اور ویڈیو URL ڈاؤن لوڈ کریں۔
HappyHorse-1.0 کیا ہے؟ Seedance 2.0 کا موازنہ کیسے کریں؟
Apr 11, 2026
seedance-2-0

HappyHorse-1.0 کیا ہے؟ Seedance 2.0 کا موازنہ کیسے کریں؟

جانیے کہ HappyHorse-1.0 کیا ہے، یہ Artificial Analysis کے ویڈیو لیڈر بورڈ پر سرفہرست کیوں آیا، اس کا Seedance 2.0 سے موازنہ کیسا ہے، اور تازہ ترین رینکنگز AI ویڈیو جنریشن کے لیے کیا معنی رکھتی ہیں۔
Seedance 2.0 کیا ہے؟ ایک جامع تجزیہ
Mar 24, 2026
seedance-2-0

Seedance 2.0 کیا ہے؟ ایک جامع تجزیہ

Seedance 2.0 بائٹ ڈانس کے ذریعے تیار کردہ اگلی نسل کا ایک ملٹی موڈل AI ویڈیو جنریشن ماڈل ہے، جو متن، تصاویر، آڈیو، اور حوالہ جاتی ویڈیوز سے اعلیٰ معیار کی، سنیماٹک ویڈیوز تیار کر سکتا ہے۔ اس میں آڈیو-ویڈیو مشترکہ جنریشن، موشن اسٹیبلٹی، اور حوالہ پر مبنی ایڈیٹنگ جیسی خصوصیات شامل ہیں، اور یہ Artificial Analysis leaderboard جیسے عالمی بینچ مارکس پر تیزی سے اوپر آیا ہے، جس کے باعث 2026 میں یہ خود کو سرِفہرست AI ویڈیو ماڈلز میں شامل کر چکا ہے۔