Dokümantasyona geç
Bu sayfada

Seedance 2.5

Metin, ilk ve son kareler veya çok modlu referanslar kullanarak Seedance 2.5 ile videolar üretin. Bu sayfa, bu modele ait istekten sonuca kadar olan tüm iş akışını kapsar.

API model kimliği: seedance-2-5

Üretim asenkrondur. Görev oluşturulduğunda dönen taskId değerini kaydedin, ardından durumunu sorgulayın veya bir webhook alın.

Yetenekler

ÖzellikDesteklenen değerler
Çıkış çözünürlüğü480p · 720p · 1080p
Çıkış süresi4–30 saniye
En boy oranı16:9, 4:3, 1:1, 3:4, 9:16, 21:9, adaptive
Referans görseller30 adede kadar görsel
Referans videolar10 adede kadar video
Referans ses dosyaları10 adede kadar ses dosyası
Tüm referansların toplamıToplam 50 adede kadar kaynak dosya
Video/ses grubu başına toplam süre30 saniye
seedDesteklenmiyor
Referanstan videoya modunda duration=-1 değerini de kabul eder; aşağıdaki video düzenleme ve fiyatlandırma bölümüne bakın. image-to-video yalnızca adaptive değerini kabul eder; bu alanı boş bırakın veya adaptive olarak ayarlayın.

Fiyatlandırma ve krediler

Video oluşturma işlemi, saniye cinsinden faturalandırılabilir süreye göre krediyle ücretlendirilir. Video girdisi olmadığında, faturalandırılabilir süre çıktı süresidir; video girdisi olduğunda ise referans video süresi de bu süreye dahil edilir.

Taslaklar, geçerli olduğunda referans video girdisi de dahil olmak üzere yukarıdaki 480p ücretleri üzerinden değerlendirilir. Finaller ise saniye başına 30 kredi olan 1080p yalnızca çıktı ücretiyle ücretlendirilir; referans video girdisi için tekrar ücret alınmaz. Örneğin, referans videosu olmayan 5 saniyelik bir Taslak 50 krediye, 5 saniyelik bir final ise ek olarak 150 krediye mal olur.

Aşağıdaki tabloda, bir görevin toplam maliyeti değil, saniye başına tahsil edilen kredi miktarı listelenmiştir. Ücretlendirme oranı modele, çıktı çözünürlüğüne ve referans videodan videoya modunda referans videoların sağlanıp sağlanmadığına bağlıdır. Toplam maliyet hesaplaması için tablonun altındaki formüllere ve örneklere göz atabilirsiniz.

Çıkış çözünürlüğüVideo girişi olmadanVideo girişi ile
480p10 kredi/saniye6 kredi/saniye
720p20 kredi/saniye12 kredi/saniye
1080p30 kredi/saniye20 kredi/saniye
  • Video girişi olmadan: çıkış saniyesi × video içermeyen ücret.
  • Video girişi ile: (çıkış saniyesi + ölçülen referans video saniyesi) × videolu ücret. Sunucu, toplam referans video süresini ölçer ve faturalandırmadan önce yukarıya doğru tam saniyeye yuvarlar.
  • Yalnızca görsel veya ses referanslarının kullanılması, videosuz ücret üzerinden değerlendirilir. Referans video faturalandırma ücreti, yalnızca referans videolar sağlandığında referanstan videoya modunda geçerlidir.

Ücret hesaplama örnekleri

5 saniyelik 720p metinden videoya: 5 × 20 = 100 kredi.

5 saniyelik referans video ile 5 saniyelik 720p çıkış: (5 + 5) × 12 = 120 kredi.

Bu krediler, görev oluşturulduğunda önceden düşülür. Görev başarıyla tamamlanırsa bu tutar nihai ücret olarak kabul edilir; gerçek çıktı süresine bağlı olarak herhangi bir ekleme yapılmaz veya kısmi iade sağlanmaz. Başarısız olan veya zaman aşımına uğrayan görevler için iade süreci başlatılır.

Krediler istek gönderildiğinde rezerve edilir ve işlem başarıyla tamamlandığında tahsil edilir. Başarısız olan veya zaman aşımına uğrayan görevler iade sürecine girer. refund_failed fatura durumu, iadenin tamamlanamadığı anlamına gelir; API günlüklerini kontrol edin veya destek ekibiyle iletişime geçin.

duration=-1 olduğunda krediler nasıl düşülür?

Süre -1 olarak ayarlandığında, nihai çıktı süresi sabitlenmez ve model tarafından belirlenir.

Çoğu durumda, süreyi -1 yapmak yerine doğrudan ihtiyacınız olan video uzunluğuna ayarlayın. -1 değerini diğer video üretme senaryoları için değil, yalnızca video düzenleme işlemleri için kullanmanızı öneririz.

Referans girdileriÜcretin hesaplanma yöntemiÖrnek
Referans videolar varsaTüm referans videoların süreleri toplanır ve toplam süre en yakın tam saniyeye yukarı yuvarlanarak T olarak tanımlanır. Ücret, (T + T) × videolu ücret tarifesi şeklinde hesaplanır: T değerlerinden biri tahmini çıktı süresini, diğeri ise girdi videosunun süresini temsil eder.5 saniyelik referans videoya sahip 720p içerik: (5 + 5) × 12 = 120 kredi.
Referans videolar yoksa (yalnızca görsel veya ses)Tahmini çıktı süresi 30 saniye olarak kabul edilir. Ücret, 30 × videosuz ücret tarifesi şeklinde hesaplanır.Referans videosuz 720p içerik: 30 × 20 = 600 kredi.

Kimlik doğrulama

Panelde bir API anahtarı oluşturun. Anahtarın tamamı yalnızca bir kez gösterilir. Bu anahtarı sunucunuzda saklayın ve her istekte Bearer token olarak gönderin.

Temel URL

https://api.seevio.ai
Authorization: Bearer sk_live_your_api_key
Content-Type: application/json

Bu örnekleri çalıştırmadan önce SEEVIO_API_KEY ortam değişkenini tanımlayın. JavaScript örnekleri sunucunuzda Node.js ile çalışır; Python örnekleri ise requests paketini kullanır.

Hızlı başlangıç

Bu temel isteği gönderin, dönen taskId değerini kaydedin ve ardından aşağıdaki görev sorgulama örneğini kullanın. İstek oluşturma yanıtındaki credits değeri, ayrılan (rezerve edilen) miktarı gösterir.

curl --fail-with-body https://api.seevio.ai/v1/videos/generations \
  -H "Authorization: Bearer $SEEVIO_API_KEY" \
  -H "Content-Type: application/json" \
  --data '{
  "model": "seedance-2-5",
  "input": {
    "prompt": "A cat surfing at sunset, cinematic lighting",
    "duration": 5,
    "resolution": "720p",
    "generation_type": "text-to-video",
    "aspect_ratio": "16:9",
    "generate_audio": true
  }
}'

Görev oluşturma yanıtı örneği

Yukarıdaki istek kabul edildikten sonra API bu JSON yanıtını döndürür. taskId, sonraki durum sorgulamalarında kullanılan görev tanımlayıcıdır; credits ise bu görev için ayrılan kredi miktarını gösterir. Bu yanıt yalnızca görevin oluşturulduğunu onaylar, videonun hazır olduğu anlamına gelmez. Video sonuçlarını almak için görev durumunu düzenli olarak sorgulamanız (poll) veya bir Webhook kullanmanız gerekir.

{
  "taskId": "3f2aK9mR7xQp4TnZ8bLc6YwH",
  "credits": 100
}

Görev oluştur

POST https://api.seevio.ai/v1/videos/generations

Model ve input bilgilerinin yanı sıra isteğe bağlı bir callback_url içeren bir JSON nesnesi gönderin. Her zaman bu sayfada gösterilen model kimliğini belirtin; model alanının boş bırakılması seedance-2-0 modelini seçer.

İstek gövdesi

AlanTürZorunluAçıklama ve kısıtlamalar
model
stringEvet

Model kimliği. Seedance 2.5 kullanmak için bu alanı seedance-2-5 olarak ayarlayın.

callback_url
stringHayır

Tamamlanma ve başarısızlık POST geri çağrıları (callback) için genel erişime açık HTTPS uç noktası. Özel ağlara ve localhost adresine izin verilmez.

Örnek: https://example.com/webhooks/seevio
input
objectEvet

Üretim ayarları. Boş olmayan bir prompt (istem) içermelidir.

Giriş parametreleri

image_urls alanı image-to-video modunda zorunludur. reference-to-video modu, image_urls, video_urls ve audio_urls arasından en az bir referans gerektirir.
draft_task_id sağlandığında; prompt, generation_type, image_urls, video_urls, audio_urls, duration, aspect_ratio, seed, generate_audio, web_search ve omni_reference_task_type alanlarını, değerleri Taslak ile aynı olsa bile göndermeyin. Bu ayarlar doğrudan devralınır. draft=true parametresi ile draft_task_id parametresini birlikte kullanmayın.

image_urls, video_urls ve audio_urls değerlerini URL dizesi dizileri (string[]) olarak sağlayın. Gönderilen tüm URL'lerin, seçilen mod tarafından yok sayılan medyalar da dahil olmak üzere, HTTPS üzerinden herkese açık olarak erişilebilir olması gerekir.

AlanTürZorunluVarsayılanAçıklama ve kısıtlamalar
input.draft
booleanHayırfalse

480p Taslak önizlemesi oluşturun. Yalnızca Seedance 2.5 için geçerlidir. draft_task_id ile birlikte kullanılamaz.

Desteklenen değerler
true | false
input.draft_task_id
stringHayır—

Sahip olunan ve oluşturulmasının üzerinden 7 gün geçmemiş, tamamlanmış bir API Taslağından 1080p final üretin. Bu API tarafından döndürülen taskId değerini sağlayın ve devralınan üretim alanlarını göndermeyin.

Örnek: 3f2aK9mR7xQp4TnZ8bLc6YwH
input.output_format
stringHayırmp4

Video çıktı kapsayıcısı. Taslak ve final istekleri de dahil olmak üzere mp4 ve mov formatlarını destekler.

Desteklenen değerler
mp4 | mov
input.prompt
stringKoşullu—

Normal üretim ve Taslak oluşturma için zorunludur. draft_task_id ile bir final videosu üretirken bu alanı göndermeyin; Taslağın istemi devralınır.

Örnek: A cat surfing at sunset
input.generation_type
stringHayırtext-to-video

text-to-video yalnızca istemi kullanır; image-to-video 1-2 görsel kullanır; reference-to-video ise görsel, video ve/veya ses referanslarını kullanır.

Desteklenen değerler
text-to-video | image-to-video | reference-to-video
input.image_urls
string[]Koşullu[]

image-to-video: ilk kare için 1 görsel veya ilk ve son kareler için sıralı 2 görsel. reference-to-video: en fazla 30 görsel. text-to-video modunda yoksayılır.

Örnek: ["https://example.com/first-frame.jpg"]
input.video_urls
string[]Koşullu[]

Yalnızca reference-to-video modunda iletilir; toplamda en fazla 10 video ve 30 saniye. Diğer modlarda yoksayılır.

Örnek: ["https://example.com/source.mp4"]
input.audio_urls
string[]Koşullu[]

Yalnızca reference-to-video modunda iletilir; toplamda en fazla 10 ses dosyası ve 30 saniye. Diğer modlarda yoksayılır.

Örnek: ["https://example.com/music.mp3"]
input.duration
integerHayır5

Çıktı süresi: 4–30 saniye, varsayılan 5 saniye. Taslaklar ve referanstan videoya modu için duration=-1 kabul edilir. Final videosu için duration alanını göndermeyin; Taslaktan devralınır.

Desteklenen değerler
-1 | 4–30
Örnek: 5
input.aspect_ratio
stringHayıradaptive

Çıkış en boy oranı. adaptive seçeneği, en boy oranını modelin belirlemesine izin verir. image-to-video yalnızca adaptive değerini kabul eder; bu alanı boş bırakın veya adaptive olarak ayarlayın.

Desteklenen değerler
16:9, 4:3, 1:1, 3:4, 9:16, 21:9, adaptive
Örnek: adaptive
input.resolution
stringHayır720p

Normal üretim varsayılan olarak 720p çözünürlüktedir. Taslaklar yalnızca 480p (Taslak varsayılanı) destekler. Finaller ise yalnızca 1080p (final varsayılanı) destekler.

Desteklenen değerler
480p | 720p | 1080p
Örnek: 720p
input.generate_audio
booleanHayırtrue

Senkronize ses üretimi talep edin.

Desteklenen değerler
true | false
Örnek: true
input.watermark
booleanHayırfalse

Üretilen videoda yapay zeka filigranı talep edin.

Desteklenen değerler
true | false
Örnek: false
input.web_search
booleanHayırfalse

Model tarafından desteklendiğinde web aramasına izin verin.

Desteklenen değerler
true | false
Örnek: false
input.return_last_frame
booleanHayırfalse

Son kareyi talep edin. Kare kullanılabilir olduğunda sorgu sonucu data.last_frame_url değerini içerir; aksi takdirde null döner.

Desteklenen değerler
true | false
Örnek: true

Boole alanları dize veya sayı değil, JSON true veya false olmalıdır.

Yanıt oluştur

HTTP 200, taskId (dize) ve credits (sayı) döndürür. Bu, görevin tamamlandığını değil, oluşturulduğunu onaylar. Aşağıdaki miktar, 5 saniyelik 720p hızlı başlangıç değerine karşılık gelir.

{
  "taskId": "3f2aK9mR7xQp4TnZ8bLc6YwH",
  "credits": 100
}

Taslak önizleme → 1080p final

Seedance 2.5 iki adımlı bir iş akışını destekler: Önce görselleri ve hareketi kontrol etmek için 480p bir Taslak (Draft) üretin, ardından bunu 1080p nihai (final) video oluşturmak için yeniden kullanın. Her iki adım da POST /v1/videos/generations uç noktasını kullanır ve ayrı ayrı ücretlendirilen bağımsız görevler oluşturur.

Taslak modu, farklı fikirleri deneme maliyetini azaltabilir. Her denemeyi doğrudan 1080p olarak üretmek yerine, daha düşük maliyetli birkaç adet 480p Taslak oluşturabilir, en beğendiğinizi seçip ardından bu Taslağı kullanarak 1080p nihai videoyu üretebilirsiniz. Bu sayede, yüksek çözünürlüklü sürüm için ödeme yapmadan önce farklı sonuçları daha düşük bir maliyetle keşfedebilirsiniz.

Nihai video üretmek için, başarıyla tamamlanmış bir Taslağı oluşturulma tarihinden itibaren 7 gün içinde kullanın. Taslak, aynı API hesabına ait olmalıdır. Bu API tarafından döndürülen taskId değerini kullanın.

1. 480p Taslak üretin

input.draft=true değerini ayarlayın ve her zamanki istemi, referansları ve üretim ayarlarını sağlayın. Taslak modunda çözünürlük varsayılan olarak 480p olur; diğer çözünürlükler reddedilir. Aşağıda gösterildiği gibi Taslak için return_last_frame özelliğini etkinleştirebilirsiniz.

curl --fail-with-body https://api.seevio.ai/v1/videos/generations \
  -H "Authorization: Bearer $SEEVIO_API_KEY" \
  -H "Content-Type: application/json" \
  --data '{
  "model": "seedance-2-5",
  "input": {
    "prompt": "A cat surfing at sunset, cinematic lighting",
    "draft": true,
    "duration": 5,
    "resolution": "480p",
    "return_last_frame": true
  }
}'
{
  "taskId": "3f2aK9mR7xQp4TnZ8bLc6YwH",
  "credits": 50
}

2. Taslağın tamamlanmasını bekleyin

İstek oluşturma yanıtındaki taskId değerini kaydedin ve durum completed olana kadar GET /v1/tasks/TASK_ID sorgusunu çalıştırın. Sorgu yanıtında is_draft=true yer alır; videoyu data.results alanından önizleyebilirsiniz. Talep edildiyse, hazır olan son kare data.last_frame_url içinde bulunur.

Taslak tamamlandığında bir Webhook bildirimi de alabilirsiniz. Taslak oluşturma isteğinin en üst düzeyinde callback_url parametresini ayarlamanız yeterlidir. Taslak tamamlandığında bu URL'ye bir bildirim gönderilir; böylece servisiniz geri çağırmayı işleyerek sonucu kaydedebilir, görev durumunu güncelleyebilir veya kendi iş akışlarınızı tetikleyebilir. Geri çağırma formatı için bu sayfadaki Webhook'lar bölümüne bakın.

curl --fail-with-body https://api.seevio.ai/v1/tasks/3f2aK9mR7xQp4TnZ8bLc6YwH \
  -H "Authorization: Bearer $SEEVIO_API_KEY"
{
  "id": "3f2aK9mR7xQp4TnZ8bLc6YwH",
  "created_at": 1788652800,
  "model": "seedance-2-5",
  "is_draft": true,
  "draft_task_id": null,
  "status": "completed",
  "billing_status": "charged",
  "credits": 50,
  "failed_reason": null,
  "data": {
    "results": [
      "https://cdn.seevio.ai/api/videos/example.mp4"
    ],
    "video_expires_at": "2026-09-07T00:00:00Z",
    "last_frame_url": "https://cdn.seevio.ai/api/images/draft-last-frame.jpg",
    "processing_time": 48
  }
}

3. 1080p final üretin

Bu örnekteki draft_task_id değerini tamamlanmış Taslağınızın taskId değeriyle değiştirin. Final videosu, Taslağın içeriğini ve süresini devralır. Çözünürlük varsayılan olarak 1080p olur ve başka bir çözünürlük kabul edilmez. output_format, watermark ve return_last_frame ayarları her final videosu için bağımsız olarak belirlenebilir; callback_url ise yine isteğin en üst düzeyinde yer alır.

draft_task_id sağlandığında; prompt, generation_type, image_urls, video_urls, audio_urls, duration, aspect_ratio, seed, generate_audio, web_search ve omni_reference_task_type alanlarını, değerleri Taslak ile aynı olsa bile göndermeyin. Bu ayarlar doğrudan devralınır. draft=true parametresi ile draft_task_id parametresini birlikte kullanmayın.
curl --fail-with-body https://api.seevio.ai/v1/videos/generations \
  -H "Authorization: Bearer $SEEVIO_API_KEY" \
  -H "Content-Type: application/json" \
  --data '{
  "model": "seedance-2-5",
  "input": {
    "draft_task_id": "3f2aK9mR7xQp4TnZ8bLc6YwH",
    "resolution": "1080p",
    "output_format": "mp4",
    "watermark": false,
    "return_last_frame": true
  }
}'

Yanıt, nihai video için yeni bir taskId içerir. Bu yeni kimliği sorgulayın veya webhook bildirimini bekleyin. Final videosunun sorgu yanıtında is_draft=false olur ve draft_task_id değeri orijinal Taslağın API görev kimliğine eşit olur. Orijinal Taslak geçerliliğini korur. Kabul edilen her final isteği, ayrı ücretlendirilen yeni bir görev oluşturur.

{
  "taskId": "final_7mQx2pN8kR4vT9cL6bW3",
  "credits": 150
}

Taslak ve final ücretlendirmesi

Taslaklar, geçerli olduğunda referans video girdisi de dahil olmak üzere yukarıdaki 480p ücretleri üzerinden değerlendirilir. Finaller ise saniye başına 30 kredi olan 1080p yalnızca çıktı ücretiyle ücretlendirilir; referans video girdisi için tekrar ücret alınmaz. Örneğin, referans videosu olmayan 5 saniyelik bir Taslak 50 krediye, 5 saniyelik bir final ise ek olarak 150 krediye mal olur.

duration=-1 olduğunda, Taslak ve finalin her biri en fazla 30 saniyelik çıktı süresi için kredi rezerve eder; referans video girdisi ise yalnızca Taslak için rezerve edilir. İşlem tamamlandığında, ücret belirlenebilen gerçek çıktı süresine göre ayarlanır ve kullanılmayan rezerve krediler iade edilir. Bir final isteği en fazla 900 kredi rezerve eder.

Tamamlanmamış, süresi dolmuş, Taslak olmayan veya erişilemeyen bir kaynak, HTTP 400 (invalid_request) hatası ile reddedilir. Geçersiz çözünürlük, devralınan alanların gönderilmesi veya çelişen Taslak parametreleri de HTTP 400 hatasına neden olur. Yetersiz kredi durumunda HTTP 402 hatası döner.

Üretim modları ve örnekler

example.com medya URL'lerini kendi genel erişime açık HTTPS dosyalarınızla değiştirin. Örnek URL'ler istek yapısını göstermek amaçlıdır ve indirilebilir örnek varlıklar değildir.

Metinden videoya

Bir metin isteminden video üretin. Medya URL'leri bu modda iletilmez.

curl --fail-with-body https://api.seevio.ai/v1/videos/generations \
  -H "Authorization: Bearer $SEEVIO_API_KEY" \
  -H "Content-Type: application/json" \
  --data '{
  "model": "seedance-2-5",
  "input": {
    "prompt": "A cat surfing at sunset, cinematic lighting",
    "duration": 5,
    "resolution": "720p",
    "generation_type": "text-to-video",
    "aspect_ratio": "16:9",
    "generate_audio": true
  }
}'

İlk kare

İlk kare olarak tek bir görsel sağlayın, ardından isteminizde hareketi tanımlayın.

curl --fail-with-body https://api.seevio.ai/v1/videos/generations \
  -H "Authorization: Bearer $SEEVIO_API_KEY" \
  -H "Content-Type: application/json" \
  --data '{
  "model": "seedance-2-5",
  "input": {
    "prompt": "A cat surfing at sunset, cinematic lighting",
    "duration": 5,
    "resolution": "720p",
    "generation_type": "image-to-video",
    "image_urls": [
      "https://example.com/first-frame.jpg"
    ],
    "aspect_ratio": "adaptive"
  }
}'

İlk ve son kareler

Sırasıyla iki görsel URL'si sağlayın: önce ilk kare, ardından son kare. Bu örnek aynı zamanda üretilen videonun son karesini de talep eder.

curl --fail-with-body https://api.seevio.ai/v1/videos/generations \
  -H "Authorization: Bearer $SEEVIO_API_KEY" \
  -H "Content-Type: application/json" \
  --data '{
  "model": "seedance-2-5",
  "input": {
    "prompt": "A cat surfing at sunset, cinematic lighting",
    "duration": 5,
    "resolution": "720p",
    "generation_type": "image-to-video",
    "image_urls": [
      "https://example.com/first-frame.jpg",
      "https://example.com/last-frame.jpg"
    ],
    "aspect_ratio": "adaptive",
    "return_last_frame": true
  }
}'

Çok modlu referans

Görsel, video ve ses referanslarını birleştirin. İstem alanı yine de zorunludur. Referans video girişi faturalandırma formülünü değiştirir.

curl --fail-with-body https://api.seevio.ai/v1/videos/generations \
  -H "Authorization: Bearer $SEEVIO_API_KEY" \
  -H "Content-Type: application/json" \
  --data '{
  "model": "seedance-2-5",
  "input": {
    "prompt": "Follow the reference camera movement and keep the character consistent. Use the audio for ambience.",
    "duration": 5,
    "resolution": "720p",
    "generation_type": "reference-to-video",
    "image_urls": [
      "https://example.com/character.jpg"
    ],
    "video_urls": [
      "https://example.com/camera.mp4"
    ],
    "audio_urls": [
      "https://example.com/ambience.mp3"
    ],
    "aspect_ratio": "adaptive"
  }
}'

Ses referansı

İstenen videoyu tanımlayan zorunlu bir metin istemiyle birlikte, tek referans türü olarak ses kullanın.

curl --fail-with-body https://api.seevio.ai/v1/videos/generations \
  -H "Authorization: Bearer $SEEVIO_API_KEY" \
  -H "Content-Type: application/json" \
  --data '{
  "model": "seedance-2-5",
  "input": {
    "prompt": "Create a coastal sunrise scene matching the rhythm of this audio.",
    "duration": 5,
    "resolution": "720p",
    "generation_type": "reference-to-video",
    "audio_urls": [
      "https://example.com/music.mp3"
    ]
  }
}'

Video düzenleme

Seedance 2.5 video düzenleme işlemi için sürenin -1, en boy oranının (aspect_ratio) ise "adaptive" olarak ayarlanması gerekir. Oluşturma işleminin başarıyla tamamlanması için bu iki ayarın da yapılması zorunludur.

Yapılacak düzenlemeyi tanımlayın ve kaynak videoyu sağlayın. duration=-1 olarak ayarlayın ve adaptif en boy oranı kullanın. Bu iş akışı için en az 4 saniyelik bir kaynak klip kullanın. duration=-1 için faturalandırma kuralı yukarıda gösterilmiştir.

curl --fail-with-body https://api.seevio.ai/v1/videos/generations \
  -H "Authorization: Bearer $SEEVIO_API_KEY" \
  -H "Content-Type: application/json" \
  --data '{
  "model": "seedance-2-5",
  "input": {
    "prompt": "Edit the source video: change the character’s coat to blue and preserve the camera movement.",
    "duration": -1,
    "resolution": "720p",
    "generation_type": "reference-to-video",
    "video_urls": [
      "https://example.com/source.mp4"
    ],
    "aspect_ratio": "adaptive"
  }
}'

Video uzatma

Seedance 2.5 video uzantısı için aspect_ratio değeri adaptive olarak ayarlanmalıdır; aksi takdirde oluşturma işlemi başarısız olabilir. duration değerini, desteklenen aralıkta olmasını istediğiniz çıkış videosu uzunluğuna göre normal şekilde ayarlayın; -1 değerini kullanmanıza gerek yoktur.

Kaynak videonun nasıl devam etmesi gerektiğini tanımlayın. Adaptif en boy oranı kullanın ve modelin sınırları dahilinde normal bir çıkış süresi ayarlayın.

curl --fail-with-body https://api.seevio.ai/v1/videos/generations \
  -H "Authorization: Bearer $SEEVIO_API_KEY" \
  -H "Content-Type: application/json" \
  --data '{
  "model": "seedance-2-5",
  "input": {
    "prompt": "Continue the camera movement from the source video, revealing a forest clearing.",
    "duration": 8,
    "resolution": "720p",
    "generation_type": "reference-to-video",
    "video_urls": [
      "https://example.com/source.mp4"
    ],
    "aspect_ratio": "adaptive"
  }
}'

Görev sorgula

GET https://api.seevio.ai/v1/tasks/{taskId}

Örnek kimliği, oluşturma sırasında dönen taskId ile değiştirin. Sorgular yalnızca API anahtarının sahibine ait görevleri döndürür; erişilemeyen veya bilinmeyen kimlikler HTTP 404 döndürür.

Başlangıçta her 10-20 saniyede bir sorgulama yapın, HTTP 429 hatasında sıklığı azaltın ve durum completed veya failed olduğunda sorgulamayı durdurun. Üretim ortamında webhook'ları tercih edin. Aşağıdaki her kod örneği tek bir sorgu gerçekleştirir.

curl --fail-with-body https://api.seevio.ai/v1/tasks/3f2aK9mR7xQp4TnZ8bLc6YwH \
  -H "Authorization: Bearer $SEEVIO_API_KEY"
DurumAçıklama ve kısıtlamalar
queuedKabul edildi ve işlenmek üzere bekleniyor.
generatingÜretim devam ediyor.
completedBaşarılı sonuçlanma. Süre dolmadan önce data.results altındaki dosyaları indirin.
failedBaşarısız sonuçlanma. failed_reason ve billing_status alanlarını inceleyin.
AlanTürAçıklama ve kısıtlamalar
idstring
Görev tanımlayıcı. Bu, oluşturma yanıtındaki taskId değeridir.
created_atnumber
Unix saniyesi olarak görevin oluşturulma zamanı.
modelstring
Bu görev için kullanılan genel model kimliği.
is_draftboolean
480p Taslak için true; final veya normal video için false.
draft_task_idstring | null
Nihai video için kaynak Taslağın API görev kimliği; Taslaklar ve normal videolar için null.
billing_statusstring
reserved (rezerve edildi), charged (tahsil edildi), refunded (iade edildi) veya refund_failed (iade başarısız).
creditsnumber
Bu görev için rezerve edilen kredi. Bu değer iade sonrasında da korunur; faturalandırma sonucunu belirlemek için billing_status alanını inceleyin.
failed_reasonstring | null
Başarısız görevlerdeki başarısızlık nedeni; aksi takdirde null. Başarısız sorgu yanıtlarında data alanı yer almaz.
dataobject
Başarısız olmayan görev sorgularında bulunur. Çıkış ve işlem detaylarını içerir.
data.resultsstring[]
Video URL dizisi. Tamamlanana kadar veya videonun süresi dolduktan sonra boştur.
data.video_expires_atstring | null
ISO 8601 zaman damgası olarak videonun son geçerlilik tarihi veya video henüz hazır değilse null. Sonucu bu süreden önce kaydedin.
data.last_frame_urlstring | null
Talep edildiğinde ve mevcut olduğunda son kare URL'si, aksi takdirde null.
data.processing_timenumber | null
Mevcut olduğunda sağlayıcının işlem süresi (saniye cinsinden), aksi takdirde null.

Tamamlanan görev: video sonuçlarını içeren sorgu yanıtı

Sorgu status=completed değerini döndürdüğünde video üretimi tamamlanmış demektir. Video URL'lerini data.results alanından okuyabilir ve data.video_expires_at tarihinden önce indirebilirsiniz. billing_status=charged ifadesi, rezerve edilen kredilerin tahsil edildiğini gösterir.

{
  "id": "3f2aK9mR7xQp4TnZ8bLc6YwH",
  "created_at": 1788652800,
  "model": "seedance-2-5",
  "is_draft": false,
  "draft_task_id": null,
  "status": "completed",
  "billing_status": "charged",
  "credits": 100,
  "failed_reason": null,
  "data": {
    "results": [
      "https://cdn.seevio.ai/api/videos/example.mp4"
    ],
    "video_expires_at": "2026-09-07T00:00:00Z",
    "last_frame_url": null,
    "processing_time": 48
  }
}

Başarısız görev: hata ve faturalandırma ayrıntılarını içeren sorgu yanıtı

Sorgu status=failed değerini döndürdüğünde üretim süreci başarısızlıkla sonuçlanmış demektir. Hatanın nedenini öğrenmek için failed_reason alanını, iade sonucunu görmek için ise billing_status alanını inceleyebilirsiniz. Bu örnekteki refunded ifadesi, kredilerin iade edildiğini gösterir. credits alanı orijinal rezerve edilen miktarı korur ve yanıt data alanını içermez.

{
  "id": "3f2aK9mR7xQp4TnZ8bLc6YwH",
  "created_at": 1788652800,
  "model": "seedance-2-5",
  "is_draft": false,
  "draft_task_id": null,
  "status": "failed",
  "billing_status": "refunded",
  "credits": 100,
  "failed_reason": "provider_failed"
}

Webhook'lar

Görev tamamlandığında veya başarısız olduğunda bir JSON POST isteği almak için oluşturma isteğinde callback_url alanını ayarlayın. 15 saniye içinde bir 2xx yanıtı döndürün. İletilemeyen bildirimler tekrar denenir; yinelenen bildirimleri görev kimliğine göre tekilleştirerek (idempotent) işleyin.

Geri arama (callback) uç noktanız, JSON istek gövdesine (Content-Type: application/json) sahip POST isteklerini kabul etmelidir.

Geri çağırma (callback) ile görev oluşturma

curl --fail-with-body https://api.seevio.ai/v1/videos/generations \
  -H "Authorization: Bearer $SEEVIO_API_KEY" \
  -H "Content-Type: application/json" \
  --data '{
  "model": "seedance-2-5",
  "input": {
    "prompt": "A cat surfing at sunset, cinematic lighting",
    "duration": 5,
    "resolution": "720p",
    "generation_type": "text-to-video",
    "aspect_ratio": "16:9",
    "generate_audio": true
  },
  "callback_url": "https://example.com/webhooks/seevio"
}'

Görev tamamlandı: Başarılı geri arama yükü

Oluşturma işlemi başarıyla tamamlandığında, geri arama status=completed değerini döndürür. Görevi tanımlamak için id parametresini, video URL'lerini almak için ise data.results parametresini kullanın. Sonuçları data.video_expires_at tarihinden önce indirip kaydetmeyi unutmayın.

created_at olayın, task_created_at görevin oluşturulma zamanıdır; ikisi de Unix saniyesidir. Örnekler önerilen alanları gösterir; yanıtlar ek alanlar içerebilir.

{
  "id": "3f2aK9mR7xQp4TnZ8bLc6YwH",
  "created_at": 1788652848,
  "model": "seedance-2-5",
  "status": "completed",
  "task_created_at": 1788652800,
  "billing_status": "charged",
  "credits": 100,
  "failed_reason": null,
  "data": {
    "results": [
      "https://cdn.seevio.ai/api/videos/example.mp4"
    ],
    "video_expires_at": "2026-09-07T00:00:00Z",
    "last_frame_url": null,
    "processing_time": 48
  }
}

Görev başarısız oldu: Başarısızlık geri arama yükü

Oluşturma işlemi başarısız olduğunda, geri arama status=failed değerini döndürür. Görevi tanımlamak için id, başarısızlık nedenini görmek için failed_reason ve iade edilen kredi miktarını öğrenmek için credits_refunded parametrelerini kullanın.

{
  "id": "3f2aK9mR7xQp4TnZ8bLc6YwH",
  "created_at": 1788652848,
  "model": "seedance-2-5",
  "status": "failed",
  "task_created_at": 1788652800,
  "billing_status": "refunded",
  "credits": 100,
  "failed_reason": "provider_failed",
  "credits_refunded": 100
}

Alıcı örneği

export async function POST(request: Request) {
  const callbackData = await request.json();

  if (callbackData.status === "completed") {
    const videoUrls = callbackData.data.results;
    // Save the video URLs and mark this task as completed in your application.
    console.log(callbackData.id, videoUrls);
  }

  if (callbackData.status === "failed") {
    const { failed_reason, credits_refunded } = callbackData;
    // Record the failure reason and refunded credits for this task.
    console.error(callbackData.id, failed_reason, credits_refunded);
  }

  return new Response(null, { status: 200 });
}

Bu Next.js örneği, JSON geri arama gövdesini okur ve tamamlanan ya da başarısız olan görevleri doğrudan işler. Kendi uygulamanız için veri kalıcılığı ve görev kimliği (task-ID) tekilleştirme özellikleri ekleyin; geri aramayı onaylamadan önce yavaş çalışan işlemleri sıraya alın.

Medya gereksinimleri ve sınırlamaları

  • Tüm medya ve geri çağırma URL'leri genel erişime açık HTTPS URL'leri olmalıdır. Localhost, özel IP'ler ve çerez veya oturum açma gerektiren dosyalardan kaçının. Referans video/ses URL'leri doğrudan okunabilir medyaya yönlenmelidir.
  • reference-to-video modunda, toplamda 30 görsel, 10 video, 10 ses dosyası ve 50 materyal sınırını aşmayacak şekilde en az bir referans sağlayın. Toplam video süresi ve toplam ses süresinin her biri en fazla 30 saniye olmalıdır.
  • text-to-video tüm medya referanslarını yoksayar. image-to-video yalnızca ilk/son kare görsellerini iletir ve video ile ses referanslarını yoksayar. Medyaları birleştirmek için reference-to-video modunu kullanın.
  • Her bir referans video ve ses dosyası 2-30 saniye arasında olmalıdır. Video düzenleme örnekleri için en az 4 saniyelik kaynak klipler kullanın.

Görsel gereksinimleri

  • Her bir görselin boyutu 30 MB'tan küçük olmalıdır.
  • Desteklenen biçimler: jpeg, png, webp, bmp, tiff, gif.
  • En boy oranı (genişlik ÷ yükseklik): 0,4 ile 2,5 arasında (sınırlar dahil) olmalıdır.
  • Genişlik ve yüksekliğin her biri 300 ile 6.000 piksel arasında (sınırlar dahil) olmalıdır.

Video gereksinimleri

  • Desteklenen biçimler: mp4, mov.
  • Her bir videonun boyutu 100 MB'ı aşmamalıdır.
  • Kare hızı: 24 ile 60 FPS arasında (sınırlar dahil) olmalıdır.
  • En boy oranı (genişlik ÷ yükseklik): 0,4 ile 2,5 arasında (sınırlar dahil) olmalıdır.
  • Toplam piksel sayısı (genişlik × yükseklik): 407.696 ile 8.295.044 arasında (sınırlar dahil) olmalıdır. Örneğin, 614 × 664 = 407.696 ve 3.326 × 2.494 = 8.295.044. Bunlar piksel sayısına ilişkin örneklerdir; sabit genişlik ve yükseklik gereksinimleri değildir.

Ses gereksinimleri

  • Desteklenen biçimler: wav, mp3.
  • Her bir ses dosyasının boyutu 15 MB'ı aşmamalıdır.

Hatalar

HTTP hataları, code ve message içeren bir error nesnesine sahiptir. Başarıyla kabul edilen bir görev daha sonra yine de başarısız olabilir; görevi sorgulayın veya başarısızlık geri çağırmasını işleyin.

{
  "error": {
    "code": "invalid_request",
    "message": "input.prompt is required."
  }
}
HTTPAlanYapılması gereken
400invalid_request
Yeniden denemeden önce JSON yapısını, eksik istemi, parametre aralığını veya medya URL'sini düzeltin.
401invalid_api_key
Bearer token değerini ve API anahtarının aktif olup olmadığını kontrol edin.
402insufficient_credits
Kredi ekleyin veya görev maliyetini düşürün. Yanıt, gerekli ve mevcut miktarları içerebilir.
403forbidden
Hata mesajında belirtilen hesap düzeyindeki kısıtlamayı kontrol edin.
404not_found
Görev kimliğini ve anahtarın görevin sahibine ait olup olmadığını kontrol edin.
429rate_limited
Yeniden denemeden önce Retry-After başlığında belirtilen süreyi bekleyin.
500internal_error
Hata mesajını ve API günlüklerini inceleyin. Dikkatli bir şekilde yeniden deneyin; istek oluşturmayı tekrar göndermek, faturalandırılabilir başka bir görev oluşturabilir.

İstek sınırları

Görev oluşturma: Her bir API anahtarı, varsayılan olarak dakikada en fazla 100 isteğe izin verir. Özel istek limitleri şu anda desteklenmemektedir.

Görev sorgulama: Her bir API anahtarı, varsayılan olarak dakikada en fazla 120 isteğe izin verir. Sorgulama istekleri ve görev oluşturma istekleri birbirinden bağımsız olarak sayılır.

HTTP 429 hatası, oluşturma için Retry-After: 60 ve sorgular için Retry-After: 5 başlıklarını içerir. Geri çekilme (backoff) yöntemini kullanın ve gereğinden daha sık sorgulama yapmaktan kaçının.