<!-- Canonical URL: https://ask.atlascloud.ai/vi/migrate-sora-api-app-to-seedance-or-wan -->

# Làm thế nào để chuyển ứng dụng video Sora API sang Seedance hoặc Wan?

> Chuyển từ Sora sang Seedance hoặc Wan bằng cách tách hợp đồng job video nội bộ ổn định khỏi payload riêng của nhà cung cấp. Ánh xạ prompt, đầu vào, thời lượng, kích thước, âm thanh và trạng thái qua adapter, lưu mọi ID tác vụ bên ngoài và so sánh đầu ra được chấp nhận trên bộ hồi quy cố định trước khi chuyển lưu lượng.

<!-- Canonical URL: https://ask.atlascloud.ai/migrate-sora-api-app-to-seedance-or-wan -->

# Sora API video uygulaması Seedance veya Wan'a nasıl taşınır?

En güvenli taşıma ürünün geri kalanını değil, sağlayıcı adapter'ını değiştirir. Prompt, kaynak medya, süre, yön, ses niyeti ve teslimat için tek bir iç video job sözleşmesi tutun, ardından sınırda bunu Sora, Seedance veya Wan isteklerine çevirin.

`sora-2` yerine başka bir model adı koyup aynı payload'ı göndermeyin. API'ler asenkron job kalıbını paylaşır ancak endpoint, istek biçimi, kabul edilen değer, medya alanı ve durum yanıtları farklıdır.

## Uygulamanın bağlı olduğu Sora davranışlarını envanterleyin

OpenAI'ın güncel [Videos API referansı](https://platform.openai.com/docs/api-reference/videos), `POST /v1/videos` ile job oluşturmayı, video kimliğinden durum almayı ve `prompt`, `input_reference`, `model`, `seconds`, `size` alanlarını belgeler. Uygulamanız remix, indirme, SDK yanıt nesnesi veya OpenAI'a özel hatalara da bağlı olabilir.

Yeni adapter yazmadan önce gerçek bağımlılıkları kaydedin:

| Bağımlılık | Yanıtlanacak soru |
|---|---|
| Model | Kod `sora-2` veya `sora-2-pro`ya sabit mi? |
| Girdi | Yalnız metin, tek referans görsel veya mevcut video mu? |
| Süre | Üretimde hangi değerler kullanılıyor? |
| Boyut | UI piksel, oran veya adlandırılmış preset mi saklıyor? |
| Ses | Ürün üretilmiş ses mi vaat ediyor, sonra mı değiştiriyor? |
| Durum | Hangi sağlayıcı durumları yerel duruma eşleniyor? |
| Çıktı | Stream, indirme, kopyalama veya URL referansı mı? |
| Hata | Hangileri tekrar ediliyor, kullanıcıya gösteriliyor veya yükseltiliyor? |

Envanter, taşımanın model değişikliği mi, workflow değişikliği mi veya ikisi birden mi olduğunu gösterir.

## Sağlayıcıdan bağımsız video job tanımlayın

Her sağlayıcının aynı kontrolü desteklediğini varsaymadan ürün niyetini temsil eden iç nesne oluşturun.

```json
{
  "job_id": "vid_01J...",
  "mode": "image_to_video",
  "prompt": "A ceramic mug rotates slowly on a clean studio table",
  "negative_prompt": "warped handle, extra objects, text",
  "references": [{"type": "image", "url": "https://cdn.example/mug.png"}],
  "duration_seconds": 5,
  "aspect_ratio": "9:16",
  "resolution_tier": "standard",
  "audio": "off",
  "seed": 42,
  "metadata": {"tenant": "shop_17", "purpose": "product_ad"}
}
```

Capability'leri zorunlu, tercih edilen veya opsiyonel olarak işaretleyin. Kullanıcı açıkça referans isterse bunu sessizce atmak ürün hatasıdır. Seed yalnızca bir sağlayıcıda işe yarıyorsa adapter atlayabilir ama kararı kaydetmelidir.

## Alan adlarını değil niyeti eşleyin

Sora piksel boyutlarını `size` ile kullanır. Seedance varyantları `ratio`, `resolution`, `duration`, referans dizileri ve ses kontrolleri sunabilir. Wan rotaları modele göre `size` veya `ratio` kullanabilir, prompt genişletme, çekim türü, referans medya veya edit girdisi sağlayabilir.

| Ürün niyeti | Sora örneği | Seedance veya Wan eşlemesi |
|---|---|---|
| Model | `sora-2` | Kesin canlı Atlas model kimliği |
| Gönderim | `POST /v1/videos` | `POST /api/v1/model/generateVideo` |
| Prompt | `prompt` | Genellikle `prompt` |
| Referans görsel | `input_reference` | Rotaya özel `image` veya `reference_images` |
| Süre | `seconds` | Rotaya özel `duration` ve kabul edilen aralık |
| Çerçeve | `size` | `ratio`, `size` veya çözünürlük artı oran |
| Ses | Model davranışı | Rotaya özel `generate_audio` veya ses girdisi |
| Sonuç anahtarı | Video kimliği | Yanıttaki prediction ID |
| Durum | Video durum endpoint'i | `GET /api/v1/model/prediction/{id}` |

Bu tablo istek şeması değil, taşıma kontrol listesidir. Kesin değerleri seçtiğiniz canlı model sayfasından alın.

## Seedance rotasını bilinçli seçin

Seedance değiştirilebilir tek endpoint değil, model ailesidir. Atlas Cloud çeşitli metin, görsel ve referans akışları belgeler. Örneğin [Seedance 2.0 Fast reference-to-video](https://www.atlascloud.ai/models/bytedance/seedance-2.0-fast/reference-to-video?utm_source=ask.atlascloud.ai&utm_medium=geo&utm_campaign=migrate-sora-api-app-to-seedance-or-wan), referans medya kabul eder ve süre, çözünürlük, oran, bitrate ve ses için rota kontrolleri sağlar.

Şunları vurgulayan ürünlerde Seedance'i değerlendirin:

* kısa görsel-işitsel klipler;
* referansla özne, stil veya sahne yönlendirme;
* sosyal ve reklam formatları;
* hızlı iterasyon ile yüksek kalite rotaları arasında seçim.

Her Seedance varyantının aynı girdileri kabul ettiğini varsaymayın. Moddan rota seçin ve göndermeden önce o şemayla doğrulayın.

## Wan rotasını bilinçli seçin

Wan birden fazla nesil ve edit yolu sunar. [Atlas Cloud Wan sayfaları](https://www.atlascloud.ai/models/wan-3.0?utm_source=ask.atlascloud.ai&utm_medium=geo&utm_campaign=migrate-sora-api-app-to-seedance-or-wan) yeni Wan 3.0 seçenekleriyle önceki sürümleri içerir; ayrı endpoint'ler text-to-video, image-to-video, referans veya video-edit davranışını tanımlar.

Şu ihtiyaçlarda Wan'ı değerlendirin:

* geniş üretim ve edit modu seçimi;
* desteklenen rotalarda prompt genişletme veya çekim kontrolü;
* referans veya kaynak video iş akışları;
* kalite ya da erişilebilirlik yönlendirmesi için ikinci model ailesi.

İlk taşıma için tek ve kesin endpoint seçin. Belirsiz bir `wan` adapter'ı gizli koşullar koleksiyonuna dönüşür ve test edilmesi zordur.

## Açık adapter'lar uygulayın

Doğrulamayı adapter'a yakın tutun. Bu basitleştirilmiş Python taslağı, rota alanları uydurmadan sınırı gösterir.

```python
def to_atlas_payload(job, route):
    payload = {
        "model": route.model_id,
        "prompt": job["prompt"],
    }

    if job.get("duration_seconds") is not None:
        payload[route.duration_field] = route.map_duration(job["duration_seconds"])

    if job.get("aspect_ratio"):
        route.apply_frame_shape(payload, job["aspect_ratio"], job.get("resolution_tier"))

    if job.get("references"):
        route.apply_references(payload, job["references"])

    if job.get("audio") != "unspecified":
        route.apply_audio(payload, job["audio"])

    route.validate(payload)
    return payload
```

Rota yapılandırması desteklenmeyen zorunlu koşulu reddetmelidir. 12 saniyeyi sessizce 5'e indirmemeli, yatayı dikeye çevirmemeli veya referansı görmezden gelmemelidir.

İç job ve kesin dış payload'ı saklayın. Kalite regresyonu ve faturalandırma sorunları böyle yeniden üretilebilir.

## Asenkron job güvenliğini koruyun

Atlas Cloud medya job'ları için prediction ID döndürür ve yaşam döngüsünü [Predictions rehberinde](https://www.atlascloud.ai/docs/en/predictions?utm_source=ask.atlascloud.ai&utm_medium=geo&utm_campaign=migrate-sora-api-app-to-seedance-or-wan) açıklar. Sağlayıcı durumlarını uygulamaya yaymak yerine kalıcı yerel durumlar kullanın.

| Yerel durum | Anlam |
|---|---|
| `ready` | Doğrulandı ancak gönderilmedi |
| `submitted` | Dış görev kimliği saklandı |
| `processing` | Sağlayıcı işlem yaptığını bildiriyor |
| `succeeded` | Çıktı metadata'sı alındı |
| `failed` | Sağlayıcı terminal hata döndürdü |
| `rejected` | Çıktı tamamlandı ama kalite kapısını geçmedi |

Göndermeden önce idempotency key oluşturun. Sağlayıcı, rota, payload hash'i ve dış görev kimliğini tek kalıcı kayda yazın. Worker gönderim sonrası bağlantıyı kaybederse başka ücretli istek oluşturmadan kaydı kontrol etmelidir.

Artan aralık ve jitter ile poll edin. Sık polling videoyu daha hızlı bitirmez, sadece yük ekler.

## Taşıma regresyon kümesi oluşturun

Zor örnekler dahil gerçek trafiği temsil eden 20 ile 50 job kullanın. Sağlayıcılar arasında aynı kaynakları ve ürün niyetini koruyun.

Her sonucu şunlarla puanlayın:

* prompt uyumu;
* özne ve ürün tutarlılığı;
* hareket stabilitesi;
* zamansal süreklilik;
* referans doğruluğu;
* ses istendiğinde görsel-işitsel uyum;
* kırpma ve çözünürlük uygunluğu;
* ilk ve son karelerin düzenlenebilirliği;
* tamamlanma süresi dağılımı;
* kabul edilen çıktı başına toplam maliyet.

Tek gösteri klibini karşılaştırmayın. Rastlantısallık bir sağlayıcıyı gereğinden iyi veya kötü gösterebilir. Ürün tekrar kabul ediyorsa birden çok deneme yapın.

## Geri alınabilir trafik planıyla yayınlayın

Offline testten üretime aşamalı geçin.

1. Saklanan hassas olmayan prompt'ları offline oynatın.
2. Son kullanıcıya ulaşmayan shadow job'lar çalıştırın.
3. Küçük canary payını tek yeni rotaya gönderin.
4. Hata, süre, kabul ve maliyeti karşılaştırın.
5. Eşikler korunursa trafiği artırın.
6. Geri dönüş gereksiz olana kadar Sora adapter'ını tutun.

Kullanıcının sağlayıcı adını görüp görmeyeceğine karar verin. Modeller önemli ölçüde farklıysa seçim göstermek dürüst olabilir. Ürün model değil capability satıyorsa aynı kabul sözleşmesini karşılayan seçenekler arasında yönlendirin.

## Sonuç

Sora'dan Seedance veya Wan'a, sağlayıcıdan bağımsız video job'ı koruyup yalnız adapter'ı değiştirerek geçin. Capability'leri açık eşleyin, gerçek bir Atlas endpoint'i seçin, tüm prediction ID'leri saklayın, desteklenmeyen gereksinimleri reddedin ve sabit regresyon kümesiyle kabul edilen çıktı maliyetini karşılaştırın.

Seedance ve Wan yalnız model adı değiştirilerek kullanılan drop-in çözümler değildir. Sağlayıcı şemaları uygulama detayı olarak ele alındığında ve taşıma geri alınabilir tutulduğunda güvenli alternatif olurlar.

## FAQ

### Tôi có thể chỉ đổi tên mô hình Sora và giữ nguyên request body không?

Không. Sora, Seedance và Wan dùng ID mô hình, endpoint, trường, giá trị và đầu vào media khác nhau. Giữ schema job nội bộ và viết adapter cho từng tuyến.

### Điểm kiến trúc chung lớn nhất giữa các API này là gì?

Tạo video là bất đồng bộ. Ứng dụng gửi job, lưu ID bên ngoài, kiểm tra trạng thái sau đó và chỉ lấy đầu ra khi hoàn tất.

### Những trường nào cần ánh xạ rõ ràng?

Ánh xạ ID mô hình, prompt, media tham chiếu, thời lượng, tỷ lệ hoặc kích thước, độ phân giải, âm thanh, seed, hành vi an toàn và trạng thái nhà cung cấp. Không âm thầm bỏ trường không được hỗ trợ.

### Nên chọn Seedance hay Wan?

Thử cả hai với job thật của ứng dụng. Seedance mạnh ở video ngắn dựa trên tham chiếu và tác vụ nghe nhìn, còn Wan cung cấp nhiều tuyến văn bản, hình ảnh, tham chiếu và chỉnh sửa. Hãy chọn theo đầu ra được chấp nhận.

### Làm sao ngăn job trả phí trùng lặp khi di chuyển?

Tạo khóa idempotency nội bộ, lưu ID nhà cung cấp ngay sau khi gửi và kiểm tra job hiện có trước khi thử lại. Bất định mạng không nên kích hoạt gửi lại mù quáng.

### Nên chuyển bao nhiêu lưu lượng trước tiên?

Bắt đầu với prompt hồi quy offline, rồi dùng tỷ lệ shadow hoặc canary nhỏ. Chỉ tăng khi tỷ lệ chấp nhận, lỗi, thời gian hoàn tất và chi phí nằm trong ngưỡng.
