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
/api/registryGet the provider and model registry - GET
/api/tts/{provider}/libraryBrowse a provider's shared voice library - POST
/api/tts/{provider}/library/addAdd a shared voice to the provider account - GET
/api/tts/{provider}/modelsDiscover provider models - GET
/api/tts/{provider}/voicesDiscover a provider's TTS voices
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
metaRegistryMetarequired3 attributes
sdk_pinstringrequiredengine_defaultstringrequiredgenerated_fromstringrequired
capabilitiesRegistryCapabilitiesrequired4 attributes
llmRegistryCapabilityrequired1 attribute
providersarray of RegistryProviderrequired10 attributes
idstringrequiredlabelstringrequiredbyok_requiredbooleanrequiredinference_servedbooleanrequiredenginesarray of stringrequiredmodelsarray of RegistryModelrequired9 attributes
idstringrequiredlabelstringtierstringrequiredOne of
recommendedstandardlegacydeprecatedeoleol_datestringdatenotesstringunsupported_paramsarray of stringparam_overridesobjectPer-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 stringdefaultanyminnumbermaxnumber
doc_urlstringuriverified_atstringdate
paramsarray of RegistryParamrequired17 attributes
keystringrequiredtypestringrequiredOne of
numberstringtextbooleanenumstring_listnumber_listobjectobject_listkey_valueminnumbermaxnumberstepnumberintegerbooleanenum_valuesarray of stringenum_labelsobjectallow_custombooleanadvancedbooleandefaultanyapplies_to_modelsarray of stringlabelstringhelpstringfieldsarray of RegistryParamitem_minnumberitem_maxnumber
custom_models_allowedbooleanrequiredrequires_voice_idbooleanvoicesarray of RegistryVoice3 attributes
idstringrequirednamestringrequiredtagsarray of string
sttRegistryCapabilityrequired1 attribute
providersarray of RegistryProviderrequired10 attributes
idstringrequiredlabelstringrequiredbyok_requiredbooleanrequiredinference_servedbooleanrequiredenginesarray of stringrequiredmodelsarray of RegistryModelrequired9 attributes
idstringrequiredlabelstringtierstringrequiredOne of
recommendedstandardlegacydeprecatedeoleol_datestringdatenotesstringunsupported_paramsarray of stringparam_overridesobjectPer-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 stringdefaultanyminnumbermaxnumber
doc_urlstringuriverified_atstringdate
paramsarray of RegistryParamrequired17 attributes
keystringrequiredtypestringrequiredOne of
numberstringtextbooleanenumstring_listnumber_listobjectobject_listkey_valueminnumbermaxnumberstepnumberintegerbooleanenum_valuesarray of stringenum_labelsobjectallow_custombooleanadvancedbooleandefaultanyapplies_to_modelsarray of stringlabelstringhelpstringfieldsarray of RegistryParamitem_minnumberitem_maxnumber
custom_models_allowedbooleanrequiredrequires_voice_idbooleanvoicesarray of RegistryVoice3 attributes
idstringrequirednamestringrequiredtagsarray of string
ttsRegistryCapabilityrequired1 attribute
providersarray of RegistryProviderrequired10 attributes
idstringrequiredlabelstringrequiredbyok_requiredbooleanrequiredinference_servedbooleanrequiredenginesarray of stringrequiredmodelsarray of RegistryModelrequired9 attributes
idstringrequiredlabelstringtierstringrequiredOne of
recommendedstandardlegacydeprecatedeoleol_datestringdatenotesstringunsupported_paramsarray of stringparam_overridesobjectPer-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 stringdefaultanyminnumbermaxnumber
doc_urlstringuriverified_atstringdate
paramsarray of RegistryParamrequired17 attributes
keystringrequiredtypestringrequiredOne of
numberstringtextbooleanenumstring_listnumber_listobjectobject_listkey_valueminnumbermaxnumberstepnumberintegerbooleanenum_valuesarray of stringenum_labelsobjectallow_custombooleanadvancedbooleandefaultanyapplies_to_modelsarray of stringlabelstringhelpstringfieldsarray of RegistryParamitem_minnumberitem_maxnumber
custom_models_allowedbooleanrequiredrequires_voice_idbooleanvoicesarray of RegistryVoice3 attributes
idstringrequirednamestringrequiredtagsarray of string
realtimeRegistryCapabilityrequired1 attribute
providersarray of RegistryProviderrequired10 attributes
idstringrequiredlabelstringrequiredbyok_requiredbooleanrequiredinference_servedbooleanrequiredenginesarray of stringrequiredmodelsarray of RegistryModelrequired9 attributes
idstringrequiredlabelstringtierstringrequiredOne of
recommendedstandardlegacydeprecatedeoleol_datestringdatenotesstringunsupported_paramsarray of stringparam_overridesobjectPer-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 stringdefaultanyminnumbermaxnumber
doc_urlstringuriverified_atstringdate
paramsarray of RegistryParamrequired17 attributes
keystringrequiredtypestringrequiredOne of
numberstringtextbooleanenumstring_listnumber_listobjectobject_listkey_valueminnumbermaxnumberstepnumberintegerbooleanenum_valuesarray of stringenum_labelsobjectallow_custombooleanadvancedbooleandefaultanyapplies_to_modelsarray of stringlabelstringhelpstringfieldsarray of RegistryParamitem_minnumberitem_maxnumber
custom_models_allowedbooleanrequiredrequires_voice_idbooleanvoicesarray of RegistryVoice3 attributes
idstringrequirednamestringrequiredtagsarray 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). WaitRetry-Afterseconds. 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).
curl "https://api.myleadsfactory.tech/api/registry" \
-H "Authorization: Bearer $MLF_API_KEY"{
"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_idstringsearchstringpageintegergenderstringlanguagestring
Returns
200 OK
Response attributes
providerstringrequiredsourcestringrequiredOne of
liveunavailablevoicesarray of LibraryVoicerequired8 attributes
idstringrequirednamestringrequiredpublic_owner_idstringrequiredgenderstringaccentstringlanguagestringpreview_urlstringuricategorystring
next_pageintegermin 0live_errorstring
- 400 Validation error: usually
invalid_request, with the failing fields inissueswhen 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). WaitRetry-Afterseconds. 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).
curl "https://api.myleadsfactory.tech/api/tts/PROVIDER/library" \
-H "Authorization: Bearer $MLF_API_KEY"{
"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_idstringrequiredvoice_idstringrequirednamestringrequired
Returns
200 Voice added
Response attributes
idstringrequired
- 400 Validation error: usually
invalid_request, with the failing fields inissueswhen 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). WaitRetry-Afterseconds. 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
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"
}'{
"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
providerstringrequiredsourcestringrequiredOne of
liveunavailablemodelsarray of TtsProviderModelrequired6 attributes
idstringrequirednamestringprovider_idstringUnderlying model company identifier for multi-provider catalogs.
provider_namestringUnderlying model company display name.
descriptionstringlanguagesarray of string
live_errorstring
- 400 Validation error: usually
invalid_request, with the failing fields inissueswhen 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). WaitRetry-Afterseconds. 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).
curl "https://api.myleadsfactory.tech/api/tts/PROVIDER/models" \
-H "Authorization: Bearer $MLF_API_KEY"{
"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
providerstringrequiredsourcestringrequiredOne of
liveunavailablevoicesarray of ProviderVoicerequired8 attributes
idstringrequirednamestringrequiredlanguagestringgenderstringaccentstringlanguagesarray of stringmodelsarray of stringpreview_urlstringuri
live_errorstring
- 400 Validation error: usually
invalid_request, with the failing fields inissueswhen 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). WaitRetry-Afterseconds. 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).
curl "https://api.myleadsfactory.tech/api/tts/PROVIDER/voices" \
-H "Authorization: Bearer $MLF_API_KEY"{
"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"
}