Seedance 2.5.
Kendi ürününüzde.
Tek bir API ile metin, görsel ve referans medyayı videoya dönüştürün. Seedance 3.0 kredilerinizi ve mevcut iş akışınızı kullanın; istekten sonuca kadar açıkça tanımlanmış bir yapıyla entegrasyonunuzu geliştirin.
{
"model": "seedance-2.5",
"mode": "text-to-video",
"prompt": "A paper boat drifting into the morning light",
"duration": 5,
"resolution": "720p",
"aspectRatio": "16:9"
}Birkaç istekle ilk videonuz.
Anahtarınızı sunucunuzda SEADANCE_API_KEY olarak saklayın. SEADANCE_REQUEST_KEY değerini bu videoya özgü benzersiz bir değerle ayarlayın (örneğin uuidgen ile) ve yeniden denemelerde bu değeri koruyun. Hesabınızda yeterli kredi olduğundan emin olun. Bu örnek, 5 saniyelik 720p video için 350 kredi rezerve eder. Durumu sorgulamak için dönen id değerini kopyalayın.
export SEADANCE_API_KEY="sd_live_your_key"
# Keep this value for retries; choose a new value for a new video.
export SEADANCE_REQUEST_KEY="${SEADANCE_REQUEST_KEY:-$(uuidgen)}"
curl --fail-with-body "https://seedance3ai.dev/api/v1/videos" \
-H "Authorization: Bearer $SEADANCE_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $SEADANCE_REQUEST_KEY" \
--data '{
"model": "seedance-2.5",
"mode": "text-to-video",
"prompt": "A paper boat floating through a sunlit stream, gentle camera movement",
"aspectRatio": "16:9",
"resolution": "720p",
"duration": 5
}'Bu dokümantasyon hiçbir zaman otomatik olarak üretim başlatmaz. Oluşturma isteği göndermek kredilerinizi kullanır.
Sunucunuzdan kimlik doğrulayın.
Her API çağrısında Authorization: Bearer sd_live_… kullanılır. Anahtarları tarayıcılara, mobil uygulamalara, herkese açık depolara veya istemci tarafı paketlere koymayın. Tam anahtar yalnızca bir kez gösterilir; API panelinden iptal edebilirsiniz.
https://seedance3ai.dev/api/v1Varsayılan anahtar yetkileri: yükleme ve üretim için videos:write; modeller ve görev durumu için videos:read; krediler için account:read. Hesap erişimi ve limitleri tüm anahtarlar için ortak geçerlidir.
Bir video görevi oluşturun.
/api/v1/videosContent-Type: application/json kullanın ve planlanan her üretim için benzersiz bir Idempotency-Key belirleyin. Sunucunun görevi sağlayıcıya kabul ettirmesi zaman alabilir. Bağlantı zaman aşımına uğrarsa aynı gövdeyi aynı anahtarla tekrar gönderin. HTTP 202, tamamlandığını değil kabul edildiğini belirtir. Idempotency-Key, boşluk içermeyen 1–128 yazdırılabilir ASCII karakteri kabul eder.
| Parametre | Değerler ve gereksinimler |
|---|---|
modelstring | seedance-2.5Zorunlu. API şu anda Seedance 2.5 modelini destekler. |
modestring | text-to-video | image-to-video | reference-to-videoZorunlu. Girdi modunu seçin; medya alanları bu modla uyumlu olmalıdır. |
promptstring | 3–30.000 karakterZorunlu. Sahneyi, hareketi ve sesi tarif edin. |
durationinteger | 4, 5, 6, 8, 10, 12, 15, 20, 25, 29, 30Zorunlu, saniye cinsindendir. Düzenlemede kaynak videonun süresi kullanılır ve ücretlendirme için tam saniyeye yukarı yuvarlanır. |
resolutionstring | 480p | 720p | 1080pZorunlu. Kredi birim ücretini belirler. |
aspectRatiostring | 1:1 | 4:3 | 3:4 | 16:9 | 9:16 | 21:9Zorunlu. Görselden videoya üretim, ilk karenin en boy oranını kullanır. |
firstFrameUrl / lastFrameUrlstring | Yüklenen dosyanın publicObjectUrl değeriGörselden videoya üretim için ilk kare zorunludur. Son kare isteğe bağlıdır. |
referenceImageUrlsstring[] | En fazla 30 görselreference-to-video için kullanılır. Önce her dosyayı hesabınıza yükleyin. |
referenceVideoUrls / referenceAudioUrlsstring[] | En fazla 10 video / 10 ses dosyasıHer grubun toplam süresi en fazla 30 saniyedir. Sunucu, üretimden önce medyayı doğrular. |
referenceTaskTypestring | reference | edit | extendİsteğe bağlıdır, varsayılanı reference değeridir. edit ve extend için reference-to-video modu ve tam olarak bir kaynak video gerekir. |
generateAudioboolean | trueİsteğe bağlıdır. Seedance 2.5 yerleşik ses üretimini içerir; false kabul edilmez. |
batchCountinteger | 1İsteğe bağlıdır. Her istekte bir video üretilir. |
Seedance 2.5 bu alanlarla metin, ilk ve son kareler, çok modlu referanslar, video düzenleme ve uzatmayı destekler. Kullanılabilir özellikler ve fiyatlar için güncel ve esas alınacak kaynak GET /models yanıtıdır.
Görselden videoya istek örneği
{
"model": "seedance-2.5",
"mode": "image-to-video",
"prompt": "A paper boat floating through a sunlit stream, gentle camera movement",
"aspectRatio": "16:9",
"resolution": "720p",
"duration": 5,
"firstFrameUrl": "YOUR_UPLOADED_PUBLIC_OBJECT_URL"
}Referanstan videoya istek örneği
{
"model": "seedance-2.5",
"mode": "reference-to-video",
"prompt": "A paper boat floating through a sunlit stream, gentle camera movement",
"aspectRatio": "16:9",
"resolution": "720p",
"duration": 5,
"referenceImageUrls": [
"YOUR_UPLOADED_IMAGE_URL"
],
"referenceVideoUrls": [
"YOUR_UPLOADED_VIDEO_URL"
]
}Bir kez yükleyin. URL ile kullanın.
POST /uploads isteğine fileName, contentType, size (bayt) ve kind (image, video veya audio) gönderin. expiresAt süresinden önce requiredHeaders başlıklarını kullanarak ham dosya baytlarını PUT ile uploadUrl adresine yükleyin. Yükleme başarılı olduktan sonra üretim isteğinde publicObjectUrl kullanın. Referanslar aynı hesaba ait olmalıdır; rastgele harici URL'ler ve base64 girdileri kabul edilmez.
// Node.js 20+ · upload once, then use publicObjectUrl
import { readFile } from "node:fs/promises";
const bytes = await readFile("./first-frame.jpg");
const signed = await fetch("https://seedance3ai.dev/api/v1/uploads", {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.SEADANCE_API_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
fileName: "first-frame.jpg", contentType: "image/jpeg",
size: bytes.length, kind: "image",
}),
});
const upload = await signed.json();
if (!signed.ok) throw new Error(JSON.stringify(upload));
const stored = await fetch(upload.uploadUrl, {
method: "PUT", headers: upload.requiredHeaders, body: bytes,
});
if (!stored.ok) throw new Error("Upload failed");
console.log(upload.publicObjectUrl);
// Use this URL as firstFrameUrl in an image-to-video request.Belirtilen boyut ve içerik türü yüklenen dosyayla eşleşmelidir. Yükleme URL'lerinin süresi dolar; gerektiğinde yeni bir URL isteyin. Medya süresi, boyutları ve biçimi üretimden önce doğrulanır.
Görevi tamamlanana kadar takip edin.
GET /videos/:id güncel görevi döndürür. Her 5–10 saniyede bir sorgulayın, succeeded veya failed durumunda durun ve Retry-After varsa bekleme süresine uyun. Yalnızca hesabınıza ait API görevleri sorgulanabilir. Mevcut entegrasyon periyodik sorgulama kullanır.
curl --fail-with-body "https://seedance3ai.dev/api/v1/videos/TASK_ID" \
-H "Authorization: Bearer $SEADANCE_API_KEY"queuedprocessingsucceeded / failed{
"id": "a1b2c3d4-1234-4567-8901-abcdef123456",
"status": "succeeded",
"credits_reserved": 350,
"created_at": "2026-10-27T00:00:00.000Z",
"output": {
"url": "https://your-result-host.example/video.mp4"
},
"error": null,
"refund_status": "not_applicable"
}Video hazır olana kadar output değeri null olur. Başarısız görev bir hata içerir; kredi iadesinin durumunu refund_status alanından kontrol edin. Başarılı sonuçları gecikmeden indirin. Videoyu silmek isteği sıfırlamaz: aynı Idempotency-Key ile tekrar gönderim 410 video_deleted döndürür ve videoyu yeniden oluşturamaz.
Geliştirmeden önce kredi maliyetini öğrenin.
API üretimi, web sitesiyle aynı hesap kredilerini ve Seedance 2.5 birim ücretlerini kullanır. İstek kabul edildiğinde krediler rezerve edilir. Başarısız üretimlerde bu krediler tek seferlik kredi bakiyenize iade edilir. Görev oluşturulmadan önceki doğrulama hatası, ücretli bir video oluşturmaz.
480p
30kredi / çıktı saniyesi
+ 20 kredi / referans video saniyesi
720p
70kredi / çıktı saniyesi
+ 50 kredi / referans video saniyesi
1080p
160kredi / çıktı saniyesi
+ 90 kredi / referans video saniyesi
Maliyet = çıktı süresi × çıktı birim ücreti + varsa referans video süresi × referans birim ücreti. Referans video süresi sunucuda ölçülür; toplam süre ücretlendirme için tam saniyeye aşağı yuvarlanır. Yerleşik ses dahildir. Örneğin 720p'de 5 saniye 350 kredi, 5 saniyelik referans videoyla birlikte ise 600 kredidir.
curl --fail-with-body "https://seedance3ai.dev/api/v1/models" \
-H "Authorization: Bearer $SEADANCE_API_KEY"
curl --fail-with-body "https://seedance3ai.dev/api/v1/credits" \
-H "Authorization: Bearer $SEADANCE_API_KEY"Kullanılabilir kredileri, istek geçmişini ve hesap limitlerini API panelinden görüntüleyin. Aynı hesabı kullanarak web sitesinin fiyatlandırma sayfasından kredi ekleyin; ayrı bir API bakiyesi veya API kredi yükleme uç noktası yoktur. Yeterli kullanılabilir krediniz varsa aktif abonelik gerekmez. Abonelik sona erme ve tek seferlik kredi kuralları web sitesi kullanımıyla aynıdır.
Kredi eklemek API istek sıklığı, eşzamanlılık veya günlük limitleri artırmaz ve devre dışı bırakılmış hesabı yeniden etkinleştirmez. Günlük limit, başarısız görevlerden iade edilenler dahil tüm rezerve kredileri sayar ve 00:00 UTC'de sıfırlanır. Uygulamanız daha yüksek limitlere ihtiyaç duyuyorsa destek ekibiyle iletişime geçin.
Planları görüntüle ve kredi ekleGüvenle yeniden deneyin. Çift ücretlendirmeyi önleyin.
Planlanan her video için bir Idempotency-Key kullanın ve sonuç belli olana kadar bunu tam olarak aynı istek gövdesiyle birlikte saklayın. Yeni anahtarlar yeni üretimler anlamına gelir. Hata yanıtı error.code, error.message ve request_id içerir; destek ekibiyle iletişime geçerken istek kimliğini belirtin.
| HTTP | Anlamı | Sonraki adım |
|---|---|---|
| 400 | Geçersiz istek | Yeniden denemeden önce hata mesajını, alanları ve medya kısıtlamalarını kontrol edin. |
| 401 | Geçersiz API anahtarı | Bearer başlığını kontrol edin. İptal edilen anahtarlar yeniden kullanılamaz. |
| 402 | Yetersiz kredi | Aynı Seedance 3.0 hesabına kredi ekleyin. |
| 403 | Erişim reddedildi | API erişimi devre dışı veya anahtar gerekli yetkiye sahip değil. |
| 404 | Video bulunamadı | Hesabınızın bu API üzerinden oluşturduğu bir görevin kimliğini kullanın. |
| 409 | İstek çakışması | request_in_progress durumunda bekleyin ve aynı gövde ve anahtarla yeniden deneyin. idempotency_conflict, anahtarın farklı bir gövde için yeniden kullanıldığı anlamına gelir. request_expired veya request_previously_failed, video görevinin gönderilmediğini doğrular: bildirilen sorunu giderin, ardından yeni bir anahtar kullanın. |
| 410 | Video silindi | video_deleted, ilk isteğin işlendiği ancak videosunun silindiği anlamına gelir. Aynı anahtarla yeniden üretim yapılamaz. Yeniden denemeyi durdurun; yalnızca bilinçli olarak yeni ve ücretli bir üretim başlatmak istediğinizde yeni bir anahtar kullanın. |
| 429 | Hesap limitine ulaşıldı | Retry-After değerine uyun. İstek sıklığı, eşzamanlı görev ve günlük kredi limitleri tüm anahtarlar için ortak geçerlidir. Günlük bütçeler 00:00 UTC'de sıfırlanır. |
| 500 / 503 | Geçici hizmet hatası | Idempotency-Key değerini koruyun. Aynı isteği yeniden gönderin; sonucu belirsiz bir işlemden sonra yeni anahtar oluşturmayın. |
Gönderim request_in_progress döndürürse bekleyin ve aynı isteği tekrarlayın. Sırf zaman aşımını aşmak için asla yeni bir anahtara geçmeyin. Başarısız bir görevin iadesi hâlâ beklemedeyse görev kimliğini saklayın ve destek ekibiyle iletişime geçin.
Entegrasyona hazır mısınız?
Bir anahtar oluşturun ve ilk entegrasyonunuzu geliştirin.