Seedance API

Seedance 2.5 veya Seedance 2.0, eşzamansız görevler, webhook'lar ve kredi bazlı faturalandırma ile video oluşturma özelliğini ürününüze entegre edin.

Taban URL
https://api.seevio.ai
Bu sayfada

Giriş

API, Seedance 2.5 ve Seedance 2.0 video oluşturma görevlerini programatik olarak göndermenizi sağlar. Önerilen model olan Seedance 2.5; metinden videoya, ilk kare veya ilk ve son kare görselden videoya ve çoklu mod referanslı video oluşturma özelliklerini destekler. Video oluşturma işlemi eşzamansız (asynchronous) olarak yürütülür: Bir görev oluşturduğunuzda hemen bir görev kimliği (task ID) alırsınız; ardından görev uç noktasını yoklayarak (polling) veya bir webhook aracılığıyla tamamlanan videoya erişebilirsiniz.

Eşzamansız görevler

Yoklama (polling) yöntemi, geliştirme aşaması ve basit entegrasyonlar için idealdir.

Webhook desteği

Sürekli sorgu yapmaktan kaçınarak görev son duruma ulaştığında sisteminizi bilgilendirdiği için canlı ortamlar (production) için webhook kullanımı önerilir.

Kredi takibi

Krediler görev gönderildiğinde rezerve edilir. Başarıyla tamamlanan görevlerin ücreti bu rezervasyondan düşülür; başarısız olan veya zaman aşımına uğrayan görevlerin kredileri ise otomatik olarak iade edilir.

Kimlik Doğrulama

Kullanıcı panelinden bir API anahtarı oluşturun ve her istekte bunu Bearer token olarak gönderin. API anahtarının tamamı yalnızca oluşturulduğu an bir kez gösterilir.

Authorization: Bearer sk_live_xxxxxxxx
sk_live_

Canlı ortam trafiği için sk_live_ anahtarlarını kullanın.

sk_test_

Aynı API protokolüyle test ortamında entegrasyon denemeleri yapmak için sk_test_ anahtarlarını kullanın.

401

Eksik, geçersiz veya iptal edilmiş anahtarlar, HTTP 401 koduyla birlikte invalid_api_key hatası döndürür.

Hızlı Başlangıç

Öncelikle bir görev gönderin. Görev kabul edildikten sonra sonuç teslim yöntemlerinden birini seçin: Görev uç noktasını belirli aralıklarla sorgulayabilir veya sonucu bir webhook üzerinden doğrudan alabilirsiniz.

Görev gönderme

Eşzamansız bir video görevi oluşturun ve anında bir görev kimliği (task ID) alın.

curl https://api.seevio.ai/v1/videos/generations \
  -H "Authorization: Bearer sk_live_xxx" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "seedance-2-5",
    "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
    }
  }'
Sonuç alma yöntemi: Yoklama (Polling)

Entegrasyonunuzun durumu doğrudan sorgulamayı tercih ettiği durumlarda görev durumu uç noktasını çağırın.

curl https://api.seevio.ai/v1/tasks/3f2aK9mR7xQp4TnZ8bLc6YwH \
  -H "Authorization: Bearer sk_live_xxx"
Sonuç alma yöntemi: Webhook

Görevi gönderirken bir callback_url parametresi geçerek işlemin başarıyla tamamlandığı veya başarısız olduğu durumlarda geri çağrı 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şturma

POST /v1/videos/generations uç noktasıyla bir video görevi oluşturun. İstek gövdesi; üst düzey bir model parametresi, isteğe bağlı bir callback_url ve istem ile oluşturma ayarlarını barındıran bir input nesnesinden oluşur.

POST
/v1/videos/generations
curl https://api.seevio.ai/v1/videos/generations \
  -H "Authorization: Bearer sk_live_xxx" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "seedance-2-5",
    "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
    }
  }'

Oluşturma modları

generation_type parametresi, hangi medya girdilerinin kabul edileceğini ve modelin bunları nasıl yorumlayacağını belirler.

Seedance 2.5 yetenekleri
seedance-2-5

4 ila 30 saniye uzunluğunda, 480p veya 720p çözünürlükte çıktılar üretmek için model değerini seedance-2-5 olarak ayarlayın.

  • Metinden videoya: Serbest, 16:9, 9:16, 1:1, 4:3, 3:4 veya 21:9 en boy oranı desteği
  • Görselden videoya: Tek bir ilk kare görseli veya ilk ve son kareyi belirleyen iki görsel ile üretim (en boy oranı otomatik olarak ayarlanmalıdır)
  • Referanslı video: En fazla 30 görsel, 10 video ve 10 ses dosyası olmak üzere toplamda maksimum 50 materyal desteği
  • Her bir video veya ses referansı 2-30 saniye arasında olmalıdır; toplam video süresi ve toplam ses süresi ayrı ayrı en fazla 30 saniye olabilir
  • Yalnızca ses referansıyla üretim yapma ve return_last_frame özellikleri desteklenir; seed parametresi desteklenmez
ModZorunlu medyaİsteğe bağlı medyaNotlar
text-to-videopromptduration, aspect_ratio, resolution, seedYalnızca metin istemi. image_urls, video_urls ve audio_urls parametrelerine gerek yoktur.
image-to-videoprompt + image_urls dizisi (1-2 görsel URL'si)duration, aspect_ratio, resolution, seedimage_urls parametresi bir dizi olmalıdır. İlk kare için 1, ilk ve son kareler için 2 görsel URL'si gönderin. Video ve ses referansları göz ardı edilir.
reference-to-videoprompt + en az bir görsel, video veya ses referansımateryal sınırları dahilinde görseller, videolar ve seslerSeedance 2.5 yalnızca ses içeren referansları destekler. Seedance 2.0 için ses dosyası gönderildiğinde yanına en az bir görsel veya video eklenmelidir.
text-to-video

Yaratıcı girdi olarak yalnızca metin istemi (prompt) kullanılacağı durumlarda metinden videoya modunu tercih edin.

curl https://api.seevio.ai/v1/videos/generations \
  -H "Authorization: Bearer sk_live_xxx" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "seedance-2-5",
    "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
    }
  }'
image-to-video

Girdi olarak input.image_urls dizisinde 1 veya 2 adet görsel URL'si gönderildiğinde bu modu kullanın: Tek URL ilk kareyi, iki URL ise ilk ve son kareyi belirler. Bu modda video ve ses referansları dikkate alınmaz.

curl https://api.seevio.ai/v1/videos/generations \
  -H "Authorization: Bearer sk_live_xxx" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "seedance-2-5",
    "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-video

Referans görseller, videolar ve seslerle daha detaylı bir yönlendirme sağlamak için referanslı video modunu kullanın. Seedance 2.5 ses dosyasını tek referans türü olarak kabul edebilir; Seedance 2.0 ise ses dosyası gönderildiğinde en az bir adet görsel veya video referansı da gerektirir.

Materyal sınırları

  • Seedance 2.5: En fazla 30 referans görseli
  • Seedance 2.5: Her biri 2-30 saniye arasında ve toplam süresi <= 30 saniye olan en fazla 10 referans videosu
  • Seedance 2.5: Her biri 2-30 saniye arasında ve toplam süresi <= 30 saniye olan en fazla 10 referans sesi
  • Seedance 2.5: Tüm türler dahil olmak üzere toplamda en fazla 50 materyal
  • Seedance 2.0 varyantları mevcut sınırlarını korur: 9 görsel, 3 video, 3 ses dosyası ve video/ses grubu başına en fazla 15 saniye

Desteklenen girdi kombinasyonları

Metin + Görsel
Metin + Video
Metin + Ses (Seedance 2.5)
Metin + Görsel + Video
Metin + Görsel + Ses
Metin + Video + Ses
Metin + Görsel + Video + Ses
curl https://api.seevio.ai/v1/videos/generations \
  -H "Authorization: Bearer sk_live_xxx" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "seedance-2-5",
    "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": "720p"
    }
  }'

İstek parametreleri

Parametre adları, enum değerleri, uç nokta yolları ve örnekler API protokolünün bir parçasıdır. Aşağıdaki açıklamalar her bir alanın nasıl çalıştığını açıklamaktadır.

Üstbilgiler

ÜstbilgiZorunluAçıklamaÖrnek
AuthorizationEvetİsteğin kimliğini doğrulamak için kullanılan Bearer API anahtarı.Bearer sk_live_xxx
Content-TypeEvetTüm veri yazma isteklerinde JSON kullanılır.application/json

Üst düzey alanlar

AlanTürZorunluVarsayılanAralık / EnumModlarÖrnek
model

Üretim için kullanılacak model varyantı. Seedance 2.5 için seedance-2-5, Seedance 2.0 için seedance-2-0, Seedance 2.0 Fast için seedance-2-0-fast, Seedance 2.0 Mini için seedance-2-0-mini değerini kullanın.

stringEvet-seedance-2-5 | seedance-2-0 | seedance-2-0-fast | seedance-2-0-minihepsiseedance-2-5
callback_url

Görev başarıyla tamamlandığında veya başarısız olduğunda bildirim alan HTTPS uç noktası.

stringHayır-HTTPS URL, özel ağlara izin verilmezhepsihttps://your-domain.com/hook
input

Üretim ayarları ve medya referansları.

objectEvet--hepsi-

input.* alanlar

AlanTürZorunluVarsayılanAralık / EnumModlarÖrnek
input.prompt

Oluşturulacak videoyu tanımlayan metin istemi.

stringEvet-boş olmayan metinhepsia cat surfing
input.generation_type

Video oluşturma modu. Varsayılan değer text-to-video modudur.

stringHayırtext-to-videotext-to-video | image-to-video | reference-to-video-image-to-video
input.image_urls

Herkese açık, erişilebilir görsel URL'leri. Görselden videoya modu için ilk kare için 1, ilk ve son kareler için 2 görsel gönderin. Referanslı video modu için Seedance 2.5 en fazla 30, Seedance 2.0 ise en fazla 9 görsel kabul eder.

string[]Koşullu[]Görselden videoya: 1 veya 2 görsel. Referanslı video: Seedance 2.5 için en fazla 30; Seedance 2.0 için en fazla 9.image-to-video / reference-to-video["https://.../a.jpg"]
input.video_urls

Yalnızca referanslı video modunda kullanılabilen, herkese açık referans video URL'leri. Seedance 2.5, her biri 2-30 saniye olan ve toplam oynatma süresi <= 30 saniye olan en fazla 10 video kabul eder. Seedance 2.0 ise toplam oynatma süresi <= 15 saniye olan en fazla 3 video kabul eder.

string[]Hayır[]Seedance 2.5: Her biri 2-30 saniye olan en fazla 10 video, toplam süre <= 30 saniye. Seedance 2.0: En fazla 3 video, toplam süre <= 15 saniye.reference-to-video[]
input.audio_urls

Yalnızca referanslı video modunda kullanılabilen, herkese açık referans ses dosyası URL'leri. Seedance 2.5, her biri 2-30 saniye olan, toplam oynatma süresi <= 30 saniye olan en fazla 10 ses dosyası kabul eder ve yalnızca ses içeren referanslara izin verir. Seedance 2.0 ise toplam oynatma süresi <= 15 saniye olan en fazla 3 ses dosyası kabul eder.

string[]Hayır[]Seedance 2.5: Her biri 2-30 saniye olan en fazla 10 ses dosyası, toplam süre <= 30 saniye. Seedance 2.0: En fazla 3 ses dosyası, toplam süre <= 15 saniye.reference-to-video[]
input.duration

Oluşturulacak videonun saniye cinsinden uzunluğu.

intHayır5Seedance 2.5: 4-30 saniye. Seedance 2.0: 4-15 saniye.hepsi5
input.aspect_ratio

Çıktı en boy oranı. adaptive seçeneği, sistemin en uygun oranı otomatik belirlemesini sağlar. Seedance 2.5 görselden videoya modu yalnızca adaptive değerini destekler.

stringHayıradaptive16:9 | 4:3 | 1:1 | 3:4 | 9:16 | 21:9 | adaptivehepsi16:9
input.resolution

Çıktı çözünürlük seviyesi.

stringHayır720pSeedance 2.5: 480p | 720p. Seedance 2.0: 480p | 720p | 1080p | 4k (varyanta bağlı olarak).hepsi720p
input.generate_audio

Desteklendiği durumlarda modelin ses üretip üretmeyeceği.

booleanHayırtruetrue | falsehepsitrue
input.watermark

Filigran eklenip eklenmeyeceği.

booleanHayırfalsetrue | falsehepsifalse
input.web_search

Desteklendiği durumlarda web araması desteğinin kullanılıp kullanılmayacağı.

booleanHayırfalsetrue | falsehepsifalse
input.return_last_frame

Desteklendiği durumlarda son kare URL'sinin döndürülüp döndürülmeyeceği.

booleanHayırfalsetrue | falsehepsifalse
input.seed

Seedance 2.0 varyantları için deterministik tohum (seed) değeri. Seedance 2.5 bu alanı desteklemez; boş bırakılmalıdır.

intHayır-1-1 veya 0-4294967295hepsi-1

Kredi maliyetleri çözünürlüğe, süreye, modele ve referanslı video modunda video referansı bulunup bulunmadığına göre değişiklik gösterir. İstek oluşturulduğunda dönen yanıttaki credits değeri, o görev için rezerve edilen kesin miktarı gösterir.

Kredi fiyatlandırmasını görüntüle

Yanıt

Bu yanıt, POST /v1/videos/generations isteğinin başarıyla tamamlandığını gösterir. Görevin kabul edildiği ve kredilerin rezerve edildiği anlamına gelir. GET /v1/tasks/:id uç noktasını sorgulamak veya gelen geri çağrı bildirimini eşleştirmek için dönen taskId değerini kullanın.

POST /v1/videos/generations başarılı yanıtı

{
  "taskId": "3f2aK9mR...",
  "credits": 100
}

Görev durumunu sorgulama

Mevcut görev durumunu sorgulamak için GET /v1/tasks/:id uç noktasını kullanın. Sorgulamayı 10 saniyede birden daha sık yapmayın. Canlı sistemler için webhook kullanımı önerilir.

curl https://api.seevio.ai/v1/tasks/3f2aK9mR7xQp4TnZ8bLc6YwH \
  -H "Authorization: Bearer sk_live_xxx"

Tamamlanan görev yanıtı

{
  "id": "3f2aK9mR...",
  "status": "completed",
  "created_at": 1781234567,
  "model": "seedance-2-5",
  "billing_status": "charged",
  "credits": 100,
  "failed_reason": null,
  "data": {
    "results": ["https://cdn.seevio.ai/.../x.mp4"],
    "video_expires_at": "2026-06-13T10:00:00Z",
    "last_frame_url": null,
    "processing_time": 48
  }
}

Başarısız olan görev yanıtı

{
  "id": "3f2aK9mR...",
  "status": "failed",
  "created_at": 1781234567,
  "model": "seedance-2-5",
  "billing_status": "refunded",
  "credits": 100,
  "failed_reason": "provider_failed"
}
DeğerAnlamı
status=queuedKabul edildi; gönderilmeyi veya işlenmeyi bekliyor.
status=generatingSağlayıcı video oluşturma işlemini yürütüyor.
status=completedVideo başarıyla tamamlandı ve data.results alanı sonuç URL'sini içeriyor.
status=failedVideo oluşturma başarısız oldu veya zaman aşımına uğradı.
billing_status=reservedGörev devam ederken krediler rezerve edilir.
billing_status=chargedGörev başarıyla tamamlandı ve ayrılan kredi tahsil edildi.
billing_status=refundedGörev başarısız oldu veya zaman aşımına uğradı; rezerve edilen krediler iade edildi.
billing_status=refund_failedİade işlemi başarısız oldu, manuel müdahale gerekiyor.

video_expires_at süresi dolduktan sonra data.results alanı boş döner. Dosyayı geçerlilik süresi dolmadan önce indirip depolayın.

Webhook'lar

callback_url tanımlandığında, Seedance görev başarıyla tamamlandığında veya başarısız olduğunda uç noktanızı çağırır ve nihai sonucu açıklayan bir JSON verisi gönderir. Uç noktanız 2xx dışında bir yanıt döndürürse veya 15 saniye içinde yanıt vermezse, gönderim en fazla 5 kez yeniden denenir. Yeniden denemelerde aynı görev kimliği (task id) kullanılır, bu nedenle mükerrer kayıtları engellemek için id bazlı tekilleştirme yapın. Webhook verisini güvenli bir şekilde kaydeder kaydetmez anında bir 200 yanıtı döndürün.

Görev tamamlanma geri çağrısı

{
  "id": "3f2aK9mR...",
  "status": "completed",
  "created_at": 1781234567,
  "model": "seedance-2-5",
  "data": {
    "results": ["https://cdn.seevio.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 çağrısı

{
  "id": "3f2aK9mR...",
  "status": "failed",
  "created_at": 1781234567,
  "model": "seedance-2-5",
  "data": {
    "failed_reason": "provider_failed",
    "credits_refunded": 100
  }
}
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 });
}

Gelen webhook veri yapısını doğrulayın, id değerine göre mükerrer kayıtları engelleyin, görev kaydınızı güncelleyin ve hızlı bir şekilde yanıt verin.

callback_url bir HTTPS bağlantısı olmalı; özel, loopback veya yerel ağ (link-local) adreslerini işaret etmemelidir.

Hatalar

Geçersiz parametreler, geçersiz API anahtarı, yetersiz bakiye, istek sınırı aşımı veya görevin bulunamaması gibi API isteğinin kendisinin başarısız olduğu durumlarda POST /v1/videos/generations ve GET /v1/tasks/:id uç noktaları bu hata formatını döndürür. Bazı hatalar duruma bağlı olarak required, available veya retry_after gibi ek alanlar içerebilir.

{
  "error": {
    "code": "insufficient_credits",
    "message": "Not enough credits for this task.",
    "required": 100,
    "available": 12
  }
}
KodHTTPAnlamıYeniden denensin mi?
invalid_request400Eksik veya geçersiz parametreler.Hayır, isteği düzeltip tekrar deneyin.
invalid_api_key401API anahtarı eksik, geçersiz veya iptal edilmiş.Hayır, geçerli bir anahtar kullanın.
insufficient_credits402Yetersiz bakiye. Görev kabul edilmedi ve kredi düşülmedi.Bakiye yüklendikten sonra.
forbidden403API anahtarı gerekli yetki kapsamına (scope) sahip değil.Hayır.
not_found404Görev mevcut değil veya anahtar sahibine ait değil.Hayır.
rate_limited429İstek sınırı aşıldı.Evet, Retry-After değerine uyun.
internal_error500Sunucu hatası.Evet, daha sonra tekrar deneyin.

İstek sınırları

İstek sınırları, hareketli zaman penceresi (sliding window) yöntemiyle API anahtarı başına uygulanır. Video oluşturma sınırı varsayılan olarak dakikada 100 istektir; durum sorgulama limitleri ise daha esnektir. HTTP 429 yanıtları Retry-After üstbilgisini içerir.

Video oluşturma

100/dk

Durum sorgulamaları

Daha esnek limitler

429 üstbilgisi

Retry-After

Faturalandırma ve krediler

API; istek gönderildiğinde rezerve etme, işlem başarılı olduğunda tahsil etme ve hata durumunda iade etme modelini kullanır. Yönetici panelindeki kullanım sayfaları; API kredi geçmişini, görev günlüklerini ve zamana dayalı kullanım istatistiklerini görüntüler.

Rezerve Edildi

Görev kabul edildiğinde krediler kontrol edilir ve rezerve edilir.

Tahsil Edildi

Tamamlanan görevler mevcut rezervasyon tutarının kesin tahsilatını gerçekleştirir.

İade Edildi

Başarısız olan veya zaman aşımına uğrayan görevlerin rezerve edilen kredileri otomatik olarak iade edilir.

Kullanımı panelden inceleyin

API günlüklerini, görev zaman tünellerini, kredi geçmişini ve zamana dayalı kullanım metriklerini görüntüleyin.

API günlükleri