Loading...
Loading...
Access Telnyx LLM inference APIs, embeddings, and AI analytics for call insights and summaries. This skill provides JavaScript SDK examples.
npx skill4agent add team-telnyx/skills telnyx-ai-inference-javascriptnpm install telnyximport Telnyx from 'telnyx';
const client = new Telnyx({
apiKey: process.env['TELNYX_API_KEY'], // This is the default and can be omitted
});clienttry {
const result = await client.messages.send({ to: '+13125550001', from: '+13125550002', text: 'Hello' });
} catch (err) {
if (err instanceof Telnyx.APIConnectionError) {
console.error('Network error — check connectivity and retry');
} else if (err instanceof Telnyx.RateLimitError) {
// 429: rate limited — wait and retry with exponential backoff
const retryAfter = err.headers?.['retry-after'] || 1;
await new Promise(r => setTimeout(r, retryAfter * 1000));
} else if (err instanceof Telnyx.APIError) {
console.error(`API error ${err.status}: ${err.message}`);
if (err.status === 422) {
console.error('Validation error — check required fields and formats');
}
}
}401403404422429for await (const item of result) { ... }POST /ai/audio/transcriptionsconst response = await client.ai.audio.transcribe({ model: 'distil-whisper/distil-large-v2' });
console.log(response.text);durationsegmentstextPOST /ai/chat/completionsmessagesapi_key_refbest_ofearly_stoppingenable_thinkingfrequency_penaltyguided_choiceguided_jsonguided_regexlength_penaltylogprobsmax_tokensmin_pmodelnpresence_penaltyresponse_formatstreamtemperaturetool_choicetoolstop_logprobstop_puse_beam_searchconst response = await client.ai.chat.createCompletion({
messages: [
{ role: 'system', content: 'You are a friendly chatbot.' },
{ role: 'user', content: 'Hello, world!' },
],
});
console.log(response);GET /ai/conversationsconst conversations = await client.ai.conversations.list();
console.log(conversations.data);created_atidlast_message_atmetadatanamePOST /ai/conversationsmetadatanameconst conversation = await client.ai.conversations.create();
console.log(conversation.id);created_atidlast_message_atmetadatanameGET /ai/conversations/insight-groups// Automatically fetches more pages as needed.
for await (const insightTemplateGroup of client.ai.conversations.insightGroups.retrieveInsightGroups()) {
console.log(insightTemplateGroup.id);
}created_atdescriptionidinsightsnamewebhookPOST /ai/conversations/insight-groupsnamedescriptionwebhookconst insightTemplateGroupDetail = await client.ai.conversations.insightGroups.insightGroups({
name: 'my-resource',
});
console.log(insightTemplateGroupDetail.data);created_atdescriptionidinsightsnamewebhookGET /ai/conversations/insight-groups/{group_id}const insightTemplateGroupDetail = await client.ai.conversations.insightGroups.retrieve(
'182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e',
);
console.log(insightTemplateGroupDetail.data);created_atdescriptionidinsightsnamewebhookPUT /ai/conversations/insight-groups/{group_id}descriptionnamewebhookconst insightTemplateGroupDetail = await client.ai.conversations.insightGroups.update(
'182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e',
);
console.log(insightTemplateGroupDetail.data);created_atdescriptionidinsightsnamewebhookDELETE /ai/conversations/insight-groups/{group_id}await client.ai.conversations.insightGroups.delete('182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e');POST /ai/conversations/insight-groups/{group_id}/insights/{insight_id}/assignawait client.ai.conversations.insightGroups.insights.assign(
'182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e',
{ group_id: '182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e' },
);DELETE /ai/conversations/insight-groups/{group_id}/insights/{insight_id}/unassignawait client.ai.conversations.insightGroups.insights.deleteUnassign(
'182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e',
{ group_id: '182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e' },
);GET /ai/conversations/insights// Automatically fetches more pages as needed.
for await (const insightTemplate of client.ai.conversations.insights.list()) {
console.log(insightTemplate.id);
}created_atidinsight_typeinstructionsjson_schemanamewebhookPOST /ai/conversations/insightsinstructionsnamejson_schemawebhookconst insightTemplateDetail = await client.ai.conversations.insights.create({
instructions: 'You are a helpful assistant.',
name: 'my-resource',
});
console.log(insightTemplateDetail.data);created_atidinsight_typeinstructionsjson_schemanamewebhookGET /ai/conversations/insights/{insight_id}const insightTemplateDetail = await client.ai.conversations.insights.retrieve(
'182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e',
);
console.log(insightTemplateDetail.data);created_atidinsight_typeinstructionsjson_schemanamewebhookPUT /ai/conversations/insights/{insight_id}instructionsjson_schemanamewebhookconst insightTemplateDetail = await client.ai.conversations.insights.update(
'182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e',
);
console.log(insightTemplateDetail.data);created_atidinsight_typeinstructionsjson_schemanamewebhookDELETE /ai/conversations/insights/{insight_id}await client.ai.conversations.insights.delete('182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e');GET /ai/conversations/{conversation_id}const conversation = await client.ai.conversations.retrieve('550e8400-e29b-41d4-a716-446655440000');
console.log(conversation.data);created_atidlast_message_atmetadatanamePUT /ai/conversations/{conversation_id}metadataconst conversation = await client.ai.conversations.update('550e8400-e29b-41d4-a716-446655440000');
console.log(conversation.data);created_atidlast_message_atmetadatanameDELETE /ai/conversations/{conversation_id}await client.ai.conversations.delete('550e8400-e29b-41d4-a716-446655440000');GET /ai/conversations/{conversation_id}/conversations-insightsconst response = await client.ai.conversations.retrieveConversationsInsights('550e8400-e29b-41d4-a716-446655440000');
console.log(response.data);conversation_insightscreated_atidstatusPOST /ai/conversations/{conversation_id}/messagerolecontentmetadatanamesent_attool_call_idtool_callstool_choiceawait client.ai.conversations.addMessage('182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e', { role: 'user' });GET /ai/conversations/{conversation_id}/messagesconst messages = await client.ai.conversations.messages.list('550e8400-e29b-41d4-a716-446655440000');
console.log(messages.data);created_atrolesent_attexttool_callsqueuedprocessingfailedsuccesspartial_successqueuedprocessingGET /ai/embeddingsconst embeddings = await client.ai.embeddings.list();
console.log(embeddings.data);bucketcreated_atfinished_atstatustask_idtask_nameuser_idPOST /ai/embeddingsbucket_namedocument_chunk_overlap_sizedocument_chunk_sizeembedding_modelloaderconst embeddingResponse = await client.ai.embeddings.create({ bucket_name: 'bucket_name' });
console.log(embeddingResponse.data);created_atfinished_atstatustask_idtask_nameuser_idGET /ai/embeddings/bucketsconst buckets = await client.ai.embeddings.buckets.list();
console.log(buckets.data);bucketsGET /ai/embeddings/buckets/{bucket_name}const bucket = await client.ai.embeddings.buckets.retrieve('bucket_name');
console.log(bucket.data);created_aterror_reasonfilenamelast_embedded_atstatusupdated_atDELETE /ai/embeddings/buckets/{bucket_name}await client.ai.embeddings.buckets.delete('bucket_name');num_docsdistancePOST /ai/embeddings/similarity-searchbucket_namequerynum_of_docsconst response = await client.ai.embeddings.similaritySearch({
bucket_name: 'bucket_name',
query: 'What is Telnyx?',
});
console.log(response.data);distancedocument_chunkmetadataPOST /ai/embeddings/urlurlbucket_nameconst embeddingResponse = await client.ai.embeddings.url({
bucket_name: 'bucket_name',
url: 'https://example.com/resource',
});
console.log(embeddingResponse.data);created_atfinished_atstatustask_idtask_nameuser_idqueuedprocessingsuccessfailurepartial_successGET /ai/embeddings/{task_id}const embedding = await client.ai.embeddings.retrieve('task_id');
console.log(embedding.data);created_atfinished_atstatustask_idtask_nameGET /ai/fine_tuning/jobsconst jobs = await client.ai.fineTuning.jobs.list();
console.log(jobs.data);created_atfinished_athyperparametersidmodelorganization_idstatustrained_tokenstraining_filePOST /ai/fine_tuning/jobsmodeltraining_filehyperparameterssuffixconst fineTuningJob = await client.ai.fineTuning.jobs.create({
model: 'openai/gpt-4o',
training_file: 'training_file',
});
console.log(fineTuningJob.id);created_atfinished_athyperparametersidmodelorganization_idstatustrained_tokenstraining_filejob_idGET /ai/fine_tuning/jobs/{job_id}const fineTuningJob = await client.ai.fineTuning.jobs.retrieve('job_id');
console.log(fineTuningJob.id);created_atfinished_athyperparametersidmodelorganization_idstatustrained_tokenstraining_filePOST /ai/fine_tuning/jobs/{job_id}/cancelconst fineTuningJob = await client.ai.fineTuning.jobs.cancel('job_id');
console.log(fineTuningJob.id);created_atfinished_athyperparametersidmodelorganization_idstatustrained_tokenstraining_fileid{source}/{model_name}openai/gpt-4mistralai/Mistral-7B-Instruct-v0.1GET /ai/modelsconst response = await client.ai.retrieveModels();
console.log(response.data);createdidobjectowned_byhttps://api.telnyx.com/v2/ai/openaiPOST /ai/openai/embeddingsinputmodeldimensionsencoding_formatuserconst response = await client.ai.openai.embeddings.createEmbeddings({
input: 'The quick brown fox jumps over the lazy dog',
model: 'thenlper/gte-large',
});
console.log(response.data);datamodelobjectusageGET /ai/openai/embeddings/modelsconst response = await client.ai.openai.embeddings.listEmbeddingModels();
console.log(response.data);createdidobjectowned_byPOST /ai/summarizebucketfilenamesystem_promptconst response = await client.ai.summarize({ bucket: 'my-bucket', filename: 'data.csv' });
console.log(response.data);summaryGET /legacy/reporting/batch_detail_records/speech_to_textconst speechToTexts = await client.legacy.reporting.batchDetailRecords.speechToText.list();
console.log(speechToTexts.data);created_atdownload_linkend_dateidrecord_typestart_datestatusPOST /legacy/reporting/batch_detail_records/speech_to_textstart_dateend_dateconst speechToText = await client.legacy.reporting.batchDetailRecords.speechToText.create({
end_date: '2020-07-01T00:00:00-06:00',
start_date: '2020-07-01T00:00:00-06:00',
});
console.log(speechToText.data);created_atdownload_linkend_dateidrecord_typestart_datestatusGET /legacy/reporting/batch_detail_records/speech_to_text/{id}const speechToText = await client.legacy.reporting.batchDetailRecords.speechToText.retrieve(
'182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e',
);
console.log(speechToText.data);created_atdownload_linkend_dateidrecord_typestart_datestatusDELETE /legacy/reporting/batch_detail_records/speech_to_text/{id}const speechToText = await client.legacy.reporting.batchDetailRecords.speechToText.delete(
'182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e',
);
console.log(speechToText.data);created_atdownload_linkend_dateidrecord_typestart_datestatusGET /legacy/reporting/usage_reports/speech_to_textconst response = await client.legacy.reporting.usageReports.retrieveSpeechToText();
console.log(response.data);dataAuthorization: Bearer POST /text-to-speech/speechawsazuredisable_cacheelevenlabslanguageminimaxoutput_typeproviderresemblerimetelnyxtexttext_typevoicevoice_settingsconst response = await client.textToSpeech.generate();
console.log(response.base64_audio);base64_audioproviderGET /text-to-speech/voicesconst response = await client.textToSpeech.listVoices();
console.log(response.voices);voices