POST /api/v2/conversations/calls failing with 400: malformed participant address

Looking for advice on handling the specific structure required for the participants array when programmatically initiating outbound calls via the Genesys Cloud API. I am building a Rails middleware service that ingests webhook events and dispatches Sidekiq jobs to execute outbound campaigns. The ingestion part works flawlessly using Faraday to verify signatures and queue jobs, but the actual API call to POST /api/v2/conversations/calls is consistently returning a 400 Bad Request. The error message in the response body is quite vague, stating “malformed participant address”. I have double-checked that the OAuth token is valid and has the necessary conversation:write scope, so I suspect the issue lies in how I am constructing the JSON payload for the participant object.

Here is the simplified Ruby code snippet I am using to construct the request body. I am using the faraday gem for the HTTP client. The phone_number variable is verified to be a valid E.164 string (e.g., +15551234567) before this block executes. I have tried both tel: and sip: schemes for the address field, but neither seems to satisfy the API validator. I am also unsure if the customerData object requires specific nested fields that are currently empty in my draft payload. Does the API require the name field within customerData to be populated, or is the issue strictly with the address format? I have also verified that the routingData is correctly formatted according to the documentation, mapping to an existing queue and skill group.

payload = {
 to: {
 address: "tel:#{phone_number}",
 name: "Test Caller",
 customerData: {
 name: "",
 notes: "Automated test call"
 }
 },
 routingData: {
 queueId: "my_queue_id_here",
 skill: "support"
 }
}

response = client.post('/api/v2/conversations/calls', payload.to_json)

I am running this from a server in Asia/Kolkata timezone, but I do not believe that affects the JSON structure. Any insights into what specific attribute in the participant object might be causing this validation failure would be appreciated. I have reviewed the OpenAPI spec, but the examples there are somewhat minimal regarding the exact schema constraints for the address field in this context.