GPT-6 Sol ve Claude Opus 5.5 yayındaGPT-6 Sol fiyatı 5.6 Sol'un yarısı

Seedance 2.0 API: Python ile metinden videoya ve görselden videoya

Tek bir betik görevi oluşturur, sorgular ve MP4'ü kaydeder. Alanlar, sınırlar ve 30 Ekim 2026'da ürettiğimiz iki 5 saniyelik klip aşağıda.

Kiki, OmniaKey COO11 dk okuma
Bu sayfada

Seedance 2.0, OmniaKey'in medya API'sinde dreamina-seedance-2-0-260128 model kimliğiyle çalışır. https://api.omniakey.com/v1/media/tasks adresine bir görev POST edersiniz, görev kimliğini sorgularsınız ve MP4'ü indirirsiniz. 30 Ekim 2026'da ürettiğimiz iki 5 saniyelik 720p klip, biri metinden biri hareketsiz bir görselden, 159 ve 139 saniyede tamamlandı.

Kısa cevap

  • Model kimliği dreamina-seedance-2-0-260128 ve üç işlem: text_to_video, image_to_video ve reference_to_video (OmniaKey'in video API belgeleri, 30 Ekim 2026'da kontrol edildi).
  • Oluştur, sorgula, indir: oluşturma çağrısı bir kimlikle 202 döner; sonra durum succeeded olana kadar birkaç saniyede bir GET /v1/media/tasks/{id} çağırırsınız (OmniaKey'in medya API genel bakışı, 30 Ekim 2026'da kontrol edildi).
  • Süre 4 ile 15 tam saniye arasındadır ve tam 2.0 kimliği 480P, 720P ve 1080P üretir.
  • İstek gövdesinin tamamı, satır içi base64 dahil, 1 MiB'nin altında kalır.
  • İki 5 saniyelik 720p çıktımız 159 saniyede (metinden video) ve 139 saniyede (ilk kare) tamamlandı.

İlk çağrıdan önce ne gerekir?

Bir OmniaKey API anahtarı, Python 3 ve tam model kimliği yeterli. Betik yalnızca standart kütüphaneyi kullanır; sanal ortam kurmadan, ek paket indirmeden çalışır.

Anahtarı ilk çağrıdan önce OMNIAKEY_API_KEY olarak dışa aktarın. Betik anahtarı bir kez okur ve her istekte Bearer token olarak gönderir; böylece anahtar ne dosyada ne de git geçmişinizde durur.

Oluşturma POST https://api.omniakey.com/v1/media/tasks, sorgulama GET https://api.omniakey.com/v1/media/tasks/{id} ile yapılır. Bu ikisi ve POST /v1/media/tasks/{id}/cancel medya API'sinin tamamıdır (medya API genel bakışı, 30 Ekim 2026'da kontrol edildi).

Model kimliklerini eksiksiz yazın. OmniaKey seedance-2 ve seedance-2-5 kısa adlarını sunmaz; bu adlar 503 no_available_channel döner (video API belgeleri, 30 Ekim 2026'da kontrol edildi).

Video işleri üretilen çıktının saniyesi başına önceden ücretlendirilir ve iş failed ya da canceled durumunda bittiğinde ücret otomatik olarak geri gelir (medya API genel bakışı, 30 Ekim 2026'da kontrol edildi). Saniyenin bugünkü fiyatı için Seedance 2.0 model sayfasına bakın.

Seedance 2.0 isteği hangi alanları alır?

Gövdeyi dört üst düzey alan taşır, çıktı ayarları parameters nesnesinde durur. Yalnızca duration alanının makul bir varsayılanı yoktur; her zaman gönderin.

  • model: tam model kimliği (kısa adlar başarısız olur)
  • type: video (medya türü)
  • operation: text_to_video, image_to_video, reference_to_video (öneksiz ad)
  • input.prompt: tek metin (sahne, hareket ve kamera, en fazla 12,000 karakter)
  • input.media[]: {"type": "first_frame", "url": …} (bir ilk kare ya da reference_image)

parameters içinde:

  • duration: 4 ile 15, tam saniye (fiyatı belirler)
  • resolution: 480P, 720P, 1080P (Fast ve Mini 720P'de durur)
  • ratio: 16:9, 9:16, 1:1, 4:3, 3:4, 21:9, adaptive (adaptive kareyi izler)
  • generate_audio: varsayılan true, ya da false (false sessiz MP4 verir)
  • n: 1 (1 olmalı)

İki liste de OmniaKey'in video API belgelerini ve medya API genel bakışını izliyor (30 Ekim 2026'da kontrol edildi); prompt sınırı model sayfasından.

İşlem adını öneksiz gönderin; medya türü önekini OmniaKey kendisi ekler (video API belgeleri, 30 Ekim 2026'da kontrol edildi). Tanımadığı parametreler sağlayıcıya olduğu gibi gider (medya API genel bakışı, 30 Ekim 2026'da kontrol edildi).

Sağlayıcının belgelerinden başlayanları bir tuzak bekliyor: BytePlus'ın kendi görev oluşturma API'si alanları content[] içine ve üst düzeye koyar, bu yüzden bir BytePlus eğitiminden kopyalanan kod /v1/media/tasks üzerinde değiştirilmeden çalışmaz (BytePlus'ın görev oluşturma API'si, 30 Ekim 2026'da kontrol edildi).

Python betiği

Tek dosya iki işlemi de çalıştırır; tek fark kurduğu gövdedir. Dosyayı seedance_video.py olarak kaydedin ve python3 seedance_video.py ile çalıştırın.

python
import base64
import json
import os
import time
import urllib.error
import urllib.request
import uuid

API = "https://api.omniakey.com/v1/media/tasks"
KEY = os.environ["OMNIAKEY_API_KEY"]
MODEL = "dreamina-seedance-2-0-260128"

def request(method, url, body=None, extra_headers=None):
    headers = {"Authorization": f"Bearer {KEY}", "User-Agent": "omniakey-example/1"}
    data = None
    if body is not None:
        headers["Content-Type"] = "application/json"
        data = json.dumps(body).encode()
    headers.update(extra_headers or {})
    req = urllib.request.Request(url, data=data, headers=headers, method=method)
    with urllib.request.urlopen(req, timeout=120) as resp:
        return json.load(resp)

def poll(url, attempts=5):
    for attempt in range(attempts):
        try:
            return request("GET", url)
        except urllib.error.HTTPError as err:
            if err.code < 500 or attempt == attempts - 1:
                raise
        except urllib.error.URLError:
            if attempt == attempts - 1:
                raise
        time.sleep(5 * (attempt + 1))

def run_task(body, out_path):
    task = request("POST", API, body, {"Idempotency-Key": str(uuid.uuid4())})["id"]
    print("task", task, flush=True)
    for _ in range(180):  # 5 saniyelik sorgular, en fazla 15 dakika
        time.sleep(5)
        state = poll(f"{API}/{task}")
        if state["status"] not in ("queued", "processing"):
            break
    else:
        raise TimeoutError(f"{task} is still {state['status']}: poll it again later, do not resubmit")
    if state["status"] != "succeeded":
        raise RuntimeError(state.get("error") or state["status"])
    asset_url = state["assets"][0]["url"]  # imzalı bağlantı kısa ömürlü, hemen indirin
    req = urllib.request.Request(asset_url, headers={"User-Agent": "omniakey-example/1"})
    with urllib.request.urlopen(req, timeout=300) as resp, open(out_path, "wb") as f:
        f.write(resp.read())
    return task

def text_to_video(prompt, out_path, duration=5, resolution="720P", ratio="16:9"):
    body = {
        "model": MODEL,
        "type": "video",
        "operation": "text_to_video",
        "input": {"prompt": prompt},
        "parameters": {"duration": duration, "resolution": resolution, "ratio": ratio},
    }
    return run_task(body, out_path)

def image_to_video(prompt, image_path, out_path, duration=5, resolution="720P", audio=False):
    with open(image_path, "rb") as f:
        raw = f.read()
    if len(raw) > 700_000:  # base64 üçte bir ekler, gövde 1 MiB altında kalmalı
        raise ValueError("first frame too large: save it as a JPEG about 1024 px wide")
    frame = "data:image/jpeg;base64," + base64.b64encode(raw).decode()
    body = {
        "model": MODEL,
        "type": "video",
        "operation": "image_to_video",
        "input": {"prompt": prompt, "media": [{"type": "first_frame", "url": frame}]},
        "parameters": {"duration": duration, "resolution": resolution, "ratio": "adaptive",
                       "generate_audio": audio},
    }
    return run_task(body, out_path)

if __name__ == "__main__":
    print("done", text_to_video(
        "Close-up of a tall glass on a wooden bar counter. Sparkling water is poured over ice; bubbles "
        "rise and the ice cubes clink and shift. Warm evening light from the left. The camera slowly "
        "pushes in. Sound of pouring, fizzing and clinking ice. No people, no text.",
        "sparkling-glass.mp4",
    ))
    print("done", image_to_video(
        "The cat slowly wakes, stretches its front paws and yawns, then looks toward the window. "
        "Raindrops keep running down the glass. The camera stays still.",
        "cat.jpg",
        "cat-wakes.mp4",
    ))

Bu dosyada değiştirmeden önce bilmeniz gereken altı nokta var.

  • Her oluşturma isteği rastgele bir Idempotency-Key taşır; aynı anahtar aynı gövdeyle tekrarlandığında özgün görev HTTP 200 ile döner ve ikinci kez ücret alınmaz (medya API genel bakışı, 30 Ekim 2026'da kontrol edildi).
  • Döngü sorgular arasında 5 saniye bekler ve 180 denemeden sonra durur; bu 15 dakika eder.
  • Zaman aşımı, işin hâlâ üretildiği anlamına gelir. Aynı görev kimliğini sonra yeniden sorgulayın ve asla yeniden göndermeyin, yoksa ikinci klip için ödeme yaparsınız.
  • assets[0].url yaklaşık bir saat dayanan imzalı bir bağlantıdır; betik görev başarılı olur olmaz indirir (medya API genel bakışı, 30 Ekim 2026'da kontrol edildi).
  • progress.percent iş sürerken 0'da kalabilir; döngü yalnızca status alanını izler (video API belgeleri, 30 Ekim 2026'da kontrol edildi).
  • Görsel işlevi 700,000 baytı aşan dosyayı reddeder, çünkü base64 üçte bir ekler ve gövde 1 MiB'nin altında kalmalıdır.

İstek biçimi aynı API'deki Kling 3.0 ile aynıdır; model değiştirdiğinizde model kimliği ve parametreler değişir, onların çevresindeki kod değişmez.

Görselden videoya ilk kareyi nasıl gönderirim?

Görseli input.media[] içine "type": "first_frame" ile, data:image/jpeg;base64,... biçiminde satır içi koyun; kedi klibimizde kullandığımız biçim buydu.

input.media[] herkese açık bir HTTPS URL'sini ya da satır içi data URI'sini kabul eder ve gövdenin tamamı 1 MiB ile sınırlıdır (video API belgeleri, 30 Ekim 2026'da kontrol edildi). OmniaKey'in kendi testi sıradan bir HTTPS kare bağlantısını provider_submit_rejected ile geri çevirdi; örnek bu yüzden data URI gönderiyor (video API belgeleri, 30 Ekim 2026'da kontrol edildi).

Base64 üçte bir ekler; bu yüzden yaklaşık 1024 piksel genişliğinde bir JPEG ile başlayın: bizim ilk karemiz 134,356 bayttı, 4 MB'lık bir PNG geri dönerdi.

Burada parameters.ratio değerini adaptive olarak bırakın: gönderdiğiniz görselin biçimini izler, 1024×571'lik hareketsiz bir kare böylece 1280×720 klibe dönüştü. reference_to_video için aynı dizi "type": "reference_image" alır (video API belgeleri, 30 Ekim 2026'da kontrol edildi).

Ürettiğimiz iki klip

İki görev de 30 Ekim 2026'da yukarıdaki dosyayla, hiç değiştirilmeden gönderildi. İlki metinden video: görev task_uF2QUtbeAAUW11lXEaLxNw1ZnBUoqvNk, 01:39:43 UTC'de oluşturuldu ve 01:42:22 UTC'de başarılı oldu. Prompt dökme sesini istediği için ses açık kaldı.

prompt
Close-up of a tall glass on a wooden bar counter. Sparkling water is poured over ice; bubbles rise and the ice cubes clink and shift. Warm evening light from the left. The camera slowly pushes in. Sound of pouring, fizzing and clinking ice. No people, no text.
Sekiz kare: ahşap bir bar üzerinde duran uzun bir bardak, boş bardaktan dibinde kabarcıklar olan dolu bardağa kadar.
Bardak klibinden zaman sırasıyla sekiz kare, 0.0 ile 5.0 saniye arası. OmniaKey API'siyle Seedance 2.0, metinden video, 5 saniye, 720P, 30 Ekim 2026'da üretildi.

Kareler ahşap bir bar üzerinde buzlu bir bardak gösteriyor; arkasında şişeler ve sıcak ışıklar bulanık duruyor. Bardak ilk kareden son kareye kadar büyüyor, yani promptun istediği yaklaşma gerçekleşiyor, ve dibinde kabarcıklarla dolu bitiyor.

İkincisi görselden video: görev task_u85W0jn1sQLkrszJlxqXF1hxJYhsndxK, 01:42:33 UTC'de oluşturuldu ve 01:44:52 UTC'de başarılı oldu. İlk kare, yağmurlu bir pencerenin yanında eski kitap yığınının üstünde uyuyan kızıl bir kedinin hareketsiz görseli (1024×571 piksel); "type": "first_frame" ile data URI olarak gönderildi.

prompt
The cat slowly wakes, stretches its front paws and yawns, then looks toward the window. Raindrops keep running down the glass. The camera stays still.
Sekiz kare: yağmurlu bir pencerenin yanında kitap yığınının üstünde uyuyan kızıl bir kedi, uyanıyor, patilerini uzatıyor ve esniyor.
Kedi klibinden zaman sırasıyla sekiz kare, 0.0 ile 5.0 saniye arası. OmniaKey API'siyle Seedance 2.0, görselden video, 5 saniye, 720P, 30 Ekim 2026'da üretildi.

Kedi başını kaldırıyor, gözlerini açıyor, iki ön patisini kitapların kenarından uzatıyor, iyice esniyor ve başını pencereye çeviriyor; tam promptun verdiği sırayla. Yağmur cama akmaya devam ediyor ve kadraj istendiği gibi sabit kalıyor.

Solda ilk kare olarak gönderilen kızıl kedi görseli, sağda klibin son karesi: patileri kitapların üzerinden uzanmış, başı pencereye dönük.
Sol: ilk kare olarak gönderilen hareketsiz görsel. Sağ: kedi klibinin son karesi. OmniaKey API'siyle Seedance 2.0, görselden video, 5 saniye, 720P, 30 Ekim 2026'da üretildi.

Bu iki çalıştırma metinden videoyu ve 720P'de 5 saniyelik bir ilk kareyi kapsıyor. 1080P, Fast, Mini, 2.5, reference_to_video, HTTPS kare bağlantısı ve diğer süreleri denemedik.

Dosyalar ne ölçtü

İki indirme de 1280×720 ve 24 fps H.264 MP4: 121 kare, 5.04 saniye.

KlipBardakKedi
İşlemmetinden videogörselden video
Bitiş süresi159 s139 s
Dosya boyutu2,070,248 bytes1,352,027 bytes
Video1280×720, 24 fps, 121 kare1280×720, 24 fps, 121 kare
SesAAC parçasıyok

Bardak klibinin ses parçası dökme, fışırdama ve buz seslerini taşıyor; içinde konuşma da müzik de yok. Kedi klibinde hiç ses parçası yok, çünkü istek generate_audio: false gönderdi.

İki görev kaydı da usage.completion_tokens: 108900 bildirdi; bu 121 × 1280 × 720 ÷ 1024 eder, yani BytePlus'ın video faturalandırmasını tahmin etmek için kullandığı token formülü (BytePlus'ın fiyatlandırma sayfası, 30 Ekim 2026'da kontrol edildi).

OmniaKey'in belgeleri 6 saniyelik 720p bir klibin genellikle yaklaşık bir dakika içinde tamamlandığını söylüyor (video API belgeleri, 30 Ekim 2026'da kontrol edildi). Bizimkiler 159 ve 139 saniye sürdü; 26 Ekim karşılaştırmamızdaki üç 5 saniyelik 720p klip 144.8, 319.0 ve 184.7 saniye sürdü. 2 ile 5 dakika arasını planlayın ve isteği açık tutmak yerine sorgulayın.

Hangi hatalar ve sınırlarla karşılaşırsınız?

Önce üç ayarı kontrol edin: model kimliği, 4 ile 15 arasında bir süre ve sağlayıcının filtresinin geri çevirebildiği ses.

Durum / KodNe değiştirmeli
400 invalid_requestgövde ya da input.prompt
400 model_price_errorsüreyi 4–15 s'ye
403 model_not_allowedanahtarın model erişimi
409 idempotency_key_reusedher gövde için yeni anahtar
503 no_available_channeltam kimlik, öneksiz işlem
başarısız görev, sağlayıcı hatasıerror alanını okuyun, sonra yeniden deneyin

Bu kodlar medya API genel bakışından ve video API belgelerinden geliyor (30 Ekim 2026'da kontrol edildi). failed ile biten bir görev ön ücretini geri verir; geri çevrilen bir üretim size zamandan başka bir şey kaybettirmez.

Ses ayarına dikkat edin. Seedance varsayılan olarak bir ses parçası üretir; açık bırakmak sağlayıcının 4 saniyelik bir 480P isteğini OutputAudioSensitiveContentDetected.PolicyViolation ile geri çevirmesine yol açtı, bu yüzden sahne ses gerektirmiyorsa parameters.generate_audio: false gönderin (video API belgeleri, 30 Ekim 2026'da kontrol edildi).

BytePlus, 2.0 serisinin gerçek insan yüzü içeren referans görselleri ve videoları kabul etmediğini yazıyor (BytePlus'ın Seedance 2.0 sayfası, 30 Ekim 2026'da kontrol edildi). Seedance 2.0'da seed ve camera_fixed de yok; oysa ikisi de sağlayıcının görev oluşturma API'sinde birer alan (BytePlus'ın görev oluşturma API'si, 30 Ekim 2026'da kontrol edildi).

On beş saniye bu ailenin tavanı ve duration: -1 daha fazlasını getirmiyor; 20 ya da 30 saniyelik bir çekim Seedance 2.5 tarafına ait (Seedance 2.0 model sayfası, 30 Ekim 2026'da kontrol edildi).

OmniaKey sabit bir hız sınırı yayımlamıyor; HTTP 429 yanıtını üstel geri çekilmeyle yeniden denenebilir sayın (OmniaKey'in API hataları sayfası, 30 Ekim 2026'da kontrol edildi).

Seedance 2.0, Fast, Mini yoksa 2.5?

Dört sınıf aynı istek gövdesini alır; geçiş bir model kimliğine ve Fast ile Mini'de daha düşük bir çözünürlük tavanına mal olur.

  • Seedance 2.0, dreamina-seedance-2-0-260128: 480P, 720P ve 1080P, 4 ile 15 saniye. BytePlus'ın liste fiyatı 5 saniyelik bir klip için 720p'de $0.76, 480p'de $0.35 (BytePlus'ın fiyatlandırma sayfası, 30 Ekim 2026'da kontrol edildi).
  • Seedance 2.0 Fast, dreamina-seedance-2-0-fast-260128: 480P ve 720P, 4 ile 15 saniye. BytePlus'ın liste fiyatı 5 saniyelik bir klip için 720p'de $0.60, 480p'de $0.28.
  • Seedance 2.0 Mini, dreamina-seedance-2-0-mini-260615: 480P ve 720P, 4 ile 15 saniye. BytePlus'ın liste fiyatı 5 saniyelik bir klip için 720p'de $0.38, 480p'de $0.18.
  • Seedance 2.5, dreamina-seedance-2-5-260628: ailede 20 ya da 30 saniyelik çekim alan tek kimlik ve en yavaşı: 4 saniyelik 480P bir klip için yaklaşık dört dakika (video API belgeleri, 30 Ekim 2026'da kontrol edildi). Görüntü tarafını Seedance 2.5 incelememiz ele alıyor.

OmniaKey'in model sayfaları 4 saniyelik 480P bir klibi 2.0'da yaklaşık bir dakika, Fast'te iki dakika, Mini'de 100 saniye olarak veriyor (30 Ekim 2026'da kontrol edildi).

1080P bir ana kopya gerektiğinde tam 2.0 kimliğini alın, çünkü Fast ve Mini 720P'de durur (video API belgeleri, 30 Ekim 2026'da kontrol edildi). OmniaKey bu kimlikler için kendi fiyatlarını belirliyor; güncel fiyatlar için Seedance 2.0 model sayfasına bakın.

SSS

Resmî bir Seedance 2.0 API'si var mı?

Var. BytePlus ModelArk bunu satıyor ve orada etkinleştirmek için USD 30'un üzerinde bir hesap bakiyesi, bir Savings Plan ya da bir Seedance kaynak paketi gerekiyor (BytePlus'ın Seedance 2.0 sayfası, 30 Ekim 2026'da kontrol edildi). Yukarıdaki betik aynı model kimliğini OmniaKey'in medya API'si üzerinden çağırıyor.

Base64 yerine bir görsel URL'si gönderebilir miyim?

OmniaKey'in belgeleri satır içi data URI'sinin yanında herkese açık bir HTTPS URL'si listeliyor (video API belgeleri, 30 Ekim 2026'da kontrol edildi). Bizim çalıştırmalarımız satır içi gitti, çünkü OmniaKey'in kendi testinde bir HTTPS kare bağlantısı provider_submit_rejected olarak geri döndü; bu yüzden URL'yi önce bir test klibinde deneyin.

Sesi nasıl kapatırım?

parameters.generate_audio: false gönderin; MP4 kedi klibindeki gibi hiç ses parçası olmadan gelir. Bu modelde ses varsayılan olarak açık.

İsteğim neden zaman aşımına uğradı?

Klip genellikle hâlâ üretiliyordur, çünkü 5 saniyelik 720p işler bizim çalıştırmalarımızda 139 ile 319 saniye sürdü. Aynı görev kimliğini yeniden sorgulayın, asla yeniden göndermeyin ve 15 saniyelik klipler için 15 dakikalık döngü sınırını yükseltin.

Video bağlantıları ne kadar dayanır?

assets[0].url içindeki imzalı bağlantı yaklaşık bir saat dayanır; görev kaydı oluşturulduktan sonra 24 saat saklanır (medya API genel bakışı, 30 Ekim 2026'da kontrol edildi). İlk başarıda indirin ya da yeni bir bağlantı için görevi yeniden sorgulayın.

Kontrol edilen kaynaklar

OmniaKey'in kendi belgeleri, 30 Ekim 2026'da kontrol edildi: video API, medya API genel bakışı ve API hataları.

Bu makaledeki modeller

Seedance 2.0yapay zekâ videosuvideo APIgörselden videoyaPython

İlgili makaleler

Son makaleler