Should a RESTful API return 400 or 404 when passed an invalid id

I would return 404 in case of resource does not exist(means the url path is wrong) and i will return 400 only if the rest call is made with some invalid data (@PathParam) for example
https://api.domain.com/v1/profile/test@email : here i am trying to get profile of email id, but the email itself is wrong, so I will return 400.
https://api.domain.com/v1/profile1111/[email protected] will return 404 because the url path is invalid.


Should be 404 ( Not Found ). 400 is used if you can't fulfill the request due to bad syntax, however for your case, the syntax is correct, however there is no resource foobar.

You can use 400 if user uses non-existent API like below :

https://api.domain.com/v1/nonexistAPI/xyz/xyz

You can also refer to this REST API Design Blog which tell you how to design your REST error codes.

Tags:

Rest

Api