API Self Client Authtoken conversion always returns "invalid_client".

API Self Client Authtoken conversion always returns "invalid_client".

I am having a problem when trying to convert an Authtoken to OAuth for a Self Client script.  I have made sure that the client Id, secret, and organisation are correct, and the domain is definitely ".com"/

This is the python code I am using to create the request:
headers = {"content-type": "application/x-www-form-urlencoded"}
data = {"client_id": self.id,
        "client_secret": self.secret,
        "grant_type": "authtooauth",
        "authtoken": authToken,
        "soid": "ZohoBooks." + self.organisation,
        "scope": "ZohoBooks.contacts.UPDATE,ZohoBooks.contacts.READ"}

resp = self.session.post(
    "https://accounts.zoho.com/oauth/v2/token/external/authtooauth",
    data=data, headers=headers)

Is there something I am missing here?