e0e3455281
xAI определяет формат аудио по расширению имени файла в multipart-части, а не по её content-type. Back слал нейтральное filename="voice.dat": wav проходил случайно (узнаваемый заголовок), а webm/opus и mp4 из браузерного MediaRecorder получали 400 «Could not detect audio format» → 502 upstream_error → тост «Распознавание речи временно недоступно». Расширение выводится из mime (параметры codecs отбрасываются); неизвестный тип — .wav. Тесты на маппинг и подстановку в multipart.