Проблема была в том, что на бекэнде в конфигах стояло, что я отдаю "application/json". Добавил к этому "text/html" и все стало хорошо - в логах сервера яндекс боту стал отдаваться 200 код.
Суть проблемы в том, что бот делает запрос с заголовком Accept "text/html". Если в ответ он получает Content-Type другого типа, то получается ошибка 406. Трудности с диагностикой проблемы возникли потому, что я смотрел ответы сервера в браузере и там было 200. Только сделав запрос в Insomnia с заголовком Accept "text/html" получил ответ 406.