Я не знаю, кто у вас предоставляет API, но у Гугла сделано это с помощью цифровой подписи:
https://developers.google.com/maps/documentation/m...
Допустим, вы знаете какие у вас параметры (надеюсь, что они не меняются), вы подписываете свой запрос и шлёте провайдеру. Если кто-либо захочет поменять параметры запроса, то ему придётся подписать его заново, а без приватного ключа он не сможет.
С другой стороны, если у вас есть квота на запросы, или вы хотите их в JS динамически менять, то да, вам без личного бекенда не справится.
Всё, что приходит в браузер, можно украсть :)