Claude Opus 5.5 API: первый запрос и исправление ошибок 400

Создайте API Key BetterToken, отправьте минимальный запрос к Claude Opus 5.5 и по шагам устраните ошибки 400 из-за Model ID, max_tokens, thinking и tool_choice.

Содержание

Даже с рабочим API Key первый запрос к Claude Opus 5.5 может завершиться 400 Bad Request. Проверьте точный Model ID, обязательные поля Messages API, включая max_tokens, настройки thinking и tool_choice. Отсутствие max_tokens — общая ошибка валидации Messages, а не новое ограничение Opus 5.5; при миграции именно этой модели меняются правила thinking и принудительного выбора инструмента.

Ниже сначала приведён минимальный запрос, затем — порядок проверки ошибок 400. Обязательные поля сверяйте с документацией Messages API, а изменения Opus 5.5 — с руководством по миграции Anthropic. Один раз выполните минимальный запрос, чтобы проверить соединение и маршрут модели; если он завершится ошибкой, разбирайте полученное тело ответа по пунктам. Перед вызовом claude-opus-5-5 через BetterToken также проверьте в день публикации или запуска, что точный Model ID есть в текущем каталоге.

1. Сначала проверьте API Key, Base URL и Model ID

Для первого запроса нужны только три значения: ваш собственный BetterToken API Key, Anthropic-compatible Base URL и доступный сейчас Model ID.

  1. Войдите в BetterToken Workspace и создайте API Key в своём аккаунте. Храните его в менеджере секретов или локальном файле окружения; не добавляйте ключ в Git и не отправляйте его в поддержку.
  2. Откройте актуальный каталог моделей и цен и убедитесь, что точный ID claude-opus-5-5 доступен. Anthropic использует фиксированный ID без суффикса с датой, но доступность и цена в BetterToken являются динамическими.
  3. Передайте ключ через переменную окружения, а не через жёстко записанное значение в коде.

Для создания API Key нужен собственный аккаунт BetterToken. Создать аккаунт BetterToken

Скриншоты шагов в интерфейсе есть в BetterToken Quickstart.

2. В Base URL нет /v1, но в исходном HTTP-пути есть /v1/messages

Для Anthropic SDK используйте https://bettertoken.ai как Base URL, а для прямого Messages-запроса — https://www.bettertoken.ai/v1/messages.

https://bettertoken.ai

Не используйте /messages как Base URL и не добавляйте /v1/messages повторно, если SDK уже формирует путь ресурса. Задайте три переменные в текущей shell-сессии:

read -rs ANTHROPIC_API_KEY && export ANTHROPIC_API_KEY
export ANTHROPIC_BASE_URL="https://bettertoken.ai"
export CLAUDE_MODEL_ID="claude-opus-5-5"

Сначала выполните только первую строку. Терминал перейдёт в режим скрытого ввода: введите или вставьте API Key и нажмите Enter — символы не отображаются. Ключ экспортируется только в текущую shell-сессию, а в истории остаётся команда read, а не сам секрет. Не дописывайте ключ в командную строку.

claude-opus-5-5 — Model ID, который Anthropic указывает для Claude Platform. Если в текущем каталоге BetterToken нет точно такого ID, остановитесь и уточните доступность вместо того, чтобы подбирать псевдоним.

3. Отправьте минимальный запрос без расширенных параметров

Для первой проверки не добавляйте tools, tool_choice и thinking: так базовую проблему подключения проще отделить от несовместимых настроек.

curl --fail-with-body "$ANTHROPIC_BASE_URL/v1/messages" \
  -H "x-api-key: $ANTHROPIC_API_KEY" \
  -H "anthropic-version: 2023-06-01" \
  -H "content-type: application/json" \
  -d "{
    \"model\": \"$CLAUDE_MODEL_ID\",
    \"max_tokens\": 4096,
    \"messages\": [
      {\"role\": \"user\", \"content\": \"Ответь только словом: pong\"}
    ]
  }"

В этом запросе указан точный Model ID, присутствует положительный max_tokens, отсутствует поле thinking и не навязывается вызов инструмента. В примере max_tokens равен 4096: то же значение использует Anthropic в примере миграции, и оно оставляет больше места для adaptive thinking и короткого ответа. Это отправная точка для диагностики, а не результат проведённого здесь теста и не готовый production-лимит; для production подберите значение под ожидаемый ответ, effort, стоимость и задержку.

Флаг --fail-with-body сохраняет тело ответа при HTTP 4xx/5xx. Перед публикацией логов удалите API Key, полный Prompt, ответ модели и другие чувствительные данные.

4. Не считайте, что content[0] обязательно содержит текст

HTTP 200 и верхнеуровневый type со значением message означают, что endpoint принял и обработал запрос. Для этой проверки короткого ответа наличие text block подтверждает, что генерация содержимого завершилась; adaptive thinking и текст ответа делят общий max_tokens, поэтому корректный ответ может исчерпать лимит до появления текста.

Проверьте следующие признаки:

  • верхнеуровневый type равен message, а поле model соответствует запрошенной модели;
  • при нормальном завершении короткой проверки stop_reason равен end_turn, а в массиве content есть хотя бы один блок с type равным text;
  • если stop_reason равен max_tokens, ответ корректен, но обрезан: увеличьте max_tokens и повторите запрос; если явно задан высокий effort и глубокое рассуждение не нужно, можно снизить effort;
  • если text block отсутствует, а stop_reason не равен max_tokens, сохраните полный ответ и разбирайте указанную причину остановки; отсутствие текста само по себе не означает сбой соединения и не требует сразу менять Key или Base URL;
  • код выбирает блоки по type, а не безусловно читает content[0].text;
  • объект usage содержит число входных и выходных Token;
  • в BetterToken Dashboard появилась запись с нужным временем, моделью, статусом, input/output/cache Token и списанием.

Структура ответа описана в официальной документации Anthropic Messages API, а руководство по stop_reason объясняет обработку обрезанных ответов. Dashboard помогает сопоставить запрос и учёт использования, но не следует обещать, что там обязательно хранится полный Prompt или полный ответ.

5. Ошибки 400: общая проверка Messages и изменения Opus 5.5

В запросе осталось старое имя модели

Замените прежний ID или выдуманный вариант с датой на claude-opus-5-5. В руководстве Anthropic это фиксированный ID без суффикса даты. Облачные платформы могут использовать собственные идентификаторы; в этом Anthropic-compatible примере BetterToken нужен точный ID из текущего каталога BetterToken.

Отсутствует max_tokens

Добавьте положительный max_tokens в каждый Messages-запрос. Отсутствие поля — общая ошибка валидации Messages API, а не новое правило Opus 5.5. Это жёсткий предел всего вывода — thinking вместе с финальным текстом. Даже smoke test должен оставлять место для обеих частей; если stop_reason равен max_tokens, увеличьте лимит и повторите запрос, а не считайте вызов ошибкой соединения.

Payload отключает thinking или задаёт ручной бюджет

Самое простое исправление — полностью удалить поле thinking. В Opus 5.5 adaptive thinking включён всегда. Руководство Anthropic относит оба старых варианта к запросам, которые получают 400:

{"thinking": {"type": "disabled"}}
{"thinking": {"type": "enabled", "budget_tokens": 10000}}

Если поле нужно указать явно, используйте {"thinking": {"type": "adaptive"}}. Глубину рассуждения регулируйте через output_config.effort: доступны low, medium, high, xhigh и max, значение по умолчанию — medium. Для первого запроса эти поля не нужны.

Payload принудительно задаёт tool_choice

Для tool_choice используйте только {"type": "auto"} или {"type": "none"}. Opus 5.5 отклоняет {"type": "any"} и {"type": "tool", "name": "..."}. В сценарии с инструментами оставьте выбор в режиме auto, объясните в Prompt, когда применять инструмент, и проверьте каждую JSON Schema до включения strict tool use.

6. При других статусах сначала прочитайте тело ответа

СтатусЧто проверить первымЧего не делать
400Корректность JSON, model, max_tokens, messages, thinking и tool_choiceНе менять Key вслепую и не повторять один и тот же неверный payload
401 / 403Полноту ключа, аккаунт или группу ключа, Base URLНе отправлять полный Key в поддержку
404Для прямого HTTP-вызова нужен путь /v1/messagesНе считать /messages полным маршрутом
429Указанную паузу, баланс, лимиты и историю запросовНе повторять запрос без интервала

Если в shell остались переменные другого провайдера, очистите их перед новой настройкой:

unset ANTHROPIC_API_KEY
unset ANTHROPIC_BASE_URL
unset CLAUDE_MODEL_ID

После исправления повторите тот же минимальный запрос. Если одновременно поменять модель, endpoint, Prompt и расширенные параметры, будет трудно понять, какое изменение действительно помогло.

7. Не смешивайте прайс Anthropic и текущую цену BetterToken

На странице запуска от 22 сентября 2026 года Anthropic указала для Claude Platform $4 за миллион входных Token, $20 за миллион выходных, $0.20 за cache reads и $5 за cache writes. Это официально опубликованные цены платформы Anthropic на момент запуска. Цена BetterToken меняется динамически, поэтому проверьте актуальную страницу цен и самостоятельно сопоставьте один небольшой запрос с записью в Dashboard.

Thinking Token тарифицируются как output Token, а max_tokens ограничивает thinking вместе с финальным текстом. Поэтому у задачи, перенесённой с конфигурации, где thinking был отключён, профиль выходных Token может измениться даже при том же Prompt. Перед production проверьте актуальную страницу цен BetterToken и сопоставьте небольшой запрос с записью в Dashboard.

Перед переходом к SDK, streaming или production-трафику ещё раз проверьте Model ID, хранение ключа, размер max_tokens, чтение блоков по type, отсутствие forced tool choice и наличие обезличенного тела ошибки для диагностики. Дальше используйте BetterToken API Reference и официальное руководство по миграции Opus 5.5.

Готовы оптимизировать LLM workflow?

Подключите единый API, управляйте ключами и контролируйте расходы на AI-модели в BetterToken.

Начать бесплатно