Implementation:BerriAI Litellm Callback Configs
| 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": {...}}