My simple definition is usually:
Fail response - when a process failes to complete due to missing parameters
Error response - when a process breaks due to unknown/unexpected reason.
Now, breaking the process flow over bad parameters (e.g. missing mandatory fields) is very easy to do (in java). At any given point you can just throw an exception with a code or a message.
Yet, usually people have the notion that you should use exceptions only in exceptional cases, meaning cases which you do not plan in the algorithm.
What are the cons of planning failed scenarios using exceptions