РУКОВОДСТВО · ОБНОВЛЕНО 2026-11-09
HTTP 415 в AI API: как исправить формат запроса
Диагностика 415 Unsupported Media Type при отправке JSON и файлов в AI API. Как сверить маршрут, заголовки, границы multipart и фактическое тело.
Код 415 означает, что сервер отклонил формат содержимого запроса. Начните с документации конкретной операции и фактических заголовков на выходе клиента. Маршрут, который принимает JSON, может отклонить форму с файлом, а маршрут загрузки ожидает свою форму. Изменение одного заголовка не превращает сериализованный JSON в multipart. Чтобы локализовать причину, сохраните безопасный пример структуры запроса и меняйте по одному параметру.
1. Проверьте маршрут и способ отправки
Сверьте метод, адрес и ожидаемый тип тела по документации. Например, одна операция принимает JSON с параметрами генерации, а другая ожидает файл в именованном поле формы. Отметьте, где конкретно возвращается 415, если запрос проходит через приложение и обратный прокси. Проверяйте статус и диагностический текст ответа вместе. Выбор другой модели на том же маршруте редко помогает, пока принимающая сторона не может распознать переданное представление.
2. Сопоставьте заголовок с фактическим телом
Для JSON сериализуйте объект один раз и передайте медиатип, указанный в документации. Поле в интерфейсе SDK может автоматически выставить заголовок, поэтому проверяйте отправленный запрос. Если строку JSON сериализовали повторно, тело станет строковым литералом. В зависимости от сервера это даст другую ошибку, даже если заголовок принят. Content-Type описывает содержимое запроса, а Accept задаёт предпочтения для представления ответа. Их изменение решает разные задачи.
3. Проверьте границу формы и кодирование
В форме multipart параметр boundary в Content-Type должен совпадать с разделителями тела. Если форму строит HTTP-клиент, обычно ему же поручают выставлять заголовок. Самостоятельно заданный заголовок без boundary может сделать корректно собранные части нечитаемыми. Если участвует Content-Encoding, сверяйте заявленное сжатие с фактическими байтами и поддержкой сервера. Заголовок части с файлом и заголовок всей формы относятся к разным уровням.
4. Сведите ошибку к минимальному запросу
Используйте локальный тестовый маршрут или безопасный минимальный образец. Зафиксируйте метод, тип содержимого и форму тела без ключей, персональных данных и файлов пользователя. Сравните рабочий пример с проблемным и измените один фактор. Проверьте также правила прокси, если запрос до приложения меняется по пути. Код 413 ведёт к проверке размера, тогда как 415 ведёт к формату. После устранения причины проверьте ошибочный пример снова, чтобы убедиться, что исправлен именно этот случай.
Частые вопросы
Поможет ли выставить Accept: application/json?
Этот заголовок относится к ответу. Для ошибки формата запроса сверяйте Content-Type и содержимое тела.
Можно ли вручную указать multipart/form-data?
Можно, если вы также корректно задаёте boundary и формируете тело. При использовании готового конструктора формы отдайте ему обе задачи.
Всегда ли неверный JSON возвращает 415?
Код зависит от контракта сервера. Например, принятый тип с синтаксической ошибкой может приводить к 400.
Стоит ли повторить тот же запрос?
Сначала измените причину отклонения. Повтор с тем же представлением обычно воспроизводит ошибку.