{"record":{"id":"1200c271211ecbc2","repo":"BerriAI/litellm","slug":"getattr-e-detail-f-authentication-error-e","errorCode":null,"errorMessage":"getattr(e, \"detail\", f\"Authentication Error({e})\")","messagePattern":"getattr\\(e, \"detail\", f\"Authentication Error\\((.+?)\\)\"\\)","errorType":"exception","errorClass":"ProxyException","httpStatus":500,"severity":"error","filePath":"litellm/proxy/management_endpoints/organization_endpoints.py","lineNumber":1258,"sourceCode":"                updated_organization_membership,\n            ) = await add_member_to_organization(\n                member=member,\n                organization_id=data.organization_id,\n                prisma_client=prisma_client,\n            )\n\n            updated_users.append(updated_user)\n            updated_organization_memberships.append(updated_organization_membership)\n\n        return OrganizationAddMemberResponse(\n            organization_id=data.organization_id,\n            updated_users=updated_users,\n            updated_organization_memberships=updated_organization_memberships,\n        )\n    except Exception as e:\n        verbose_proxy_logger.exception(\"Error adding member to organization: %s\", e)\n        if isinstance(e, HTTPException):\n            raise ProxyException(\n                message=getattr(e, \"detail\", f\"Authentication Error({e})\"),\n                type=ProxyErrorTypes.auth_error,\n                param=getattr(e, \"param\", \"None\"),\n                code=getattr(e, \"status_code\", status.HTTP_500_INTERNAL_SERVER_ERROR),\n            )\n        elif isinstance(e, ProxyException):\n            raise e\n        raise ProxyException(\n            message=\"Authentication Error, \" + str(e),\n            type=ProxyErrorTypes.auth_error,\n            param=getattr(e, \"param\", \"None\"),\n            code=status.HTTP_500_INTERNAL_SERVER_ERROR,\n        )\n\n\nasync def find_member_if_email(user_email: str, prisma_client: PrismaClient) -> LiteLLM_UserTable:\n    \"\"\"\n    Find a member if the user_email is in LiteLLM_UserTable","sourceCodeStart":1240,"sourceCodeEnd":1276,"githubUrl":"https://github.com/BerriAI/litellm/blob/77b7c6c40c0c5aa5fbcb1d6a1825ac39ca8829b8/litellm/proxy/management_endpoints/organization_endpoints.py#L1240-L1276","documentation":"This is the catch-all converter in /organization/add_member: when any HTTPException escapes the member-add flow, it is re-wrapped as a ProxyException whose message is the original detail (falling back to 'Authentication Error(...)' when the exception has no detail attribute). It signals a request-level failure such as missing member, bad org, or access denial, surfaced as 500-class auth_error.","triggerScenarios":"Thrown at litellm/proxy/management_endpoints/organization_endpoints.py:1258 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Check the API key/credentials used for the request.","Check proxy server logs for the underlying auth error."],"exampleFix":null,"handlingStrategy":"try-catch","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"77b7c6c40c0c5aa5fbcb1d6a1825ac39ca8829b8","analyzedAt":"2026-08-18T11:44:31.656Z","contentChangedAt":null,"schemaVersion":2},"datasetVersion":"2026-09-14T05:17:10.506Z"}