"पर्याप्त टोकन नहीं" त्रुटि: इसका क्या अर्थ है और इसे कैसे ठीक करें
खाली बैलेंस, रेट लिमिट, गलत कुंजी, बहुत लंबा प्रॉम्प्ट या कटा हुआ उत्तर: अपनी API त्रुटि को पाँच कारणों में से एक से मिलाएँ, त्वरित जाँच चलाएँ, समाधान लागू करें।

इस पृष्ठ पर
"पर्याप्त टोकन नहीं" एक ही त्रुटि नहीं है। लोग इस वाक्यांश का इस्तेमाल पाँच अलग-अलग समस्याओं के लिए करते हैं: बैलेंस खाली है, अनुरोध बहुत तेज़ी से आ रहे हैं, कुंजी गलत है, प्रॉम्प्ट मॉडल के कॉन्टेक्स्ट विंडो में फ़िट नहीं होता, या उत्तर आउटपुट सीमा पर पहुँचकर वाक्य के बीच में रुक गया। हर एक का अपना समाधान है, और इन्हें अलग पहचानने का सबसे तेज़ तरीका संदेश का शब्दों का चयन नहीं, बल्कि HTTP स्टेटस और एरर बॉडी है।
तालिका में अपना लक्षण खोजें, जाँच चलाएँ, समाधान लागू करें।
तालिका को दाईं ओर स्क्रॉल करें →
| आपको क्या दिखता है | संभावित कारण | जाँच | समाधान |
|---|---|---|---|
| अनुरोध अस्वीकृत; संदेश में बैलेंस, बिलिंग या क्रेडिट का ज़िक्र | बैलेंस खाली है | अपने खाते में जाकर बैलेंस देखें | बैलेंस टॉप अप करें, फिर से प्रयास करें |
| काम करता है, फिर झुंड में विफल होता है, रुकने के बाद ठीक हो जाता है | रेट लिमिट: एक साथ या प्रति मिनट बहुत अधिक अनुरोध | क्या एक मिनट रुकने के बाद वही अनुरोध पास होता है? क्या आप समानांतर में अनुरोध भेजते हैं? | गति धीमी करें, बढ़ती देरी के साथ फिर से प्रयास करें |
| हर अनुरोध एक साथ विफल, एक पंक्ति के प्रॉम्प्ट पर भी | गलत, समाप्त या गलत टाइप की कुंजी, या गलत बेस URL | अपने कोड में कुंजी की तुलना अपने खाते की कुंजी से करें; URL जाँचें | नई कुंजी पेस्ट करें, उसे सोर्स कोड से बाहर रखें |
| छोटे प्रॉम्प्ट काम करते हैं, लंबे विफल होते हैं | प्रॉम्प्ट और इतिहास मिलकर कॉन्टेक्स्ट विंडो से बड़े हैं | आप जो कुछ भी भेजते हैं उसका आकार अनुमानित करें | इतिहास छोटा करें या सारांश बनाएँ, दस्तावेज़ विभाजित करें, या बड़ी विंडो वाला मॉडल चुनें |
| कोई त्रुटि नहीं, लेकिन उत्तर वाक्य के बीच में समाप्त | उत्तर आउटपुट सीमा पर पहुँच गया | finish_reason है "length" |
max_tokens को मॉडल की सीमा तक बढ़ाएँ, छोटा प्रारूप माँगें, या जारी रखने को कहें |
"टोकन" के तीन अर्थ हो सकते हैं#
त्रुटि संदेश में यह शब्द तीन अलग-अलग मात्राओं की ओर इशारा करता है।
- बैलेंस। टोकन वह है जिसका आप भुगतान करते हैं, इसलिए "टोकन खत्म" का अर्थ अक्सर "पैसा खत्म" होता है। प्रीपेड सेवा में यह बैलेंस है।
- प्रति मिनट सीमा। सीमाएँ अनुरोधों में या प्रति मिनट टोकन में गिनी जा सकती हैं। एक पर पहुँचें तो समाधान है रुकना और एक बार में कम भेजना।
- विंडो आकार। कॉन्टेक्स्ट विंडो यह है कि मॉडल एक अनुरोध में कितने टोकन पढ़ सकता है, आपका प्रॉम्प्ट और उसका उत्तर मिलाकर।
और एक बात जिसका इसका अर्थ कभी नहीं होता: API कुंजी टोकन का भंडार नहीं है। कुंजी आपके खाते की पहचान है। जो खत्म होता है वह उसके पीछे का बैलेंस है, या उससे जुड़ी कोई सीमा। यदि आप इस इकाई में नए हैं, तो What is a token in AI? से शुरू करें।
1. बैलेंस खाली है#
DeepSeek का API दस्तावेज़ HTTP 402 Insufficient Balance को "You have run out of balance" बताता है। Claude का API बिलिंग और भुगतान समस्याओं के लिए 402 billing_error का उपयोग करता है। अलग नाम, वही स्थिति: पैसा खत्म।
CheapTokens सिद्धांत रूप में उसी तरह काम करता है: प्रीपेड बैलेंस, पे ऐज़ यू गो, सभी मॉडलों के लिए एक बैलेंस। इसलिए जब कुछ टूटे, तो पहले बैलेंस देखें। यह दस सेकंड की जाँच है और सबसे आम कारण को बाहर कर देती है।
2. आप रेट लिमिट पर पहुँच गए#
DeepSeek HTTP 429 Rate Limit Reached को बहुत तेज़ी से आते अनुरोध, या कॉन्करेंसी या QPS सीमा पार होने के रूप में दस्तावेज़ित करता है। समाधान है उन्हें गति देना: कम समानांतर अनुरोध, और एंडपॉइंट पर लगातार प्रहार करने के बजाय बढ़ती देरी (1 s, 2 s, 4 s) के साथ फिर से प्रयास।
एक जाल। Claude का API 429 rate_limit_error तब भी लौटाता है जब आप अपने टियर की मासिक खर्च सीमा पर पहुँचते हैं, और उस प्रतिक्रिया में retry-after हेडर नहीं होता। इसलिए रुकने के बाद भी कभी न ठीक होने वाला 429 पैसे के बारे में हो सकता है, गति के बारे में नहीं। यदि रुकने से मदद नहीं मिलती, तो कारण 1 पर वापस जाएँ।
3. कुंजी गलत है#
HTTP 401 दोनों दस्तावेज़ों में कुंजी की समस्या है: DeepSeek इसे गलत API कुंजी के रूप में सूचीबद्ध करता है, Claude authentication_ के रूप में। सामान्य कारण हैं कुंजी के साथ कॉपी हुआ अतिरिक्त स्पेस या न्यूलाइन, हटाई या फिर से जनरेट की गई कुंजी, और गलत पते पर भेजी गई कुंजी। एक सेवा की कुंजी दूसरी सेवा के URL पर काम नहीं करती। CheapTokens के लिए बेस URL है https:/।
कनेक्ट करते समय आने वाली अन्य त्रुटियों के लिए, देखें Common connection errors and how to fix them।
4. प्रॉम्प्ट कॉन्टेक्स्ट विंडो में फ़िट नहीं होता#
कॉन्टेक्स्ट विंडो वह सब कुछ गिनती है जो मॉडल एक अनुरोध में पढ़ता है: सिस्टम प्रॉम्प्ट, पूरा बातचीत इतिहास, आपका नया संदेश, और उत्तर के लिए जगह। CheapTokens पर, हमारे कैटलॉग में मॉडलों की विंडो हैं:
तालिका को दाईं ओर स्क्रॉल करें →
| मॉडल | कॉन्टेक्स्ट विंडो | प्रति उत्तर अधिकतम आउटपुट |
|---|---|---|
| DeepSeek-V4-Flash | 380K | 32,768 टोकन |
| GLM-5.3-Flash | 390K | 8,192 टोकन |
| MiniMax-M2.7 | 200K | 8,192 टोकन |
चैट की अपनी कोई स्मृति नहीं होती। क्लाइंट हर अनुरोध के साथ पूरा इतिहास फिर से भेजता है, इसलिए हर अनुरोध पिछले से बड़ा होता है। वृद्धि दिखाने के लिए एक काल्पनिक चैट (गोल संख्याएँ, केवल उदाहरण के लिए): 1,000 टोकन का सिस्टम प्रॉम्प्ट, और हर टर्न लगभग 500 टोकन प्रश्न और 1,500 टोकन उत्तर जोड़ता है, कुल 2,000।
1,000 + 30 × 2,000 = 61,000 टोकन
यह 30 टर्न के बाद इतिहास का आकार है। उनमें से हर टोकन अगले अनुरोध पर फिर से इनपुट के रूप में गिना जाता है। 31वाँ अनुरोध वह 61,000-टोकन इतिहास और नया 500-टोकन प्रश्न ले जाता है, इसलिए उसका इनपुट 61,500 टोकन है। MiniMax-M2.7 पर 1,500-टोकन उत्तर के साथ इसकी लागत $0.0033 है। यहाँ उसी अनुरोध के लिए तीनों मॉडल हैं, तुलना के लिए OpenRouter मूल्य के साथ:
| मॉडल | इनपुट $/1M | आउटपुट $/1M | लागत | 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 |
कुल 61,500 इनपुट और 1,500 आउटपुट टोकन। प्रति 1M टोकन की कीमतें वर्तमान हैं और हमारे टैरिफ के साथ बदलती रहती हैं; OpenRouter कॉलम समान कार्यभार के लिए संदर्भ कीमतें दिखाता है।
वही चैट सबसे छोटी विंडो को लगभग सौ टर्न में भर देती है:
(200,000 − 1,000) / 2,000 = 99.5
जब यह ओवरफ़्लो होता है, तो प्रदाता अनुरोध अस्वीकार कर देता है। स्टेटस कोड प्रदाता के अनुसार बदलता है, इसलिए एरर बॉडी पढ़ें। उदाहरण के लिए, Claude का 413 request_ बाइट्स में अनुरोध आकार के बारे में है (Messages के लिए 32 MB), जो टोकन विंडो से अलग सीमा है।
क्या करें:
- सबसे पुराने टर्न हटा दें, या उन्हें छोटे सारांश से बदल दें।
- जब कार्य को एक अध्याय चाहिए तो पूरा दस्तावेज़ पेस्ट न करें।
- यदि आपको वास्तव में पूरा टेक्स्ट चाहिए तो बड़ी विंडो वाले मॉडल पर जाएँ।
5. उत्तर कट गया#
यहाँ कोई त्रुटि नहीं है, और यही इसे भ्रमित करने वाला बनाता है। मॉडल बस रुक गया क्योंकि वह max_tokens या मॉडल की अपनी आउटपुट सीमा पर पहुँच गया। Chat Completions प्रारूप में संकेत चॉइस पर finish_ है।
CheapTokens पर, DeepSeek-V4-Flash प्रति उत्तर 32,768 टोकन तक लौटा सकता है; GLM-5.3-Flash और MiniMax-M2.7 8,192 तक। यदि आपका max_tokens उससे कम है, तो उसे बढ़ाएँ। यदि आप पहले से सीमा पर हैं, तो काम विभाजित करें ("write part 1 of 3") या मॉडल से अंतिम वाक्य से जारी रखने को कहें।
MiniMax-M2.7 आउटपुट का मूल्य $0.15 प्रति 1M टोकन है, और यह आउटपुट पर OpenRouter से सस्ता है।
अलग-अलग नामों के तहत वही समस्या#
प्रदाता एक ही कारणों को अलग-अलग लेबल करते हैं। 20 अक्टूबर 2026 तक उनके दस्तावेज़ यह कहते हैं:
तालिका को दाईं ओर स्क्रॉल करें →
| समस्या | DeepSeek API | Claude API |
|---|---|---|
| बैलेंस खाली है | 402 Insufficient Balance |
402 billing_error |
| रेट लिमिट | 429 Rate Limit Reached |
429 rate_limit_error (टियर की मासिक खर्च सीमा भी) |
| गलत कुंजी | 401 | 401 authentication_ |
| अनुरोध बहुत बड़ा | अलग कोड के रूप में सूचीबद्ध नहीं | 413 request_ (बाइट्स, टोकन नहीं) |
| आपके द्वारा सेट खर्च सीमा | सूचीबद्ध नहीं | 400 invalid_ |
स्रोत: DeepSeek error codes, Claude API errors। किसी भी पृष्ठ पर प्रकाशन तिथि नहीं दिखती, इसलिए जाँच की तिथि हमारी है।
मुख्य बात: शब्दों से अनुमान न लगाएँ। त्रुटियाँ JSON के रूप में लौटती हैं जिसमें एक error ऑब्जेक्ट होता है जिसमें type और message होते हैं। स्टेटस और प्रकार पर मिलान करें, क्योंकि संदेश का टेक्स्ट बदलता है।
देखें कि वास्तव में क्या लौटता है#
यह स्निपेट विफल अनुरोध का स्टेटस और बॉडी और सफल अनुरोध का finish_reason प्रिंट करता है। यह एक नैदानिक रेखाचित्र है, परीक्षण लॉग नहीं: इसे अपनी कुंजी के साथ चलाएँ और जो मिले उसे पढ़ें।
# 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_tokensयदि जाँच बैलेंस की ओर इशारा करती है#
बैलेंस टॉप अप करें और अनुरोध फिर से भेजें। CheapTokens पर मूल्य प्रति मॉडल निश्चित हैं, कोई पीक आवर्स नहीं हैं, और एक बैलेंस हर मॉडल को कवर करता है, इसलिए आपको हर एक के लिए अलग टॉप-अप की ज़रूरत नहीं है। वर्तमान दरें यहाँ हैं:
| मॉडल | संदर्भ | इनपुट $/1M | आउटपुट $/1M | OpenRouter इनपुट | OpenRouter आउटपुट |
|---|---|---|---|---|---|
| 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 |
कीमतें USD प्रति 1M टोकन में हैं। OpenRouter के आंकड़े तुलना के लिए दिखाए गए हैं और बदल सकते हैं।
टॉप अप करने से पहले अपनी मात्रा को लागत तालिका में डालें। जब संख्याएँ सही लगें तो Top up your balance करें, और यदि आप पहले बड़े वर्कलोड का अनुमान लगाना चाहते हैं, तो देखें How to estimate the cost of an AI agent।



