Every error response now includes a numeric error_code, and validation failures include a per-field details array.
All 4xx/5xx responses now carry a stable numeric error_code alongside the human-readable error; see GET /v2/error_codes for the full list. Validation errors additionally return a details array pinpointing the offending fields. Several conditions that previously surfaced as a generic 500 (e.g. tracking time against a task the member is not assigned to, a project budget limit, an overlapping work break, deleting an imported time-off request, or an unknown job-site rule id) now return a specific coded 4xx instead. All fields are additive; existing integrations that key off the HTTP status keep working.