Skip to main content

Configuration

apps/api/app/routers/configuration.py, prefix /api/v1/configuration. The self-describing provider catalogue. Everything here is generated from the registry at runtime, so a newly added provider appears without a code change here. See Provider registry. languages is a comma-separated list of canonical language ids and acts as an AND filter: ?languages=en,hi returns only providers supporting both. Every list and setting response includes authenticated: true when the caller’s organisation has stored credentials for that provider (same source as GET /auth/configured), otherwise false. List entries stay identity-only otherwise (provider, name, provider_type, authenticated). The setting routes return the field catalogue for that provider — enough to render a configuration form and to know which keys config.models.{stt,tts,llm}_config will accept. An unknown provider returns 404; a malformed request returns 400.

STT / TTS setting payload

GET /configuration/{stt|tts}/setting/{provider} includes a top-level capabilities map (secrets stay on auth routes, not here):
  • languages and settings keys are canonical ids from apps/providers/languages.py (hi, en, multi, …) — not vendor-only codes like hi-IN as map keys.
  • languages values are the vendor wire codes (for translating agent config back to the provider API).
  • With ?languages=, capabilities keeps only models that support all selected ids — the same set as fields.model.examples. If no model matches, capabilities is {}.
  • List routes (GET /configuration/stt etc.) stay identity-only (provider, name, provider_type, authenticated); they do not include capabilities.

Languages

apps/api/app/routers/languages.py.

GET /languages

Bearer. Returns the canonical language id → label map that the agent builder’s picker uses:
These ids are what config.language.primary accepts. Which of them a given provider actually supports is a separate question — filter with GET /configuration/stt?languages=.