Seedance 2.0 API
Eşzamansız görev oluşturma, durum izleme, webhook'lar ve kredi tabanlı faturalandırma ile ürününüze video oluşturmayı entegre edin.
https://api.seedance2.aiBu sayfada
Giriş
API, Seedance 2.0 video oluşturma görevlerini programlı olarak göndermenizi sağlar. Oluşturma eşzamansızdır: bir görev oluşturun, hemen bir görev kimliği alın, ardından görev uç noktasını yoklayarak veya bir webhook alarak bitmiş videoyu alın.
Eşzamansız görevler
Yoklama, geliştirme ve basit entegrasyonlar için iyi çalışır.
Webhook hazır
Webhook'lar, agresif yoklamayı önledikleri ve bir görev terminal durumuna ulaştığında hizmetinizi bilgilendirdikleri için üretim için önerilir.
Krediye duyarlı
Krediler gönderimde rezerve edilir. Başarılı görevler bu rezervasyondan tahsil edilir; başarısız veya zaman aşımına uğramış görevler otomatik olarak iade edilir.
Kimlik Doğrulama
Kontrol panelinde bir API anahtarı oluşturun ve her istekte Bearer token olarak gönderin. Anahtarın tamamı yalnızca oluşturma sırasında bir kez gösterilir.
Authorization: Bearer sk_live_xxxxxxxxÜretim trafiği için sk_live_ anahtarlarını kullanın.
Aynı API sözleşmesiyle sandbox entegrasyon testi için sk_test_ anahtarlarını kullanın.
Eksik, geçersiz veya iptal edilmiş anahtarlar, HTTP 401 ile invalid_api_key döndürür.
Hızlı Başlangıç
Önce bir görev gönderin. Görev kabul edildikten sonra bir sonuç teslim yöntemi seçin: görev uç noktasını sorgulayın veya terminal sonucunu bir webhook aracılığıyla alın.
Eşzamansız bir video görevi oluşturun ve hemen bir görev kimliği alın.
curl https://api.seedance2.ai/v1/videos/generations \
-H "Authorization: Bearer sk_live_xxx" \
-H "Content-Type: application/json" \
-d '{
"model": "seedance-2-0",
"callback_url": "https://your-domain.com/api/seedance/webhook",
"input": {
"prompt": "a cat surfing on a neon wave, cinematic lighting",
"generation_type": "text-to-video",
"duration": 5,
"aspect_ratio": "16:9",
"resolution": "720p",
"generate_audio": true,
"watermark": false,
"web_search": false,
"return_last_frame": false,
"seed": -1
}
}'Entegrasyonunuz açık yoklamayı tercih ettiğinde görev durum uç noktasını getirin.
curl https://api.seedance2.ai/v1/tasks/3f2aK9mR7xQp4TnZ8bLc6YwH \
-H "Authorization: Bearer sk_live_xxx"Görevi gönderirken callback_url'yi iletin, ardından tamamlama veya başarısızlık geri aramalarını alın ve kendi görev kaydınızı güncelleyin.
export async function POST(request: Request) {
const callbackData = await request.json();
if (callbackData.status === "completed") {
const videoUrl = callbackData.data.results[0];
// Save the video URL or update your own task record here.
}
if (callbackData.status === "failed") {
const errorMessage = callbackData.data.failed_reason;
// Mark your own task record as failed here.
}
return new Response(null, { status: 200 });
}Video görevi oluştur
POST /v1/videos/generations ile bir video görevi oluşturun. İstek gövdesi üst düzey bir model, isteğe bağlı bir callback_url ve istem ve oluşturma ayarlarını içeren bir giriş nesnesi içerir.
/v1/videos/generationscurl https://api.seedance2.ai/v1/videos/generations \
-H "Authorization: Bearer sk_live_xxx" \
-H "Content-Type: application/json" \
-d '{
"model": "seedance-2-0",
"callback_url": "https://your-domain.com/api/seedance/webhook",
"input": {
"prompt": "a cat surfing on a neon wave, cinematic lighting",
"generation_type": "text-to-video",
"duration": 5,
"aspect_ratio": "16:9",
"resolution": "720p",
"generate_audio": true,
"watermark": false,
"web_search": false,
"return_last_frame": false,
"seed": -1
}
}'Oluşturma modları
generation_type, hangi medya girişlerinin kabul edildiğini ve modelin bunları nasıl yorumladığını kontrol eder.
| Mod | Gerekli medya | İsteğe bağlı medya | Notlar |
|---|---|---|---|
text-to-video | istem | süre, en boy oranı, çözünürlük, anahtar | Yalnızca metin istemi. image_urls, video_urls ve audio_urls gerekli değildir. |
image-to-video | istem + image_urls dizisi (1-2 görüntü URL'si) | süre, en boy oranı, çözünürlük, anahtar | image_urls bir dizi olmalıdır. İlk kare için 1 görüntü URL'si veya ilk ve son kareler için 2 görüntü URL'si sağlayın. Video ve ses göz ardı edilir. |
reference-to-video | istem + en az bir görüntü veya video | materyal limitleri dahilinde görüntüler, videolar ve ses | Ses, metinle tek başına kullanılamaz. Ses sağlandığında en az bir görüntü veya video ekleyin. |
text-to-videoİstem tek yaratıcı giriş olduğunda metinden videoya kullanın. (text-to-video)
curl https://api.seedance2.ai/v1/videos/generations \
-H "Authorization: Bearer sk_live_xxx" \
-H "Content-Type: application/json" \
-d '{
"model": "seedance-2-0",
"callback_url": "https://your-domain.com/api/seedance/webhook",
"input": {
"prompt": "a cinematic drone shot over a futuristic coastal city at sunrise",
"generation_type": "text-to-video",
"duration": 5,
"aspect_ratio": "16:9",
"resolution": "720p",
"generate_audio": true,
"watermark": false,
"web_search": false,
"return_last_frame": false,
"seed": -1
}
}'image-to-videoinput.image_urls 1-2 resim URL'si içeren bir dizi olduğunda görüntüden videoya kullanın: bir URL ilk çerçeveyi ayarlar ve iki URL ilk ve son çerçeveleri ayarlar. Video ve ses referansları bu modda göz ardı edilir. (image-to-video)
curl https://api.seedance2.ai/v1/videos/generations \
-H "Authorization: Bearer sk_live_xxx" \
-H "Content-Type: application/json" \
-d '{
"model": "seedance-2-0",
"input": {
"prompt": "the subject turns toward camera, soft studio motion",
"generation_type": "image-to-video",
"image_urls": ["https://your.cdn.com/first-frame.jpg"],
"duration": 5,
"resolution": "720p"
}
}'reference-to-videoReferans görüntüler, videolar ve ses ile daha zengin yönlendirme için referanstan videoya kullanın. Ses, metinle tek başına kullanılamaz; ses sağlandığında en az bir görüntü veya video ekleyin. (reference-to-video)
Materyal limitleri
- En fazla 9 referans görüntü
- Toplam süresi <= 15 saniye olan en fazla 3 referans video
- Toplam süresi <= 15 saniye olan en fazla 3 referans ses
- Tüm türlerde toplamda en fazla 12 materyal
Desteklenen giriş kombinasyonları
curl https://api.seedance2.ai/v1/videos/generations \
-H "Authorization: Bearer sk_live_xxx" \
-H "Content-Type: application/json" \
-d '{
"model": "seedance-2-0",
"input": {
"prompt": "use the product from image 1 and the camera motion from the reference video",
"generation_type": "reference-to-video",
"image_urls": ["https://your.cdn.com/product.jpg"],
"video_urls": ["https://your.cdn.com/camera-motion.mp4"],
"audio_urls": [],
"duration": 8,
"resolution": "1080p"
}
}'İstek parametreleri
Parametre adları, numara değerleri, uç nokta yolları ve örnekler API sözleşmesinin bir parçasıdır. Aşağıdaki açıklamalar her alanın nasıl davrandığını açıklar.
Başlıklar
| Başlık | Gerekli | Açıklama | Örnek |
|---|---|---|---|
Authorization | Evet | İsteği doğrulamak için kullanılan Bearer API anahtarı. | Bearer sk_live_xxx |
Content-Type | Evet | Tüm yazma istekleri JSON kullanır. | application/json |
Üst düzey alanlar
| Alan | Tür | Gerekli | Varsayılan | Aralık / Numara | Modlar | Örnek |
|---|---|---|---|---|---|---|
modelOluşturma için kullanılan model varyantı. | string | Evet | - | seedance-2-0 | seedance-2-0-fast | tümü | seedance-2-0 |
callback_urlGörev tamamlama ve başarısızlık geri aramalarını alan HTTPS uç noktası. | string | Hayır | - | HTTPS URL, özel ağlar yok | tümü | https://your-domain.com/hook |
inputOluşturma ayarları ve medya referansları. | object | Evet | - | - | tümü | - |
input.* alanlar
| Alan | Tür | Gerekli | Varsayılan | Aralık / Numara | Modlar | Örnek |
|---|---|---|---|---|---|---|
input.promptOluşturulacak videoyu açıklayan metin istemi. | string | Evet | - | boş olmayan metin | tümü | a cat surfing |
input.generation_typeOluşturma modu. Varsayılan olarak metinden videoya. (text-to-video) | string | Hayır | text-to-video | text-to-video | image-to-video | reference-to-video | - | image-to-video |
input.image_urlsGenel olarak erişilebilir görüntü URL'leri. Görüntüden videoya için, ilk kare için 1 görüntü veya ilk ve son kareler için 2 görüntü gönderin. Referanstan videoya için, görsel referanslar olarak en fazla 9 görüntü gönderin. (image-to-video) (reference-to-video) | string[] | Koşullu | [] | Görüntüden videoya: 1 veya 2 görüntü. Referanstan videoya: en fazla 9 görüntü. (image-to-video) (reference-to-video) | image-to-video / reference-to-video | ["https://.../a.jpg"] |
input.video_urlsYalnızca referanstan videoya için genel olarak erişilebilir referans videolar. En fazla 3 video dosyası gönderebilirsiniz ve birleşik oynatma süreleri 15 saniye veya daha az olmalıdır. (reference-to-video) | string[] | Hayır | [] | En fazla 3 video. Birleşik video uzunluğu 15 saniye veya daha az olmalıdır. | reference-to-video | [] |
input.audio_urlsYalnızca referanstan videoya için genel olarak erişilebilir referans ses dosyaları. En fazla 3 ses dosyası gönderebilirsiniz ve birleşik oynatma süreleri 15 saniye veya daha az olmalıdır. (reference-to-video) | string[] | Hayır | [] | En fazla 3 ses dosyası. Birleşik ses uzunluğu 15 saniye veya daha az olmalıdır. | reference-to-video | [] |
input.durationÇıkış video uzunluğu saniye olarak. | int | Hayır | 5 | 4-15 saniye | tümü | 5 |
input.aspect_ratioÇıkış en boy oranı. adaptif, hizmetin en iyi oranı tahmin etmesini sağlar. | string | Hayır | adaptive | 16:9 | 4:3 | 1:1 | 3:4 | 9:16 | 21:9 | adaptif | tümü | 16:9 |
input.resolutionÇıkış çözünürlük katmanı. | string | Hayır | 720p | 480p | 720p | 1080p | tümü | 720p |
input.generate_audioDesteklendiğinde modelin ses üretmesi gerekip gerekmediği. | boolean | Hayır | true | doğru | yanlış | tümü | true |
input.watermarkFiligran eklenip eklenmeyeceği. | boolean | Hayır | false | doğru | yanlış | tümü | false |
input.web_searchDesteklendiğinde web araması artırımına izin verilip verilmeyeceği. | boolean | Hayır | false | doğru | yanlış | tümü | false |
input.return_last_frameVarsa son kare URL'sinin döndürülüp döndürülmeyeceği. | boolean | Hayır | false | doğru | yanlış | tümü | false |
input.seedDeterministik anahtar. Rastgele bir anahtar için -1 kullanın. | int | Hayır | -1 | -1 veya 0-4294967295 | tümü | -1 |
Krediler çözünürlüğe, süreye, modele ve referanstan videoya video referansları içerip içermediğine göre değişir. Oluşturma yanıtının döndürdüğü krediler değeri, o görev için ayrılan gerçek miktardır. (reference-to-video)
Kredi fiyatlandırmasını görüntüleYanıt
Bu, POST /v1/videos/generations'tan gelen başarılı yanıttır. Görevin kabul edildiği ve kredilerin rezerve edildiği anlamına gelir. Dönüştürülen taskId'yi GET /v1/tasks/:id'yi sorgulamak veya bir tamamlama veya başarısızlık geri çağrısını eşleştirmek için kullanın.
POST /v1/videos/generations başarı yanıtı
{
"taskId": "3f2aK9mR...",
"credits": 60
}Görev durumunu al
Mevcut görev durumunu almak için GET /v1/tasks/:id kullanın. Her 10 saniyede bir defadan fazla sorgulamayın. Üretim sistemleri için webhook'ları tercih edin.
curl https://api.seedance2.ai/v1/tasks/3f2aK9mR7xQp4TnZ8bLc6YwH \
-H "Authorization: Bearer sk_live_xxx"Tamamlanmış görev yanıtı
{
"id": "3f2aK9mR...",
"status": "completed",
"created_at": 1781234567,
"model": "seedance-2-0",
"billing_status": "charged",
"credits": 60,
"failed_reason": null,
"data": {
"results": ["https://cdn.seedance2.ai/.../x.mp4"],
"video_expires_at": "2026-06-13T10:00:00Z",
"last_frame_url": null,
"processing_time": 48
}
}Başarısız görev yanıtı
{
"id": "3f2aK9mR...",
"status": "failed",
"created_at": 1781234567,
"model": "seedance-2-0",
"billing_status": "refunded",
"credits": 60,
"failed_reason": "provider_failed"
}| Değer | Anlam |
|---|---|
status=queued | Kabul edildi ve gönderilmeyi veya işlenmeyi bekliyor. |
status=generating | Sağlayıcı oluşturmayı işliyor. |
status=completed | Video tamamlandı ve data.results sonuç URL'sini içeriyor. |
status=failed | Oluşturma başarısız oldu veya zaman aşımına uğradı. |
billing_status=reserved | Görev devam ederken krediler rezerve edilir. |
billing_status=charged | Görev başarılı oldu ve rezervasyon düzenlendi. |
billing_status=refunded | Görev başarısız oldu veya zaman aşımına uğradı ve krediler iade edildi. |
billing_status=refund_failed | İade işlemi başarısız oldu ve manuel işlem gerektiriyor. |
video_expires_at'tan sonra data.results boş olacaktır. Dosyayı geçerlilik süresi bitmeden indirin ve saklayın.
Webhook'lar
callback_url mevcut olduğunda, Seedance, görev tamamlandığında veya başarısız olduğunda uç noktanızı çağırır ve nihai sonucu açıklayan JSON verilerini gönderir. Uç noktanız 2xx olmayan bir yanıt döndürürse veya 15 saniye içinde yanıt vermezse, teslimat 5 defaya kadar yeniden denenir. Yeniden denemeler aynı görev kimliğini kullanır, bu nedenle kimliğe göre tekrarı önleyin. Geri arama verilerini güvenli bir şekilde kaydettiğiniz anda 200 yanıtı döndürün.
Görev tamamlama geri araması
{
"id": "3f2aK9mR...",
"status": "completed",
"created_at": 1781234567,
"model": "seedance-2-0",
"data": {
"results": ["https://cdn.seedance2.ai/.../x.mp4"],
"video_expires_at": "2026-06-13T10:00:00Z",
"last_frame_url": null,
"processing_time": 48
}
}Görev başarısızlık geri araması
{
"id": "3f2aK9mR...",
"status": "failed",
"created_at": 1781234567,
"model": "seedance-2-0",
"data": {
"failed_reason": "provider_failed",
"credits_refunded": 60
}
}export async function POST(request: Request) {
const callbackData = await request.json();
if (callbackData.status === "completed") {
const videoUrl = callbackData.data.results[0];
// Save the video URL or update your own task record here.
}
if (callbackData.status === "failed") {
const errorMessage = callbackData.data.failed_reason;
// Mark your own task record as failed here.
}
return new Response(null, { status: 200 });
}Geri arama verisinin şeklini doğrulayın, kimliğe göre tekrarı önleyin, kendi görev kaydınızı güncelleyin ve hızlı yanıt verin.
callback_url HTTPS olmalı ve özel, geri döngü veya bağlantı yerel ağ aralıklarına işaret etmemelidir.
Hatalar
POST /v1/videos/generations ve GET /v1/tasks/:id, API isteğinin kendisi başarısız olduğunda, örneğin geçersiz parametreler, geçersiz API anahtarı, yetersiz krediler, oran sınırlaması veya görev bulunamadığında bu hata şeklini döndürür. Bazı hatalar duruma bağlı olarak gerekli, mevcut veya retry_after gibi ek alanlar içerir.
{
"error": {
"code": "insufficient_credits",
"message": "Not enough credits for this task.",
"required": 60,
"available": 12
}
}| Kod | HTTP | Anlam | Tekrar dene? |
|---|---|---|---|
invalid_request | 400 | Eksik veya geçersiz parametreler. | Hayır, isteği düzeltin. |
invalid_api_key | 401 | API anahtarı eksik, geçersiz veya iptal edilmiş. | Hayır, geçerli bir anahtar kullanın. |
insufficient_credits | 402 | Yetersiz kredi. Görev kabul veya faturalandırılmaz. | Yeniden şarj ettikten sonra. |
forbidden | 403 | API anahtarında gerekli kapsam yok. | Hayır. |
not_found | 404 | Görev mevcut değil veya anahtar sahibine ait değil. | Hayır. |
rate_limited | 429 | İstek oranı aşıldı. | Evet, Retry-After'ı takip edin. |
internal_error | 500 | Sunucu hatası. | Evet, daha sonra tekrar deneyin. |
Oran sınırları
Oran sınırları, kayan bir pencere ile her API anahtarı başına uygulanır. Üretim varsayılan olarak dakikada 60 istektir; durum sorguları daha esnektir. HTTP 429 yanıtları Retry-After içerir.
Oluşturma
60/min
Durum sorguları
Daha esnek
429 başlık
Retry-After
Faturalama ve krediler
API, gönderimde rezervasyon, başarıda tahsilat ve başarısızlıkta iade kullanır. Kontrol paneli kullanım sayfaları API kredi geçmişini, görev günlüklerini ve zamana dayalı kullanım istatistiklerini gösterir.
Rezerve Edildi
Görev kabul edildiğinde krediler kontrol edilir ve rezerve edilir.
Tahsil Edildi
Tamamlanmış görevler mevcut rezervasyonu düzenler.
İade Edildi
Başarısız veya zaman aşımına uğramış görevler rezerve edilen kredileri otomatik olarak iade eder.
Kontrol panelinde kullanımı inceleyin
API günlüklerini, görev zaman çizelgelerini, kredi geçmişini ve zamana dayalı kullanım metriklerini görüntüleyin.