BrightshoalDocsOpen console
MenuVoices and models

API reference

Voices and models

Discover the voices and models a provider offers, and the registry of everything an assistant can be configured with.

Get the provider and model registry

GET/api/registry

Static catalog aligned with the supported LiveKit Agents SDK version.

Secret API key. How it works

Returns

200 OK

Response attributes
  • metaRegistryMetarequired

    3 attributes
    • sdk_pinstringrequired

    • engine_defaultstringrequired

    • generated_fromstringrequired

  • capabilitiesRegistryCapabilitiesrequired

    4 attributes
    • llmRegistryCapabilityrequired

      1 attribute
      • providersarray of RegistryProviderrequired

        10 attributes
        • idstringrequired

        • labelstringrequired

        • byok_requiredbooleanrequired

        • inference_servedbooleanrequired

        • enginesarray of stringrequired

        • modelsarray of RegistryModelrequired

          9 attributes
          • idstringrequired

          • labelstring

          • tierstringrequired

            One of recommended standard legacy deprecated eol

          • eol_datestringdate

          • notesstring

          • unsupported_paramsarray of string

          • param_overridesobject

            Per-model refinement of provider params, keyed by param key. An entry also opts the model into a param gated by applies_to_models.

            4 attributes
            • enum_valuesarray of string

            • defaultany

            • minnumber

            • maxnumber

          • doc_urlstringuri

          • verified_atstringdate

        • paramsarray of RegistryParamrequired

          17 attributes
          • keystringrequired

          • typestringrequired

            One of number string text boolean enum string_list number_list object object_list key_value

          • minnumber

          • maxnumber

          • stepnumber

          • integerboolean

          • enum_valuesarray of string

          • enum_labelsobject

          • allow_customboolean

          • advancedboolean

          • defaultany

          • applies_to_modelsarray of string

          • labelstring

          • helpstring

          • fieldsarray of RegistryParam

          • item_minnumber

          • item_maxnumber

        • custom_models_allowedbooleanrequired

        • requires_voice_idboolean

        • voicesarray of RegistryVoice

          3 attributes
          • idstringrequired

          • namestringrequired

          • tagsarray of string

    • sttRegistryCapabilityrequired

      1 attribute
      • providersarray of RegistryProviderrequired

        10 attributes
        • idstringrequired

        • labelstringrequired

        • byok_requiredbooleanrequired

        • inference_servedbooleanrequired

        • enginesarray of stringrequired

        • modelsarray of RegistryModelrequired

          9 attributes
          • idstringrequired

          • labelstring

          • tierstringrequired

            One of recommended standard legacy deprecated eol

          • eol_datestringdate

          • notesstring

          • unsupported_paramsarray of string

          • param_overridesobject

            Per-model refinement of provider params, keyed by param key. An entry also opts the model into a param gated by applies_to_models.

            4 attributes
            • enum_valuesarray of string

            • defaultany

            • minnumber

            • maxnumber

          • doc_urlstringuri

          • verified_atstringdate

        • paramsarray of RegistryParamrequired

          17 attributes
          • keystringrequired

          • typestringrequired

            One of number string text boolean enum string_list number_list object object_list key_value

          • minnumber

          • maxnumber

          • stepnumber

          • integerboolean

          • enum_valuesarray of string

          • enum_labelsobject

          • allow_customboolean

          • advancedboolean

          • defaultany

          • applies_to_modelsarray of string

          • labelstring

          • helpstring

          • fieldsarray of RegistryParam

          • item_minnumber

          • item_maxnumber

        • custom_models_allowedbooleanrequired

        • requires_voice_idboolean

        • voicesarray of RegistryVoice

          3 attributes
          • idstringrequired

          • namestringrequired

          • tagsarray of string

    • ttsRegistryCapabilityrequired

      1 attribute
      • providersarray of RegistryProviderrequired

        10 attributes
        • idstringrequired

        • labelstringrequired

        • byok_requiredbooleanrequired

        • inference_servedbooleanrequired

        • enginesarray of stringrequired

        • modelsarray of RegistryModelrequired

          9 attributes
          • idstringrequired

          • labelstring

          • tierstringrequired

            One of recommended standard legacy deprecated eol

          • eol_datestringdate

          • notesstring

          • unsupported_paramsarray of string

          • param_overridesobject

            Per-model refinement of provider params, keyed by param key. An entry also opts the model into a param gated by applies_to_models.

            4 attributes
            • enum_valuesarray of string

            • defaultany

            • minnumber

            • maxnumber

          • doc_urlstringuri

          • verified_atstringdate

        • paramsarray of RegistryParamrequired

          17 attributes
          • keystringrequired

          • typestringrequired

            One of number string text boolean enum string_list number_list object object_list key_value

          • minnumber

          • maxnumber

          • stepnumber

          • integerboolean

          • enum_valuesarray of string

          • enum_labelsobject

          • allow_customboolean

          • advancedboolean

          • defaultany

          • applies_to_modelsarray of string

          • labelstring

          • helpstring

          • fieldsarray of RegistryParam

          • item_minnumber

          • item_maxnumber

        • custom_models_allowedbooleanrequired

        • requires_voice_idboolean

        • voicesarray of RegistryVoice

          3 attributes
          • idstringrequired

          • namestringrequired

          • tagsarray of string

    • realtimeRegistryCapabilityrequired

      1 attribute
      • providersarray of RegistryProviderrequired

        10 attributes
        • idstringrequired

        • labelstringrequired

        • byok_requiredbooleanrequired

        • inference_servedbooleanrequired

        • enginesarray of stringrequired

        • modelsarray of RegistryModelrequired

          9 attributes
          • idstringrequired

          • labelstring

          • tierstringrequired

            One of recommended standard legacy deprecated eol

          • eol_datestringdate

          • notesstring

          • unsupported_paramsarray of string

          • param_overridesobject

            Per-model refinement of provider params, keyed by param key. An entry also opts the model into a param gated by applies_to_models.

            4 attributes
            • enum_valuesarray of string

            • defaultany

            • minnumber

            • maxnumber

          • doc_urlstringuri

          • verified_atstringdate

        • paramsarray of RegistryParamrequired

          17 attributes
          • keystringrequired

          • typestringrequired

            One of number string text boolean enum string_list number_list object object_list key_value

          • minnumber

          • maxnumber

          • stepnumber

          • integerboolean

          • enum_valuesarray of string

          • enum_labelsobject

          • allow_customboolean

          • advancedboolean

          • defaultany

          • applies_to_modelsarray of string

          • labelstring

          • helpstring

          • fieldsarray of RegistryParam

          • item_minnumber

          • item_maxnumber

        • custom_models_allowedbooleanrequired

        • requires_voice_idboolean

        • voicesarray of RegistryVoice

          3 attributes
          • idstringrequired

          • namestringrequired

          • tagsarray of string

  • 401 Missing, malformed, unknown or revoked API key (unauthorized)
  • 403 Refused, for example a read-only key on a write (read_only_key), a role too low for the route (insufficient_role), or a route that needs a console session
  • 429 Rate limit exceeded (rate_limited). Wait Retry-After seconds. Budgets are per 60-second window: developer API 120 per key and 600 per organization; public chat 30 per IP address, except polling for updates (60 per conversation and IP address) and analytics events (120 per IP address).
GET /api/registry
curl "https://api.myleadsfactory.tech/api/registry" \
  -H "Authorization: Bearer $MLF_API_KEY"
Response 200
{
  "meta": {
    "sdk_pin": "livekit-agents==1.8.6",
    "engine_default": "livekit",
    "generated_from": "conversational-voice-runtimes@931b1f8 (LiveKit, 2026-10-23)"
  },
  "capabilities": {
    "llm": {
      "providers": [
        {
          "id": "id_5f0c2a9e7b1d4c3e8a6f0b2d4c6e8a1f",
          "label": "string",
          "byok_required": true,
          "inference_served": true,
          "engines": [
            "livekit"
          ],
          "models": [
            {}
          ],
          "params": [
            {}
          ],
          "custom_models_allowed": true,
          "requires_voice_id": true,
          "voices": [
            {}
          ]
        }
      ]
    },
    "stt": {
      "providers": [
        {
          "id": "id_5f0c2a9e7b1d4c3e8a6f0b2d4c6e8a1f",
          "label": "string",
          "byok_required": true,
          "inference_served": true,
          "engines": [
            "livekit"
          ],
          "models": [
            {}
          ],
          "params": [
            {}
          ],
          "custom_models_allowed": true,
          "requires_voice_id": true,
          "voices": [
            {}
          ]
        }
      ]
    },
    "tts": {
      "providers": [
        {
          "id": "id_5f0c2a9e7b1d4c3e8a6f0b2d4c6e8a1f",
          "label": "string",
          "byok_required": true,
          "inference_served": true,
          "engines": [
            "livekit"
          ],
          "models": [
            {}
          ],
          "params": [
            {}
          ],
          "custom_models_allowed": true,
          "requires_voice_id": true,
          "voices": [
            {}
          ]
        }
      ]
    },
    "realtime": {
      "providers": [
        {
          "id": "id_5f0c2a9e7b1d4c3e8a6f0b2d4c6e8a1f",
          "label": "string",
          "byok_required": true,
          "inference_served": true,
          "engines": [
            "livekit"
          ],
          "models": [
            {}
          ],
          "params": [
            {}
          ],
          "custom_models_allowed": true,
          "requires_voice_id": true,
          "voices": [
            {}
          ]
        }
      ]
    }
  }
}

Browse a provider's shared voice library

GET/api/tts/{provider}/library

Loads a page from a provider's public voice library using the project's stored credential.

Secret API key. How it works

Path parameters

  • providerstringrequired

Query parameters

  • project_idstring

  • searchstring

  • pageinteger

  • genderstring

  • languagestring

Returns

200 OK

Response attributes
  • providerstringrequired

  • sourcestringrequired

    One of live unavailable

  • voicesarray of LibraryVoicerequired

    8 attributes
    • idstringrequired

    • namestringrequired

    • public_owner_idstringrequired

    • genderstring

    • accentstring

    • languagestring

    • preview_urlstringuri

    • categorystring

  • next_pageintegermin 0

  • live_errorstring

  • 400 Validation error: usually invalid_request, with the failing fields in issues when there are any
  • 401 Missing, malformed, unknown or revoked API key (unauthorized)
  • 404 Not found, or outside what the key can see
  • 429 Rate limit exceeded (rate_limited). Wait Retry-After seconds. Budgets are per 60-second window: developer API 120 per key and 600 per organization; public chat 30 per IP address, except polling for updates (60 per conversation and IP address) and analytics events (120 per IP address).
GET /api/tts/{provider}/library
curl "https://api.myleadsfactory.tech/api/tts/PROVIDER/library" \
  -H "Authorization: Bearer $MLF_API_KEY"
Response 200
{
  "provider": "string",
  "source": "live",
  "voices": [
    {
      "id": "id_5f0c2a9e7b1d4c3e8a6f0b2d4c6e8a1f",
      "name": "Front desk",
      "public_owner_id": "id_5f0c2a9e7b1d4c3e8a6f0b2d4c6e8a1f",
      "gender": "string",
      "accent": "string",
      "language": "en",
      "preview_url": "https://example.com/hook",
      "category": "string"
    }
  ],
  "next_page": 1,
  "live_error": "string"
}

Add a shared voice to the provider account

POST/api/tts/{provider}/library/add

Secret API key, not read-only. How it works

Path parameters

  • providerstringrequired

Query parameters

  • project_idstring

Request body

  • public_owner_idstringrequired

  • voice_idstringrequired

  • namestringrequired

Returns

200 Voice added

Response attributes
  • idstringrequired

  • 400 Validation error: usually invalid_request, with the failing fields in issues when there are any
  • 401 Missing, malformed, unknown or revoked API key (unauthorized)
  • 403 Refused, for example a read-only key on a write (read_only_key), a role too low for the route (insufficient_role), or a route that needs a console session
  • 404 Not found, or outside what the key can see
  • 409 Conflict
  • 429 Rate limit exceeded (rate_limited). Wait Retry-After seconds. Budgets are per 60-second window: developer API 120 per key and 600 per organization; public chat 30 per IP address, except polling for updates (60 per conversation and IP address) and analytics events (120 per IP address).
  • 502 Provider request failed
POST /api/tts/{provider}/library/add
curl -X POST "https://api.myleadsfactory.tech/api/tts/PROVIDER/library/add" \
  -H "Authorization: Bearer $MLF_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "public_owner_id": "id_5f0c2a9e7b1d4c3e8a6f0b2d4c6e8a1f",
  "voice_id": "id_5f0c2a9e7b1d4c3e8a6f0b2d4c6e8a1f",
  "name": "Front desk"
}'
Response 200
{
  "id": "id_5f0c2a9e7b1d4c3e8a6f0b2d4c6e8a1f"
}

Discover provider models

GET/api/tts/{provider}/models

Loads current TTS models, Anthropic models, or Bedrock chat models using tenant credentials or the platform connection.

Secret API key. How it works

Path parameters

  • providerstringrequired

Query parameters

  • project_idstring

Returns

200 OK

Response attributes
  • providerstringrequired

  • sourcestringrequired

    One of live unavailable

  • modelsarray of TtsProviderModelrequired

    6 attributes
    • idstringrequired

    • namestring

    • provider_idstring

      Underlying model company identifier for multi-provider catalogs.

    • provider_namestring

      Underlying model company display name.

    • descriptionstring

    • languagesarray of string

  • live_errorstring

  • 400 Validation error: usually invalid_request, with the failing fields in issues when there are any
  • 401 Missing, malformed, unknown or revoked API key (unauthorized)
  • 404 Not found, or outside what the key can see
  • 429 Rate limit exceeded (rate_limited). Wait Retry-After seconds. Budgets are per 60-second window: developer API 120 per key and 600 per organization; public chat 30 per IP address, except polling for updates (60 per conversation and IP address) and analytics events (120 per IP address).
GET /api/tts/{provider}/models
curl "https://api.myleadsfactory.tech/api/tts/PROVIDER/models" \
  -H "Authorization: Bearer $MLF_API_KEY"
Response 200
{
  "provider": "string",
  "source": "live",
  "models": [
    {
      "id": "id_5f0c2a9e7b1d4c3e8a6f0b2d4c6e8a1f",
      "name": "Front desk",
      "provider_id": "id_5f0c2a9e7b1d4c3e8a6f0b2d4c6e8a1f",
      "provider_name": "string",
      "description": "string",
      "languages": [
        "en"
      ]
    }
  ],
  "live_error": "string"
}

Discover a provider's TTS voices

GET/api/tts/{provider}/voices

Loads the current voice inventory from the provider using the project's stored credential.

Secret API key. How it works

Path parameters

  • providerstringrequired

Query parameters

  • project_idstring

Returns

200 OK

Response attributes
  • providerstringrequired

  • sourcestringrequired

    One of live unavailable

  • voicesarray of ProviderVoicerequired

    8 attributes
    • idstringrequired

    • namestringrequired

    • languagestring

    • genderstring

    • accentstring

    • languagesarray of string

    • modelsarray of string

    • preview_urlstringuri

  • live_errorstring

  • 400 Validation error: usually invalid_request, with the failing fields in issues when there are any
  • 401 Missing, malformed, unknown or revoked API key (unauthorized)
  • 404 Not found, or outside what the key can see
  • 429 Rate limit exceeded (rate_limited). Wait Retry-After seconds. Budgets are per 60-second window: developer API 120 per key and 600 per organization; public chat 30 per IP address, except polling for updates (60 per conversation and IP address) and analytics events (120 per IP address).
GET /api/tts/{provider}/voices
curl "https://api.myleadsfactory.tech/api/tts/PROVIDER/voices" \
  -H "Authorization: Bearer $MLF_API_KEY"
Response 200
{
  "provider": "string",
  "source": "live",
  "voices": [
    {
      "id": "id_5f0c2a9e7b1d4c3e8a6f0b2d4c6e8a1f",
      "name": "Front desk",
      "language": "en",
      "gender": "string",
      "accent": "string",
      "languages": [
        "en"
      ],
      "models": [
        "string"
      ],
      "preview_url": "https://example.com/hook"
    }
  ],
  "live_error": "string"
}