Если 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-01 | 2026-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: вы отправили значение, отличное от значения по умолчанию, с версией 2023-06-01 для модели Claude 4.7 или новее (первая строка таблицы, колонка 2023-06-01)
- Ситуация 2: вы отправили любой из трёх параметров с версией 2026-10-21, независимо от модели и значения (правая колонка таблицы)
Сообщение об ошибке из начала статьи, `temperature` is deprecated for this model., возникает в ситуации 1 и появляется в ответе API, о котором пользователь сообщил на GitHub (пример из отчёта). Официальная документация Anthropic не приводит сам текст ошибки, а только указывает, что такой запрос возвращает 400.
Итак, в обеих ситуациях помогает удаление трёх параметров. Если вы меняли значения на более старой модели, учтите, что после удаления изменится разброс ответов (см. раздел 2).
2. Как исправить и как получать одинаковые ответы
- Удалите три параметра из запросаУберите
temperature,top_pиtop_kиз запросов Messages API и из каждого запроса в Message Batches. Если значения по умолчанию задаются в файле конфигурации или в обёртке-функции, удалите их и там. - Что происходит после удаленияЕсли три параметра не отправлять, для выбора следующего токена используются значения по умолчанию (для
temperatureэто 1.0). Дляtop_pиtop_kзначения по умолчанию не указаны числом, поэтому их не отправлять — самый надёжный вариант. Так же было и с прежними версиями API, когда эти параметры не передавались. Модели Claude 4.7 и новее изначально принимают только значения по умолчанию, поэтому их поведение не меняется. - Если нужны одинаковые ответы каждый разЗамены этой настройке нет. Руководство по миграции 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 |
|---|---|
| Python | anthropic 2.0.0 |
| TypeScript | @anthropic-ai/sdk 1.0.0Связанные пакеты для Bedrock, Vertex и Foundry также обновите до v1 |
| Java | com.anthropic:anthropic-java 3.0.0 |
| Go | anthropic-sdk-go 2.0.0Путь модуля: github.com/anthropics/anthropic-sdk-go/v2 |
| C# | Anthropic 13.0.0 |
| Ruby | anthropic 2.0.0 |
| PHP | anthropic-ai/sdk 1.0.0 |
| CLI | ant 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
- Переключитесь на новую версию APIОбновите SDK до версии из таблицы выше. При прямых HTTP-запросах укажите
anthropic-version: 2026-10-21. - Исправьте несовместимые измененияУдалите три параметра и исправьте пункты из таблицы раздела 5, которые к вам относятся. Также проверьте, что изменилось в написании новых SDK (например, в именах типов), в разделе «SDK and CLI changes» руководства по миграции.
- Проверьте работу новой версии 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 |
6. Как исправить anthropic-version: header is required
Следующая ошибка появляется, когда в запросе нет заголовка версии 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, например
anthropic2.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».