SaaS mühendisliği
AI video SaaS’ında kredi fiyatı nasıl hesaplanır? 28 modelden notlar
Viralance’ta 28 video modeli, 297 kredi anahtarı ve tek bir taban kuralı var: kredi = ceil(sağlayıcı USD / 0,08). Fiyat tablosunun kodda nasıl tutulduğunu anlatıyoruz.

KISA CEVAP
Viralance’ta yeni ve yeniden fiyatlanan her model kademesi için kredi, sağlayıcının o iş için kestiği dolar maliyetinden hesaplanır: kredi = ceil(USD / 0,08). Örneğin VEO 3.1 Fast ile 7 saniyelik uzatma fal üzerinde 1,05 dolar tuttuğu için 14 kredidir. Satılan her kredinin en az 0,08 dolarlık sağlayıcı maliyetini karşılaması, paket fiyatı kredi başına 0,18–0,30 dolar aralığında kaldığı sürece marjı korur.
Model kataloğu tek bir dosyada yaşıyor: 28 video modeli, 297 fiyat anahtarı
Viralance’ın web uygulamasında lib/utils/constants.ts modellerin, uç noktaların ve kredi fiyatlarının tek kaynağı. Firebase Functions ve MCP sunucusu bu dosyayı doğrudan içe aktaramadığı için scripts/gen-model-catalog.ts adlı bir kod üreteci, npm run sync:catalog ile her iki pakete commitlenen bir kopya yazıyor: functions/src/generated/model-catalog.ts.
Bu üretilmiş katalogda 28 video modeli var; bunların 3’ü retired: true işaretli. İşaretli modeller seçicilerden kalkıyor ama sunucu onları kabul etmeye devam ediyor, çünkü eski iOS sürümleri, kayıtlı şablonlar ve API kullanıcıları hâlâ bu kimliklerle istek atabiliyor.
Aynı dosyada 297 video kredi anahtarı, 11 görsel kredi anahtarı ve 6 görsel modeli bulunuyor. Her model girdisi modlarını (text-to-video, image-to-video, reference-to-video), desteklenen sürelerini, çözünürlüklerini ve fal uç noktalarını taşıyor. Bazı modellerde 1080p ayrı bir uç noktaya gidiyor; Seedance 2.0’ın 1080p istekleri örneğin Standard katman uç noktasına yönleniyor.
Katalogun bir kopyası da iOS uygulamasında, src/constants/catalog.ts içinde duruyor. Oradaki yorum açık: sunucu yetkili, her ücreti yeniden hesaplıyor; mobil tablo yalnızca kullanıcıya “Oluştur”a basmadan önce gösterilen tahmin için var ve web ile aynı anahtarı kurmak zorunda.
Bir kredi anahtarı model, mod, çözünürlük ve süreden kurulur
Fiyat bir formül değil, bir arama tablosu. Sunucudaki generateVideo fonksiyonu isteği doğruladıktan sonra creditKey adlı bir dize kuruyor ve CREDIT_COSTS içinde arıyor. Anahtar biçimi model ailesine göre değişiyor:
- yalnız süre:
kling-2.5-turbo-pro-5sgibi - görselden video için ek parça:
kling-3.0-pro-i2v-10s - çözünürlük ve süre:
wan-3.0-i2v-1080p-15s - sabit süreli referans modu:
veo3.1-fast-ref-720p-8s
Anahtar tabloda yoksa istek Invalid credit configuration hatasıyla reddediliyor; yani fiyatı tanımlanmamış bir kombinasyon sessizce ucuza ya da bedavaya üretilmiyor.
Anahtar kurulmadan önce iki düzeltme yapılıyor ve ikisi de ödenen ile teslim edilen arasındaki farktan doğmuş. Hailuo 2.3’ün 1080p uç noktası süre parametresi almıyor; 13 Temmuz 2026’daki canlı testte 10 saniyelik istek 5,88 saniyelik bir video döndürüp 10 saniye fiyatından ücretlenmiş. Bu yüzden sunucu 1080p süresini 6 saniyeye sabitliyor. VEO 3.1 referans modu da yalnızca 8 saniye üretiyor; eskiden 4 veya 6 saniyelik istek kısa sürenin fiyatıyla 8 saniyelik render alıyordu, şimdi her zaman 8 saniye olarak kaydediliyor.
Web ve iOS’taki tahmin fonksiyonları aynı anahtar mantığını kopyalıyor. Testler, sunucu tablosunu functions/src/index.ts kaynağından metin olarak ayrıştırıp istemci tablosuyla karşılaştırıyor.
Sağlayıcı maliyeti ayrı bir dosyada, saniye başı dolar olarak tutuluyor
Satış fiyatı ile maliyet aynı tabloda değil. functions/src/fal-costs.ts her işin dolar maliyetini tahmin ediyor ve günlük rapor bu dosyayla günün toplam üretim harcamasını çıkarıyor. Dosyanın başındaki not, fiyatların fal model sayfalarından 2026 Temmuz’da okunduğunu, bir kısmının 27 Eylül 2026’daki birim ekonomisi incelemesinde yeniden kontrol edildiğini söylüyor. Sayfası açılamayan modeller ESTIMATE olarak işaretli. Ses açık faturalanan modellerde fiyat ses açık varsayılıyor, çünkü üretim akışları sesi varsayılan olarak açıyor.
Yapı katmanlı: önce sağlayıcı (Google Vertex ise ayrı satır), sonra kayıtlı uç nokta (ENDPOINT_USD_PER_SEC model tablosunu ezer), sonra mod tablosu (referans ve görselden video), en son model tablosu. Çözünürlüğe göre değişen fiyatlar { default, 720p, 1080p } biçiminde tutuluyor. Fiyatı olmayan yeni bir model için muhafazakâr varsayılanlar var: saniye başı 0,12 dolar, 6 saniye, görsel başına 0,05 dolar. Amaç, fiyat satırı unutulduğunda harcamanın raporda sıfıra düşmemesi.
Dosyadaki yorumlar iki hatayı da kayda geçiriyor. Kling O3 Pro satırı 0,28 dolardı, sayfa fiyatının iki katı; düzeltildi ama kredi fiyatları o rakama göre belirlendiği için yerinde kaldı. Seedance 2.5 için satır yokken 0,12 dolarlık varsayılana düşüyor ve maliyet analizinde harcamayı yaklaşık 4 kat eksik gösteriyordu.
Taban kuralı: kredi = ceil(USD / 0,08)
Yeni eklenen ve yeniden fiyatlanan kademelerde kural tek satır. functions/src/product-models.ts içinde FAL_USD_PER_CREDIT = 0.08 sabiti ve Math.ceil(usd / FAL_USD_PER_CREDIT - 1e-9) hesabı var; küçük epsilon, kayan nokta yüzünden tam bölünen bir değerin bir üst krediye yuvarlanmasını engelliyor. Şablon indirimi için aynı taban TEMPLATE_OF_WEEK_CREDIT_USD_FLOOR adıyla tekrar ediyor.
Kuralın nasıl uygulandığını Kling 4.0 gösteriyor: 720p için saniye başı 0,157 dolar, 5 saniye 0,785 dolar, sonuç 10 kredi. 1080p 30 saniye 7,05 dolar ediyor ve 89 kredi. Video upscale ise dosya bazında ölçülüyor: çıktı megapikseli, en az 30 fps ve süre üzerinden 0,001 dolar/MP ile hesaplanıp 0,08’e bölünüyor; 9:16 bir 5 saniyelik klip 16 kredi.
27 Eylül 2026 incelemesi zarar eden kalemleri bu kurala çekti. Testteki liste somut:
- VEO 3.1 uzatma 9 krediden 14’e (eski uç nokta 2,80 dolar, yeni 1,05 dolar)
- VEO 3.1 referans 720p 8 saniye 15 kredi (eskiden 12 kredi alınıp 3,20 dolarlık uç nokta çağrılıyordu)
- Grok Imagine 1.5 720p 10 saniye 10’dan 18 krediye
Kural her eski kademeye geriye dönük uygulanmadı. Kling 2.5 Turbo Pro 5 saniye 3 kredi; yorumu, en kötü durumdaki kredi değeri olan 0,139 dolara (Business paketi artı bonus) göre hâlâ kârlı olduğunu söylüyor. Yani kodda iki ölçü var ve hangisinin kullanıldığı yorumlarda yazıyor.
Paket fiyatı ile taban arasındaki pay nasıl korunuyor?
Web’deki kredi paketleri tek seferlik ve süresiz: 30 kredi 9 dolar (kredi başına 0,30), 330 kredi 79 dolar (0,24), 1.650 kredi 299 dolar (0,18). Paket fiyatı ile 0,08 tabanı arasındaki farkı asıl aşındıran şey bonuslar ve indirimler.
Kodda bu aşınmaya karşı üç kontrol var:
- İlk satın alma bonusu 24 saatlik pencerede paket başına yüzde 5–15. 27 Eylül 2026’dan beri yüzde 15’le sınırlı; Business paketindeki yüzde 30 bonus, yoruma göre birkaç modelde krediyi fal maliyetinin altına satıyordu.
- Haftanın şablonu indirimi yüzde 20’den yüzde 10’a indi, çünkü yüzde 20’de şablonların çoğu maliyetin altında satılıyordu. İndirim sunucuda hesaplanıyor ve indirimli fiyat 0,08 tabanını karşılamıyorsa hiç uygulanmıyor.
profitability.test.ts, yeni modellerin fiyatını otomatik olarak kârlılık eşiğine karşı test ediyor.
Görsellerde kredi maliyeti videoya göre çok daha düşük olduğu için kademeler daha geniş bir payla fiyatlanıyor. Yapay zekâ yardımcıları, yani altyazı ve prompt iyileştirme, 0 kredi olarak tabloda duruyor.
Aynı model iki sağlayıcıdan: VEO önce Vertex AI, sonra fal
Viralance’taki üretim büyük ölçüde fal üzerinden çalışıyor, ama VEO 3.1 için ikinci bir yol var. functions/src/google-veo.ts notuna göre Vertex AI fiyatı Fast için 720p’de saniye başı 0,10, 1080p’de 0,12 dolar; fal aynı modeli 0,15 dolardan faturalıyor. Lite iki tarafta aynı. Not ayrıca fal’ın VEO 3.1 uç noktalarını 17 Kasım 2026’da kapatacağını kaydediyor.
Yönlendirme kuralı “siparişi birebir üretebiliyorsa Vertex” şeklinde. googleVeoEligible yalnızca 720p/1080p, 9:16 veya 16:9, 4/6/8 saniye ve ek girdi olmayan işleri kabul ediyor; referans modunda 1–3 referans görsel ve 8 saniye şartı var. Uygun iş Vertex’e gidiyor, ama fal’a gönderilecek istek de video belgesine falFallback olarak yazılıyor. Sonra üç durum ayrılıyor:
- gönderim hatası (kota, kesinti, hatalı istek): aynı çağrıda fal’a geçiliyor, kullanıcı geçişi görmüyor
- Vertex politika dışı bir nedenle video döndürmüyor: saklanan fal isteği gönderiliyor ve sorgulama fal üzerinden sürüyor
- içerik politikası reddi: iş başarısız sayılıp iade ediliyor; fal aynı Google modelini çalıştırdığı için yeniden göndermek de reddedilirdi
401, 402, 403 veya 429 yanıtı gelince Vertex yolu 10 dakika soğumaya alınıyor. Maliyet tarafında fal-costs.ts bu işleri provider: google alanından tanıyıp veo3.1-fast-google satırından fiyatlıyor.
Neden webhook değil de polling? Süreler ve zaman aşımları
Kodda ödeme sağlayıcıları için imza doğrulamalı webhook’lar var, ama video sağlayıcıları için yok. generateVideo kredi düştükten sonra fal’a queue.submit() ile iş bırakıp istek kimliğini kaydediyor ve hemen dönüyor. Koddaki yorum nedenini söylüyor: subscribe() ile sonucu beklemek fonksiyon zaman aşımına takılıyordu. Fonksiyonun kendi sınırı 540 saniye, yani 9 dakika.
Sonucu iki ayrı sorgulayıcı topluyor:
- İstemci: video sayfasında tek bir zamanlayıcı, bekleyen tüm videoları birlikte yokluyor. Aralık 3, 5, 10 ve 15 saniye olarak uzuyor, video başına en fazla 40 deneme yapılıyor ve sekme gizliyken hiç istek atılmıyor. Her deneme
pollVideoGenerationfonksiyonunu çağırıyor; bu fonksiyonun sınırı 120 saniye, çünkü biten bir Google videosu indirilip Storage’a bu çağrı içinde kopyalanıyor. - Sunucu:
processVideosScheduleddakikada bir çalışıyor ve her turda en fazla 100pendingveyaprocessingvideoya bakıyor. 30 dakikayı geçen iş başarısız sayılıyor.
Bu düzenin bedeli fazladan çağrı; kazancı ise sağlayıcıdan gelen bir bildirimin kaybolmasına bağımlı olmamak. Kullanıcı tarayıcıyı kapatsa bile zamanlanmış görev işi bitiriyor. Aynı dakikalık desen ses, aktör, çoklu reklam ve profesyonel dışa aktarım gibi diğer iş türlerinde de tekrar ediyor.
Katalog kararlarında başarısızlık oranı da bir maliyet kalemi
Bir modeli kataloğa almak yalnızca dolar fiyatına bakılarak verilmiyor. Hiç paket almamış hesapların kullanabileceği modeller TRIAL_VIDEO_MODELS listesinde sabit ve sunucu bunu generateVideo, Autopilot ve MCP üzerinden zorluyor. Liste 27 Eylül 2026’da Ağustos–Eylül başarısızlık verisine göre seçilmiş. Yorumdaki rakamlar: VEO 3.1 Lite yüzde 2, Hailuo 2.3 yüzde 0 başarısızlık. Dışarıda kalanlar Grok Imagine (yüzde 42 içerik politikası reddi), MiniMax H3 (yüzde 41), Grok Imagine 1.5 (yüzde 73) ve WAN 2.7 (yüzde 71).
Bazı kademeler bilerek sunulmuyor. MiniMax H3’ün 480P katmanı saniye başı 0,05 dolarla 768P ile aynı kredi fiyatına düşüyor; yorum bunun hep iki eşit faturadan kötü olanı olacağını söylüyor. Gemini Omni Flash’ın 360p katmanı da açılmamış. Hunyuan 1.5 için 720p ilanı kaldırılmış, çünkü fal yalnızca 480p üretiyor; bu, 13 Temmuz 2026’daki canlı matris testinde yakalanmış.
Kaldırılan modeller de bir yük. VEO 3 Fast, fal’da saniye başı 0,40 dolara çıktığı için emekli edildi; ama eski istemciler onu hâlâ gönderiyor ve sunucu bu istekleri aynı kredi fiyatıyla VEO 3.1 Fast 720p’ye yönlendiriyor.
Benzer bir ürün kuracaklar için kontrol listesi
Viralance’ın kodundan çıkan pratik kurallar şunlar:
- Fiyatı tek bir dosyada tutun, diğer paketlere kod üreteciyle kopyalayın ve sunucuyu yetkili kılın. İstemci tablosu yalnızca tahmin içindir.
- Satış fiyatını ve sağlayıcı maliyetini ayrı tablolarda tutun. Maliyet tablosuna kontrol tarihi ve kaynak yazın, emin olmadığınız satırı tahmin olarak işaretleyin.
- Fiyatı olmayan model için varsayılanı sıfır değil, muhafazakâr bir rakam yapın.
- Krediyi tek bir kuralla türetin; Viralance’ta bu ceil(USD / 0,08). Bonus, indirim ve kampanyaları da aynı tabana karşı kontrol edin.
- Maliyeti uç nokta düzeyinde kaydedin. Aynı model adı farklı uç noktada 2,5 kattan fazla fiyat farkı yaratabiliyor (VEO 3.1 için 0,40 ve 0,15 dolar).
- Sağlayıcının teslim ettiği süreyi doğrulayın ve fiyat anahtarını ondan sonra kurun.
- Aynı modeli iki sağlayıcıdan alabiliyorsanız yedek isteği baştan saklayın ve içerik reddini teknik hatadan ayırın.
- Webhook’a güvenmek yerine geri çekilen istemci sorgusu ile dakikalık sunucu taramasını birlikte kullanın, net bir zaman aşımı koyun.
- Fiyat-maliyet ilişkisini testle bağlayın: kredi × taban ≥ maliyet.
AMG Yazılım olarak Viralance gibi çok modelli, kredi tabanlı SaaS ürünlerini web ve mobil tarafıyla birlikte geliştiriyoruz.
PROJENİZE UYARLAYALIM
SaaS Geliştirme
Abonelik, roller, arka plan işleri ve yönetim araçlarıyla özel SaaS ürünleri. Web ve mobil deneyimi birlikte planlıyoruz.