Well, this was silly. I didn't realize it at first, but there was actually a header property in the posted object which it wanted defined and accepts a localizedString. Seems to be similar to the title so I just set it to what the title has for now and it works.
Now I have another issue! With an active pass returned and its id, I can generate a wallet pass url to add to wallet: https://pay.google.com/gp/v/save/{pass.Id}
However, this page only says "Something went wrong. Please try again."
Closest thing I could find is that my email account doing the testing in demo mode needs to be either added as an admin user to the pay & wallet account and/or a test user under the wallet api. I have added it to both with no luck.