POST /api/v2/conversations/calls 400 error: malformed participant address

Trying to kick off a outbound call via the REST API. Getting a 400 Bad Request. The error message is vague: malformed participant address.

Here’s the payload I’m sending to POST /api/v2/conversations/calls:

{
 "to": {
 "phoneNumber": "+15550199"
 },
 "from": {
 "phoneNumber": "+15550100"
 },
 "mediaType": "audio"
}

The phone numbers look fine. Standard E.164. No spaces, no parentheses. I’ve tried swapping them. Same error.

  • Genesys Cloud Org: US-1
  • Auth: Service Account with conversation:write scope
  • Endpoint: /api/v2/conversations/calls
  • Status: 400

I checked the docs. The schema matches. Maybe it’s the to object structure? Or is there a hidden validation rule for the from number that I’m missing?

Here’s the full response body:

{
 "errors": [
 {
 "message": "malformed participant address",
 "code": "invalid_param"
 }
 ]
}

What am I missing?

The phoneNumber field needs the full E.164 string without extra nesting. Try flattening the object.

{
 "to": {
 "phoneNumber": "+15550199"
 },
 "from": {
 "phoneNumber": "+15550100"
 },
 "mediaType": "audio"
}

Wait, that’s what you sent. Check if from requires a specific user ID or if the number isn’t provisioned for outbound.

Spot on about the provisioning check. It’s rarely the format if it’s E.164. Usually means that number isn’t linked to a valid user or group in Genesys. Check the routing rules too. If the number isn’t allowed to initiate calls via API, you’ll hit that 400. Verify the OAuth token has call:center:outbound scope as well.

It was the call:center:outbound scope. Added it to the token request and the 400 vanished immediately. The number was provisioned fine, just blocked by permissions. Thanks for the nudge on the scope check.