PATCH /api/v2/conversations/voice/{id}/participants fails to transfer to queue

I’m trying to move a call to a different queue using the Conversations API. I’ve got the participant ID and the target queue ID. My PATCH body looks like this:

{ “routing”: { “queueId”: “new-queue-id”, “priority”: 0 } }

It returns a 400 Bad Request. The docs say I need to set the state to queued, but I’m not sure where that goes in the JSON. I’ve tried adding it to the root object, but that just breaks the schema. What’s the right structure for a programmatic transfer?

The state lives inside the routing block, not at the root. Try this payload: { "routing": { "queueId": "new-queue-id", "priority": 0, "state": "queued" } }.

That payload is correct for the API, but if you’re managing this in Terraform, don’t patch it directly. Use the genesyscloud_routing_queue resource with a wrapup_code and skill_group assignment instead. It handles the state transitions automatically and keeps your state file in sync. Much cleaner than raw HTTP calls.