Python requests OAuth2 client credentials returning 400

Is there a specific Content-Type header required for the Genesys Cloud token endpoint? I’m using the requests library to grab an access token via client credentials, but I keep getting a 400 Bad Request. Here’s the snippet I’m running. The scope looks right, but the error payload just says invalid_request without much detail. Any ideas why it’s rejecting the auth?

Missing application/x-www-form-urlencoded. The token endpoint chokes if you send JSON or raw data without that header. Also, make sure the body is URL-encoded, not a dict. Try this:

import requests
r = requests.post('https://api.mypurecloud.com/api/v2/authorization/token', 
 headers={'Content-Type': 'application/x-www-form-urlencoded'},
 data={'grant_type': 'client_credentials', 'scope': 'conversation:read'})