It ended up being an issue with how quotes are interpreted for windows cmd. I was able to get it working by replacing all the single quotes with double quotes and then escaping the double quotes for the arguments like so:
curl -H "Content-Type:application/json" -X POST -d "{\"email\": \"john@example.com\", \"password\": \"1234\"}" http://localhost:3000/authenticate
Thanks again. I will spin up an ubuntu server vm later but I didn't feel like dealing with the setup tonight.
One other thing, I think it would be good to mention your episode #123 Encrypted Credentials in Rails 5.2 as the setup in this is required, at least for generating the credentials.yml.enc and master.key.