Исключение - лучший способ справиться с этим.
По определению, если пользователь предоставляет неверные данные, это исключение. Клиентское приложение должно отвечать за обработку исключения и предлагать пользователю повторить ввод при необходимости.
Ваш API (как вы уже указали) должен не знать о клиентском приложении, в том числе о типе приложения, поэтому все, что должен сделать ваш API, это сказать: «Эй, это неверно!» и пусть разработчик клиентского приложения выяснит, как с ним обращаться.
Для простого примера, если вы попробуете следующую строку кода C #:
int myInt = Convert.ToInt32("SSDS");
.NET Framework не пытается повторно запросить пользователя. Это просто вызывает исключение.