HTTP 400 после смены модели чаще всего означает несовместимое поле или неверную структуру запроса.
Сведите запрос к минимуму#
Оставьте только:
model;одно короткое пользовательское сообщение или
input;обязательный
max_tokensдля Messages.
Если запрос заработал, возвращайте параметры по одному.
Проверьте предел ответа#
GPT-5-подобный Chat может ожидать
max_completion_tokens;старый Chat или другая совместимая модель может ожидать
max_tokens;Messages требует
max_tokens;Responses использует
max_output_tokens.
Не отправляйте несколько полей лимита одновременно.
Проверьте reasoning#
Убедитесь, что значение effort поддерживается моделью. Не переносите reasoning_effort, reasoning и thinking как одинаковые поля.
Проверьте tools#
Начните с одной function tool. Упростите JSON Schema, добавьте required и уберите неизвестные типы tools. Для Responses проверьте связь по call_id, для Messages — пары tool_use и tool_result.
Проверьте Structured Outputs#
Chat использует response_format, Responses — text.format. Если кросс-диалект не может сохранить схему, маршрут будет пропущен или запрос получит явную ошибку совместимости.
Если поле принято, но не действует#
Некоторые совместимые API принимают неизвестные поля. Проверяйте поведение, а не только отсутствие HTTP 400. Сравните ответ с запросом без параметра на серии примеров.