Error Format
All errors return a consistent JSON body:errors array with per-field details:
errors[].message reflect the payload: a single-entry list reads
Candidate's phone, while multiple entries read 1st candidate's phone,
2nd candidate's phone, and so on. The path stays machine-readable.
Status Codes
The
message field is safe to display to users. Write your error handling against success and the status code, not against message text — messages may change.