DokümantasyonHatalar ve yeniden deneme

Hatalar ve yeniden deneme

Hata yanıtlarını okuyun, hata kodlarını kontrol edin ve ne zaman yeniden deneyebileceğinizi öğrenin.

İstek hatası alırsanız API çağrınızı kabul etmemiştir. Transkripsiyon hatasında ise istek kabul edilmiştir, ancak işlem daha sonra başarısız olmuştur. Bu durumda transkripsiyonun status alanı failed olur.

Hata yanıtının yapısı

/v1 çağrılarında istek hatalarını aynı JSON yapısıyla döndürürüz:

{
  "error": {
    "code": "insufficient_minutes",
    "message": "Not enough minutes",
    "retryable": false,
    "action_url": "https://transcript1.com/dashboard/billing",
    "minutes_needed": 20,
    "minutes_remaining": 3
  }
}

Uygulamanızda hangi adımı atacağınıza code üzerinden karar verin. message kullanıcıya gösterebileceğiniz açıklamadır; metni değişebileceği için bu alana göre koşul yazmayın. retryable değeri true ise aynı çağrı daha sonra çalışabilir.

Bazı hatalarda retryable yanında sorunu açıklayan ek alanlar da bulunur:

Alanİlgili hataAçıklama
action_urlinsufficient_minutes, no_active_plan, topup_needs_userPlan seçebileceğiniz veya ek dakika satın alabileceğiniz sayfa.
minutes_needed, minutes_remaininginsufficient_minutesİşlem için gereken dakika ve kullanılabilir bakiyeniz. Gereken süre henüz bilinmiyorsa ilk alan null olur.
reason, packstopup_needs_userKarttan neden ödeme alınmadığı ve istenen paket sayısı.
supported_platformsunsupported_platformKabul edilen platform değerleri: ["youtube", "x", "tiktok", "instagram", "facebook", "bluesky", "twitch", "dailymotion", "pinterest", "linkedin", "snapchat"].
missing_chunksupload_incompleteSunucuya ulaşmayan parçaların numaraları.
max_bytesmedia_too_largeHesabınızın dosya boyutu limiti, bayt olarak.
paramsinvalid_requestGövde veya sorgu doğrulamasında her hatalı alanı ve o alandaki sorunu gösteren nesne.

API'nin isteği kabul etmediği durumlar

HTTP koducodeAynı istek tekrar denenebilir mi?Neden alırsınız?
400, 422invalid_requestHayırBir parametre veya gövde alanı eksik ya da geçersiz. Örneğin diarize ile source: "captions" veya reuse_recent ile webhook_url birlikte gönderilmiş olabilir. Gövde geçerli JSON değilse de bu kod döner.
422invalid_urlHayırBağlantı desteklenmiyor veya platform ile eşleşmiyor. YouTube, X, TikTok, Instagram, Facebook, Bluesky ya da Kaynaklar ve seçenekler sayfasındaki diğer platformlardan birinin bağlantısını kullanın.
422unsupported_platformHayırGönderdiğiniz platform değeri desteklenenler arasında değil.
422unsupported_mediaHayırDosyanın uzantısını desteklemiyoruz.
401unauthorizedHayırAPI kimlik bilginiz eksik, geçersiz, süresi dolmuş veya iptal edilmiş. Geçersiz ya da süresi dolmuş yükleme token'ında da bu kod döner.
403insufficient_scopeHayırOAuth token'ında gereken transcriptions:read veya transcriptions:write yetkisi yok.
403email_not_verifiedHayırE-postanız henüz doğrulanmamış. Transkripsiyon ya da canlı oturum başlatmadan önce adresinizi doğrulayın.
402insufficient_minutesHayırKullanılabilir bakiyeniz 0 veya işlem için gereken dakikadan ya da bir canlı oturumun bir başlayan dakikasından az. Otomatik yükleme açıksa transcript1 önce yükleme yapmayı dener. Dakikaları action_url üzerinden satın alın ya da bir ajanın POST /v1/topups veya MCP aracı top_up ile satın almasına izin verin.
402no_active_planHayırÜcretli planınız aktif değilken ek dakika satın almaya çalıştınız. Bu kod POST /v1/topups ve panelin ücretlendirme endpoint'lerinden döner; transkripsiyon endpoint'lerinden dönmez.
402topup_needs_userYalnızca pending ve in_progress içinPOST /v1/topups karttan ödeme almadı. Nedeni reason alanındadır: not_allowed (kimlik bilgisinin ek dakika satın alma izni yok veya sahibi ekip yöneticisi değil), cap_reached (ajanlar için aylık limitte yer kalmadı), card_declined, authentication_required veya no_card. Kullanıcı paketleri action_url üzerinden satın alabilir. pending (ödeme henüz onaylanmadı) ve in_progress (başka bir yükleme sürüyor) durumlarında ödeme yine de tamamlanabilir: kullanıcıyı satın almaya yönlendirmek yerine daha sonra aynı Idempotency-Key ile tekrar deneyin.
404not_foundHayırBu transkripsiyon bulunamadı veya başka bir ekibe ait.
409upload_incompleteHayırDosyanın bazı parçaları yüklenmemiş. Eksikleri gönderip tamamlama çağrısını tekrarlayın.
409invalid_stateHayırTranskripsiyon yükleme bekleme aşamasında değil. Artık parça gönderemez veya yüklemeyi tamamlayamazsınız.
409session_endedHayırCanlı oturum bitmiş olduğundan POST /v1/live/sessions/:id/token token veremiyor. Bir WebSocket error olayı olarak da gönderilir.
422unsupported_languageHayırCanlı oturumun language değeri desteklenmiyor.
422unsupported_translationHayırCanlı oturumun translate_to dili desteklenmiyor ya da canlı çeviri kullanılamıyor.
409idempotency_conflictHayırAynı Idempotency-Key daha önce farklı parametrelerle kullanılmış.
413media_too_largeHayırDosya, hesabınızın boyut limitini aşıyor. Dosya yükleme sayfasını kontrol edin.
413invalid_requestHayırJSON gövdesi 1 MB'ı aşıyor. Dosya boyutu hatalarında bunun yerine media_too_large kullanılır.
429rate_limitedEvetDakikalık istek limitini aştınız. Retry-After değerinde belirtilen saniye kadar bekleyin.
429too_many_active_jobsEvetAynı anda çalışan transkripsiyon veya açık yükleme limitini aştınız. Retry-After değerinde belirtilen saniye kadar bekleyin.
429too_many_live_sessionsEvetPlanınızın eşzamanlı canlı oturumları kullanımda. Retry-After değerinde belirtilen saniye (30) kadar bekleyin.
500internal_errorEvetSunucu tarafında bir sorun oluştu. Biraz bekleyip tekrar deneyin.
503service_unavailableEvettranscript1'e şu anda erişilemiyor. Biraz bekleyip tekrar deneyin.
503live_capacityEvetTüm canlı kapasite kullanımda. Retry-After değerinde belirtilen saniye (30) kadar bekleyip oturumu yeniden oluşturun.
503live_unavailableHayırCanlı transkripsiyon şu anda kullanılamıyor.

Tarayıcıdan bearer token yerine oturum çereziyle yapılan çağrılarda isteğin geldiği siteyi de kontrol ederiz. Başka bir siteden geliyorsa 403 forbidden_origin döner. Bu kontrol, Authorization başlığıyla yaptığınız API çağrılarını etkilemez.

Tüm 429 yanıtlarında Retry-After bulunur. Değer saniye cinsindedir. Hesabınıza uygulanan limitleri Ücretlendirme ve limitler sayfasından kontrol edebilirsiniz.

Ne zaman tekrar denemelisiniz?

  • Aynı isteği yalnızca retryable değeri true olduğunda tekrar gönderin: rate_limited, too_many_active_jobs, too_many_live_sessions, live_capacity, internal_error, service_unavailable ve reason değeri pending veya in_progress olan topup_needs_user. Retry-After varsa belirtilen süreyi bekleyin. Yoksa her denemede bekleme süresini artırın.
  • POST /v1/transcriptions veya POST /v1/topups çağrısını tekrarlarken aynı Idempotency-Key başlığını koruyun. İlk çağrı aslında başarılı olduysa böylece ikinci kez ücret ödemezsiniz.
  • Diğer kodlarda önce hatanın nedenini giderin, sonra yeniden gönderin.

Canlı transkripsiyon

POST /v1/live/sessions ve diğer canlı endpoint'ler aynı yanıt yapısını kullanır. Yukarıdaki tablodaki canlı kodların yanı sıra invalid_request, unsupported_language, insufficient_minutes ve email_not_verified kodları da bunlar için geçerlidir. Oturum oluşturma idempotent değildir; bu yüzden too_many_live_sessions ya da live_capacity sonrasındaki bir yeniden deneme yeni bir oturum oluşturur.

Oturum oluştuktan sonra sorunlar HTTP hatası olarak değil, WebSocket üzerinde error olayları ve kapanış kodları olarak gelir. Tüm olaylar için Canlı transkripsiyon sayfasına bakın.

Kapanış koduAnlamı
1000session.ended sonrasında normal kapanış.
1011Beklenmeyen sunucu hatası. Yeni bir token ile devam edin.
1012reconnect sonrasında sunucu yeniden başlıyor. Yeni bir token ile devam edin.
4001Token geçersiz, süresi dolmuş ya da zaten kullanılmış.
4004Oturum bulunamadı ya da zaten bitti.
4008Protokol ihlali: tek uzunluklu ya da aşırı büyük bir ses karesi.
4010Aynı oturuma yapılan daha yeni bir bağlantıyla değiştirildi.

balance_exhausted ya da idle_timeout gibi bir nedenle biten canlı oturum hata sayılmaz: bir bitiş nedeniyle birlikte session.ended gönderir ve kaydedilir. Bkz. Bitiş nedenleri.

İşlem başladıktan sonra oluşan hatalar

API isteği kabul etmiş olsa da transkripsiyon daha sonra başarısız olabilir. status değeri failed olduğunda nesnede error: { "code", "message" } bulunur. Durumu sorgularken veya transcription.failed webhook bildirimi aldığınızda error alanını kontrol edin. Bir çeviri başarısız olursa transcription.translation.failed webhook’u gönderilir; transkript bu yüzden asla başarısız olmaz.

error.codeNe oldu?Ne yapmalısınız?
media_unavailableVideo bulunamadı veya artık erişilemiyor.Aynı bağlantıyla tekrar denemeyin; URL'yi kontrol edin.
media_privateVideo gizli.Aynı videoyu tekrar göndermeyin. Herkese açık bir gönderi kullanın; YouTube'da liste dışı videolar da çalışır.
login_requiredPlatform videoyu izlemek için giriş yapılmasını istiyor.Kalıcı bir hatadır; tekrar denemeyiz.
no_audioVideoda ses kanalı yok.Kalıcı bir hatadır; tekrar denemeyiz.
age_restrictedVideoda yaş kısıtlaması var.Aynı bağlantıyı tekrar göndermek yerine dosyayı yükleyin.
live_streamYayın devam ediyor veya henüz başlamamış.Yayın sona erdikten sonra deneyin.
no_captionssource için captions seçilmiş, ancak kullanılabilir altyazı bulunamamış.source: "auto" veya "stt" ile gönderin.
media_too_longKayıt, STT için geçerli 5 saat sınırını aşıyor.Aynı kaydı tekrar göndermeyin; daha kısa parçalara bölün.
unsupported_mediaDosyayı okuyamadık veya dosyada ses kanalı yok.Desteklenen bir dosya hazırlayıp gönderin.
no_speechKonuşma algılanmadı.Tekrar denemeyin.
unsupported_languageKayıttaki dili desteklemiyoruz.Aynı ayarla tekrar denemeyin. language için desteklenen bir kod veya "auto" seçin.
insufficient_minutesÜcret hesaplanmadan önce dakika bakiyeniz tükendi ve otomatik yükleme açık olsa bile yeni dakika ekleyemedi.Ek dakika yükledikten sonra deneyin.
fetch_failedBirkaç kez denememize rağmen kaydı indiremedik.Daha sonra tekrar deneyebilirsiniz.
transcription_failedBirkaç kez denememize rağmen STT tamamlanamadı.Daha sonra tekrar deneyebilirsiniz.

Transkripsiyon başarısız olursa veya iptal edilirse ücret ödemezsiniz. Daha önce dakika düşülmüşse hesabınıza geri ekleriz.

Son güncelleme 5 Kasım 2026