Какие best practices по защите API?
Есть 3 вида API:
1. Публичные - доступные публично с известными параметрами при запросе.
2. Приватные (авторизованное обращение) - доступные публично с известными параметрами при запросе, но с ключом(токеном по паролю) или сертификатом.
3. Закрытые - проприетарные клиенты со своим закрытым протоколом обмена с серверным API.
JS в браузере - это только 1.
Если не 2 и не 3 - значит остаётся 1.
Если МЕГА-тупо (для п.1): можно проверить длительность сессии в момент POST-запроса на сервер и, если длительность меньше времени самого быстрого заполнения формы человеком в ручном режиме, считать данные недостоверными.
Обычные практики описаны тут https://www.owasp.org/index.php/REST_Security_Chea... 
Подлинность запроса проверить возможно лишь при передаче данных через сервер.
В противном случае можно полагаться на стандартные механизмы защиты от кросс-сайт скриптинга или банальные проверки referrer. Однако такие мелочи подделываются на раз.