Getting 400 Bad Request on POST /api/v2/conversations/calls with valid-looking JSON

I’ve been wrestling with the Genesys Cloud API for the past few hours trying to programmatically initiate a test call from our internal dialer script. The goal is straightforward: make an outbound call to a specific extension using the POST /api/v2/conversations/calls endpoint. I’m using Python with the requests library, and I’ve double-checked that my OAuth token is valid and has the necessary conversation:call scope. The issue arises when I send the request. It consistently returns a 400 Bad Request with the error message Malformed participant address. I’ve reviewed the documentation multiple times, and the JSON structure seems to align perfectly with the examples provided. Here is the payload I am sending:

import requests

headers = {
 "Authorization": "Bearer <valid_token>",
 "Content-Type": "application/json"
}

payload = {
 "to": [{
 "phoneNumber": "+442071234567",
 "name": "Test Recipient"
 }],
 "from": {
 "phoneNumber": "+442079876543",
 "name": "System Bot"
 }
}

response = requests.post(
 "https://api.mypurecloud.com/api/v2/conversations/calls",
 headers=headers,
 json=payload
)
print(response.status_code, response.text)

The from number is a valid, licensed outbound number in our Genesys Cloud instance, and the to number is a valid E.164 formatted mobile number. I’ve tried removing the name fields, changing the phone number format to just digits, and even using a different outbound number. Nothing seems to work. The error message isn’t very helpful, as it doesn’t specify which part of the address is malformed. I’m wondering if there’s a specific requirement for the to array structure that I’m missing, or if there’s a known issue with the API endpoint that causes this error under certain conditions. I’ve also checked the network logs, and the request is definitely reaching the Genesys Cloud servers, so it’s not a connectivity issue. Any insights into what might be causing this Malformed participant address error would be greatly appreciated. I’m running out of ideas here.