Please note, that exchange should be "PAXOS" for all Cryptocurrency contracts.
Contract contract = new Contract();
contract.Symbol = "ETH";
contract.SecType = "CRYPTO";
contract.Exchange = "PAXOS";
contract.Currency = "USD";
Note: Contract exchange can be either PAXOS or ZEROHASH
If this an error that cannot be fixed, I'll just use IBIT which is iShares Bitcoin Trust ETF. But the advantage of using BTC.USD-ZEROHASH-CRYPTO is that Bitcoin trades 24/7 and should have streaming quotes 24/7.
BTW, Interactive Broker provides this ticker list for crytocurrency
This is notice, not an error. Codes above 10000 in TWS API are notices. It doesn't matter at all since data plugin does not place orders therefore message is irrelevant and simply wrong as TWS API doesn't understand that requesting price does not involve trade size.