The URLExecute is returning a login page, as expected. To return a result, you have to provide credentials. The simplest way to do this is to wrap CloudObject around the url when you are connected to the cloud ($CloudConnected is True).
URLExecute[CloudObject[-url-],{"param1"->"value1",....},...]
In the case of your clients, there are a couple of options currently implemented. Perhaps more options will be available soon.
First, you can set the Permissions of the deployed APIFunction to "Public". But this will allow anyone to access your function (so long as they know the url).
Alternatively, you can specify who has permissions to evaluate the function. Currently, these users need to have a WolframCloud account.