So, there seems to be two separate, overlapping APIs for VeSync devices -- v1, which login and device enumeration uses, and perhaps some other devices, and v2, which has the word 'bypassV2' in the URL, which is why that method is called what it is.
I relied on this Python repo for inspiration on some of the commands: https://github.com/webdjoe/pyvesync, and then I used Postman to figure things out before actually putting it in code -- after some trial-and-error, I got things to work. That repo doesn't have everything, though. For example, I had to use Charles Proxy (an SSL proxy for iOS) to figure out the payload for setting the purifier auto mode preferences (default, eco, quiet, etc.)