Yeni başlayanlar için AIKılavuz
"Yeterli token yok" hatası: ne anlama gelir ve nasıl düzeltilir
Boş bakiye, hız sınırı, kötü anahtar, çok uzun istem veya kesilen yanıt: API hatanızı beş nedenden birine eşleştirin, hızlı bir kontrol yapın, düzeltmeyi uygulayın.

Bu sayfada
"Yeterli token yok" tek bir hata değildir. İnsanlar bu ifadeyi beş farklı sorun için kullanır: bakiye boştur, istekler çok hızlı geliyordur, anahtar yanlıştır, istem modelin bağlam penceresine sığmıyordur veya yanıt çıktı sınırına takılıp cümle ortasında durmuştur. Her birinin kendi çözümü vardır ve bunları ayırmanın en hızlı yolu mesajın ifadesi değil, HTTP durum kodu ve hata gövdesidir.
Belirtinizi tabloda bulun, kontrolü çalıştırın, düzeltmeyi uygulayın.
Tabloyu sağa kaydırın →
| Gördüğünüz | Muhtemel neden | Kontrol | Düzeltme |
|---|---|---|---|
| İstek reddedildi; mesaj bakiye, faturalandırma veya krediden bahsediyor | Bakiye boş | Hesabınızı açın ve bakiyeye bakın | Bakiyeyi yükleyin, tekrar deneyin |
| Çalışıyor, sonra toplu halde başarısız oluyor, aradan sonra düzeliyor | Hız sınırı: aynı anda veya dakika başına çok fazla istek | Aynı istek bir dakika bekledikten sonra geçiyor mu? İstekleri paralel mi gönderiyorsunuz? | Yavaşlayın, artan gecikmeyle tekrar deneyin |
| Her istek anında başarısız oluyor, tek satırlık istem bile | Yanlış, süresi dolmuş veya hatalı yazılmış anahtar ya da yanlış temel URL | Kodunuzdaki anahtarı hesabınızdakiyle karşılaştırın; URL'yi kontrol edin | Yeni bir anahtar yapıştırın, kaynak kodun dışında tutun |
| Kısa istemler çalışıyor, uzunlar başarısız | İstem artı geçmiş, bağlam penceresinden büyük | Gönderdiğiniz her şeyin boyutunu tahmin edin | Geçmişi kısaltın veya özetleyin, belgeyi bölün ya da daha büyük pencereli bir model seçin |
| Hata yok ama yanıt cümle ortasında bitiyor | Yanıt çıktı sınırına takıldı | finish_reason değeri "length" |
max_tokens değerini modelin sınırına kadar artırın, daha kısa bir format isteyin veya devam etmesini söyleyin |
"Token" üç anlama gelebilir#
Hata mesajındaki kelime üç farklı niceliğe işaret eder.
- Bakiye. Tokenlar ödediğiniz şeydir, yani "token bitti" genellikle "para bitti" demektir. Ön ödemeli bir hizmette bu bakiyedir.
- Dakika başına sınır. Sınırlar istek veya dakika başına token olarak sayılabilir. Birine takılırsanız çözüm beklemek ve aynı anda daha az göndermektir.
- Pencere boyutu. Bağlam penceresi, modelin tek bir istekte okuyabileceği token sayısıdır; isteminiz ve yanıtı birlikte.
Ve asla anlamına gelmeyen bir şey: API anahtarı bir token stoğu değildir. Anahtar hesabınızı tanımlar. Tükenen şey arkasındaki bakiyedir veya ona bağlı bir sınırdır. Birim hakkında yeniyseniz, What is a token in AI? ile başlayın.
1. Bakiye boş#
DeepSeek'in API belgeleri HTTP 402 Insufficient Balance hatasını "Bakiyeniz tükendi" olarak tanımlar. Claude'un API'si faturalandırma ve ödeme sorunları için 402 billing_error kullanır. Farklı isimler, aynı durum: para yok.
CheapTokens ilke olarak aynı şekilde çalışır: ön ödemeli bakiye, kullandıkça öde, tüm modeller için tek bakiye. Yani bir şey bozulduğunda önce bakiyeye bakın. On saniyelik bir kontrol ve en yaygın nedeni eler.
2. Hız sınırına takıldınız#
DeepSeek, HTTP 429 Rate Limit Reached hatasını isteklerin çok hızlı gelmesi veya eşzamanlılık ya da QPS sınırının aşılması olarak belgeler. Çözüm onları tempolamaktır: daha az paralel istek ve uç noktayı dövmek yerine artan bir yeniden deneme gecikmesi (1 sn, 2 sn, 4 sn).
Bir tuzak. Claude'un API'si ayrıca katmanınızın aylık harcama üst sınırına ulaştığınızda 429 rate_limit_error döndürür ve bu yanıtta retry-after başlığı yoktur. Yani bekledikten sonra hiç geçmeyen bir 429 hızla değil parayla ilgili olabilir. Beklemek işe yaramıyorsa 1. nedene geri dönün.
3. Anahtar yanlış#
HTTP 401 her iki belgede de anahtar sorunudur: DeepSeek bunu yanlış API anahtarı olarak listeler, Claude ise authentication_ olarak. Olağan nedenler anahtarla birlikte kopyalanan fazladan bir boşluk veya satır sonu, silinmiş ya da yeniden oluşturulmuş bir anahtar ve yanlış adrese gönderilen bir anahtardır. Bir hizmetin anahtarı başka bir hizmetin URL'sinde çalışmaz. CheapTokens için temel URL https:/ adresidir.
Bağlanırken karşılaşabileceğiniz diğer hatalar için Common connection errors and how to fix them sayfasına bakın.
4. İstem bağlam penceresine sığmıyor#
Bağlam penceresi modelin tek bir istekte okuduğu her şeyi sayar: sistem istemi, tüm konuşma geçmişi, yeni mesajınız ve yanıt için yer. CheapTokens'te kataloğumuzdaki modellerin pencereleri şöyledir:
Tabloyu sağa kaydırın →
| Model | Bağlam penceresi | Yanıt başına maksimum çıktı |
|---|---|---|
| DeepSeek-V4-Flash | 380K | 32.768 token |
| GLM-5.3-Flash | 390K | 8.192 token |
| MiniMax-M2.7 | 200K | 8.192 token |
Bir sohbetin kendi hafızası yoktur. İstemci her istekte tüm geçmişi yeniden gönderir, yani her istek bir öncekinden daha büyüktür. Büyümeyi göstermek için uydurma bir sohbet (yuvarlak sayılar, örnek amaçlı): 1.000 tokenlık bir sistem istemi ve her tur yaklaşık 500 token soru ve 1.500 token yanıt ekler, toplam 2.000.
1.000 + 30 × 2.000 = 61.000 token
Bu, 30 tur sonra geçmişin boyutudur. Bu tokenların her biri bir sonraki istekte tekrar girdi olarak sayılır. 31. istek bu 61.000 tokenlık geçmişi artı yeni 500 tokenlık soruyu taşır, yani girdisi 61.500 tokendır. MiniMax-M2.7 ile 1.500 tokenlık bir yanıtla maliyeti $0.0033 olur. Aynı istek için üç modelin tamamı ve karşılaştırma için OpenRouter fiyatı:
| Model | Giriş $/1M | Çıkış $/1M | Maliyet | OpenRouter |
|---|---|---|---|---|
| GLM-5.3-Flash | $0.02 | $0.04 | $0.0013 | $0.0027 |
| DeepSeek-V4-Flash | $0.015 | $0.10 | $0.0011 | $0.0032 |
| MiniMax-M2.7 | $0.05 | $0.15 | $0.0033 | $0.0203 |
Toplamda 61.500 giriş ve 1.500 çıkış token'ı. 1M token başına fiyatlar günceldir ve tarifelerimizle birlikte değişir; OpenRouter sütunu aynı iş yükü için referans fiyatları gösterir.
Aynı sohbet en küçük pencereyi yaklaşık yüz turda doldurur:
(200.000 − 1.000) / 2.000 = 99,5
Taştığında sağlayıcı isteği reddeder. Durum kodu sağlayıcıya göre değişir, bu yüzden hata gövdesini okuyun. Örneğin Claude'un 413 request_ hatası isteğin bayt cinsinden boyutuyla ilgilidir (Messages için 32 MB), token penceresinden farklı bir sınırdır.
Ne yapmalı:
- En eski turları atın veya kısa bir özetle değiştirin.
- Görev bir bölüm gerektiriyorsa tüm belgeyi yapıştırmayın.
- Tam metne gerçekten ihtiyacınız varsa daha büyük pencereli bir modele geçin.
5. Yanıt kesildi#
Burada hata yok ve bu işi kafa karıştırıcı yapan da bu. Model max_tokens değerine veya modelin kendi çıktı sınırına ulaştığı için durdu. Chat Completions formatında işaret, choice üzerindeki finish_ değeridir.
CheapTokens'te DeepSeek-V4-Flash yanıt başına 32.768 tokene kadar döndürebilir; GLM-5.3-Flash ve MiniMax-M2.7 8.192'ye kadar. max_tokens değeriniz bundan düşükse artırın. Zaten sınırdaysanız işi bölün ("3 bölümün 1. bölümünü yaz") veya modelden son cümleden devam etmesini isteyin.
MiniMax-M2.7 çıktısı 1M token başına $0.15 olarak fiyatlandırılır ve bu, çıktıda OpenRouter'dan daha ucuzdur.
Aynı sorun farklı isimlerle#
Sağlayıcılar aynı nedenleri farklı etiketler. 20 Ekim 2026 itibarıyla belgelerinin söylediği şudur:
Tabloyu sağa kaydırın →
| Sorun | DeepSeek API | Claude API |
|---|---|---|
| Bakiye boş | 402 Insufficient Balance |
402 billing_error |
| Hız sınırı | 429 Rate Limit Reached |
429 rate_limit_error (ayrıca katmanın aylık harcama üst sınırı) |
| Kötü anahtar | 401 | 401 authentication_ |
| İstek çok büyük | ayrı bir kod olarak listelenmemiş | 413 request_ (token değil bayt) |
| Kendi belirlediğiniz harcama sınırı | listelenmemiş | 400 invalid_ |
Kaynaklar: DeepSeek error codes, Claude API errors. Hiçbir sayfa yayın tarihi göstermiyor, yani kontrol tarihi bize ait.
Çıkarılacak ders: ifadeden tahmin yürütmeyin. Hatalar, içinde type ve message barındıran bir error nesnesi olan JSON olarak döner. Durum ve türe göre eşleştirin, çünkü mesaj metni değişir.
Gerçekte ne döndüğünü görün#
Bu kod parçası başarısız bir isteğin durumunu ve gövdesini, başarılı bir isteğin ise finish_reason değerini yazdırır. Bu bir tanılama taslağıdır, test günlüğü değil: kendi anahtarınızla çalıştırın ve ne aldığınızı okuyun.
# Placeholders: YOUR_API_KEY, MODEL_ID (a model id you have access to)
from openai import OpenAI, APIStatusError
client = OpenAI(api_key="YOUR_API_KEY", base_url="https://api.cheaptokens.dev/v1")
try:
r = client.chat.completions.create(
model="MODEL_ID",
messages=[{"role": "user", "content": "Write a long checklist."}],
max_tokens=1000,
)
except APIStatusError as e:
# Read the status and the body, not the wording of the message
print("status:", e.status_code)
print("body:", e.body)
else:
print("finish_reason:", r.choices[0].finish_reason) # "length" = cut off
print("usage:", r.usage) # prompt_tokens and completion_tokensKontrol bakiyeye işaret ediyorsa#
Bakiyeyi yükleyin ve isteği tekrar gönderin. CheapTokens'te fiyatlar model başına sabittir, yoğun saatler yoktur ve tek bakiye her modeli kapsar, yani her biri için ayrı yükleme yapmanız gerekmez. Güncel ücretler burada:
| Model | Bağlam | Giriş $/1M | Çıkış $/1M | OpenRouter giriş | OpenRouter çıkış |
|---|---|---|---|---|---|
| GLM-5.3-Flash reasoning | 390K | $0.02 | $0.04 | $0.0413 | $0.0758 |
| DeepSeek-V4-Flash | 380K | $0.015 | $0.10 | $0.0475 | $0.1568 |
| MiniMax-M2.7 | 180K | $0.05 | $0.15 | $0.30 | $1.20 |
Fiyatlar 1M token başına USD cinsindendir. OpenRouter rakamları karşılaştırma amaçlı gösterilmiştir ve değişebilir.
Yükleme yapmadan önce kendi hacminizi maliyet tablosuna yerleştirin. Sayılar doğru göründüğünde Top up your balance ve daha büyük bir iş yükünü önce tahmin etmek istiyorsanız How to estimate the cost of an AI agent sayfasına bakın.



