List models
curl --request GET \
--url https://api.lehar.ai/ca/api/v0/catalog/models \
--header 'X-API-KEY: <api-key>'import requests
url = "https://api.lehar.ai/ca/api/v0/catalog/models"
headers = {"X-API-KEY": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-API-KEY': '<api-key>'}};
fetch('https://api.lehar.ai/ca/api/v0/catalog/models', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.lehar.ai/ca/api/v0/catalog/models",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"X-API-KEY: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.lehar.ai/ca/api/v0/catalog/models"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-API-KEY", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.lehar.ai/ca/api/v0/catalog/models")
.header("X-API-KEY", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.lehar.ai/ca/api/v0/catalog/models")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-API-KEY"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"llm": {
"providers": [
{
"provider": "gemini",
"models": [
"gemini-2.5-flash",
"gemini-2.5-flash-lite",
"gemini-3.1-flash-lite",
"gemini-3.5-flash",
"gemini-3.5-flash-lite",
"gemini-3.6-flash",
"gemini-3.1-pro-preview",
"gemma-4-26b-a4b-it",
"gemini-2.5-flash-native-audio-preview-12-2025",
"gemini-3.1-flash-live-preview"
],
"default_model": "gemini-2.5-flash"
},
{
"provider": "groq",
"models": [
"llama-3.1-8b-instant",
"llama-3.3-70b-versatile",
"qwen/qwen3.6-27b"
],
"default_model": "llama-3.1-8b-instant"
},
{
"provider": "livekit",
"models": [
"google/gemma-4-31b-it",
"google/gemini-3.1-flash-lite",
"openai/gpt-5.2-chat-latest",
"xai/grok-4-1-fast-non-reasoning",
"deepseek-ai/deepseek-v3.1"
],
"default_model": "google/gemma-4-31b-it"
},
{
"provider": "openai",
"models": [
"openai/gpt-5.2-chat-latest",
"openai/gpt-5.2",
"openai/gpt-4.1-mini"
],
"default_model": "openai/gpt-5.2-chat-latest"
},
{
"provider": "ollama",
"models": [
"gemma4",
"phi4-mini",
"qwen:8b"
],
"default_model": "gemma4"
},
{
"provider": "sarvam",
"models": [
"sarvam-105b-conversations",
"sarvam-105b",
"gemma4"
],
"default_model": "sarvam-105b-conversations"
}
],
"gemini_voices": [
"Puck",
"Charon",
"Kore",
"Fenrir",
"Aoede",
"Zephyr",
"Leda",
"Orus",
"Autonoe",
"Umbriel",
"Enceladus",
"Algieba",
"Despina",
"Callirrhoe",
"Iapetus",
"Sulafat",
"Vindemiatrix",
"Zubenelgenubi",
"Sadachbia",
"Erinome",
"Gacrux",
"Achernar"
],
"gemini_default_voice": "Kore",
"sarvam_reasoning_efforts": [
{
"value": "low",
"label": "Low — fastest"
},
{
"value": "medium",
"label": "Medium"
},
{
"value": "high",
"label": "High — most thorough"
},
{
"value": "off",
"label": "Off — no thinking"
}
],
"sarvam_default_reasoning_effort": "low"
},
"stt": {
"providers": [
{
"provider": "livekit",
"models": [
"deepgram/nova-3"
],
"default_model": "deepgram/nova-3"
},
{
"provider": "sarvam",
"models": [
"saaras:v3-realtime",
"saaras:v3"
],
"default_model": "saaras:v3-realtime"
},
{
"provider": "whisper",
"models": [
"tiny",
"base",
"medium",
"large-v3-turbo"
],
"default_model": "base"
}
]
},
"tts": {
"providers": [
"livekit",
"sarvam",
"murf",
"elevenlabs",
"edge",
"piper",
"kokoro",
"qwen3"
],
"edge_voices": [
"en-IN-NeerjaNeural",
"en-IN-PrabhatNeural"
],
"murf_voices": [
"en-IN-anisha",
"en-IN-abhinav",
"en-IN-anusha",
"en-IN-nikhil",
"en-IN-pooja",
"en-IN-samar"
],
"murf_styles": [
"Conversational",
"Promo",
"Narration"
],
"elevenlabs_voices": [
{
"value": "LZOmv8tnIt32q9IdMoi9",
"label": "Rhea — Indian customer care (F) · needs paid plan"
},
{
"value": "boCSv5nkmiy5eQ8AUDRR",
"label": "Krish — Indian customer support (M) · needs paid plan"
},
{
"value": "EVsUc9VDoheXQmgm2NpK",
"label": "Aryaman — Indian e-commerce support (M) · needs paid plan"
},
{
"value": "iWNf11sz1GrUE4ppxTOL",
"label": "Viraj — Indian, warm and lively (M) · needs paid plan"
},
{
"value": "2cdvnKJ5TZi631y5PN1s",
"label": "Rahul S — Hindi conversational (M) · needs paid plan"
},
{
"value": "EXAVITQu4vr4xnSDxMaL",
"label": "Sarah — US English, reassuring (F)"
},
{
"value": "cgSgspJ2msm6clMCkdW9",
"label": "Jessica — US English, bright (F)"
},
{
"value": "hpp4J3VqNfWAUOO0d1Us",
"label": "Bella — US English, professional (F)"
},
{
"value": "Xb7hH8MSUJpSbSDYk0k2",
"label": "Alice — UK English, clear (F)"
},
{
"value": "cjVigY5qzO86Huf0OWal",
"label": "Eric — US English, trustworthy (M)"
},
{
"value": "bIHbv24MWmeRgasZH58o",
"label": "Will — US English, relaxed (M)"
},
{
"value": "nPczCjzI2devNBz1zQrb",
"label": "Brian — US English, deep (M)"
},
{
"value": "onwK4e9ZLuTAKqWW03F9",
"label": "Daniel — UK English, broadcaster (M)"
}
],
"elevenlabs_models": [
{
"value": "eleven_flash_v2_5",
"label": "Flash v2.5 (lowest latency)"
},
{
"value": "eleven_turbo_v2_5",
"label": "Turbo v2.5 (balanced)"
},
{
"value": "eleven_multilingual_v2",
"label": "Multilingual v2 (2x cost)"
},
{
"value": "eleven_v3",
"label": "v3 (most expressive, 2x cost)"
}
],
"kokoro_voices": [
"af_heart",
"af_bella",
"af_nicole",
"af_sarah",
"af_sky",
"am_adam",
"am_michael",
"am_echo",
"am_puck",
"hf_alpha",
"hf_beta",
"hm_omega",
"hm_psi"
],
"qwen3_voices": [
"manish",
"shail",
"ojas",
"shruti",
"happy",
"sad"
],
"qwen3_models": [
{
"value": "0.6b",
"label": "0.6B (fast)"
},
{
"value": "1.7b",
"label": "1.7B (quality)"
}
],
"qwen3_languages": [
{
"value": "Auto",
"label": "Auto-detect"
},
{
"value": "English",
"label": "English"
},
{
"value": "Chinese",
"label": "Chinese"
},
{
"value": "Japanese",
"label": "Japanese"
},
{
"value": "Korean",
"label": "Korean"
},
{
"value": "German",
"label": "German"
},
{
"value": "French",
"label": "French"
},
{
"value": "Russian",
"label": "Russian"
},
{
"value": "Portuguese",
"label": "Portuguese"
},
{
"value": "Spanish",
"label": "Spanish"
},
{
"value": "Italian",
"label": "Italian"
}
],
"sarvam_models": [
{
"value": "bulbul:v3",
"label": "Bulbul v3"
},
{
"value": "bulbul:v2",
"label": "Bulbul v2"
}
],
"sarvam_languages": [
{
"value": "en-IN",
"label": "English (en-IN)"
},
{
"value": "hi-IN",
"label": "Hindi (hi-IN)"
},
{
"value": "bn-IN",
"label": "Bengali (bn-IN)"
},
{
"value": "gu-IN",
"label": "Gujarati (gu-IN)"
},
{
"value": "kn-IN",
"label": "Kannada (kn-IN)"
},
{
"value": "ml-IN",
"label": "Malayalam (ml-IN)"
},
{
"value": "mr-IN",
"label": "Marathi (mr-IN)"
},
{
"value": "od-IN",
"label": "Odia (od-IN)"
},
{
"value": "pa-IN",
"label": "Punjabi (pa-IN)"
},
{
"value": "ta-IN",
"label": "Tamil (ta-IN)"
},
{
"value": "te-IN",
"label": "Telugu (te-IN)"
}
],
"sarvam_speakers": [
"shubh",
"ritu",
"rahul",
"pooja",
"simran",
"kavya",
"amit",
"ratan",
"rohan",
"dev",
"ishita",
"shreya",
"manan",
"sumit",
"priya",
"aditya",
"kabir",
"neha",
"varun",
"roopa",
"aayan",
"ashutosh",
"advait",
"amelia",
"sophia"
],
"sarvam_speakers_by_model": {
"bulbul:v2": [
"anushka",
"manisha",
"vidya",
"arya",
"abhilash",
"karun",
"hitesh"
],
"bulbul:v3": [
"shubh",
"ritu",
"rahul",
"pooja",
"simran",
"kavya",
"amit",
"ratan",
"rohan",
"dev",
"ishita",
"shreya",
"manan",
"sumit",
"priya",
"aditya",
"kabir",
"neha",
"varun",
"roopa",
"aayan",
"ashutosh",
"advait",
"amelia",
"sophia"
]
},
"default_voice_by_provider": {
"murf": "en-IN-anisha",
"elevenlabs": "LZOmv8tnIt32q9IdMoi9",
"edge": "en-IN-NeerjaNeural",
"kokoro": "af_heart",
"qwen3": "manish"
},
"default_speaker": "shubh",
"default_speaker_by_model": {
"bulbul:v2": "anushka",
"bulbul:v3": "shubh"
},
"default_model": "bulbul:v3",
"default_elevenlabs_model": "eleven_flash_v2_5",
"pronunciation_dictionary_supported": true,
"pronunciation_dictionary_ipa_providers": [
"murf"
]
},
"whatsapp_llm_models": [
"gemini-2.5-flash",
"gemini-3.5-flash"
],
"whatsapp_llm": {
"providers": [
{
"provider": "gemini",
"models": [
"gemini-2.5-flash",
"gemini-3.5-flash"
],
"default_model": "gemini-2.5-flash"
},
{
"provider": "sarvam",
"models": [
"sarvam-105b-conversations"
],
"default_model": "sarvam-105b-conversations"
}
]
}
}{
"error": {
"code": "unauthorized",
"message": "Authentication required"
}
}{
"error": {
"code": "forbidden",
"message": "Scope 'sessions:read' is required"
}
}{
"error": {
"code": "internal_error",
"message": "An unexpected error occurred"
}
}Catalog
List models
Returns the LLM/STT/TTS provider, model, voice, and speaker reference data that drives the agent-editor dropdowns (plus WhatsApp reply-LLM options). Read-only; readable by anyone who can view agents. Scope sessions:read.
GET
/
catalog
/
models
List models
curl --request GET \
--url https://api.lehar.ai/ca/api/v0/catalog/models \
--header 'X-API-KEY: <api-key>'import requests
url = "https://api.lehar.ai/ca/api/v0/catalog/models"
headers = {"X-API-KEY": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-API-KEY': '<api-key>'}};
fetch('https://api.lehar.ai/ca/api/v0/catalog/models', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.lehar.ai/ca/api/v0/catalog/models",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"X-API-KEY: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.lehar.ai/ca/api/v0/catalog/models"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-API-KEY", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.lehar.ai/ca/api/v0/catalog/models")
.header("X-API-KEY", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.lehar.ai/ca/api/v0/catalog/models")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-API-KEY"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"llm": {
"providers": [
{
"provider": "gemini",
"models": [
"gemini-2.5-flash",
"gemini-2.5-flash-lite",
"gemini-3.1-flash-lite",
"gemini-3.5-flash",
"gemini-3.5-flash-lite",
"gemini-3.6-flash",
"gemini-3.1-pro-preview",
"gemma-4-26b-a4b-it",
"gemini-2.5-flash-native-audio-preview-12-2025",
"gemini-3.1-flash-live-preview"
],
"default_model": "gemini-2.5-flash"
},
{
"provider": "groq",
"models": [
"llama-3.1-8b-instant",
"llama-3.3-70b-versatile",
"qwen/qwen3.6-27b"
],
"default_model": "llama-3.1-8b-instant"
},
{
"provider": "livekit",
"models": [
"google/gemma-4-31b-it",
"google/gemini-3.1-flash-lite",
"openai/gpt-5.2-chat-latest",
"xai/grok-4-1-fast-non-reasoning",
"deepseek-ai/deepseek-v3.1"
],
"default_model": "google/gemma-4-31b-it"
},
{
"provider": "openai",
"models": [
"openai/gpt-5.2-chat-latest",
"openai/gpt-5.2",
"openai/gpt-4.1-mini"
],
"default_model": "openai/gpt-5.2-chat-latest"
},
{
"provider": "ollama",
"models": [
"gemma4",
"phi4-mini",
"qwen:8b"
],
"default_model": "gemma4"
},
{
"provider": "sarvam",
"models": [
"sarvam-105b-conversations",
"sarvam-105b",
"gemma4"
],
"default_model": "sarvam-105b-conversations"
}
],
"gemini_voices": [
"Puck",
"Charon",
"Kore",
"Fenrir",
"Aoede",
"Zephyr",
"Leda",
"Orus",
"Autonoe",
"Umbriel",
"Enceladus",
"Algieba",
"Despina",
"Callirrhoe",
"Iapetus",
"Sulafat",
"Vindemiatrix",
"Zubenelgenubi",
"Sadachbia",
"Erinome",
"Gacrux",
"Achernar"
],
"gemini_default_voice": "Kore",
"sarvam_reasoning_efforts": [
{
"value": "low",
"label": "Low — fastest"
},
{
"value": "medium",
"label": "Medium"
},
{
"value": "high",
"label": "High — most thorough"
},
{
"value": "off",
"label": "Off — no thinking"
}
],
"sarvam_default_reasoning_effort": "low"
},
"stt": {
"providers": [
{
"provider": "livekit",
"models": [
"deepgram/nova-3"
],
"default_model": "deepgram/nova-3"
},
{
"provider": "sarvam",
"models": [
"saaras:v3-realtime",
"saaras:v3"
],
"default_model": "saaras:v3-realtime"
},
{
"provider": "whisper",
"models": [
"tiny",
"base",
"medium",
"large-v3-turbo"
],
"default_model": "base"
}
]
},
"tts": {
"providers": [
"livekit",
"sarvam",
"murf",
"elevenlabs",
"edge",
"piper",
"kokoro",
"qwen3"
],
"edge_voices": [
"en-IN-NeerjaNeural",
"en-IN-PrabhatNeural"
],
"murf_voices": [
"en-IN-anisha",
"en-IN-abhinav",
"en-IN-anusha",
"en-IN-nikhil",
"en-IN-pooja",
"en-IN-samar"
],
"murf_styles": [
"Conversational",
"Promo",
"Narration"
],
"elevenlabs_voices": [
{
"value": "LZOmv8tnIt32q9IdMoi9",
"label": "Rhea — Indian customer care (F) · needs paid plan"
},
{
"value": "boCSv5nkmiy5eQ8AUDRR",
"label": "Krish — Indian customer support (M) · needs paid plan"
},
{
"value": "EVsUc9VDoheXQmgm2NpK",
"label": "Aryaman — Indian e-commerce support (M) · needs paid plan"
},
{
"value": "iWNf11sz1GrUE4ppxTOL",
"label": "Viraj — Indian, warm and lively (M) · needs paid plan"
},
{
"value": "2cdvnKJ5TZi631y5PN1s",
"label": "Rahul S — Hindi conversational (M) · needs paid plan"
},
{
"value": "EXAVITQu4vr4xnSDxMaL",
"label": "Sarah — US English, reassuring (F)"
},
{
"value": "cgSgspJ2msm6clMCkdW9",
"label": "Jessica — US English, bright (F)"
},
{
"value": "hpp4J3VqNfWAUOO0d1Us",
"label": "Bella — US English, professional (F)"
},
{
"value": "Xb7hH8MSUJpSbSDYk0k2",
"label": "Alice — UK English, clear (F)"
},
{
"value": "cjVigY5qzO86Huf0OWal",
"label": "Eric — US English, trustworthy (M)"
},
{
"value": "bIHbv24MWmeRgasZH58o",
"label": "Will — US English, relaxed (M)"
},
{
"value": "nPczCjzI2devNBz1zQrb",
"label": "Brian — US English, deep (M)"
},
{
"value": "onwK4e9ZLuTAKqWW03F9",
"label": "Daniel — UK English, broadcaster (M)"
}
],
"elevenlabs_models": [
{
"value": "eleven_flash_v2_5",
"label": "Flash v2.5 (lowest latency)"
},
{
"value": "eleven_turbo_v2_5",
"label": "Turbo v2.5 (balanced)"
},
{
"value": "eleven_multilingual_v2",
"label": "Multilingual v2 (2x cost)"
},
{
"value": "eleven_v3",
"label": "v3 (most expressive, 2x cost)"
}
],
"kokoro_voices": [
"af_heart",
"af_bella",
"af_nicole",
"af_sarah",
"af_sky",
"am_adam",
"am_michael",
"am_echo",
"am_puck",
"hf_alpha",
"hf_beta",
"hm_omega",
"hm_psi"
],
"qwen3_voices": [
"manish",
"shail",
"ojas",
"shruti",
"happy",
"sad"
],
"qwen3_models": [
{
"value": "0.6b",
"label": "0.6B (fast)"
},
{
"value": "1.7b",
"label": "1.7B (quality)"
}
],
"qwen3_languages": [
{
"value": "Auto",
"label": "Auto-detect"
},
{
"value": "English",
"label": "English"
},
{
"value": "Chinese",
"label": "Chinese"
},
{
"value": "Japanese",
"label": "Japanese"
},
{
"value": "Korean",
"label": "Korean"
},
{
"value": "German",
"label": "German"
},
{
"value": "French",
"label": "French"
},
{
"value": "Russian",
"label": "Russian"
},
{
"value": "Portuguese",
"label": "Portuguese"
},
{
"value": "Spanish",
"label": "Spanish"
},
{
"value": "Italian",
"label": "Italian"
}
],
"sarvam_models": [
{
"value": "bulbul:v3",
"label": "Bulbul v3"
},
{
"value": "bulbul:v2",
"label": "Bulbul v2"
}
],
"sarvam_languages": [
{
"value": "en-IN",
"label": "English (en-IN)"
},
{
"value": "hi-IN",
"label": "Hindi (hi-IN)"
},
{
"value": "bn-IN",
"label": "Bengali (bn-IN)"
},
{
"value": "gu-IN",
"label": "Gujarati (gu-IN)"
},
{
"value": "kn-IN",
"label": "Kannada (kn-IN)"
},
{
"value": "ml-IN",
"label": "Malayalam (ml-IN)"
},
{
"value": "mr-IN",
"label": "Marathi (mr-IN)"
},
{
"value": "od-IN",
"label": "Odia (od-IN)"
},
{
"value": "pa-IN",
"label": "Punjabi (pa-IN)"
},
{
"value": "ta-IN",
"label": "Tamil (ta-IN)"
},
{
"value": "te-IN",
"label": "Telugu (te-IN)"
}
],
"sarvam_speakers": [
"shubh",
"ritu",
"rahul",
"pooja",
"simran",
"kavya",
"amit",
"ratan",
"rohan",
"dev",
"ishita",
"shreya",
"manan",
"sumit",
"priya",
"aditya",
"kabir",
"neha",
"varun",
"roopa",
"aayan",
"ashutosh",
"advait",
"amelia",
"sophia"
],
"sarvam_speakers_by_model": {
"bulbul:v2": [
"anushka",
"manisha",
"vidya",
"arya",
"abhilash",
"karun",
"hitesh"
],
"bulbul:v3": [
"shubh",
"ritu",
"rahul",
"pooja",
"simran",
"kavya",
"amit",
"ratan",
"rohan",
"dev",
"ishita",
"shreya",
"manan",
"sumit",
"priya",
"aditya",
"kabir",
"neha",
"varun",
"roopa",
"aayan",
"ashutosh",
"advait",
"amelia",
"sophia"
]
},
"default_voice_by_provider": {
"murf": "en-IN-anisha",
"elevenlabs": "LZOmv8tnIt32q9IdMoi9",
"edge": "en-IN-NeerjaNeural",
"kokoro": "af_heart",
"qwen3": "manish"
},
"default_speaker": "shubh",
"default_speaker_by_model": {
"bulbul:v2": "anushka",
"bulbul:v3": "shubh"
},
"default_model": "bulbul:v3",
"default_elevenlabs_model": "eleven_flash_v2_5",
"pronunciation_dictionary_supported": true,
"pronunciation_dictionary_ipa_providers": [
"murf"
]
},
"whatsapp_llm_models": [
"gemini-2.5-flash",
"gemini-3.5-flash"
],
"whatsapp_llm": {
"providers": [
{
"provider": "gemini",
"models": [
"gemini-2.5-flash",
"gemini-3.5-flash"
],
"default_model": "gemini-2.5-flash"
},
{
"provider": "sarvam",
"models": [
"sarvam-105b-conversations"
],
"default_model": "sarvam-105b-conversations"
}
]
}
}{
"error": {
"code": "unauthorized",
"message": "Authentication required"
}
}{
"error": {
"code": "forbidden",
"message": "Scope 'sessions:read' is required"
}
}{
"error": {
"code": "internal_error",
"message": "An unexpected error occurred"
}
}
