Security advisory — Malicious litellm versions 1.82.7 and 1.82.8 were removed from PyPI (potential API key exfiltration). Uninstall them, rotate exposed credentials, and upgrade to a safe release (e.g. 1.82.9+). Run pip show litellm to verify. PyPI · README

Enterprise API Overview

Enterprise exposes three HTTP API surfaces:

Enterprise API Overview

Enterprise exposes three HTTP API surfaces:

CategoryBase URLAuthDoc
Web Portalhttp://localhost:3000JWT Cookie / Bearerweb-portal.md
Admin Consolehttp://localhost:3001Admin Session + RBACadmin-console.md
AI Gatewayhttp://localhost:8088JWT Bearergateway.md
Internal (Gateway only)admin :3001/api/internal/*GATEWAY_INTERNAL_TOKENinternal-api.md

Conventions

Authentication

  • Portal JWT: httpOnly cookie after login/SSO; API routes read claims from session
  • Admin session: separate cookie signed by ADMIN_CONSOLE_SESSION_SECRET
  • Gateway: Authorization: Bearer <portal_jwt>, public key AUTH_JWT_PUBLIC_KEY
  • Internal: Authorization: Bearer <GATEWAY_INTERNAL_TOKEN>

Error format

Next.js APIs typically return:

json
1{ "error": "error_code", "message": "human readable" }

Gateway business errors use 9xxxx series (policy block, quota exceeded, etc.), distinct from upstream OpenAI errors.

Multi-tenancy

Most write operations bind implicitly to JWT tenant_id. Internal API returns single-tenant or full config depending on store implementation.


Route counts

AppPage routesAPI routes
web-portal314
admin-console1549+
gateway—4

OpenAI-compatible surface

Front-office chat ultimately hits Gateway:

1POST /v1/chat/completions # includes SSE stream
2POST /v1/embeddings
3GET /healthz
4GET /internal/channel-stats # requires internal token

Portal does not expose OpenAI API directly; /api/chat/completions proxies and injects audit headers.


Related docs