Если Claude API возвращает следующую ошибку, причина в том, что вы отправляете для моделей Claude 4.7 и новее значение temperature (или top_p, top_k), отличное от значения по умолчанию. Исправить это можно, убрав все три параметра из запроса. В новой версии API 2026-10-21, выпущенной в октябре 2026 года, отправка любого из них возвращает ошибку 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 выбирает версию API с помощью заголовка запроса anthropic-version. Появится ли ошибка, зависит от сочетания используемой модели и версии 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).

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 дальше текущей мажорной версии (1.x для Python), либо при прямых 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 проблема может проявиться сначала не как ошибка 400 от API, а как ошибка проверки типов или «неизвестного аргумента». Если вы добавляете параметры в тело запроса в обход типов (например, через функцию передачи дополнительных полей тела или при прямых HTTP-запросах), API вернёт 400. Исправление в обоих случаях одно: удалить три параметра.

Язык или инструментПервая версия, которая отправляет 2026-10-21
Pythonanthropic 2.0.0
TypeScript@anthropic-ai/sdk 1.0.0Связанные пакеты для Bedrock, 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. Если вы обращаетесь к API без SDK, укажите в заголовке anthropic-version значение 2026-10-21, чтобы использовать новую версию API.

Новая версия API доступна в Claude API, Claude Platform on AWS, Claude в Google Cloud (как в управляемом 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. Исправьте несовместимые измененияУдалите три параметра и исправьте пункты из таблицы раздела 5, которые к вам относятся. Также проверьте, что изменилось в написании новых 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 относится только к изменениям в SDK и CLI; при прямых HTTP-запросах она не важна.) Исправляйте только те пункты, которые к вам относятся (раздел Breaking changes того же руководства по миграции).

Что меняетсяЧто именно меняетсяКак исправить
Документы в сообщениях assistantОшибка 400Отправляйте документы в сообщениях user
Citations в тексте сообщения userОтправка непустых citations возвращает 400Удалите эти citations (citations в сообщениях assistant работают по-прежнему)
Способ передачи ключа APIИзменение в SDK и CLI (API принимает оба заголовка)Передаётся через Authorization: Bearer, а не через X-Api-KeyПриведите к Authorization прокси, шлюзы и фильтры логов, которые читают ключ (API принимает оба заголовка)
Названия полей Admin APIНапример, поле workspace_id у ключей API удаленоИспользуйте новые названия, например scope.workspace_id

Следующая ошибка появляется, когда в запросе нет заголовка версии API.

400 invalid_request_error
anthropic-version: header is required

Официальные SDK отправляют версию API автоматически, поэтому ошибка возникает в основном при прямых HTTP-запросах без SDK. Например, на GitHub есть сообщения о том, что она появлялась, когда клиент или инструмент, рассчитанный на OpenAI, направляли на URL Claude API и пытались получить список моделей (/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 принимает ключ как в заголовке x-api-key, так и в Authorization: Bearer (руководство по миграции).

Если инструмент, который вы используете, не позволяет добавить заголовок, проверьте, поддерживает ли он Claude API (и не обращается ли он к API в формате OpenAI).

Итоги

  • `temperature` is deprecated for this model. — ошибка 400, которая возникает, когда для моделей Claude 4.7 и новее отправляется значение temperature, top_p или top_k, отличное от значения по умолчанию. Помогает удаление трёх параметров.
  • В новой версии API 2026-10-21 отправка тех же трёх параметров возвращает 400 независимо от значения и модели (текст ошибки в официальной документации не приводится).
  • Новые SDK, например anthropic 2.0.0 для Python, автоматически отправляют 2026-10-21, а три аргумента удалены из типов. Код, который их ещё передаёт, после обновления SDK выдаёт ошибку аргумента или 400.
  • Настройки, гарантирующей одинаковые ответы, нет. Инструкции задавайте в промпте (формат ответа можно выровнять с помощью Structured outputs).
  • anthropic-version: header is required означает, что заголовок версии API не передан. Ошибка возникает, когда API вызывается без SDK.

FAQ

Q. Можно ли отправлять temperature со значением 1.0 (значение по умолчанию)?

В новой версии API 2026-10-21 такой запрос возвращает 400, даже со значением по умолчанию. Если вы вызываете модель Claude 4.7 или новее с версией 2023-06-01, значение по умолчанию работает, но отправлять его нет смысла, поэтому надёжнее всего удалить параметр.

Q. Раньше я ставил temperature = 0, чтобы получать одинаковые ответы. Чем это заменить?

Замены нет. Руководство по миграции Anthropic указывает, что даже при temperature = 0 одинаковые ответы никогда не гарантировались. Чтобы выровнять формат ответа (например, поля JSON), используйте Structured outputs, а формулировки и критерии решений подробно задавайте в промпте.

Q. Можно ли продолжать работать с текущей версией, не переходя на новую версию API?

Да. Anthropic сохраняет существующие поля входных и выходных данных в каждой версии API, и 2023-06-01 по-прежнему можно указывать. На странице Versions не написано, когда будет прекращена поддержка 2023-06-01 (Versions, проверено 26 октября 2026 года). Однако для моделей Claude 4.7 и новее значение temperature, отличное от значения по умолчанию, и подобные параметры по-прежнему возвращают 400, даже с 2023-06-01. Anthropic также рекомендует по возможности использовать более новую версию API, а при обновлении SDK переход на неё происходит автоматически.

Q. Я перешёл на модель Claude 4.7 или новее и получил ошибку

После перехода на модель Claude 4.7 или новее значение temperature и подобные параметры, отличные от значений по умолчанию, возвращают 400, даже если версия API остаётся прежней. Другие моменты, которые нужно исправить при смене модели (например, настройки thinking и prefill), описаны в статье «Руководство по переходу на Claude Opus 4.7».