I'm trying to use 3cx phone for window in CTI mode connected to a Grandstream GXP2140 IP phone with no luck. The GXP2140 is connected through SBC to a remote 3CX PBX. The 3CX phone for windows is installed on a computer on same network, same office where the phone is located. It is besides the same computer that holds the SBC. I edited cti_template.xml and I have custom template for GXP2140 phone on remote 3CX PBX. The GXP2140 phone have been properly provisioned from the PBX and the 3CX phone for windows has been properly provisioned sending the configuration file by email from the PBX. From the computer I have opened a browser and tried the CTI directly: Code: http://203.0.113.1/cgi-bin/api-send_key?passcode=passcode&keys=SPEAKER:1:1:1:1:1:1:SEND And works perfectly. The phone number 111111 is dialed on the phone But when I try to dial something from 3CX phone for windows it does nothing. I have made a capture from the phone and I can see that the difference from the GET request I send directly from the browser and the GET request that is sended by 3CX phone for windows is that 3CX phone for windows is adding BASIC authentication with the phone credentials in an authorization header. The passcode is on the GET request parameter already. The phone replies to 3CX phone for windows GET request with an unauthorized REPLY. I suppose it is because of that authorization header in the GET request. The same GET request directly from the browser doesn't send authorization header and receives a sucess REPLY. Now I have no way to try if 3CX PBX, IP phone and 3CX phone for windows in same local network would work the same.