api/javascript/telnyx-ai-inference-javascript/SKILL.md
Access Telnyx LLM inference APIs, embeddings, and AI analytics for call insights and summaries. This skill provides JavaScript SDK examples.
npx skillsauth add team-telnyx/telnyx-toolkit telnyx-ai-inference-javascriptInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
npm install telnyx
import Telnyx from 'telnyx';
const client = new Telnyx({
apiKey: process.env['TELNYX_API_KEY'], // This is the default and can be omitted
});
All examples below assume client is already initialized as shown above.
Retrieve a list of all AI conversations configured by the user.
GET /ai/conversations
const conversations = await client.ai.conversations.list();
console.log(conversations.data);
Create a new AI Conversation.
POST /ai/conversations
const conversation = await client.ai.conversations.create();
console.log(conversation.id);
Get all insight groups
GET /ai/conversations/insight-groups
// Automatically fetches more pages as needed.
for await (const insightTemplateGroup of client.ai.conversations.insightGroups.retrieveInsightGroups()) {
console.log(insightTemplateGroup.id);
}
Create a new insight group
POST /ai/conversations/insight-groups — Required: name
const insightTemplateGroupDetail = await client.ai.conversations.insightGroups.insightGroups({
name: 'name',
});
console.log(insightTemplateGroupDetail.data);
Get insight group by ID
GET /ai/conversations/insight-groups/{group_id}
const insightTemplateGroupDetail = await client.ai.conversations.insightGroups.retrieve(
'182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e',
);
console.log(insightTemplateGroupDetail.data);
Update an insight template group
PUT /ai/conversations/insight-groups/{group_id}
const insightTemplateGroupDetail = await client.ai.conversations.insightGroups.update(
'182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e',
);
console.log(insightTemplateGroupDetail.data);
Delete insight group by ID
DELETE /ai/conversations/insight-groups/{group_id}
await client.ai.conversations.insightGroups.delete('182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e');
Assign an insight to a group
POST /ai/conversations/insight-groups/{group_id}/insights/{insight_id}/assign
await client.ai.conversations.insightGroups.insights.assign(
'182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e',
{ group_id: '182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e' },
);
Remove an insight from a group
DELETE /ai/conversations/insight-groups/{group_id}/insights/{insight_id}/unassign
await client.ai.conversations.insightGroups.insights.deleteUnassign(
'182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e',
{ group_id: '182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e' },
);
Get all insights
GET /ai/conversations/insights
// Automatically fetches more pages as needed.
for await (const insightTemplate of client.ai.conversations.insights.list()) {
console.log(insightTemplate.id);
}
Create a new insight
POST /ai/conversations/insights — Required: instructions, name
const insightTemplateDetail = await client.ai.conversations.insights.create({
instructions: 'instructions',
name: 'name',
});
console.log(insightTemplateDetail.data);
Get insight by ID
GET /ai/conversations/insights/{insight_id}
const insightTemplateDetail = await client.ai.conversations.insights.retrieve(
'182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e',
);
console.log(insightTemplateDetail.data);
Update an insight template
PUT /ai/conversations/insights/{insight_id}
const insightTemplateDetail = await client.ai.conversations.insights.update(
'182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e',
);
console.log(insightTemplateDetail.data);
Delete insight by ID
DELETE /ai/conversations/insights/{insight_id}
await client.ai.conversations.insights.delete('182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e');
Retrieve a specific AI conversation by its ID.
GET /ai/conversations/{conversation_id}
const conversation = await client.ai.conversations.retrieve('conversation_id');
console.log(conversation.data);
Update metadata for a specific conversation.
PUT /ai/conversations/{conversation_id}
const conversation = await client.ai.conversations.update('conversation_id');
console.log(conversation.data);
Delete a specific conversation by its ID.
DELETE /ai/conversations/{conversation_id}
await client.ai.conversations.delete('conversation_id');
Retrieve insights for a specific conversation
GET /ai/conversations/{conversation_id}/conversations-insights
const response = await client.ai.conversations.retrieveConversationsInsights('conversation_id');
console.log(response.data);
Add a new message to the conversation.
POST /ai/conversations/{conversation_id}/message — Required: role
await client.ai.conversations.addMessage('182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e', { role: 'role' });
Retrieve messages for a specific conversation, including tool calls made by the assistant.
GET /ai/conversations/{conversation_id}/messages
const messages = await client.ai.conversations.messages.list('conversation_id');
console.log(messages.data);
Retrieve tasks for the user that are either queued, processing, failed, success or partial_success based on the query string.
GET /ai/embeddings
const embeddings = await client.ai.embeddings.list();
console.log(embeddings.data);
Perform embedding on a Telnyx Storage Bucket using an embedding model.
POST /ai/embeddings — Required: bucket_name
const embeddingResponse = await client.ai.embeddings.create({ bucket_name: 'bucket_name' });
console.log(embeddingResponse.data);
Get all embedding buckets for a user.
GET /ai/embeddings/buckets
const buckets = await client.ai.embeddings.buckets.list();
console.log(buckets.data);
Get all embedded files for a given user bucket, including their processing status.
GET /ai/embeddings/buckets/{bucket_name}
const bucket = await client.ai.embeddings.buckets.retrieve('bucket_name');
console.log(bucket.data);
Deletes an entire bucket's embeddings and disables the bucket for AI-use, returning it to normal storage pricing.
DELETE /ai/embeddings/buckets/{bucket_name}
await client.ai.embeddings.buckets.delete('bucket_name');
Perform a similarity search on a Telnyx Storage Bucket, returning the most similar num_docs document chunks to the query.
POST /ai/embeddings/similarity-search — Required: bucket_name, query
const response = await client.ai.embeddings.similaritySearch({
bucket_name: 'bucket_name',
query: 'query',
});
console.log(response.data);
Embed website content from a specified URL, including child pages up to 5 levels deep within the same domain.
POST /ai/embeddings/url — Required: url, bucket_name
const embeddingResponse = await client.ai.embeddings.url({
bucket_name: 'bucket_name',
url: 'url',
});
console.log(embeddingResponse.data);
Check the status of a current embedding task.
GET /ai/embeddings/{task_id}
const embedding = await client.ai.embeddings.retrieve('task_id');
console.log(embedding.data);
GET /ai/clusters
// Automatically fetches more pages as needed.
for await (const clusterListResponse of client.ai.clusters.list()) {
console.log(clusterListResponse.task_id);
}
Starts a background task to compute how the data in an embedded storage bucket is clustered.
POST /ai/clusters — Required: bucket
const response = await client.ai.clusters.compute({ bucket: 'bucket' });
console.log(response.data);
GET /ai/clusters/{task_id}
const cluster = await client.ai.clusters.retrieve('task_id');
console.log(cluster.data);
DELETE /ai/clusters/{task_id}
await client.ai.clusters.delete('task_id');
GET /ai/clusters/{task_id}/graph
const response = await client.ai.clusters.fetchGraph('task_id');
console.log(response);
const content = await response.blob();
console.log(content);
Transcribe speech to text.
POST /ai/audio/transcriptions
const response = await client.ai.audio.transcribe({ model: 'distil-whisper/distil-large-v2' });
console.log(response.text);
Chat with a language model.
POST /ai/chat/completions — Required: messages
const response = await client.ai.chat.createCompletion({
messages: [
{ role: 'system', content: 'You are a friendly chatbot.' },
{ role: 'user', content: 'Hello, world!' },
],
});
console.log(response);
Retrieve a list of all fine tuning jobs created by the user.
GET /ai/fine_tuning/jobs
const jobs = await client.ai.fineTuning.jobs.list();
console.log(jobs.data);
Create a new fine tuning job.
POST /ai/fine_tuning/jobs — Required: model, training_file
const fineTuningJob = await client.ai.fineTuning.jobs.create({
model: 'model',
training_file: 'training_file',
});
console.log(fineTuningJob.id);
Retrieve a fine tuning job by job_id.
GET /ai/fine_tuning/jobs/{job_id}
const fineTuningJob = await client.ai.fineTuning.jobs.retrieve('job_id');
console.log(fineTuningJob.id);
Cancel a fine tuning job.
POST /ai/fine_tuning/jobs/{job_id}/cancel
const fineTuningJob = await client.ai.fineTuning.jobs.cancel('job_id');
console.log(fineTuningJob.id);
This endpoint returns a list of Open Source and OpenAI models that are available for use.
GET /ai/models
const response = await client.ai.retrieveModels();
console.log(response.data);
Generate a summary of a file's contents.
POST /ai/summarize — Required: bucket, filename
const response = await client.ai.summarize({ bucket: 'bucket', filename: 'filename' });
console.log(response.data);
tools
Build cross-platform VoIP calling apps with React Native using Telnyx Voice SDK. High-level reactive API with automatic lifecycle management, CallKit/ConnectionService integration, and push notifications. Use for mobile VoIP apps with minimal setup.
tools
Build browser-based VoIP calling apps using Telnyx WebRTC JavaScript SDK. Covers authentication, voice calls, events, debugging, call quality metrics, and AI Agent integration. Use for web-based real-time communication.
tools
Build VoIP calling apps on iOS using Telnyx WebRTC SDK. Covers authentication, making/receiving calls, CallKit integration, PushKit/APNS push notifications, call quality metrics, and AI Agent integration. Use when implementing real-time voice communication on iOS.
tools
Build cross-platform VoIP calling apps with Flutter using Telnyx WebRTC SDK. Covers authentication, making/receiving calls, push notifications (FCM + APNS), call quality metrics, and AI Agent integration. Works on Android, iOS, and Web.