Jump to content

Connect SuperML | Leeroopedia MCP: Equip your AI agents with best practices, code verification, and debugging knowledge. Powered by Leeroo — building Organizational Superintelligence. Contact us at founders@leeroo.com.

Implementation:BerriAI Litellm Callback Configs

From Leeroopedia
Knowledge Sources Domains Last Updated
[[1]] Observability, Integration Management 2026-02-15

Overview

Concrete registry for selecting and configuring observability integrations provided by the LiteLLM project's callback_configs.json file.

Description

The callback_configs.json file is a JSON array that serves as the canonical registry of all supported observability and logging integrations in LiteLLM. Each entry describes one integration with its unique identifier, display name, logo asset, whether it supports per-key/team credential scoping, the dynamic parameters it requires or accepts, and a human-readable description.

This registry is consumed by the LiteLLM proxy admin UI to render integration configuration forms, by the proxy server to validate callback settings, and by the AllCallbacks type definition layer to enumerate known callback names.

Usage

Use this registry when:

  • Building or extending the proxy admin UI to display available logging integrations.
  • Validating user-supplied callback configuration against the known set of integrations.
  • Programmatically enumerating which observability backends are available and what credentials they require.
  • Adding a new integration -- append a new JSON object following the established schema.

Code Reference

Source Location

litellm/integrations/callback_configs.json (lines 1-437)

Structure

The file is a JSON array where each element conforms to this schema:

{
  "id": "string",
  "displayName": "string",
  "logo": "string",
  "supports_key_team_logging": true | false,
  "dynamic_params": {
    "param_name": {
      "type": "password" | "text" | "number",
      "ui_name": "string",
      "description": "string",
      "required": true | false
    }
  },
  "description": "string"
}

Import

import json
import importlib.resources

# Typically loaded internally by litellm proxy code
with open("litellm/integrations/callback_configs.json", "r") as f:
    callback_registry = json.load(f)

I/O Contract

Inputs

Field Type Required Description
(file read) JSON file path Yes Path to callback_configs.json

Outputs

Field Type Description
registry List[dict] Array of integration descriptor objects
registry[n].id str Unique integration identifier (e.g., "langfuse", "datadog", "otel")
registry[n].displayName str Human-readable name for UI display
registry[n].supports_key_team_logging bool Whether per-key/team credential overrides are supported
registry[n].dynamic_params Dict[str, ParamDescriptor] Map of parameter names to their type, label, description, and required flag

Usage Examples

Listing All Available Integrations

import json

with open("litellm/integrations/callback_configs.json", "r") as f:
    registry = json.load(f)

for entry in registry:
    print(f"{entry['id']}: {entry['displayName']} - {entry['description']}")
    if entry["supports_key_team_logging"]:
        print("  Supports per-key/team logging")
    for param_name, param_info in entry.get("dynamic_params", {}).items():
        req = "REQUIRED" if param_info.get("required") else "optional"
        print(f"  - {param_name} ({param_info['type']}): {param_info['description']} [{req}]")

Finding Integrations That Support Team-Scoped Logging

import json

with open("litellm/integrations/callback_configs.json", "r") as f:
    registry = json.load(f)

team_capable = [e for e in registry if e.get("supports_key_team_logging")]
# Returns entries like: arize, generic_api, langfuse, langfuse_otel, langsmith, s3
for entry in team_capable:
    print(f"{entry['id']}: {entry['displayName']}")

Extracting Required Parameters for a Specific Integration

import json

with open("litellm/integrations/callback_configs.json", "r") as f:
    registry = json.load(f)

# Find the Datadog entry
datadog = next((e for e in registry if e["id"] == "datadog"), None)
if datadog:
    required_params = {
        k: v for k, v in datadog["dynamic_params"].items() if v.get("required")
    }
    # Returns: {"dd_api_key": {...}, "dd_site": {...}}

Related Pages

Page Connections

Double-click a node to navigate. Hold to expand connections.
Principle
Implementation
Heuristic
Environment