If you are a US retail client and receive the error EOrder:Reduce only:Non-ECP when placing leveraged orders through the API or WebSocket, this means your order is being routed through the wrong trading pair.
US retail margin trading is processed through Bitnomial Exchange, which requires a different pair format. Instead of using the standard pair name (for example, BTC/USD), you need to append :BTNL to the pair (for example, BTC/USD:BTNL). This applies to all order endpoints, including REST API and WebSocket.
How to fix it
Update your order request to use the :BTNL pair format. For example, instead of BTC/USD use BTC/USD:BTNL, and instead of XBT/USD use XBT/USD:BTNL.
To see the full list of pairs available for US retail margin trading, make the following public API call: https://api.kraken.com/0/public/AssetPairs?execution_venue=bitnomial_exchange
Note: If your order passes validate=true but fails when submitted live, this is expected -- validation checks order formatting only and does not verify account routing. The :BTNL pair format is required for the actual order to go through.