PATCH /api/v2/voice/conversations/{conversationId} returns 409 when transferring to queue

Trying to programmatically transfer a voice call to a specific queue using the Conversations API. The script runs in using the REST Proxy action. Authentication is handled via the standard Bearer token flow, so that part works fine. I’m using the PATCH method on /api/v2/voice/conversations/{conversationId}.

Here is the JSON payload I’m sending in the body:

{
 "to": {
 "queueId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890"
 }
}

The response comes back with a 409 Conflict status. The error message in the response body says: "message": "Cannot transfer call to queue. Reason: INVALID_TRANSFER_TARGET".

I’ve verified the queue ID is correct. It exists and is active. I can manually transfer a call to this queue in the agent desktop without issues. The conversation ID is pulled directly from the context variable conversationId in the script, so that’s not stale.

I’ve tried adding the transferType field explicitly as "blind" just in case, but it doesn’t change the result. The docs mention that to can be a queueId or userId, and I’m using queueId.

What am I missing here? Is there a specific permission on the queue that needs to be set for API-initiated transfers? Or is the JSON structure slightly off? The API reference shows to as an object, but maybe it needs nested fields?

Here’s the full request header setup in the REST Proxy:

  • Method: PATCH
  • URL: /api/v2/voice/conversations/{conversationId}
  • Header: Content-Type: application/json
  • Header: Authorization: Bearer {token}

The call is currently in RINGING state on the agent side. I’ve also tried TALKING state. Same 409 error. Feels like I’m hitting a wall with this endpoint. Any ideas?