Как ограничить отправку смс при регистрации пользователей?
Что если в API передавать какой-нибудь идентификатор, например CSRF-токен страницы регистрации? Это конечно не панацея, но убережет от использования апишки не по назначению.
Как работает отправка СМС - сервер шлёт на смс-шлюз запрос. Значит, нужно, чтобы смс-шлюз принимал запросы только с ip адреса вашего сервера. Если смс-шлюз свой, то не вижу проблем, если не свой, то напишите провайдеру.
массовый запрос на отправку смс на разные номера
Устанавливать сессию, если большего одного запроса с одной сессии, то блокировать отправку с этой сессии.
Если разные сессии, то ставить ограничения по ip на 5-60 минут. Не думаю, что с одного ip в течение часа кто то захочет воспользоваться вашим сервисом.
К тому же я бы приделал ограничение по Гео - rosreestr.subnets.ru/?get=num&num=79154610100
Второй момент - проводить смс регистрацию, после подтверждения email.
Ну, и добавить третью версию капчи от гугл, для надежности.