{
  "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"
  }
}

Error model

All errors return non-2xx status codes with a consistent JSON body.
{
  "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"
  }
}
Common HTTP statuses: 400, 401, 403, 404, 409, 422, 429, 500.