BerriAI/litellm · error · ValueError
No valid endpoint found for Arize, please set 'ARIZE_ENDPOIN
Error message
No valid endpoint found for Arize, please set 'ARIZE_ENDPOINT' to your GRPC endpoint or 'ARIZE_HTTP_ENDPOINT' to your HTTP endpoint
What it means
When initializing the 'arize' callback, LiteLLM reads ArizeLogger.get_arize_config(); if neither ARIZE_ENDPOINT (gRPC) nor ARIZE_HTTP_ENDPOINT (HTTP) resolves to a non-None endpoint, it raises this ValueError. Arize needs both credentials (ARIZE_API_KEY/ARIZE_SPACE_KEY) and an explicit endpoint to build the OpenTelemetry exporter, and the endpoint is the piece you forgot.
Source
Thrown at litellm/litellm_core_utils/litellm_logging.py:3943
for callback in _in_memory_loggers:
if isinstance(callback, OpikLogger):
return callback
_opik_logger: Final = OpikLogger()
_in_memory_loggers.append(_opik_logger)
return _opik_logger
elif logging_integration == "arize":
_v2 = _maybe_construct_otel_v2("arize", _in_memory_loggers)
if _v2 is not None:
return _v2
from litellm.integrations.opentelemetry import (
OpenTelemetry,
OpenTelemetryConfig,
)
arize_config: Final = ArizeLogger.get_arize_config()
if arize_config.endpoint is None:
raise ValueError(
"No valid endpoint found for Arize, please set 'ARIZE_ENDPOINT' to your GRPC endpoint or 'ARIZE_HTTP_ENDPOINT' to your HTTP endpoint"
)
otel_config = OpenTelemetryConfig(
exporter=arize_config.protocol,
endpoint=arize_config.endpoint,
service_name=arize_config.project_name,
)
os.environ["OTEL_EXPORTER_OTLP_TRACES_HEADERS"] = (
f"space_id={arize_config.space_key or arize_config.space_id},api_key={arize_config.api_key}"
)
for callback in _in_memory_loggers:
if isinstance(callback, ArizeLogger) and callback.callback_name == "arize":
return callback
_arize_otel_logger: Final = ArizeLogger(config=otel_config, callback_name="arize")
_in_memory_loggers.append(_arize_otel_logger)
return _arize_otel_logger
elif logging_integration == "arize_phoenix":View on GitHub (pinned to 6c2dcb801b)
Solutions
- Set ARIZE_HTTP_ENDPOINT (e.g. https://otlp.arize.com/phonybroker/otel/v1/traces for the phony broker) or ARIZE_ENDPOINT for gRPC in the proxy environment
- Verify with a quick env check before startup: python -c "import os; print(os.getenv('ARIZE_ENDPOINT'), os.getenv('ARIZE_HTTP_ENDPOINT'))"
- Ensure the vars are actually visible to the proxy process (docker-compose env, systemd Environment=, k8s secret) not just your shell
- If you only wanted Arize-hosted phony-broker tracing, follow the LiteLLM Arize docs for the exact endpoint URL format
Example fix
# before export ARIZE_API_KEY=... ARIZE_SPACE_KEY=... litellm_settings: callbacks: ["arize"] # ValueError: No valid endpoint found # after export ARIZE_API_KEY=... ARIZE_SPACE_KEY=... ARIZE_HTTP_ENDPOINT="https://otlp.arize.com/phonybroker/otel/v1/traces" litellm_settings: callbacks: ["arize"]
Defensive patterns
Strategy: validation
Validate before calling
import os
missing = [v for v in ('ARIZE_API_KEY', 'ARIZE_SPACE_KEY') if not os.getenv(v)]
if not (os.getenv('ARIZE_ENDPOINT') or os.getenv('ARIZE_HTTP_ENDPOINT')):
missing.append('ARIZE_ENDPOINT or ARIZE_HTTP_ENDPOINT')
assert not missing, f'Arize callback misconfigured, missing: {missing}' Try / catch
try:
litellm.callbacks = ['arize']
litellm.completion(...)
except ValueError as e:
if 'No valid endpoint found for Arize' in str(e):
os.environ['ARIZE_HTTP_ENDPOINT'] = 'https://otlp.arize.com/...'
raise RuntimeError('Arize endpoint configured; restart proxy')
raise Prevention
- Document the full required env set per observability callback in your deployment checklist
- Run env-var preflight checks at process start for every enabled callback
- Use a secrets manager template so endpoint vars ship together with API keys
When it happens
Trigger: Setting callbacks: ['arize'] (config.yaml litellm_settings or LITELLM_CALLBACKS env) with ARIZE_API_KEY/ARIZE_SPACE_KEY set but neither ARIZE_ENDPOINT nor ARIZE_HTTP_ENDPOINT present in the proxy process environment.
Common situations: Copying Arize setup docs that only mention API key/space; deploying to a new environment where the endpoint env vars were not carried over; mistyped var names (e.g. ARIZE_ENDPOINT_URL).
Related errors
- ARIZE_API_KEY not found in environment variables
- LOGFIRE_TOKEN not found in environment variables
- LANGTRACE_API_KEY not found in environment variables
- Missing keys={missing_keys} in environment.
- Callback param '{param}' (from {source}) contains an 'os.env
AI-assisted analysis of BerriAI/litellm@6c2dcb801b (2026-08-15).
Data as JSON: /api/errors/40f9a814569b3a69.
Report an issue: GitHub.