Mi scuso. Lascio questo qui nel caso in cui altri riscontrino lo stesso problema.
Eseguendo il debug della richiesta HTTP effettiva inviata, ho notato che python stava inviando i dati PUT come "post=raw&post=edit_reason"… ho sostituito data=data con json=data nella chiamata requests.put() e lavoro fatto.