Every error uses the same envelope as successful responses — only success is false and the error object is populated:
Always branch on error.code (stable, machine-readable) rather than parsing error.message (human-readable, may change). Quote meta.request_id when contacting support.

HTTP status codes

Error codes

VALIDATION_ERROR responses include an extra error.fields array — one entry per invalid parameter with its field, message and type — so you can show precise form errors.