Every API invents its own error shape, so a client talking to four services has four parsers — and RFC 7807 is a shape somebody has already thought about.
HTTP/1.1 422 Unprocessable Entity
Content-Type: application/problem+json
{
"type": "https://shop.example/errors/validation",
"title": "Your request is not valid.",
"status": 422,
"detail": "The card number failed a checksum.",
"instance": "/orders/91204",
"errors": { "card_number": ["invalid_checksum"] }
}
type is a URI used as an identifier and it does not have to resolve, though making it resolve to documentation is the best part of the whole scheme. Extension members like errors are explicitly permitted, which is what makes it usable for validation. Adopting it costs nothing on a new API and its value is entirely in not having the shape argument again.