Your agent can now join a meeting. Transcribe, speak, chat, and get a summary at the end. One API call, one API key.


Every other notetaker assumes a human clicks join. Meeting API assumes an agent calls an endpoint. Same primitives, same API key, extended into the meeting room.

No second auth flow, no second billing relationship. STT, TTS, telephony, and meeting participation run on the Telnyx API key you already have. One account, one invoice, one support thread.

Call quality, latency, transcription, and TTS on the same carrier-grade network. No third-party hops. Consistent performance from session layer to model layer, all behind one API key.
Each primitive is independently useful and composes with the rest of the Telnyx stack.
Live transcription
Stream the meeting transcript to your agent as it happens, with speaker labels and timestamps, through Telnyx STT.
Programmable speech
Your agent can make the bot say anything at any point in the meeting. Text goes through Telnyx TTS and plays into the meeting audio.
Chat injection
Drop messages into the meeting chat on Zoom, Google Meet, and Teams. Webex supports joining and transcription but not chat.
Post-meeting artifacts
When the meeting ends, receive structured summaries and action items generated by Telnyx Inference. summarize_on_end auto-generates a summary from the final transcript.
Webhook-driven lifecycle
Set a webhook_url on session create to receive signed meeting lifecycle events. No polling required, but polling is supported for batch workflows.
Cross-platform support
One API surface for Zoom, Google Meet, Microsoft Teams, and Webex. Same request shape, same response shape, same webhook contract.
Create a session, poll for status, fetch the transcript, and tell the bot to speak.
Create, poll, transcribe, speak
# 1. Create a meeting session
curl -X POST https://api.telnyx.com/v2/meeting_sessions \
-H "Authorization: Bearer $TELNYX_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"meeting_url": "https://meet.google.com/abc-defg-hij",
"bot_name": "Standup Bot",
"summarize_on_end": true
}'
# 2. Poll session status until active
curl https://api.telnyx.com/v2/meeting_sessions/$SESSION_ID \
-H "Authorization: Bearer $TELNYX_API_KEY"
# 3. Fetch the live transcript
curl "https://api.telnyx.com/v2/meeting_sessions/$SESSION_ID/transcript?after=0&limit=100" \
-H "Authorization: Bearer $TELNYX_API_KEY"
# 4. Make the bot speak
curl -X POST https://api.telnyx.com/v2/meeting_sessions/$SESSION_ID/actions/speak \
-H "Authorization: Bearer $TELNYX_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "text": "I have the action items from last week." }'Same flow with requests
import os, time, requests
API = "https://api.telnyx.com/v2"
HEADERS = {"Authorization": f"Bearer {os.environ['TELNYX_API_KEY']}", "Content-Type": "application/json"}
# 1. Create a meeting session
session = requests.post(f"{API}/meeting_sessions", headers=HEADERS, json={"meeting_url": "https://meet.google.com/abc-defg-hij", "bot_name": "Standup Bot", "summarize_on_end": True}).json()["data"]
session_id = session["id"]
# 2. Poll until active
while True:
status = requests.get(f"{API}/meeting_sessions/{session_id}", headers=HEADERS).json()["data"]
if status["status"] == "active": break
time.sleep(5)
# 3. Fetch the transcript
transcript = requests.get(f"{API}/meeting_sessions/{session_id}/transcript?after=0&limit=100", headers=HEADERS).json()["data"]
# 4. Make the bot speak
requests.post(f"{API}/meeting_sessions/{session_id}/actions/speak", headers=HEADERS, json={"text": "I have the action items from last week."})Same flow with fetch
const API = "https://api.telnyx.com/v2";
const headers = {Authorization: `Bearer ${process.env.TELNYX_API_KEY}`, "Content-Type": "application/json"};
// 1. Create a meeting session
const session = await fetch(`${API}/meeting_sessions`, {method: "POST", headers, body: JSON.stringify({meeting_url: "https://meet.google.com/abc-defg-hij", bot_name: "Standup Bot", summarize_on_end: true})}).then(r => r.json());
const sessionId = session.data.id;
// 2. Poll until active
let status;
do {
await new Promise(r => setTimeout(r, 5000));
status = await fetch(`${API}/meeting_sessions/${sessionId}`, {headers}).then(r => r.json());
} while (status.data.status !== "active");
// 3. Fetch the transcript
const transcript = await fetch(`${API}/meeting_sessions/${sessionId}/transcript?after=0&limit=100`, {headers}).then(r => r.json());
// 4. Make the bot speak
await fetch(`${API}/meeting_sessions/${sessionId}/actions/speak`, {method: "POST", headers, body: JSON.stringify({text: "I have the action items from last week."})});
Programmable voice agents for inbound and outbound calls. Same STT, TTS, and orchestration primitives that power Meeting API.

Open-weight and frontier models on edge-deployed GPUs. Per-token pricing with global availability.

Hosted voices from Telnyx and third-party providers. Use the same voice in your meeting bot, your voice agent, and your IVR.

Real-time and batch transcription with multiple model options. Pick the model that fits your latency, accuracy, and cost targets.
One rate covers the bot in the room and live transcription, billed by the minute. Add speech, an AI assistant, or artifacts only when your agent needs them.
$0.65 per hour
Bot presence and live transcription in one rate. The meter runs from the moment the bot starts joining until it leaves, and is billed per minute.
Add what your agent needs
Speech is $0.000003 per character. An AI Assistant is $0.05 per minute plus LLM tokens. Summaries and action items bill at Inference token rates.
Recordings free for 7 days
Recording starts automatically. After 7 days, retention is $0.05 per recording media hour per 30 days, and deleting the recording stops the meter.
Storage, chat, and webhooks are free
Transcript and artifact storage, in-meeting chat, session events, webhooks, and the Calendar API carry no charge.
Sign up, grab your key, and run the cURL example above. Meeting API is in beta.
Sign up, grab your key, and run the cURL example above. Meeting API is in beta.
Meeting API is an API-first agent primitive that lets a developer programmatically add a Telnyx-controlled AI participant to a Zoom, Google Meet, Microsoft Teams, or Webex meeting. The bot transcribes the meeting live, can speak and chat into it, and returns structured summaries and action items when the meeting ends.
Zoom, Google Meet, Microsoft Teams, and Webex. The same API surface works across all four. Webex does not support chat injection, but joining, transcription, and audio output work on all platforms.
Your agent makes API calls: create a session with a meeting URL, poll for status until the bot is active, fetch the transcript, and optionally tell the bot to speak or send a chat message. Webhooks are available for event-driven workflows.
Meeting API is $0.65 per hour of bot time in the meeting. That covers bot presence and live transcription, billed per minute. Speech is billed per character at the Telnyx TTS rate, AI assistants at $0.05 per minute plus LLM tokens, and summaries and action items at Inference token rates. Recordings are retained free for 7 days, then billed at $0.05 per recording media hour per 30 days. Meeting API is in beta.
The bot transcribes through Telnyx STT. Model selection is not currently exposed through the API.
Yes. The bot captures the meeting and recordings are retrievable via the API. Recordings are retained free for 7 days, then billed at $0.05 per media hour per 30 days of retention.
The bot can generate summary and action_items artifacts through Telnyx Inference. summarize_on_end auto-generates a summary once the final transcript settles after the meeting ends.
Set a webhook_url on session create to receive signed meeting lifecycle events. Webhooks are off by default.
Transcripts, events, and artifacts are stored in Telnyx Postgres. Recordings are retrievable through the API.
No. Meeting API is in beta. The API surface and feature set may change before general availability.
A standalone meeting bot API gives you a bot in the meeting and a transcript. Telnyx gives you the bot, the transcript, the speech, the summaries, the search, and the same API key you already use for calls, STT, TTS, and inference. No second vendor, no second contract, no stitching a meeting bot API to a separate transcription provider and a separate LLM for summaries. You also control the bot's voice, when it speaks, what it says, when it interrupts, and how artifacts are generated, all through the same API. Unlike traditional meeting bots that only record and transcribe, you can attach a Telnyx AI Assistant that listens to the meeting, reasons about what's being said, and speaks back in real time.