telnyx-ai-inference-javascript
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
Chinese<!-- Auto-generated from Telnyx OpenAPI specs. Do not edit. -->
<!-- Auto-generated from Telnyx OpenAPI specs. Do not edit. -->
Telnyx Ai Inference - JavaScript
Telnyx AI 推理 - JavaScript
Installation
安装
bash
npm install telnyxbash
npm install telnyxSetup
配置
javascript
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 is already initialized as shown above.
clientjavascript
import Telnyx from 'telnyx';
const client = new Telnyx({
apiKey: process.env['TELNYX_API_KEY'], // 这是默认配置,可省略
});以下所有示例都默认已经按照上述方式完成初始化。
clientError Handling
错误处理
All API calls can fail with network errors, rate limits (429), validation errors (422),
or authentication errors (401). Always handle errors in production code:
javascript
try {
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');
}
}
}Common error codes: invalid API key, insufficient permissions,
resource not found, validation error (check field formats),
rate limited (retry with exponential backoff).
401403404422429所有API调用都可能失败,原因包括网络错误、速率限制(429)、校验错误(422),或是鉴权错误(401)。生产环境代码中请务必做好错误处理:
javascript
try {
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: 触发速率限制 — 等待后使用指数退避策略重试
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');
}
}
}常见错误码: API密钥无效, 权限不足, 资源不存在, 校验错误(请检查字段格式), 触发速率限制(请使用指数退避策略重试)。
401403404422429Important Notes
重要说明
- Pagination: List methods return an auto-paginating iterator. Use to iterate through all pages automatically.
for await (const item of result) { ... }
- 分页: 列表类方法返回支持自动分页的迭代器,你可以使用自动遍历所有分页数据。
for await (const item of result) { ... }
Transcribe speech to text
语音转文字
Transcribe speech to text. This endpoint is consistent with the OpenAI Transcription API and may be used with the OpenAI JS or Python SDK.
POST /ai/audio/transcriptionsjavascript
const response = await client.ai.audio.transcribe({ model: 'distil-whisper/distil-large-v2' });
console.log(response.text);Returns: (number), (array[object]), (string)
durationsegmentstext将语音转录为文字。该接口与OpenAI Transcription API兼容,可直接搭配OpenAI的JS或Python SDK使用。
POST /ai/audio/transcriptionsjavascript
const response = await client.ai.audio.transcribe({ model: 'distil-whisper/distil-large-v2' });
console.log(response.text);返回参数:(数字)、(对象数组)、(字符串)
durationsegmentstextCreate a chat completion
创建聊天补全
Chat with a language model. This endpoint is consistent with the OpenAI Chat Completions API and may be used with the OpenAI JS or Python SDK.
POST /ai/chat/completionsmessagesOptional: (string), (integer), (boolean), (boolean), (number), (array[string]), (object), (string), (number), (boolean), (integer), (number), (string), (number), (number), (object), (boolean), (number), (enum: none, auto, required), (array[object]), (integer), (number), (boolean)
api_key_refbest_ofearly_stoppingenable_thinkingfrequency_penaltyguided_choiceguided_jsonguided_regexlength_penaltylogprobsmax_tokensmin_pmodelnpresence_penaltyresponse_formatstreamtemperaturetool_choicetoolstop_logprobstop_puse_beam_searchjavascript
const response = await client.ai.chat.createCompletion({
messages: [
{ role: 'system', content: 'You are a friendly chatbot.' },
{ role: 'user', content: 'Hello, world!' },
],
});
console.log(response);与大语言模型对话。该接口与OpenAI Chat Completions API兼容,可直接搭配OpenAI的JS或Python SDK使用。
POST /ai/chat/completionsmessages可选参数:(字符串)、(整数)、(布尔值)、(布尔值)、(数字)、(字符串数组)、(对象)、(字符串)、(数字)、(布尔值)、(整数)、(数字)、(字符串)、(数字)、(数字)、(对象)、(布尔值)、(数字)、(枚举值:none, auto, required)、(对象数组)、(整数)、(数字)、(布尔值)
api_key_refbest_ofearly_stoppingenable_thinkingfrequency_penaltyguided_choiceguided_jsonguided_regexlength_penaltylogprobsmax_tokensmin_pmodelnpresence_penaltyresponse_formatstreamtemperaturetool_choicetoolstop_logprobstop_puse_beam_searchjavascript
const response = await client.ai.chat.createCompletion({
messages: [
{ role: 'system', content: 'You are a friendly chatbot.' },
{ role: 'user', content: 'Hello, world!' },
],
});
console.log(response);List conversations
对话列表查询
Retrieve a list of all AI conversations configured by the user. Supports PostgREST-style query parameters for filtering. Examples are included for the standard metadata fields, but you can filter on any field in the metadata JSON object.
GET /ai/conversationsjavascript
const conversations = await client.ai.conversations.list();
console.log(conversations.data);Returns: (date-time), (uuid), (date-time), (object), (string)
created_atidlast_message_atmetadataname获取用户配置的所有AI对话列表。支持PostgREST风格的查询参数进行过滤,我们提供了标准元数据字段的过滤示例,你也可以对元数据JSON对象中的任意字段进行过滤。
GET /ai/conversationsjavascript
const conversations = await client.ai.conversations.list();
console.log(conversations.data);返回参数:(日期时间)、(uuid)、(日期时间)、(对象)、(字符串)
created_atidlast_message_atmetadatanameCreate a conversation
创建对话
Create a new AI Conversation.
POST /ai/conversationsOptional: (object), (string)
metadatanamejavascript
const conversation = await client.ai.conversations.create();
console.log(conversation.id);Returns: (date-time), (uuid), (date-time), (object), (string)
created_atidlast_message_atmetadataname创建一个新的AI对话。
POST /ai/conversations可选参数:(对象)、(字符串)
metadatanamejavascript
const conversation = await client.ai.conversations.create();
console.log(conversation.id);返回参数:(日期时间)、(uuid)、(日期时间)、(对象)、(字符串)
created_atidlast_message_atmetadatanameGet Insight Template Groups
获取洞察模板分组
Get all insight groups
GET /ai/conversations/insight-groupsjavascript
// Automatically fetches more pages as needed.
for await (const insightTemplateGroup of client.ai.conversations.insightGroups.retrieveInsightGroups()) {
console.log(insightTemplateGroup.id);
}Returns: (date-time), (string), (uuid), (array[object]), (string), (string)
created_atdescriptionidinsightsnamewebhook获取所有洞察分组
GET /ai/conversations/insight-groupsjavascript
// 需要时自动拉取更多分页数据
for await (const insightTemplateGroup of client.ai.conversations.insightGroups.retrieveInsightGroups()) {
console.log(insightTemplateGroup.id);
}返回参数:(日期时间)、(字符串)、(uuid)、(对象数组)、(字符串)、(字符串)
created_atdescriptionidinsightsnamewebhookCreate Insight Template Group
创建洞察模板分组
Create a new insight group
POST /ai/conversations/insight-groupsnameOptional: (string), (string)
descriptionwebhookjavascript
const insightTemplateGroupDetail = await client.ai.conversations.insightGroups.insightGroups({
name: 'my-resource',
});
console.log(insightTemplateGroupDetail.data);Returns: (date-time), (string), (uuid), (array[object]), (string), (string)
created_atdescriptionidinsightsnamewebhook创建一个新的洞察分组
POST /ai/conversations/insight-groupsname可选参数:(字符串)、(字符串)
descriptionwebhookjavascript
const insightTemplateGroupDetail = await client.ai.conversations.insightGroups.insightGroups({
name: 'my-resource',
});
console.log(insightTemplateGroupDetail.data);返回参数:(日期时间)、(字符串)、(uuid)、(对象数组)、(字符串)、(字符串)
created_atdescriptionidinsightsnamewebhookGet Insight Template Group
查询洞察模板分组详情
Get insight group by ID
GET /ai/conversations/insight-groups/{group_id}javascript
const insightTemplateGroupDetail = await client.ai.conversations.insightGroups.retrieve(
'182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e',
);
console.log(insightTemplateGroupDetail.data);Returns: (date-time), (string), (uuid), (array[object]), (string), (string)
created_atdescriptionidinsightsnamewebhook根据ID查询指定洞察分组
GET /ai/conversations/insight-groups/{group_id}javascript
const insightTemplateGroupDetail = await client.ai.conversations.insightGroups.retrieve(
'182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e',
);
console.log(insightTemplateGroupDetail.data);返回参数:(日期时间)、(字符串)、(uuid)、(对象数组)、(字符串)、(字符串)
created_atdescriptionidinsightsnamewebhookUpdate Insight Template Group
更新洞察模板分组
Update an insight template group
PUT /ai/conversations/insight-groups/{group_id}Optional: (string), (string), (string)
descriptionnamewebhookjavascript
const insightTemplateGroupDetail = await client.ai.conversations.insightGroups.update(
'182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e',
);
console.log(insightTemplateGroupDetail.data);Returns: (date-time), (string), (uuid), (array[object]), (string), (string)
created_atdescriptionidinsightsnamewebhook更新指定洞察模板分组
PUT /ai/conversations/insight-groups/{group_id}可选参数:(字符串)、(字符串)、(字符串)
descriptionnamewebhookjavascript
const insightTemplateGroupDetail = await client.ai.conversations.insightGroups.update(
'182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e',
);
console.log(insightTemplateGroupDetail.data);返回参数:(日期时间)、(字符串)、(uuid)、(对象数组)、(字符串)、(字符串)
created_atdescriptionidinsightsnamewebhookDelete Insight Template Group
删除洞察模板分组
Delete insight group by ID
DELETE /ai/conversations/insight-groups/{group_id}javascript
await client.ai.conversations.insightGroups.delete('182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e');根据ID删除指定洞察分组
DELETE /ai/conversations/insight-groups/{group_id}javascript
await client.ai.conversations.insightGroups.delete('182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e');Assign Insight Template To Group
给分组分配洞察模板
Assign an insight to a group
POST /ai/conversations/insight-groups/{group_id}/insights/{insight_id}/assignjavascript
await client.ai.conversations.insightGroups.insights.assign(
'182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e',
{ group_id: '182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e' },
);给指定分组分配洞察模板
POST /ai/conversations/insight-groups/{group_id}/insights/{insight_id}/assignjavascript
await client.ai.conversations.insightGroups.insights.assign(
'182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e',
{ group_id: '182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e' },
);Unassign Insight Template From Group
从分组移除洞察模板
Remove an insight from a group
DELETE /ai/conversations/insight-groups/{group_id}/insights/{insight_id}/unassignjavascript
await client.ai.conversations.insightGroups.insights.deleteUnassign(
'182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e',
{ group_id: '182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e' },
);从指定分组中移除洞察模板
DELETE /ai/conversations/insight-groups/{group_id}/insights/{insight_id}/unassignjavascript
await client.ai.conversations.insightGroups.insights.deleteUnassign(
'182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e',
{ group_id: '182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e' },
);Get Insight Templates
获取洞察模板列表
Get all insights
GET /ai/conversations/insightsjavascript
// Automatically fetches more pages as needed.
for await (const insightTemplate of client.ai.conversations.insights.list()) {
console.log(insightTemplate.id);
}Returns: (date-time), (uuid), (enum: custom, default), (string), (object), (string), (string)
created_atidinsight_typeinstructionsjson_schemanamewebhook获取所有洞察模板
GET /ai/conversations/insightsjavascript
// 需要时自动拉取更多分页数据
for await (const insightTemplate of client.ai.conversations.insights.list()) {
console.log(insightTemplate.id);
}返回参数:(日期时间)、(uuid)、(枚举值:custom, default)、(字符串)、(对象)、(字符串)、(字符串)
created_atidinsight_typeinstructionsjson_schemanamewebhookCreate Insight Template
创建洞察模板
Create a new insight
POST /ai/conversations/insightsinstructionsnameOptional: (object), (string)
json_schemawebhookjavascript
const insightTemplateDetail = await client.ai.conversations.insights.create({
instructions: 'You are a helpful assistant.',
name: 'my-resource',
});
console.log(insightTemplateDetail.data);Returns: (date-time), (uuid), (enum: custom, default), (string), (object), (string), (string)
created_atidinsight_typeinstructionsjson_schemanamewebhook创建一个新的洞察模板
POST /ai/conversations/insightsinstructionsname可选参数:(对象)、(字符串)
json_schemawebhookjavascript
const insightTemplateDetail = await client.ai.conversations.insights.create({
instructions: 'You are a helpful assistant.',
name: 'my-resource',
});
console.log(insightTemplateDetail.data);返回参数:(日期时间)、(uuid)、(枚举值:custom, default)、(字符串)、(对象)、(字符串)、(字符串)
created_atidinsight_typeinstructionsjson_schemanamewebhookGet Insight Template
查询洞察模板详情
Get insight by ID
GET /ai/conversations/insights/{insight_id}javascript
const insightTemplateDetail = await client.ai.conversations.insights.retrieve(
'182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e',
);
console.log(insightTemplateDetail.data);Returns: (date-time), (uuid), (enum: custom, default), (string), (object), (string), (string)
created_atidinsight_typeinstructionsjson_schemanamewebhook根据ID查询指定洞察模板
GET /ai/conversations/insights/{insight_id}javascript
const insightTemplateDetail = await client.ai.conversations.insights.retrieve(
'182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e',
);
console.log(insightTemplateDetail.data);返回参数:(日期时间)、(uuid)、(枚举值:custom, default)、(字符串)、(对象)、(字符串)、(字符串)
created_atidinsight_typeinstructionsjson_schemanamewebhookUpdate Insight Template
更新洞察模板
Update an insight template
PUT /ai/conversations/insights/{insight_id}Optional: (string), (object), (string), (string)
instructionsjson_schemanamewebhookjavascript
const insightTemplateDetail = await client.ai.conversations.insights.update(
'182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e',
);
console.log(insightTemplateDetail.data);Returns: (date-time), (uuid), (enum: custom, default), (string), (object), (string), (string)
created_atidinsight_typeinstructionsjson_schemanamewebhook更新指定洞察模板
PUT /ai/conversations/insights/{insight_id}可选参数:(字符串)、(对象)、(字符串)、(字符串)
instructionsjson_schemanamewebhookjavascript
const insightTemplateDetail = await client.ai.conversations.insights.update(
'182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e',
);
console.log(insightTemplateDetail.data);返回参数:(日期时间)、(uuid)、(枚举值:custom, default)、(字符串)、(对象)、(字符串)、(字符串)
created_atidinsight_typeinstructionsjson_schemanamewebhookDelete Insight Template
删除洞察模板
Delete insight by ID
DELETE /ai/conversations/insights/{insight_id}javascript
await client.ai.conversations.insights.delete('182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e');根据ID删除指定洞察模板
DELETE /ai/conversations/insights/{insight_id}javascript
await client.ai.conversations.insights.delete('182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e');Get a conversation
查询对话详情
Retrieve a specific AI conversation by its ID.
GET /ai/conversations/{conversation_id}javascript
const conversation = await client.ai.conversations.retrieve('550e8400-e29b-41d4-a716-446655440000');
console.log(conversation.data);Returns: (date-time), (uuid), (date-time), (object), (string)
created_atidlast_message_atmetadataname根据ID查询指定AI对话的详情。
GET /ai/conversations/{conversation_id}javascript
const conversation = await client.ai.conversations.retrieve('550e8400-e29b-41d4-a716-446655440000');
console.log(conversation.data);返回参数:(日期时间)、(uuid)、(日期时间)、(对象)、(字符串)
created_atidlast_message_atmetadatanameUpdate conversation metadata
更新对话元数据
Update metadata for a specific conversation.
PUT /ai/conversations/{conversation_id}Optional: (object)
metadatajavascript
const conversation = await client.ai.conversations.update('550e8400-e29b-41d4-a716-446655440000');
console.log(conversation.data);Returns: (date-time), (uuid), (date-time), (object), (string)
created_atidlast_message_atmetadataname更新指定对话的元数据。
PUT /ai/conversations/{conversation_id}可选参数:(对象)
metadatajavascript
const conversation = await client.ai.conversations.update('550e8400-e29b-41d4-a716-446655440000');
console.log(conversation.data);返回参数:(日期时间)、(uuid)、(日期时间)、(对象)、(字符串)
created_atidlast_message_atmetadatanameDelete a conversation
删除对话
Delete a specific conversation by its ID.
DELETE /ai/conversations/{conversation_id}javascript
await client.ai.conversations.delete('550e8400-e29b-41d4-a716-446655440000');根据ID删除指定对话。
DELETE /ai/conversations/{conversation_id}javascript
await client.ai.conversations.delete('550e8400-e29b-41d4-a716-446655440000');Get insights for a conversation
获取对话洞察
Retrieve insights for a specific conversation
GET /ai/conversations/{conversation_id}/conversations-insightsjavascript
const response = await client.ai.conversations.retrieveConversationsInsights('550e8400-e29b-41d4-a716-446655440000');
console.log(response.data);Returns: (array[object]), (date-time), (string), (enum: pending, in_progress, completed, failed)
conversation_insightscreated_atidstatus获取指定对话的洞察数据
GET /ai/conversations/{conversation_id}/conversations-insightsjavascript
const response = await client.ai.conversations.retrieveConversationsInsights('550e8400-e29b-41d4-a716-446655440000');
console.log(response.data);返回参数:(对象数组)、(日期时间)、(字符串)、(枚举值:pending, in_progress, completed, failed)
conversation_insightscreated_atidstatusCreate Message
创建消息
Add a new message to the conversation. Used to insert a new messages to a conversation manually ( without using chat endpoint )
POST /ai/conversations/{conversation_id}/messageroleOptional: (string), (object), (string), (date-time), (string), (array[object]), (object)
contentmetadatanamesent_attool_call_idtool_callstool_choicejavascript
await client.ai.conversations.addMessage('182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e', { role: 'user' });给对话添加一条新消息,用于手动向对话中插入消息(无需使用聊天接口)
POST /ai/conversations/{conversation_id}/messagerole可选参数:(字符串)、(对象)、(字符串)、(日期时间)、(字符串)、(对象数组)、(对象)
contentmetadatanamesent_attool_call_idtool_callstool_choicejavascript
await client.ai.conversations.addMessage('182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e', { role: 'user' });Get conversation messages
获取对话消息列表
Retrieve messages for a specific conversation, including tool calls made by the assistant.
GET /ai/conversations/{conversation_id}/messagesjavascript
const messages = await client.ai.conversations.messages.list('550e8400-e29b-41d4-a716-446655440000');
console.log(messages.data);Returns: (date-time), (enum: user, assistant, tool), (date-time), (string), (array[object])
created_atrolesent_attexttool_calls获取指定对话的消息列表,包括助手发起的工具调用记录。
GET /ai/conversations/{conversation_id}/messagesjavascript
const messages = await client.ai.conversations.messages.list('550e8400-e29b-41d4-a716-446655440000');
console.log(messages.data);返回参数:(日期时间)、(枚举值:user, assistant, tool)、(日期时间)、(字符串)、(对象数组)
created_atrolesent_attexttool_callsGet Tasks by Status
按状态查询任务
Retrieve tasks for the user that are either , , , or based on the query string. Defaults to and .
queuedprocessingfailedsuccesspartial_successqueuedprocessingGET /ai/embeddingsjavascript
const embeddings = await client.ai.embeddings.list();
console.log(embeddings.data);Returns: (string), (date-time), (date-time), (enum: queued, processing, success, failure, partial_success), (string), (string), (string)
bucketcreated_atfinished_atstatustask_idtask_nameuser_id根据查询字符串获取用户的任务,状态可选项为、、、或,默认返回和状态的任务。
queuedprocessingfailedsuccesspartial_successqueuedprocessingGET /ai/embeddingsjavascript
const embeddings = await client.ai.embeddings.list();
console.log(embeddings.data);返回参数:(字符串)、(日期时间)、(日期时间)、(枚举值:queued, processing, success, failure, partial_success)、(字符串)、(字符串)、(字符串)
bucketcreated_atfinished_atstatustask_idtask_nameuser_idEmbed documents
文档嵌入
Perform embedding on a Telnyx Storage Bucket using an embedding model. The current supported file types are:
- HTML
- txt/unstructured text files
- json
- csv
- audio / video (mp3, mp4, mpeg, mpga, m4a, wav, or webm ) - Max of 100mb file size. Any files not matching the above types will be attempted to be embedded as unstructured text.
POST /ai/embeddingsbucket_nameOptional: (integer), (integer), (object), (object)
document_chunk_overlap_sizedocument_chunk_sizeembedding_modelloaderjavascript
const embeddingResponse = await client.ai.embeddings.create({ bucket_name: 'bucket_name' });
console.log(embeddingResponse.data);Returns: (string), (string | null), (string), (uuid), (string), (uuid)
created_atfinished_atstatustask_idtask_nameuser_id使用嵌入模型对Telnyx存储桶中的文档进行嵌入处理,当前支持的文件类型如下:
- HTML
- txt/非结构化文本文件
- json
- csv
- 音频/视频(mp3、mp4、mpeg、mpga、m4a、wav或webm)- 最大文件大小100MB。所有不符合上述类型的文件将尝试作为非结构化文本进行嵌入处理。
POST /ai/embeddingsbucket_name可选参数:(整数)、(整数)、(对象)、(对象)
document_chunk_overlap_sizedocument_chunk_sizeembedding_modelloaderjavascript
const embeddingResponse = await client.ai.embeddings.create({ bucket_name: 'bucket_name' });
console.log(embeddingResponse.data);返回参数:(字符串)、(字符串 | null)、(字符串)、(uuid)、(字符串)、(uuid)
created_atfinished_atstatustask_idtask_nameuser_idList embedded buckets
查询已嵌入存储桶列表
Get all embedding buckets for a user.
GET /ai/embeddings/bucketsjavascript
const buckets = await client.ai.embeddings.buckets.list();
console.log(buckets.data);Returns: (array[string])
buckets获取用户所有已完成嵌入的存储桶。
GET /ai/embeddings/bucketsjavascript
const buckets = await client.ai.embeddings.buckets.list();
console.log(buckets.data);返回参数:(字符串数组)
bucketsGet file-level embedding statuses for a bucket
查询存储桶下文件的嵌入状态
Get all embedded files for a given user bucket, including their processing status.
GET /ai/embeddings/buckets/{bucket_name}javascript
const bucket = await client.ai.embeddings.buckets.retrieve('bucket_name');
console.log(bucket.data);Returns: (date-time), (string), (string), (date-time), (string), (date-time)
created_aterror_reasonfilenamelast_embedded_atstatusupdated_at获取指定用户存储桶下所有已嵌入文件的处理状态。
GET /ai/embeddings/buckets/{bucket_name}javascript
const bucket = await client.ai.embeddings.buckets.retrieve('bucket_name');
console.log(bucket.data);返回参数:(日期时间)、(字符串)、(字符串)、(日期时间)、(字符串)、(日期时间)
created_aterror_reasonfilenamelast_embedded_atstatusupdated_atDisable AI for an Embedded Bucket
禁用存储桶的AI功能
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}javascript
await client.ai.embeddings.buckets.delete('bucket_name');删除整个存储桶的嵌入数据并禁用该存储桶的AI功能,恢复为普通存储计费标准。
DELETE /ai/embeddings/buckets/{bucket_name}javascript
await client.ai.embeddings.buckets.delete('bucket_name');Search for documents
文档检索
Perform a similarity search on a Telnyx Storage Bucket, returning the most similar document chunks to the query. Currently the only available distance metric is cosine similarity which will return a between 0 and 1. The lower the distance, the more similar the returned document chunks are to the query.
num_docsdistancePOST /ai/embeddings/similarity-searchbucket_namequeryOptional: (integer)
num_of_docsjavascript
const response = await client.ai.embeddings.similaritySearch({
bucket_name: 'bucket_name',
query: 'What is Telnyx?',
});
console.log(response.data);Returns: (number), (string), (object)
distancedocument_chunkmetadata在Telnyx存储桶中执行相似度搜索,返回与查询最相似的个文档块。当前唯一可用的距离度量标准是余弦相似度,返回的值介于0到1之间,值越低表示返回的文档块与查询相似度越高。
num_docsdistancePOST /ai/embeddings/similarity-searchbucket_namequery可选参数:(整数)
num_of_docsjavascript
const response = await client.ai.embeddings.similaritySearch({
bucket_name: 'bucket_name',
query: 'What is Telnyx?',
});
console.log(response.data);返回参数:(数字)、(字符串)、(对象)
distancedocument_chunkmetadataEmbed URL content
URL内容嵌入
Embed website content from a specified URL, including child pages up to 5 levels deep within the same domain. The process crawls and loads content from the main URL and its linked pages into a Telnyx Cloud Storage bucket.
POST /ai/embeddings/urlurlbucket_namejavascript
const embeddingResponse = await client.ai.embeddings.url({
bucket_name: 'bucket_name',
url: 'https://example.com/resource',
});
console.log(embeddingResponse.data);Returns: (string), (string | null), (string), (uuid), (string), (uuid)
created_atfinished_atstatustask_idtask_nameuser_id对指定URL的网站内容进行嵌入处理,包括同域名下最多5级深度的子页面。该流程会爬取主URL及其链接页面的内容,并加载到Telnyx云存储桶中。
POST /ai/embeddings/urlurlbucket_namejavascript
const embeddingResponse = await client.ai.embeddings.url({
bucket_name: 'bucket_name',
url: 'https://example.com/resource',
});
console.log(embeddingResponse.data);返回参数:(字符串)、(字符串 | null)、(字符串)、(uuid)、(字符串)、(uuid)
created_atfinished_atstatustask_idtask_nameuser_idGet an embedding task's status
查询嵌入任务状态
Check the status of a current embedding task. Will be one of the following:
- - Task is waiting to be picked up by a worker
queued - - The embedding task is running
processing - - Task completed successfully and the bucket is embedded
success - - Task failed and no files were embedded successfully
failure - - Some files were embedded successfully, but at least one failed
partial_success
GET /ai/embeddings/{task_id}javascript
const embedding = await client.ai.embeddings.retrieve('task_id');
console.log(embedding.data);Returns: (string), (string), (enum: queued, processing, success, failure, partial_success), (uuid), (string)
created_atfinished_atstatustask_idtask_name查看当前嵌入任务的状态,可能的状态如下:
- - 任务正在等待 worker 处理
queued - - 嵌入任务正在运行中
processing - - 任务执行成功,存储桶已完成嵌入
success - - 任务执行失败,没有文件成功完成嵌入
failure - - 部分文件成功完成嵌入,但至少有一个文件处理失败
partial_success
GET /ai/embeddings/{task_id}javascript
const embedding = await client.ai.embeddings.retrieve('task_id');
console.log(embedding.data);返回参数:(字符串)、(字符串)、(枚举值:queued, processing, success, failure, partial_success)、(uuid)、(字符串)
created_atfinished_atstatustask_idtask_nameList fine tuning jobs
查询微调任务列表
Retrieve a list of all fine tuning jobs created by the user.
GET /ai/fine_tuning/jobsjavascript
const jobs = await client.ai.fineTuning.jobs.list();
console.log(jobs.data);Returns: (integer), (integer | null), (object), (string), (string), (string), (enum: queued, running, succeeded, failed, cancelled), (integer | null), (string)
created_atfinished_athyperparametersidmodelorganization_idstatustrained_tokenstraining_file获取用户创建的所有微调任务列表。
GET /ai/fine_tuning/jobsjavascript
const jobs = await client.ai.fineTuning.jobs.list();
console.log(jobs.data);返回参数:(整数)、(整数 | null)、(对象)、(字符串)、(字符串)、(字符串)、(枚举值:queued, running, succeeded, failed, cancelled)、(整数 | null)、(字符串)
created_atfinished_athyperparametersidmodelorganization_idstatustrained_tokenstraining_fileCreate a fine tuning job
创建微调任务
Create a new fine tuning job.
POST /ai/fine_tuning/jobsmodeltraining_fileOptional: (object), (string)
hyperparameterssuffixjavascript
const fineTuningJob = await client.ai.fineTuning.jobs.create({
model: 'openai/gpt-4o',
training_file: 'training_file',
});
console.log(fineTuningJob.id);Returns: (integer), (integer | null), (object), (string), (string), (string), (enum: queued, running, succeeded, failed, cancelled), (integer | null), (string)
created_atfinished_athyperparametersidmodelorganization_idstatustrained_tokenstraining_file创建一个新的微调任务。
POST /ai/fine_tuning/jobsmodeltraining_file可选参数:(对象)、(字符串)
hyperparameterssuffixjavascript
const fineTuningJob = await client.ai.fineTuning.jobs.create({
model: 'openai/gpt-4o',
training_file: 'training_file',
});
console.log(fineTuningJob.id);返回参数:(整数)、(整数 | null)、(对象)、(字符串)、(字符串)、(字符串)、(枚举值:queued, running, succeeded, failed, cancelled)、(整数 | null)、(字符串)
created_atfinished_athyperparametersidmodelorganization_idstatustrained_tokenstraining_fileGet a fine tuning job
查询微调任务详情
Retrieve a fine tuning job by .
job_idGET /ai/fine_tuning/jobs/{job_id}javascript
const fineTuningJob = await client.ai.fineTuning.jobs.retrieve('job_id');
console.log(fineTuningJob.id);Returns: (integer), (integer | null), (object), (string), (string), (string), (enum: queued, running, succeeded, failed, cancelled), (integer | null), (string)
created_atfinished_athyperparametersidmodelorganization_idstatustrained_tokenstraining_file根据查询指定微调任务。
job_idGET /ai/fine_tuning/jobs/{job_id}javascript
const fineTuningJob = await client.ai.fineTuning.jobs.retrieve('job_id');
console.log(fineTuningJob.id);返回参数:(整数)、(整数 | null)、(对象)、(字符串)、(字符串)、(字符串)、(枚举值:queued, running, succeeded, failed, cancelled)、(整数 | null)、(字符串)
created_atfinished_athyperparametersidmodelorganization_idstatustrained_tokenstraining_fileCancel a fine tuning job
取消微调任务
Cancel a fine tuning job.
POST /ai/fine_tuning/jobs/{job_id}/canceljavascript
const fineTuningJob = await client.ai.fineTuning.jobs.cancel('job_id');
console.log(fineTuningJob.id);Returns: (integer), (integer | null), (object), (string), (string), (string), (enum: queued, running, succeeded, failed, cancelled), (integer | null), (string)
created_atfinished_athyperparametersidmodelorganization_idstatustrained_tokenstraining_file取消指定微调任务。
POST /ai/fine_tuning/jobs/{job_id}/canceljavascript
const fineTuningJob = await client.ai.fineTuning.jobs.cancel('job_id');
console.log(fineTuningJob.id);返回参数:(整数)、(整数 | null)、(对象)、(字符串)、(字符串)、(字符串)、(枚举值:queued, running, succeeded, failed, cancelled)、(整数 | null)、(字符串)
created_atfinished_athyperparametersidmodelorganization_idstatustrained_tokenstraining_fileGet available models
获取可用模型列表
This endpoint returns a list of Open Source and OpenAI models that are available for use. Note: Model 's will be in the form . For example or consistent with HuggingFace naming conventions.
id{source}/{model_name}openai/gpt-4mistralai/Mistral-7B-Instruct-v0.1GET /ai/modelsjavascript
const response = await client.ai.retrieveModels();
console.log(response.data);Returns: (integer), (string), (string), (string)
createdidobjectowned_by该接口返回所有可用的开源模型和OpenAI模型。注意:模型格式为,例如或,与HuggingFace的命名规范一致。
id{source}/{model_name}openai/gpt-4mistralai/Mistral-7B-Instruct-v0.1GET /ai/modelsjavascript
const response = await client.ai.retrieveModels();
console.log(response.data);返回参数:(整数)、(字符串)、(字符串)、(字符串)
createdidobjectowned_byCreate embeddings
创建嵌入向量
Creates an embedding vector representing the input text. This endpoint is compatible with the OpenAI Embeddings API and may be used with the OpenAI JS or Python SDK by setting the base URL to .
https://api.telnyx.com/v2/ai/openaiPOST /ai/openai/embeddingsinputmodelOptional: (integer), (enum: float, base64), (string)
dimensionsencoding_formatuserjavascript
const 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);Returns: (array[object]), (string), (string), (object)
datamodelobjectusage生成表示输入文本的嵌入向量。该接口与OpenAI Embeddings API兼容,将基础URL设置为即可直接搭配OpenAI的JS或Python SDK使用。
https://api.telnyx.com/v2/ai/openaiPOST /ai/openai/embeddingsinputmodel可选参数:(整数)、(枚举值:float, base64)、(字符串)
dimensionsencoding_formatuserjavascript
const 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);返回参数:(对象数组)、(字符串)、(字符串)、(对象)
datamodelobjectusageList embedding models
查询嵌入模型列表
Returns a list of available embedding models. This endpoint is compatible with the OpenAI Models API format.
GET /ai/openai/embeddings/modelsjavascript
const response = await client.ai.openai.embeddings.listEmbeddingModels();
console.log(response.data);Returns: (integer), (string), (string), (string)
createdidobjectowned_by返回所有可用的嵌入模型列表,该接口兼容OpenAI Models API格式。
GET /ai/openai/embeddings/modelsjavascript
const response = await client.ai.openai.embeddings.listEmbeddingModels();
console.log(response.data);返回参数:(整数)、(字符串)、(字符串)、(字符串)
createdidobjectowned_bySummarize file content
文件内容摘要
Generate a summary of a file's contents. Supports the following text formats:
- PDF, HTML, txt, json, csv
Supports the following media formats (billed for both the transcription and summary):
- flac, mp3, mp4, mpeg, mpga, m4a, ogg, wav, or webm
- Up to 100 MB
POST /ai/summarizebucketfilenameOptional: (string)
system_promptjavascript
const response = await client.ai.summarize({ bucket: 'my-bucket', filename: 'data.csv' });
console.log(response.data);Returns: (string)
summary生成文件内容的摘要,支持以下文本格式:
- PDF、HTML、txt、json、csv
支持以下媒体格式(按转录和摘要分别计费):
- flac、mp3、mp4、mpeg、mpga、m4a、ogg、wav、webm
- 最大文件大小100 MB
POST /ai/summarizebucketfilename可选参数:(字符串)
system_promptjavascript
const response = await client.ai.summarize({ bucket: 'my-bucket', filename: 'data.csv' });
console.log(response.data);返回参数:(字符串)
summaryGet all Speech to Text batch report requests
获取所有语音转文字批量报告请求
Retrieves all Speech to Text batch report requests for the authenticated user
GET /legacy/reporting/batch_detail_records/speech_to_textjavascript
const speechToTexts = await client.legacy.reporting.batchDetailRecords.speechToText.list();
console.log(speechToTexts.data);Returns: (date-time), (string), (date-time), (string), (string), (date-time), (enum: PENDING, COMPLETE, FAILED, EXPIRED)
created_atdownload_linkend_dateidrecord_typestart_datestatus获取已认证用户的所有语音转文字批量报告请求
GET /legacy/reporting/batch_detail_records/speech_to_textjavascript
const speechToTexts = await client.legacy.reporting.batchDetailRecords.speechToText.list();
console.log(speechToTexts.data);返回参数:(日期时间)、(字符串)、(日期时间)、(字符串)、(字符串)、(日期时间)、(枚举值:PENDING, COMPLETE, FAILED, EXPIRED)
created_atdownload_linkend_dateidrecord_typestart_datestatusCreate a new Speech to Text batch report request
创建语音转文字批量报告请求
Creates a new Speech to Text batch report request with the specified filters
POST /legacy/reporting/batch_detail_records/speech_to_textstart_dateend_datejavascript
const 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);Returns: (date-time), (string), (date-time), (string), (string), (date-time), (enum: PENDING, COMPLETE, FAILED, EXPIRED)
created_atdownload_linkend_dateidrecord_typestart_datestatus使用指定的筛选条件创建新的语音转文字批量报告请求
POST /legacy/reporting/batch_detail_records/speech_to_textstart_dateend_datejavascript
const 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);返回参数:(日期时间)、(字符串)、(日期时间)、(字符串)、(字符串)、(日期时间)、(枚举值:PENDING, COMPLETE, FAILED, EXPIRED)
created_atdownload_linkend_dateidrecord_typestart_datestatusGet a specific Speech to Text batch report request
查询语音转文字批量报告请求详情
Retrieves a specific Speech to Text batch report request by ID
GET /legacy/reporting/batch_detail_records/speech_to_text/{id}javascript
const speechToText = await client.legacy.reporting.batchDetailRecords.speechToText.retrieve(
'182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e',
);
console.log(speechToText.data);Returns: (date-time), (string), (date-time), (string), (string), (date-time), (enum: PENDING, COMPLETE, FAILED, EXPIRED)
created_atdownload_linkend_dateidrecord_typestart_datestatus根据ID查询指定的语音转文字批量报告请求
GET /legacy/reporting/batch_detail_records/speech_to_text/{id}javascript
const speechToText = await client.legacy.reporting.batchDetailRecords.speechToText.retrieve(
'182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e',
);
console.log(speechToText.data);返回参数:(日期时间)、(字符串)、(日期时间)、(字符串)、(字符串)、(日期时间)、(枚举值:PENDING, COMPLETE, FAILED, EXPIRED)
created_atdownload_linkend_dateidrecord_typestart_datestatusDelete a Speech to Text batch report request
删除语音转文字批量报告请求
Deletes a specific Speech to Text batch report request by ID
DELETE /legacy/reporting/batch_detail_records/speech_to_text/{id}javascript
const speechToText = await client.legacy.reporting.batchDetailRecords.speechToText.delete(
'182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e',
);
console.log(speechToText.data);Returns: (date-time), (string), (date-time), (string), (string), (date-time), (enum: PENDING, COMPLETE, FAILED, EXPIRED)
created_atdownload_linkend_dateidrecord_typestart_datestatus根据ID删除指定的语音转文字批量报告请求
DELETE /legacy/reporting/batch_detail_records/speech_to_text/{id}javascript
const speechToText = await client.legacy.reporting.batchDetailRecords.speechToText.delete(
'182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e',
);
console.log(speechToText.data);返回参数:(日期时间)、(字符串)、(日期时间)、(字符串)、(字符串)、(日期时间)、(枚举值:PENDING, COMPLETE, FAILED, EXPIRED)
created_atdownload_linkend_dateidrecord_typestart_datestatusGet speech to text usage report
获取语音转文字使用报告
Generate and fetch speech to text usage report synchronously. This endpoint will both generate and fetch the speech to text report over a specified time period.
GET /legacy/reporting/usage_reports/speech_to_textjavascript
const response = await client.legacy.reporting.usageReports.retrieveSpeechToText();
console.log(response.data);Returns: (object)
data同步生成并获取语音转文字使用报告,该接口可在指定时间范围内生成并获取语音转文字报告。
GET /legacy/reporting/usage_reports/speech_to_textjavascript
const response = await client.legacy.reporting.usageReports.retrieveSpeechToText();
console.log(response.data);返回参数:(对象)
dataGenerate speech from text
文字转语音
Generate synthesized speech audio from text input. Returns audio in the requested format (binary audio stream, base64-encoded JSON, or an audio URL for later retrieval). Authentication is provided via the standard header.
Authorization: Bearer POST /text-to-speech/speechOptional: (object), (object), (boolean), (object), (string), (object), (enum: binary_output, base64_output), (enum: aws, telnyx, azure, elevenlabs, minimax, rime, resemble), (object), (object), (object), (string), (enum: text, ssml), (string), (object)
awsazuredisable_cacheelevenlabslanguageminimaxoutput_typeproviderresemblerimetelnyxtexttext_typevoicevoice_settingsjavascript
const response = await client.textToSpeech.generate();
console.log(response.base64_audio);Returns: (string)
base64_audio从文本输入生成合成语音音频,按请求格式返回结果(二进制音频流、base64编码的JSON,或是可后续获取的音频URL)。通过标准的请求头进行鉴权。
Authorization: Bearer POST /text-to-speech/speech可选参数:(对象)、(对象)、(布尔值)、(对象)、(字符串)、(对象)、(枚举值:binary_output, base64_output)、(枚举值:aws, telnyx, azure, elevenlabs, minimax, rime, resemble)、(对象)、(对象)、(对象)、(字符串)、(枚举值:text, ssml)、(字符串)、(对象)
awsazuredisable_cacheelevenlabslanguageminimaxoutput_typeproviderresemblerimetelnyxtexttext_typevoicevoice_settingsjavascript
const response = await client.textToSpeech.generate();
console.log(response.base64_audio);返回参数:(字符串)
base64_audioList available voices
查询可用音色列表
Retrieve a list of available voices from one or all TTS providers. When is specified, returns voices for that provider only. Otherwise, returns voices from all providers.
providerGET /text-to-speech/voicesjavascript
const response = await client.textToSpeech.listVoices();
console.log(response.voices);Returns: (array[object])
voices获取单个或所有TTS服务商的可用音色列表。指定参数时仅返回该服务商的音色,否则返回所有服务商的音色。
providerGET /text-to-speech/voicesjavascript
const response = await client.textToSpeech.listVoices();
console.log(response.voices);返回参数:(对象数组)
voices