WiozenAPI

Yapay zekâ API'si neden 429 hatası veriyor, nasıl düzeltilir?

Kısaca: 429, isteğin bir sınıra takıldığını söyler ama hangi sınır olduğunu hata mesajı söyler. Wiozen API'de beş neden var: bakiye bu isteğe yetmiyor (Quota exhausted), anahtarın harcama tavanı doldu, dakikadaki istek sayısı aşıldı, günlük sorgu sınırı doldu ya da servis o an yoğun. İlk ikisi beklemekle geçmez; son üçünde yanıttaki retry-after süresi kadar bekleyip yeniden denemek yeter.

Hangi 429'u aldığımı nasıl anlarım?

Durum kodu her durumda aynı, ayıran şey yanıt gövdesindeki error.message alanı. Araç bu mesajı gizliyorsa isteği bir kez curl ile tekrarla ya da aracın günlük kaydına bak.

Hata mesajıNedenNe yapmalı
Quota exhaustedBakiye bu isteğin tahmini maliyetine yetmiyorBakiye yükle ya da max_tokens'u küçült
API key spend limit reachedAnahtarın harcama tavanı dolduAnahtarlar sayfasında tavanı yükselt ya da kaldır
Rate limit exceeded: 120 requests per minuteSon 60 saniyede çok fazla istekretry-after (30 sn) kadar bekle
Günlük sorgu limitinize ulaştınız (…)Hesabın günlük sorgu sınırı dolduGün dönümünü bekle
Servis şu an yoğun; …O an model kapasitesi doluretry-after (2 sn) kadar bekle

429 alan istek ücretlenmez. Bakiyenden bir tutar ayrıldıysa geri bırakılır, yani yeniden denemenin de bir maliyeti olmaz.

Bakiyem var ama neden "Quota exhausted" alıyorum?

En çok şaşırtan durum bu. Her istek başlarken tahmini maliyeti bakiyenden ayrılır, yanıt bitince gerçek tutara düzeltilir ve fark geri döner. Tahmin iki parçadan oluşur: gönderdiğin gövdenin büyüklüğünden hesaplanan girdi ve istediğin en fazla çıktı (max_tokens). max_tokens vermezsen 4.096 token sayılır.

Bakiye bu ikisinin toplam fiyatını karşılamıyorsa istek hiç başlamaz. Örneğin bakiyende birkaç sent kalmışken pahalı bir modele uzun bir sohbet geçmişi ve büyük bir max_tokens gönderirsen 429 alırsın, aynı istek daha ucuz bir modelle ya da daha küçük max_tokens ile geçer.

Kalıcı çözüm bakiye yüklemek. API maliyeti nasıl hesaplanır yazısında bir isteğin ne tuttuğunu önceden hesaplamanın yolu var.

Dakikadaki istek sınırı nasıl sayılır?

Sınır anahtar başına değil hesap başına. Aynı hesaptaki bütün anahtarların son 60 saniyedeki istekleri birlikte sayılır; üç ayrı araçta üç anahtar kullanman sınırı üçe katlamaz. Varsayılan ayar dakikada 120 istek ve geçerli sayı her zaman hata mesajında yazar.

Bu sınır sohbet uçlarında (/v1/chat/completions, /v1/messages, /v1/responses) denetlenir. Yanıtla birlikte retry-after: 30 başlığı gelir. Toplu iş çalıştırıyorsan istekleri sıraya koyup dakikaya yay; aynı anda yüzlerce paralel istek göndermek sınıra ilk saniyelerde takılır.

Günlük sorgu sınırı ne zaman sıfırlanır?

Günlük sorgu sınırı her hesapta yok; yalnız hesabına bu sınırı taşıyan bir paket tanımlıysa uygulanır. Varsa mesaj kaç sorgu yaptığını ve sınırı birlikte gösterir. Sayım UTC gün başında, yani Türkiye saatiyle 03:00'te sıfırlanır.

Bu sınır sohbetin yanında görsel üretimi, embeddings, seslendirme, web arama ve sayfa okuma uçlarında da geçerli. Başarısız biten istekler sayıma girmez.

"Servis şu an yoğun" mesajı ne demek?

Aynı anda işlenebilecek model isteği sayısı dolduğunda istek önce sıraya girer. Sırada 60 saniye boyunca yer açılmazsa 429 ve retry-after: 2 döner. Bu senin hesabınla ilgili değil, o anki toplam yükle ilgili; birkaç saniye sonra aynı istek normal geçer.

Koduma yeniden deneme nasıl eklerim?

Kural basit: retry-after başlığı geldiyse o kadar bekle, gelmediyse bekleme süresini her denemede ikiye katla. Bakiye ve anahtar tavanı mesajlarında yeniden deneme, çünkü bunlar sen bir şey değiştirene kadar aynı yanıtı verir.

retry.py
import time
import requests

URL = "https://api.wiozen.com/v1/chat/completions"
HEADERS = {"Authorization": "Bearer sk-gw-..."}
# Beklemekle düzelmeyen 429'lar: bakiye ya da anahtar tavanı
FATAL = ("Quota exhausted", "API key spend limit reached")

def ask(body, tries=5):
    for attempt in range(tries):
        r = requests.post(URL, json=body, headers=HEADERS, timeout=600)
        if r.status_code != 429:
            return r.json()
        message = r.json()["error"]["message"]
        if any(m in message for m in FATAL):
            raise RuntimeError(message)
        wait = int(r.headers.get("retry-after", 2 ** attempt))
        time.sleep(wait)
    raise RuntimeError("429 sürüyor")

OpenAI ve Anthropic SDK'ları 429'da kendileri de birkaç kez yeniden dener. SDK kullanıyorsan üstüne ikinci bir döngü kurma, yalnız bakiye ve tavan mesajlarını yakalayıp kullanıcıya göster.

Sık sorulan sorular

429 alan istek için ücret öder miyim?

Hayır. İstek modele hiç gitmeden reddedilir; bakiyenden bir şey düşmez.

Dakikalık sınırı yeni anahtar açarak aşabilir miyim?

Hayır. Sınır hesap başınadır, hesaptaki bütün anahtarların istekleri birlikte sayılır.

Bakiyem sıfır değil, yine de neden 429 alıyorum?

İstek başlarken tahmini maliyeti ayrılır. Kalan bakiye bu tahmine yetmiyorsa istek başlamaz. max_tokens'u küçültmek ya da daha ucuz bir model seçmek tahmini düşürür.

Günlük sınır Türkiye saatiyle kaçta sıfırlanır?

03:00'te. Sayım UTC gün başına göre yapılır. Hesabında günlük sınır tanımlı değilse bu 429'u hiç görmezsin.

Hangi 429'larda beklemek işe yarar?

Dakikalık sınır, günlük sınır ve yoğunluk mesajında. Bakiye (Quota exhausted) ve anahtar tavanı mesajlarında bakiye yüklemen ya da tavanı değiştirmen gerekir.

Bakiyeni ve anahtarlarının tavanlarını görmek için Anahtarlar sayfasına gir. Hata tablosunun tamamı belgelerde.

Hesabını aç

Diğer rehberler: Türkiye'den kredi kartı olmadan yapay zekâ API'si nasıl kullanılır? · OpenAI uyumlu bir API mevcut bir araca nasıl bağlanır? · Yapay zekâ API maliyeti nasıl hesaplanır? · Yapay zekâ API anahtarım sızdıysa ne yapmalıyım? · Yapay zekâ API'siyle görsel nasıl üretilir ve görsel başı maliyeti ne kadar? · Uzun yanıt bekleyen API isteği neden zaman aşımına düşer: akışlı mı, akışsız mı? · Anthropic Messages API mı, OpenAI Chat Completions mı: hangisini kullanmalıyım? · Bağlam penceresi (context window) nedir, 1 milyon token ne işe yarar? · Hangi yapay zekâ modelini seçmeliyim: fiyat, bağlam ve kaliteye göre karar · Düşünen (reasoning) model neden boş cevap döner, düşünme tokenları neden ücretlenir? · API bakiyem neden beklediğimden hızlı bitiyor? Harcamayı istek istek takip etmek · Bir web sayfası yapay zekâya vermek için Markdown'a nasıl çevrilir? · WordPress'te yapay zekâyla otomatik makale nasıl yazdırılır? · Blog için RSS ve Google Trends'ten konu nasıl bulunur? · Yapay zekâyla yazılan içerik Google'da ve yapay zekâ yanıtlarında görünür mü? · WordPress'te yapay zekâyla yazılan makalelere iç bağlantı nasıl ekletilir? · WordPress'te her yazıya birbirine benzemeyen öne çıkan görsel yapay zekâyla nasıl ürettirilir? · Yapay zekâya blog yazısı yazdırırken içerik tarifi (brief) nasıl yazılır? · Yemek tarifi sitesine yapay zekâyla tarif yazdırırken nelere dikkat etmeli? · WordPress eklentisini yapay zekâ API hesabına bağlarken çıkan hatalar nasıl çözülür? · WordPress'te yapay zekâ yazı botu neden yarıda kalıyor? "Tur takıldı" uyarısı ve LiteSpeed · WordPress'te otomatik yazılar neden geç çıkıyor? WP-Cron ve gerçek sunucu cron'u · Yapay zekâ yazı botuyla İngilizce ya da başka dilde blog yazısı nasıl yazdırılır? · "İçerik Botu yazı üretemiyor" uyarısı ne demek? Bot günlüğündeki satırları okumak