Я не претендую на звание эксперта, но давайте сравним, что спецификация говорит:
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...
Вы захотите прочитать полное описание для 409 , прежде чем принять решение (оно гораздо более длинное), но это, кажется, лучший выбор для данного сценария. В нем говорится, что конфликты, скорее всего, будут иметь место с запросами PUT, но, как я читаю, кажется, что они могут применяться в любое время, когда входная переменная неверна. Это то, что я думаю использовать для RESTful API, который я создаю.