Consistent error payloads and common statuses
{ "error": { "type": "invalid_request_error | authentication_error | rate_limit_error | api_error | idempotency_error | not_found_error | conflict_error", "code": "missing_parameter | invalid_parameter | unauthorized | forbidden | too_many_requests | internal_error | duplicate | resource_not_found", "message": "Human-friendly explanation", "param": "amount", "requestId": "req_abc123" } }
400, 401, 403, 404, 409, 422, 429, 500
Example: 409 idempotency conflict
{ "error": { "type": "idempotency_error", "code": "duplicate", "message": "Conflicting body for the same Idempotency-Key", "requestId": "req_01j7b8abcxyz" } }