Running into a weird issue with the Conversations API when trying to transfer an active call to a specific queue via code. The call is established, I have the conversationId, and I’m trying to use the PATCH /api/v2/conversations/calls/{conversationId} endpoint to initiate a blind transfer.
The documentation says to include a to object with the type and toId. I’ve verified the toId by calling GET /api/v2/queues and grabbing the ID for the target queue. It’s definitely valid.
Here’s the JSON payload I’m sending:
{
"to": {
"type": "queue",
"toId": "a1b2c3d4-5678-90ab-cdef-1234567890ab"
}
}
The request comes back with a 400 Bad Request. The error message is vague:
{
"message": "Invalid request",
"code": "invalid_request"
}
I’ve tried adding the reasonCode in the body, but it doesn’t help. I’ve also tried setting the method to transfer explicitly, though the docs imply it’s the default for this endpoint when a to object is present.
One thing I noticed is that if I use the type as user and put a valid agent ID in toId, it works fine. But for queues, it consistently fails. Is there a specific permission required on the OAuth token beyond conversation:view and conversation:write? Or is the payload structure different for queue transfers compared to user transfers?
I’m using the Python SDK, but I’ve also tried raw HTTP requests with requests.post to rule out any SDK quirks. Same result. The call stays connected on my end, and nothing happens on the Genesys side.
Checked the logs, no useful details there. Just the 400. Any ideas?