CXone Personal Connection API: 400 Bad Request on outbound call trigger via Node.js middleware

Does anyone know the exact payload structure required to trigger a CXone outbound call using the Personal Connection API via a custom Node.js service?

I am building a middleware bridge between Salesforce and CXone. When a sales rep clicks a ‘Call Customer’ button in Salesforce, my Node.js service receives the webhook, fetches the authenticated user’s Personal Connection ID from a cached lookup table, and then attempts to initiate the call using the POST /api/v2/platform/conversations/conversations endpoint with a specific personalConnection configuration.

Here is the JSON body I am sending:

{
 "from": {
 "id": "personalConnectionId_12345",
 "type": "personalConnection"
 },
 "to": [
 {
 "id": "+15550199888",
 "type": "phone"
 }
 ],
 "type": "outbound",
 "provider": {
 "id": "my_cxone_provider",
 "type": "provider"
 }
}

The API consistently returns a 400 Bad Request with the message: Invalid from address. Personal connection not found or not active.

I have verified that the personalConnectionId_12345 is valid by checking the GET /api/v2/telephony/users/{userId}/personal-connections endpoint, and it shows as active. The OAuth token used for the POST request belongs to the same user.

I suspect I might be missing a required field in the provider object or perhaps the from object structure is slightly different for Personal Connections compared to standard phone numbers. I’ve tried adding a label field, but that didn’t help.

Is there a specific way to reference the Personal Connection in the from object? Or is this endpoint not fully supported for Programmatic Personal Connection triggers yet? Any insights would be appreciated.

Thanks for the help!