BerriAI/litellm · error · Exception
POSTHOG_API_KEY is not set, set 'POSTHOG_API_KEY=<>'
Error message
POSTHOG_API_KEY is not set, set 'POSTHOG_API_KEY=<>'
What it means
Error "POSTHOG_API_KEY is not set, set 'POSTHOG_API_KEY=<>'" thrown in BerriAI/litellm.
Source
Thrown at litellm/integrations/posthog.py:55
class PostHogLogger(CustomBatchLogger):
def __init__(self, **kwargs):
"""
Initializes the PostHog logger, checks if the correct env variables are set
Required environment variables:
`POSTHOG_API_KEY` - your PostHog API key
`POSTHOG_API_URL` - your PostHog API URL (defaults to https://app.posthog.com)
"""
try:
verbose_logger.debug("PostHog: in init posthog logger")
self.is_mock_mode = should_use_posthog_mock()
if self.is_mock_mode:
create_mock_posthog_client()
verbose_logger.debug("[POSTHOG MOCK] PostHog logger initialized in mock mode")
if os.getenv("POSTHOG_API_KEY", None) is None:
raise Exception("POSTHOG_API_KEY is not set, set 'POSTHOG_API_KEY=<>'")
self.async_client = get_async_httpx_client(llm_provider=httpxSpecialProvider.LoggingCallback)
self.sync_client = _get_httpx_client()
self.POSTHOG_API_KEY = os.getenv("POSTHOG_API_KEY")
posthog_api_url: Final = os.getenv("POSTHOG_API_URL", "https://us.i.posthog.com")
self.posthog_host = posthog_api_url.rstrip("/")
self.capture_url = f"{self.posthog_host}/batch/"
self._async_initialized = False
self.flush_lock = None
self.log_queue = []
# Register cleanup handler to flush internal queue on exit
atexit.register(self._flush_on_exit)
super().__init__(**kwargs, flush_lock=None, batch_size=POSTHOG_MAX_BATCH_SIZE)
View on GitHub (pinned to 6c2dcb801b)
Solutions
- Set POSTHOG_API_KEY in the environment.
When it happens
Trigger: Thrown at litellm/integrations/posthog.py:55 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of BerriAI/litellm@6c2dcb801b (2026-08-15).
Data as JSON: /api/errors/ac7d710b7a01dac0.
Report an issue: GitHub.