Entschuldigung. Ich lasse das hier, falls andere auf dasselbe Problem stoßen.
Beim Debuggen der tatsächlich gesendeten HTTP-Anfrage habe ich festgestellt, dass Python die PUT-Daten als "post=raw&post=edit_reason" gesendet hat … habe data=data durch json=data im requests.put()-Aufruf ersetzt und die Sache war erledigt.