죄송합니다. 혹시 다른 분들도 같은 문제를 겪을 수 있으니 참고용으로 남겨둡니다.
실제로 전송된 HTTP 요청을 디버깅해 보니, Python이 PUT 데이터를 "post=raw&post=edit_reason" 형태로 보내고 있었습니다. requests.put() 호출에서 data=data를 json=data로 교체하니 문제가 해결되었습니다.
죄송합니다. 혹시 다른 분들도 같은 문제를 겪을 수 있으니 참고용으로 남겨둡니다.
실제로 전송된 HTTP 요청을 디버깅해 보니, Python이 PUT 데이터를 "post=raw&post=edit_reason" 형태로 보내고 있었습니다. requests.put() 호출에서 data=data를 json=data로 교체하니 문제가 해결되었습니다.