Приношу извинения. Оставляю это здесь на случай, если кто-то ещё столкнётся с той же проблемой.
При отладке фактического отправляемого HTTP-запроса я заметил, что Python отправлял данные PUT в виде "post=raw&post=edit_reason"… Я заменил data=data на json=data в вызове requests.put(), и проблема была решена.