Я не претендую быть экспертом, но давайте сравним, что the spec говорит:
400 Bad Request - The request could not be understood by the server due
to malformed syntax....
Таким образом, 400, кажется, конкретных синтаксических ошибок. Вот еще один, который выглядит лучше, когда синтаксис хорош, но значение не является:
409 Conflict - The request could not be completed due to a conflict with
the current state of the resource...
Вы хотите прочитать the full description for 409 до принятия решения (это гораздо более длительный), но это, кажется, лучший выбор для данного сценария. Он говорит, что конфликты, скорее всего, произойдут с запросами PUT, но по мере того, как я их читал, кажется, что он может применяться в любое время, когда входная переменная недействительна. Это то, что я думаю, что буду использовать для RESTful API, который я создаю.