CXone Architect API rejects IVR flow update with 400 validation error

{"status": 400, "code": "FLOW_VALIDATION_ERROR"}

Problem

Running cxone-api-sdk-js v3.2.1 against Architect v4.1. It’s tripping the schema validator on the transfer block. Queue’s doing jack all. The PUT /api/v2/architect/flows endpoint rejects the IVR routing payload.

Code

await client.architect.putFlow({ id: 'ivr-main', flow });

Error

400 Bad Request: Invalid node type 'queue_transfer' in routing sequence.

Question

Does the CXone API still support legacy queue_transfer blocks, or do I need to map this to action_transfer first?

The schema validator trips on the TRANSFER_BLOCK because the cxone SDK strips the required FLOW_VERSION when you push through a standard DEPLOY_PIPELINE. You don’t need to rewrite the whole IVR definition. Payload validation gets strict. Just inject the exact FLOW_VERSION integer directly into the request headers before the PUT hits the Architect endpoint. The platform rejects the payload if the SCHEMA_VALIDATION check doesn’t see a matching version stamp. It’s a common CI/CD gotcha when the pipeline auto-generates the payload. You’ll want to bypass the SDK’s default formatter and force the TRANSFER_QUEUE_ID and FLOW_VERSION fields to stay intact. The routing engine expects the FLOW_ID to match the committed hash, otherwise it drops the request with a 400. Try adjusting the request builder to keep the VALIDATION_TOKEN attached to the transfer node. This usually clears the error without touching the actual IVR logic.

{
 "id": "FLOW_ID",
 "version": 14,
 "transfer": {
 "type": "queue",
 "queueId": "TRANSFER_QUEUE_ID",
 "flowVersion": 14,
 "validationToken": "VALIDATION_TOKEN"
 }
}