PATCH /conversations/voice fails to transfer to queue with 400 Bad Request

We’re hitting a wall trying to programmatically transfer a voice call to a specific queue using the Conversations API. The goal is to maintain our OpenTelemetry trace context through the transfer, but the basic mechanics of the API call are failing first. I’m sending a PATCH request to https://api.mypurecloud.com/api/v2/conversations/voice/{conversationId} with the toQueue object in the body. The request includes the standard Bearer token and the traceparent header for our distributed tracing setup. When I target an agent extension, it works fine, but pointing it to a queue ID returns a 400 Bad Request. The error payload is generic: {"message": "Bad Request", "errors": ["Unable to process request"]}. I’ve verified the queue ID exists and has members available. I’m using the Node.js axios library to make the call, and the headers are set correctly as per our OTel instrumentation guide.

Here is the exact JSON payload I’m sending in the PATCH body. I’ve tried including the reason field and leaving it out, but the result is the same. The documentation implies that toQueue is sufficient for a blind transfer to a queue, but it seems like something is missing or malformed. Is there a specific flag or additional field required in the transferTo object for queue transfers that isn’t obvious from the Swagger spec? I’ve checked the audit logs and they just show the 400 error without much detail on why the validation failed. This is blocking our ability to trace the full journey of a call when it’s routed to a queue rather than an agent. Any help on the correct payload structure would be appreciated.