api/java/telnyx-ai-inference-java/SKILL.md
Access Telnyx LLM inference APIs, embeddings, and AI analytics for call insights and summaries. This skill provides Java SDK examples.
npx skillsauth add team-telnyx/telnyx-toolkit telnyx-ai-inference-javaInstall 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.
// See https://github.com/team-telnyx/telnyx-java for Maven/Gradle setup
import com.telnyx.sdk.client.TelnyxClient;
import com.telnyx.sdk.client.okhttp.TelnyxOkHttpClient;
TelnyxClient client = TelnyxOkHttpClient.fromEnv();
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
import com.telnyx.sdk.models.ai.conversations.ConversationListParams;
import com.telnyx.sdk.models.ai.conversations.ConversationListResponse;
ConversationListResponse conversations = client.ai().conversations().list();
Create a new AI Conversation.
POST /ai/conversations
import com.telnyx.sdk.models.ai.conversations.Conversation;
import com.telnyx.sdk.models.ai.conversations.ConversationCreateParams;
Conversation conversation = client.ai().conversations().create();
Get all insight groups
GET /ai/conversations/insight-groups
import com.telnyx.sdk.models.ai.conversations.insightgroups.InsightGroupRetrieveInsightGroupsPage;
import com.telnyx.sdk.models.ai.conversations.insightgroups.InsightGroupRetrieveInsightGroupsParams;
InsightGroupRetrieveInsightGroupsPage page = client.ai().conversations().insightGroups().retrieveInsightGroups();
Create a new insight group
POST /ai/conversations/insight-groups — Required: name
import com.telnyx.sdk.models.ai.conversations.insightgroups.InsightGroupInsightGroupsParams;
import com.telnyx.sdk.models.ai.conversations.insightgroups.InsightTemplateGroupDetail;
InsightGroupInsightGroupsParams params = InsightGroupInsightGroupsParams.builder()
.name("name")
.build();
InsightTemplateGroupDetail insightTemplateGroupDetail = client.ai().conversations().insightGroups().insightGroups(params);
Get insight group by ID
GET /ai/conversations/insight-groups/{group_id}
import com.telnyx.sdk.models.ai.conversations.insightgroups.InsightGroupRetrieveParams;
import com.telnyx.sdk.models.ai.conversations.insightgroups.InsightTemplateGroupDetail;
InsightTemplateGroupDetail insightTemplateGroupDetail = client.ai().conversations().insightGroups().retrieve("182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e");
Update an insight template group
PUT /ai/conversations/insight-groups/{group_id}
import com.telnyx.sdk.models.ai.conversations.insightgroups.InsightGroupUpdateParams;
import com.telnyx.sdk.models.ai.conversations.insightgroups.InsightTemplateGroupDetail;
InsightTemplateGroupDetail insightTemplateGroupDetail = client.ai().conversations().insightGroups().update("182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e");
Delete insight group by ID
DELETE /ai/conversations/insight-groups/{group_id}
import com.telnyx.sdk.models.ai.conversations.insightgroups.InsightGroupDeleteParams;
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
import com.telnyx.sdk.models.ai.conversations.insightgroups.insights.InsightAssignParams;
InsightAssignParams params = InsightAssignParams.builder()
.groupId("182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e")
.insightId("182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e")
.build();
client.ai().conversations().insightGroups().insights().assign(params);
Remove an insight from a group
DELETE /ai/conversations/insight-groups/{group_id}/insights/{insight_id}/unassign
import com.telnyx.sdk.models.ai.conversations.insightgroups.insights.InsightDeleteUnassignParams;
InsightDeleteUnassignParams params = InsightDeleteUnassignParams.builder()
.groupId("182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e")
.insightId("182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e")
.build();
client.ai().conversations().insightGroups().insights().deleteUnassign(params);
Get all insights
GET /ai/conversations/insights
import com.telnyx.sdk.models.ai.conversations.insights.InsightListPage;
import com.telnyx.sdk.models.ai.conversations.insights.InsightListParams;
InsightListPage page = client.ai().conversations().insights().list();
Create a new insight
POST /ai/conversations/insights — Required: instructions, name
import com.telnyx.sdk.models.ai.conversations.insights.InsightCreateParams;
import com.telnyx.sdk.models.ai.conversations.insights.InsightTemplateDetail;
InsightCreateParams params = InsightCreateParams.builder()
.instructions("instructions")
.name("name")
.build();
InsightTemplateDetail insightTemplateDetail = client.ai().conversations().insights().create(params);
Get insight by ID
GET /ai/conversations/insights/{insight_id}
import com.telnyx.sdk.models.ai.conversations.insights.InsightRetrieveParams;
import com.telnyx.sdk.models.ai.conversations.insights.InsightTemplateDetail;
InsightTemplateDetail insightTemplateDetail = client.ai().conversations().insights().retrieve("182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e");
Update an insight template
PUT /ai/conversations/insights/{insight_id}
import com.telnyx.sdk.models.ai.conversations.insights.InsightTemplateDetail;
import com.telnyx.sdk.models.ai.conversations.insights.InsightUpdateParams;
InsightTemplateDetail insightTemplateDetail = client.ai().conversations().insights().update("182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e");
Delete insight by ID
DELETE /ai/conversations/insights/{insight_id}
import com.telnyx.sdk.models.ai.conversations.insights.InsightDeleteParams;
client.ai().conversations().insights().delete("182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e");
Retrieve a specific AI conversation by its ID.
GET /ai/conversations/{conversation_id}
import com.telnyx.sdk.models.ai.conversations.ConversationRetrieveParams;
import com.telnyx.sdk.models.ai.conversations.ConversationRetrieveResponse;
ConversationRetrieveResponse conversation = client.ai().conversations().retrieve("conversation_id");
Update metadata for a specific conversation.
PUT /ai/conversations/{conversation_id}
import com.telnyx.sdk.models.ai.conversations.ConversationUpdateParams;
import com.telnyx.sdk.models.ai.conversations.ConversationUpdateResponse;
ConversationUpdateResponse conversation = client.ai().conversations().update("conversation_id");
Delete a specific conversation by its ID.
DELETE /ai/conversations/{conversation_id}
import com.telnyx.sdk.models.ai.conversations.ConversationDeleteParams;
client.ai().conversations().delete("conversation_id");
Retrieve insights for a specific conversation
GET /ai/conversations/{conversation_id}/conversations-insights
import com.telnyx.sdk.models.ai.conversations.ConversationRetrieveConversationsInsightsParams;
import com.telnyx.sdk.models.ai.conversations.ConversationRetrieveConversationsInsightsResponse;
ConversationRetrieveConversationsInsightsResponse response = client.ai().conversations().retrieveConversationsInsights("conversation_id");
Add a new message to the conversation.
POST /ai/conversations/{conversation_id}/message — Required: role
import com.telnyx.sdk.models.ai.conversations.ConversationAddMessageParams;
ConversationAddMessageParams params = ConversationAddMessageParams.builder()
.conversationId("182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e")
.role("role")
.build();
client.ai().conversations().addMessage(params);
Retrieve messages for a specific conversation, including tool calls made by the assistant.
GET /ai/conversations/{conversation_id}/messages
import com.telnyx.sdk.models.ai.conversations.messages.MessageListParams;
import com.telnyx.sdk.models.ai.conversations.messages.MessageListResponse;
MessageListResponse messages = client.ai().conversations().messages().list("conversation_id");
Retrieve tasks for the user that are either queued, processing, failed, success or partial_success based on the query string.
GET /ai/embeddings
import com.telnyx.sdk.models.ai.embeddings.EmbeddingListParams;
import com.telnyx.sdk.models.ai.embeddings.EmbeddingListResponse;
EmbeddingListResponse embeddings = client.ai().embeddings().list();
Perform embedding on a Telnyx Storage Bucket using an embedding model.
POST /ai/embeddings — Required: bucket_name
import com.telnyx.sdk.models.ai.embeddings.EmbeddingCreateParams;
import com.telnyx.sdk.models.ai.embeddings.EmbeddingResponse;
EmbeddingCreateParams params = EmbeddingCreateParams.builder()
.bucketName("bucket_name")
.build();
EmbeddingResponse embeddingResponse = client.ai().embeddings().create(params);
Get all embedding buckets for a user.
GET /ai/embeddings/buckets
import com.telnyx.sdk.models.ai.embeddings.buckets.BucketListParams;
import com.telnyx.sdk.models.ai.embeddings.buckets.BucketListResponse;
BucketListResponse buckets = client.ai().embeddings().buckets().list();
Get all embedded files for a given user bucket, including their processing status.
GET /ai/embeddings/buckets/{bucket_name}
import com.telnyx.sdk.models.ai.embeddings.buckets.BucketRetrieveParams;
import com.telnyx.sdk.models.ai.embeddings.buckets.BucketRetrieveResponse;
BucketRetrieveResponse bucket = client.ai().embeddings().buckets().retrieve("bucket_name");
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}
import com.telnyx.sdk.models.ai.embeddings.buckets.BucketDeleteParams;
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
import com.telnyx.sdk.models.ai.embeddings.EmbeddingSimilaritySearchParams;
import com.telnyx.sdk.models.ai.embeddings.EmbeddingSimilaritySearchResponse;
EmbeddingSimilaritySearchParams params = EmbeddingSimilaritySearchParams.builder()
.bucketName("bucket_name")
.query("query")
.build();
EmbeddingSimilaritySearchResponse response = client.ai().embeddings().similaritySearch(params);
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
import com.telnyx.sdk.models.ai.embeddings.EmbeddingResponse;
import com.telnyx.sdk.models.ai.embeddings.EmbeddingUrlParams;
EmbeddingUrlParams params = EmbeddingUrlParams.builder()
.bucketName("bucket_name")
.url("url")
.build();
EmbeddingResponse embeddingResponse = client.ai().embeddings().url(params);
Check the status of a current embedding task.
GET /ai/embeddings/{task_id}
import com.telnyx.sdk.models.ai.embeddings.EmbeddingRetrieveParams;
import com.telnyx.sdk.models.ai.embeddings.EmbeddingRetrieveResponse;
EmbeddingRetrieveResponse embedding = client.ai().embeddings().retrieve("task_id");
GET /ai/clusters
import com.telnyx.sdk.models.ai.clusters.ClusterListPage;
import com.telnyx.sdk.models.ai.clusters.ClusterListParams;
ClusterListPage page = client.ai().clusters().list();
Starts a background task to compute how the data in an embedded storage bucket is clustered.
POST /ai/clusters — Required: bucket
import com.telnyx.sdk.models.ai.clusters.ClusterComputeParams;
import com.telnyx.sdk.models.ai.clusters.ClusterComputeResponse;
ClusterComputeParams params = ClusterComputeParams.builder()
.bucket("bucket")
.build();
ClusterComputeResponse response = client.ai().clusters().compute(params);
GET /ai/clusters/{task_id}
import com.telnyx.sdk.models.ai.clusters.ClusterRetrieveParams;
import com.telnyx.sdk.models.ai.clusters.ClusterRetrieveResponse;
ClusterRetrieveResponse cluster = client.ai().clusters().retrieve("task_id");
DELETE /ai/clusters/{task_id}
import com.telnyx.sdk.models.ai.clusters.ClusterDeleteParams;
client.ai().clusters().delete("task_id");
GET /ai/clusters/{task_id}/graph
import com.telnyx.sdk.core.http.HttpResponse;
import com.telnyx.sdk.models.ai.clusters.ClusterFetchGraphParams;
HttpResponse response = client.ai().clusters().fetchGraph("task_id");
Transcribe speech to text.
POST /ai/audio/transcriptions
import com.telnyx.sdk.models.ai.audio.AudioTranscribeParams;
import com.telnyx.sdk.models.ai.audio.AudioTranscribeResponse;
AudioTranscribeParams params = AudioTranscribeParams.builder()
.model(AudioTranscribeParams.Model.DISTIL_WHISPER_DISTIL_LARGE_V2)
.build();
AudioTranscribeResponse response = client.ai().audio().transcribe(params);
Chat with a language model.
POST /ai/chat/completions — Required: messages
import com.telnyx.sdk.models.ai.chat.ChatCreateCompletionParams;
import com.telnyx.sdk.models.ai.chat.ChatCreateCompletionResponse;
ChatCreateCompletionParams params = ChatCreateCompletionParams.builder()
.addMessage(ChatCreateCompletionParams.Message.builder()
.content("You are a friendly chatbot.")
.role(ChatCreateCompletionParams.Message.Role.SYSTEM)
.build())
.addMessage(ChatCreateCompletionParams.Message.builder()
.content("Hello, world!")
.role(ChatCreateCompletionParams.Message.Role.USER)
.build())
.build();
ChatCreateCompletionResponse response = client.ai().chat().createCompletion(params);
Retrieve a list of all fine tuning jobs created by the user.
GET /ai/fine_tuning/jobs
import com.telnyx.sdk.models.ai.finetuning.jobs.JobListParams;
import com.telnyx.sdk.models.ai.finetuning.jobs.JobListResponse;
JobListResponse jobs = client.ai().fineTuning().jobs().list();
Create a new fine tuning job.
POST /ai/fine_tuning/jobs — Required: model, training_file
import com.telnyx.sdk.models.ai.finetuning.jobs.FineTuningJob;
import com.telnyx.sdk.models.ai.finetuning.jobs.JobCreateParams;
JobCreateParams params = JobCreateParams.builder()
.model("model")
.trainingFile("training_file")
.build();
FineTuningJob fineTuningJob = client.ai().fineTuning().jobs().create(params);
Retrieve a fine tuning job by job_id.
GET /ai/fine_tuning/jobs/{job_id}
import com.telnyx.sdk.models.ai.finetuning.jobs.FineTuningJob;
import com.telnyx.sdk.models.ai.finetuning.jobs.JobRetrieveParams;
FineTuningJob fineTuningJob = client.ai().fineTuning().jobs().retrieve("job_id");
Cancel a fine tuning job.
POST /ai/fine_tuning/jobs/{job_id}/cancel
import com.telnyx.sdk.models.ai.finetuning.jobs.FineTuningJob;
import com.telnyx.sdk.models.ai.finetuning.jobs.JobCancelParams;
FineTuningJob fineTuningJob = client.ai().fineTuning().jobs().cancel("job_id");
This endpoint returns a list of Open Source and OpenAI models that are available for use.
GET /ai/models
import com.telnyx.sdk.models.ai.AiRetrieveModelsParams;
import com.telnyx.sdk.models.ai.AiRetrieveModelsResponse;
AiRetrieveModelsResponse response = client.ai().retrieveModels();
Generate a summary of a file's contents.
POST /ai/summarize — Required: bucket, filename
import com.telnyx.sdk.models.ai.AiSummarizeParams;
import com.telnyx.sdk.models.ai.AiSummarizeResponse;
AiSummarizeParams params = AiSummarizeParams.builder()
.bucket("bucket")
.filename("filename")
.build();
AiSummarizeResponse response = client.ai().summarize(params);
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.