अगर Claude API में नीचे दी गई त्रुटि आती है, तो कारण यह है कि आप Claude 4.7 या उसके बाद के मॉडल को temperature (या top_p या top_k) का डिफ़ॉल्ट से अलग मान भेज रहे हैं। समाधान यह है कि इन तीनों पैरामीटर को अपने अनुरोध से हटा दें। अक्टूबर 2026 में जारी हुए नए API संस्करण 2026-10-21 में इनमें से कोई भी पैरामीटर भेजने पर, मान चाहे जो हो, हर मॉडल के लिए 400 त्रुटि आती है।

400 invalid_request_error
`temperature` is deprecated for this model.

Claude 4.7 या उसके बाद के मॉडल को डिफ़ॉल्ट से अलग मान भेजने पर मिलने वाले जवाब का उदाहरण (उपयोगकर्ताओं की रिपोर्ट से)। नए API संस्करण में लौटने वाला त्रुटि संदेश यही है या नहीं, यह आधिकारिक दस्तावेज़ में नहीं लिखा है।

समाधान: तीन पैरामीटर हटाएँ

400 त्रुटि आती है

client.messages.create(
    model="claude-sonnet-5-5",
    max_tokens=1024,
    temperature=0.2,
    messages=[...],
)

सुधार के बाद

client.messages.create(
    model="claude-sonnet-5-5",
    max_tokens=1024,
    messages=[...],
)

जवाब का फ़ॉर्मैट या लहजा बदलना हो, तो पैरामीटर की जगह प्रॉम्प्ट में निर्देश दें (Anthropic की माइग्रेशन गाइड की सिफ़ारिश)।

यह लेख Anthropic के आधिकारिक दस्तावेज़ (26 अक्टूबर 2026 को जाँचे गए) पर आधारित है। इसमें बताया गया है कि यह त्रुटि किन दो स्थितियों में आती है, SDK अपडेट करने पर क्या होता है, नए API संस्करण के साथ कौन से बदलाव एक साथ करने हैं, और मिलती-जुलती त्रुटि anthropic-version: header is required को कैसे ठीक करें। API संस्करणों को रंग से पहचाना जा सकता है: 2023-06-01 (पुराना संस्करण) और 2026-10-21 (नया संस्करण)।

1. त्रुटि आने की दो स्थितियाँ

Claude API, अनुरोध के हेडर anthropic-version से API संस्करण चुनता है। त्रुटि आएगी या नहीं, यह आप जो मॉडल उपयोग करते हैं और API संस्करण के संयोजन पर निर्भर करता है।

मॉडल2023-06-012026-10-21
Claude 4.7 या उसके बाद के मॉडलOpus 4.7 और उसके बाद जारी हुए मॉडल (उदाहरण: Opus 4.7, Opus 5, Opus 5.5, Sonnet 5.5, Haiku 5.5, Fable 5.1)डिफ़ॉल्ट से अलग मान भेजने पर 400डिफ़ॉल्ट मान भेजें या कुछ न भेजें, तो चलता हैभेजने पर 400डिफ़ॉल्ट मान पर भी 400
इससे पहले के मॉडलClaude Sonnet 4.6 आदिचलता हैमान घटाकर जवाबों में अंतर कम किया जा सकता हैभेजने पर 400डिफ़ॉल्ट मान पर भी 400

स्रोत: Anthropic, "Migrating to API version 2026-10-21" (Claude 4.7 या उसके बाद के मॉडल केवल डिफ़ॉल्ट मान स्वीकार करते हैं; Sonnet 4.6 आदि अन्य मान भी स्वीकार करते हैं; 2026-10-21 में हर मॉडल डिफ़ॉल्ट मान पर भी 400 देता है), और हर मॉडल की माइग्रेशन गाइड (Opus 5.5, Sonnet 5.5, Haiku 5.5, Fable 5.1। Fable 5.1 की गाइड के अनुसार इसमें Opus 5 जैसी ही सैंपलिंग सीमाएँ हैं)। 26 अक्टूबर 2026 को जाँचा गया।

तालिका में "400" लिखे खाने इन दो स्थितियों से मेल खाते हैं।

  1. स्थिति 1: आपने 2023-06-01 पर Claude 4.7 या उसके बाद के मॉडल को डिफ़ॉल्ट से अलग मान भेजा (तालिका की पहली पंक्ति, 2023-06-01 वाला कॉलम)
  2. स्थिति 2: आपने 2026-10-21 पर इन तीनों में से कोई भी पैरामीटर भेजा, मॉडल या मान चाहे जो हो (तालिका का दाहिना कॉलम)

शुरू में दी गई त्रुटि `temperature` is deprecated for this model. स्थिति 1 में दिखती है। यह उस API जवाब में है जो एक उपयोगकर्ता ने GitHub पर रिपोर्ट किया था (रिपोर्ट किया गया उदाहरण)। Anthropic के आधिकारिक दस्तावेज़ में यह त्रुटि संदेश नहीं दिया गया है। वहाँ केवल इतना लिखा है कि ऐसा अनुरोध 400 त्रुटि देता है।

संक्षेप में, दोनों स्थितियों में तीन पैरामीटर हटाने से समस्या ठीक हो जाती है। अगर आप पुराने मॉडल पर मान बदल रहे थे, तो ध्यान रखें कि इन्हें हटाने से जवाबों में होने वाला अंतर बदल जाएगा (दूसरा अध्याय देखें)।

2. समाधान, और हर बार एक जैसा जवाब पाने के लिए

  1. अनुरोध से तीनों पैरामीटर हटाएँtemperature, top_p और top_k को Messages API के अनुरोध से हटाएँ, और Message Batches के हर अनुरोध से भी। अगर कॉन्फ़िगरेशन फ़ाइल या रैपर फ़ंक्शन में इनके लिए डिफ़ॉल्ट मान डाला गया है, तो वहाँ से भी हटाएँ।
  2. हटाने के बाद क्या होता हैअगर तीनों नहीं भेजे जाते, तो अगला टोकन डिफ़ॉल्ट मानों (temperature के लिए 1.0) से चुना जाता है। top_p और top_k के डिफ़ॉल्ट मान संख्या में नहीं बताए गए हैं, इसलिए इन्हें न भेजना ही सबसे सुरक्षित है। पिछले API संस्करणों में तीनों न भेजने पर भी यही होता था। Claude 4.7 या उसके बाद के मॉडल शुरू से केवल डिफ़ॉल्ट मान स्वीकार करते हैं, इसलिए उनका व्यवहार नहीं बदलता।
  3. अगर हर बार एक जैसा जवाब चाहिएइसके लिए कोई विकल्प सेटिंग नहीं है। Anthropic की माइग्रेशन गाइड मॉडल के व्यवहार को प्रॉम्प्ट से तय करने की सिफ़ारिश करती है। वह यह भी लिखती है कि temperature = 0 करने पर भी पिछले मॉडलों में एक जैसे जवाब की गारंटी नहीं थी। अगर आपको केवल जवाब का फ़ॉर्मैट एक-सा रखना है, तो संरचित आउटपुट (Structured outputs) का उपयोग किया जा सकता है, जिसमें JSON का ढाँचा तय करके मॉडल से वैसा ही जवाब लिया जाता है।

अपवाद वह स्थिति है जहाँ आप Claude Sonnet 4.6 जैसे मॉडल पर थे, जो दूसरे मान स्वीकार करता है, और आपने जवाबों में अंतर कम करने के लिए मान घटाया था। नए API संस्करण में उसे हटाना ही पड़ेगा, और उसका असर खत्म हो जाएगा। Anthropic का सुझाव है कि उस अनुरोध को या तो 2023-06-01 पर ही रखें, या पैरामीटर भेजना बंद कर दें। 2023-06-01 पर रखने के लिए SDK को मौजूदा मेजर संस्करण पर रोकें (Python में 1.x), या अगर सीधे HTTP से कॉल करते हैं तो हेडर anthropic-version: 2023-06-01 ही रखें। नए SDK में हर अनुरोध के लिए पुराना API संस्करण चुनने का तरीका माइग्रेशन गाइड में नहीं लिखा है।

TypeScript और HTTP में समाधान

// TypeScript (@anthropic-ai/sdk): temperature हटाएँ
const msg = await client.messages.create({
  model: "claude-sonnet-5-5",
  max_tokens: 1024,
  messages: [{ role: "user", content: "Hello, Claude" }],
});
# HTTP (JSON का बॉडी): temperature, top_p और top_k वाली पंक्तियाँ न डालें
{
  "model": "claude-sonnet-5-5",
  "max_tokens": 1024,
  "messages": [{"role": "user", "content": "Hello, Claude"}]
}

3. अपने कोड में पैरामीटर कहाँ भेजे जा रहे हैं, यह खोजें

अगर पता नहीं है कि त्रुटि कहाँ से आ रही है, तो तीनों पैरामीटर के नाम से अपना कोड खोजें। भले ही आपने उसे खुद न लिखा हो, डिफ़ॉल्ट मान अक्सर कॉन्फ़िगरेशन फ़ाइलों, साझा फ़ंक्शनों या एनवायरनमेंट वेरिएबल में डाले जाते हैं।

# macOS, Linux, WSL: प्रोजेक्ट में खोजें (बड़े-छोटे अक्षर का फ़र्क नहीं)
grep -rniE "temperature|top_p|top_k" --exclude-dir={node_modules,.venv,venv,.git,dist} \
  --include="*.py" --include="*.ts" --include="*.js" --include="*.json" \
  --include="*.yaml" --include="*.yml" --include="*.toml" --include=".env*" .

# Windows (PowerShell)
Get-ChildItem -Recurse -Include *.py,*.ts,*.js,*.json,*.yaml,*.yml,*.toml,.env* |
  Where-Object { $_.FullName -notmatch "node_modules|\\.?venv|\\.git\\|\\dist\\" } |
  Select-String -Pattern "temperature|top_p|top_k"
जहाँ मिलाकैसे ठीक करें
API कॉल करने वाली पंक्तिआर्गुमेंट से तीनों हटाएँ
साझा फ़ंक्शन या रैपरजहाँ डिफ़ॉल्ट मान के रूप में डाला गया है, वहाँ से हटाएँ (यह भी जाँचें कि कॉल करने वाला कोड मान तो नहीं भेज रहा)
कॉन्फ़िगरेशन फ़ाइल या एनवायरनमेंट वेरिएबलप्रविष्टि हटाएँ, या जाँचें कि खाली मान होने पर वह अनुरोध में शामिल न हो
Message Batches के अनुरोधहर अनुरोध के params से भी हटाएँ (बैच का हर एक अनुरोध 400 देगा)
टोकन गिनने वाले अनुरोध/v1/messages/count_tokens को भेजे जाने वाले बॉडी से भी हटाएँ
किसी तीसरी पार्टी की लाइब्रेरी के ज़रिएदस्तावेज़ देखें कि क्या उस लाइब्रेरी में Claude को temperature भेजने की सेटिंग है

नए API संस्करण के नियम Messages API के अनुरोधों, टोकन गिनने वाले अनुरोधों और Message Batches के हर अनुरोध पर लागू होते हैं (Anthropic की माइग्रेशन गाइड)।

4. SDK अपडेट करने पर क्या होता है

आधिकारिक SDK अपने मेजर संस्करण के जारी होने के समय वाला API संस्करण अपने-आप भेजते हैं। नीचे की तालिका में दिए SDK संस्करणों से वे 2026-10-21 भेजने लगते हैं, और हटाए गए तीनों पैरामीटर SDK के टाइप से भी हट गए हैं (Anthropic की माइग्रेशन गाइड)। इसलिए SDK अपडेट करने पर समस्या API की 400 त्रुटि से पहले, टाइप-जाँच या "फ़ंक्शन में ऐसा आर्गुमेंट नहीं है" जैसी त्रुटि के रूप में दिख सकती है। अगर आप टाइप से होकर न जाने वाले तरीके से बॉडी में पैरामीटर जोड़ते हैं (जैसे अतिरिक्त बॉडी भेजने की सुविधा का उपयोग, या सीधे HTTP से भेजना), तो API 400 लौटाता है। दोनों स्थितियों का समाधान एक ही है: तीनों पैरामीटर हटाएँ।

भाषा या टूलपहला संस्करण जो 2026-10-21 भेजता है
Pythonanthropic 2.0.0
TypeScript@anthropic-ai/sdk 1.0.0Bedrock, Vertex, Foundry आदि से जुड़े पैकेज भी v1 पर लाएँ
Javacom.anthropic:anthropic-java 3.0.0
Goanthropic-sdk-go 2.0.0मॉड्यूल का पाथ github.com/anthropics/anthropic-sdk-go/v2 है
C#Anthropic 13.0.0
Rubyanthropic 2.0.0
PHPanthropic-ai/sdk 1.0.0
CLIant 2.0.0

स्रोत: Anthropic, "Migrating to API version 2026-10-21" का Upgrade steps। SDK के बिना कॉल करते हैं, तो हेडर anthropic-version में 2026-10-21 लिखने पर नया API संस्करण लागू होता है।

नया API संस्करण Claude API, Claude Platform on AWS, Google Cloud पर Claude (Anthropic-प्रबंधित और Google-प्रबंधित दोनों) और Microsoft Foundry पर उपलब्ध है। सिर्फ़ Amazon Bedrock पर यह केवल Claude 4.7 या उसके बाद के मॉडल के लिए उपलब्ध है। अगर वहाँ पुराने मॉडल कॉल करते हैं, तो Anthropic सलाह देता है कि मौजूदा SDK संस्करण (या मौजूदा anthropic-version) ही रखें (Versions)।

SDK अपडेट करने के चरण

  1. नए API संस्करण पर जाएँऊपर की तालिका में दिए संस्करण पर SDK अपडेट करें। अगर सीधे HTTP से कॉल करते हैं, तो anthropic-version: 2026-10-21 सेट करें।
  2. टूटने वाले बदलाव ठीक करेंतीनों पैरामीटर हटाएँ, और पाँचवें अध्याय की तालिका में से जो आप पर लागू होते हैं उन्हें ठीक करें। नए SDK में बदले लिखने के तरीके (जैसे टाइप के नाम) भी माइग्रेशन गाइड के "SDK and CLI changes" में जाँचें।
  3. रिलीज़ से पहले नए API संस्करण पर जाँचेंप्रोडक्शन में जाने से पहले जाँचें कि नए API संस्करण पर अनुरोध सफल हो रहे हैं। SDK अपडेट और सुधार एक ही रिलीज़ में भेजें।

स्रोत: Anthropic, "Migrating to API version 2026-10-21" का Upgrade steps (Switch to 2026-10-21 → Update your code for the breaking changes → Test against 2026-10-21)।

5. नए API संस्करण के साथ और क्या ठीक करें

नए API संस्करण पर जाने के लिए temperature के अलावा और भी बदलाव हैं। (API key वाली पंक्ति केवल SDK और CLI का बदलाव है। अगर आप सीधे HTTP से कॉल करते हैं, तो उससे कोई फ़र्क नहीं पड़ता।) उनमें से केवल वही ठीक करें जो आप पर लागू होते हैं (उसी माइग्रेशन गाइड के Breaking changes में)।

क्या बदलता हैक्या बदला हैकैसे ठीक करें
assistant के संदेश में document400 त्रुटिदस्तावेज़ user के संदेश में भेजें
user के संदेश के text में citationsखाली न होने वाले citations भेजने पर 400वे citations हटाएँ (assistant के संदेश के citations पहले की तरह चलते रहेंगे)
API key भेजने का तरीकाSDK और CLI का बदलाव (API दोनों हेडर स्वीकार करता है)X-Api-Key की जगह Authorization: Bearer से भेजा जाता हैkey पढ़ने वाले प्रॉक्सी, गेटवे और लॉग फ़िल्टर को Authorization के अनुसार बदलें (API दोनों हेडर स्वीकार करता है)
Admin API के फ़ील्ड नामउदाहरण: API key से workspace_id फ़ील्ड हट गया हैscope.workspace_id जैसे नए नाम पढ़ें

यह त्रुटि तब आती है जब अनुरोध में API संस्करण वाला हेडर नहीं होता।

400 invalid_request_error
anthropic-version: header is required

आधिकारिक SDK API संस्करण अपने-आप भेजते हैं, इसलिए यह मुख्य रूप से तब आती है जब SDK के बिना सीधे HTTP से कॉल किया जाता है। उदाहरण के लिए, GitHub पर ऐसी रिपोर्ट हैं कि OpenAI के लिए बने क्लाइंट या टूल में Claude API का URL डालकर मॉडलों की सूची (/v1/models) पढ़ने की कोशिश करने पर यह त्रुटि आई (उदाहरण 1, उदाहरण 2)।

समाधान है हेडर जोड़ना। नया कोड लिख रहे हैं तो 2026-10-21 लिखें। मौजूदा कोड बिना बदले चलाना हो तो 2023-06-01 लिखें।

curl https://api.anthropic.com/v1/messages \
  -H "x-api-key: $ANTHROPIC_API_KEY" \
  -H "anthropic-version: 2026-10-21" \
  -H "content-type: application/json" \
  -d '{"model": "claude-opus-5-5", "max_tokens": 1024,
       "messages": [{"role": "user", "content": "Hello, Claude"}]}'

स्रोत: Anthropic, "Versions" (अनुरोध में anthropic-version हेडर अनिवार्य है; SDK इसे अपने-आप भेजता है)। त्रुटि संदेश उस API जवाब से है जो एक उपयोगकर्ता ने GitHub पर रिपोर्ट किया था। API key को x-api-key और Authorization: Bearer दोनों हेडर में से किसी एक में भेजा जा सकता है (माइग्रेशन गाइड)।

अगर आप जो टूल उपयोग करते हैं उसमें हेडर जोड़ने की सुविधा नहीं है, तो जाँचें कि वह टूल Claude API को सपोर्ट करता है या नहीं (कहीं वह OpenAI के फ़ॉर्मैट के हिसाब से तो कॉल नहीं कर रहा)।

सारांश

  • `temperature` is deprecated for this model. वह 400 त्रुटि है जो Claude 4.7 या उसके बाद के मॉडल को temperature, top_p या top_k का डिफ़ॉल्ट से अलग मान भेजने पर आती है। तीनों पैरामीटर हटाने से यह ठीक हो जाती है।
  • नए API संस्करण 2026-10-21 में वही तीनों भेजने पर मान या मॉडल चाहे जो हो, 400 आती है (आधिकारिक दस्तावेज़ में त्रुटि संदेश नहीं दिया गया है)।
  • Python के anthropic 2.0.0 जैसे नए SDK अपने-आप 2026-10-21 भेजते हैं, और तीनों आर्गुमेंट भी टाइप से हट गए हैं (जो कोड अब भी तीनों भेजता है, उसे SDK अपडेट करने पर आर्गुमेंट की त्रुटि या 400 मिलेगी)।
  • हर बार एक जैसा जवाब देने की कोई सेटिंग नहीं है। निर्देश प्रॉम्प्ट में दें (जवाब का फ़ॉर्मैट संरचित आउटपुट से एक-सा रखा जा सकता है)।
  • anthropic-version: header is required का मतलब है API संस्करण वाला हेडर छूट गया है। यह तब आता है जब SDK के बिना API कॉल किया जाता है।

FAQ

Q. क्या temperature को 1.0 (डिफ़ॉल्ट मान) करके भेजा जा सकता है?

नए API संस्करण 2026-10-21 में डिफ़ॉल्ट मान पर भी भेजने से 400 मिलती है। पुराने 2023-06-01 पर Claude 4.7 या उसके बाद के मॉडल को कॉल करते हैं, तो डिफ़ॉल्ट मान चल जाता है, लेकिन उसे भेजने का कोई फ़ायदा नहीं है, इसलिए हटाना ही सबसे सुरक्षित है।

Q. मैं temperature को 0 करके हर बार एक जैसा जवाब लेता था। उसका विकल्प क्या है?

इसका कोई विकल्प सेटिंग नहीं है। Anthropic की माइग्रेशन गाइड लिखती है कि temperature = 0 पर भी एक जैसे जवाब की गारंटी कभी नहीं थी। अगर जवाब का फ़ॉर्मैट (जैसे JSON के फ़ील्ड) एक-सा रखना है, तो संरचित आउटपुट का उपयोग करें, और शब्दों या निर्णय के मानदंड प्रॉम्प्ट में विस्तार से लिखें।

Q. क्या मैं नए API संस्करण पर गए बिना मौजूदा संस्करण ही चलाता रह सकता हूँ?

हाँ। Anthropic कहता है कि वह हर API संस्करण के भीतर मौजूदा इनपुट और आउटपुट फ़ील्ड बनाए रखता है, और 2023-06-01 को पहले की तरह ही चुना जा सकता है। Versions पेज में यह नहीं लिखा है कि 2023-06-01 कब बंद होगा (Versions, 26 अक्टूबर 2026 को जाँचा गया)। हालाँकि Claude 4.7 या उसके बाद के मॉडल पर 2023-06-01 रखने पर भी डिफ़ॉल्ट से अलग temperature आदि 400 देंगे। Anthropic यह भी सलाह देता है कि जहाँ संभव हो नया API संस्करण उपयोग करें, और SDK अपडेट करने पर वह अपने-आप नए संस्करण पर चला जाता है।

Q. Claude 4.7 या उसके बाद के मॉडल पर स्विच करने पर त्रुटि आने लगी

Claude 4.7 या उसके बाद के मॉडल पर स्विच करने पर, API संस्करण वही रहने पर भी डिफ़ॉल्ट से अलग temperature आदि 400 देते हैं। मॉडल बदलते समय ठीक करने वाली बाकी बातें (जैसे सोचने की सेटिंग और प्रीफ़िल) "Claude Opus 4.7 माइग्रेशन गाइड" में समझाई गई हैं।