Programmable Voice AI for Developers
The only fully programmable platform for building voice agents.
Deploy tonight
An unopinionated and programmable platform for building voice agents. Deploy your agent's logic as lightweight functions and easily integrate any third-party tool—from model providers to RAG pipelines and everything in between. Jay handles the infrastructure, while giving you truly unlimited room for customization.
1import os
2from openai import OpenAI
3from jay_ai import GenerateAgentResponse, ConfigureSession, ResponseCompleted, VAD, TTS, STT, AgentConfig
4
5# Configure sessions with your users
6async def configure_session(input: ConfigureSession):
7 return SessionConfig(
8 initial_messages=[],
9 vad=VAD.Silero(),
10 stt=STT.Deepgram(api_key=os.environ["DEEPGRAM_API_KEY"]),
11 tts=TTS.OpenAI(
12 api_key=os.environ["OPENAI_API_KEY"],
13 ),
14 )
15
16# Define how your agent responds
17async def llm_response_handler(input: GenerateAgentResponse):
18 messages = input["messages"]
19 customArguments = input["customArguments"]
20 client = OpenAI(
21 api_key=os.environ.get("OPENAI_API_KEY")
22 )
23
24 # Define proprietary business logic here
25 completion = await client.chat.completions.create(
26 messages=messages,
27 model="gpt-4o",
28 stream=True
29 )
30
31 # Return an OpenAI format response (or any text stream)
32 return completion
33
34# Respond to events
35async def agent_response_completed(input: ResponseCompleted):
36 # Here you might trigger analytics, update your database, or do something else entirely
37 pass
38
39# Configure your agent
40agent = Agent(
41 agent_id="my-agent",
42 configure_session=configure_session,
43 llm_response_handler=llm_response_handler,
44 agent_response_completed=agent_response_completed,
45)
Enhance your agent with custom tools
Effortlessly develop and deploy custom tools for your agent with zero-downtime upgrades and seamless handling of ongoing sessions. Focus on enhancing your agent's capabilities while Jay delivers performance and stability.
1import os
2import requests
3from jay_ai import ToolConfig, Agent
4from typing import Dict, Any
5
6# Define the tool function
7def fetch_weather(city: str) -> Dict[str, Any]:
8 api_key = os.getenv('OPENWEATHERMAP_API_KEY')
9 url = "https://api.openweathermap.org/data/2.5/weather"
10 params = {'q': city, 'appid': api_key, 'units': 'metric'}
11 response = requests.get(url, params=params)
12 response.raise_for_status()
13 return response.json()
14
15# Configure the tool
16weather_tool = ToolConfig(
17 tool_id='weather-fetcher',
18 description='Fetches current weather data for a specified city.',
19 function=fetch_weather,
20)
21
22# Configure your agent
23agent = Agent(
24 agent_id="my-agent",
25 tools: [weather_tool],
26)
Integrate with any application
Easily start calls from your front or backend using your favorite languages and frameworks.
1import React, { useEffect, useState } from "react";
2import {
3 LiveKitRoom,
4 RoomAudioRenderer,
5} from "@livekit/components-react";
6
7export default function MyLiveKitExample() {
8 const [sessionCredentials, setSessionCredentials] = useState({});
9 const [isFetchingSession, setIsFetchingSession] = useState(false);
10
11 useEffect(() => {
12 // Fetch the session credentials from your backend
13 setIsFetchingSession(true);
14 fetch('/api/startSession')
15 .then((res) => res.json())
16 .then((data) => {
17 setSessionCredentials(data)
18 setIsFetchingSession(false);
19 })
20 }, []);
21
22 // Show a loading indicator while we're fetching the session
23 if (isFetchingSession) {
24 return <div>Fetching session...</div>;
25 }
26
27 // Connect to agent using Livekit open source SDKs
28 return (
29 <LiveKitRoom
30 token={sessionCredentials.token}
31 serverUrl={sessionCredentials.url}
32 audio={true}
33 onConnected={() => console.log("Connected!")}
34 onDisconnected={() => {
35 console.log("Disconnected from LiveKit");
36 }}
37 >
38 <div>You are connected to the session!</div>
39 {/* Renders audio for participants in the room */}
40 <RoomAudioRenderer />
41 </LiveKitRoom>
42 );
43}
Made for simplicity, built to scale
A robust serverless platform designed for effortless scalability and reliability. Focus on your agent's logic while we handle the heavy lifting.
Simple Deployments, Effortless Scaling
Deploy and update your agent as lightweight, serverless functions — no self-hosted containers required, but still fully programmable with Python or Javascript. Enjoy zero-downtime updates, automatic scaling, and no infrastructure maintenance.
Modular Event Handlers
Track and respond to any event in the voice chat lifecycle — from the start of a session to LLM responses, user interruptions, and more.
Voice AI with ultra-low latency
Built on scalable, ultra-low latency real-time communications infrastructure, ensuring crisp, responsive voice interactions worldwide.
Ultra-Low Latency
Achieve lightning-fast responses with ~300ms network average.
Global Coverage
Deliver reliable voice experiences to users in any country.
Support for the AI providers you use
Build your agent with native support for popular speech-to-text, text-to-speech, and large language model providers including the OpenAI Realtime API. Don't see your provider here? No worries, our fully programmable platform means you can easily integrate any service you need.
OpenAI
LLMs, TTS, STT
ElevenLabs
Text-to-Speech
Cartesia
Text-to-Speech
Text-to-Speech
Azure
LLMs, TTS, STT

Deepgram
STT, TTS
Meta
Large Language Models
Anthropic
Large Language Models
A developer experience that just works
We built this platform for developers like us — people who want to focus on building their agent, not dealing with servers. With intuitive SDKs, an unopinionated framework, and reliable infrastructure, creating AI voice agents has never been this easy.
Complete Flexibility
Take full control of your agent's behavior by writing custom logic in your favorite backend language. Integrate any third-party tool — from model providers to vector databases and everything in between.
Lightweight Development Environment
Develop faster with an effective local development environment. Hot reloading ensures instant updates to your agent's code, while event triggers let you test real-time event handling easily.
Everything in your control
All the features you need to manage your voice agent, troubleshoot with detailed logging, and reach a global audience.
Logging Visibility
Access detailed logs to debug and optimize every interaction.
Multilingual
Deploy voice agents that speak your users' native language including English, Spanish, German, and dozens more.
Function Calling
Connect your agent to external systems so it can book appointments, fetch data, or anything else.
Simple, transparent pricing
Free Trial
$0
14 days access
- 1000 minute limit
- Ultra-low latency infrastructure
- Programmable agent platform
- End-to-end hosting
Pro Plan
$50 / month
+ $0.01 / minute
- 1000 free minutes per month
- Ultra-low latency infrastructure
- Programmable agent platform
- End-to-end hosting
Enterprise
Custom
as low as $0.001 / minute
- Everything in pro
- Custom volume pricing
- SSO integration
- Custom SLA
All plans include a 14-day free trial. No credit card required.