{"id":"72cfef64-f491-4955-af11-cecd22c7d0c1","shortId":"YXRcHj","kind":"skill","title":"telnyx-ai-inference-javascript","tagline":">-","description":"<!-- Auto-generated from Telnyx OpenAPI specs. Do not edit. -->\n\n# Telnyx Ai Inference - JavaScript\n\n## Installation\n\n```bash\nnpm install telnyx\n```\n\n## Setup\n\n```javascript\nimport Telnyx from 'telnyx';\n\nconst client = new Telnyx({\n  apiKey: process.env['TELNYX_API_KEY'], // This is the default and can be omitted\n});\n```\n\nAll examples below assume `client` is already initialized as shown above.\n\n## Error Handling\n\nAll API calls can fail with network errors, rate limits (429), validation errors (422),\nor authentication errors (401). Always handle errors in production code:\n\n```javascript\ntry {\n  const result = await client.messages.send({ to: '+13125550001', from: '+13125550002', text: 'Hello' });\n} catch (err) {\n  if (err instanceof Telnyx.APIConnectionError) {\n    console.error('Network error — check connectivity and retry');\n  } else if (err instanceof Telnyx.RateLimitError) {\n    // 429: rate limited — wait and retry with exponential backoff\n    const retryAfter = err.headers?.['retry-after'] || 1;\n    await new Promise(r => setTimeout(r, retryAfter * 1000));\n  } else if (err instanceof Telnyx.APIError) {\n    console.error(`API error ${err.status}: ${err.message}`);\n    if (err.status === 422) {\n      console.error('Validation error — check required fields and formats');\n    }\n  }\n}\n```\n\nCommon error codes: `401` invalid API key, `403` insufficient permissions,\n`404` resource not found, `422` validation error (check field formats),\n`429` rate limited (retry with exponential backoff).\n\n## Important Notes\n\n- **Pagination:** List methods return an auto-paginating iterator. Use `for await (const item of result) { ... }` to iterate through all pages automatically.\n\n## Transcribe speech to text\n\nTranscribe speech to text. This endpoint is consistent with the [OpenAI Transcription API](https://platform.openai.com/docs/api-reference/audio/createTranscription) and may be used with the OpenAI JS or Python SDK.\n\n`POST /ai/audio/transcriptions`\n\n```javascript\nconst response = await client.ai.audio.transcribe({ model: 'distil-whisper/distil-large-v2' });\n\nconsole.log(response.text);\n```\n\nReturns: `duration` (number), `segments` (array[object]), `text` (string)\n\n## Create a chat completion\n\nChat with a language model. This endpoint is consistent with the [OpenAI Chat Completions API](https://platform.openai.com/docs/api-reference/chat) and may be used with the OpenAI JS or Python SDK.\n\n`POST /ai/chat/completions` — Required: `messages`\n\nOptional: `api_key_ref` (string), `best_of` (integer), `early_stopping` (boolean), `enable_thinking` (boolean), `frequency_penalty` (number), `guided_choice` (array[string]), `guided_json` (object), `guided_regex` (string), `length_penalty` (number), `logprobs` (boolean), `max_tokens` (integer), `min_p` (number), `model` (string), `n` (number), `presence_penalty` (number), `response_format` (object), `stream` (boolean), `temperature` (number), `tool_choice` (enum: none, auto, required), `tools` (array[object]), `top_logprobs` (integer), `top_p` (number), `use_beam_search` (boolean)\n\n```javascript\nconst response = await client.ai.chat.createCompletion({\n  messages: [\n    { role: 'system', content: 'You are a friendly chatbot.' },\n    { role: 'user', content: 'Hello, world!' },\n  ],\n});\n\nconsole.log(response);\n```\n\n## List conversations\n\nRetrieve a list of all AI conversations configured by the user. Supports [PostgREST-style query parameters](https://postgrest.org/en/stable/api.html#horizontal-filtering-rows) for filtering. Examples are included for the standard metadata fields, but you can filter on any field in the metadata JSON object.\n\n`GET /ai/conversations`\n\n```javascript\nconst conversations = await client.ai.conversations.list();\n\nconsole.log(conversations.data);\n```\n\nReturns: `created_at` (date-time), `id` (uuid), `last_message_at` (date-time), `metadata` (object), `name` (string)\n\n## Create a conversation\n\nCreate a new AI Conversation.\n\n`POST /ai/conversations`\n\nOptional: `metadata` (object), `name` (string)\n\n```javascript\nconst conversation = await client.ai.conversations.create();\n\nconsole.log(conversation.id);\n```\n\nReturns: `created_at` (date-time), `id` (uuid), `last_message_at` (date-time), `metadata` (object), `name` (string)\n\n## Get Insight Template Groups\n\nGet all insight groups\n\n`GET /ai/conversations/insight-groups`\n\n```javascript\n// Automatically fetches more pages as needed.\nfor await (const insightTemplateGroup of client.ai.conversations.insightGroups.retrieveInsightGroups()) {\n  console.log(insightTemplateGroup.id);\n}\n```\n\nReturns: `created_at` (date-time), `description` (string), `id` (uuid), `insights` (array[object]), `name` (string), `webhook` (string)\n\n## Create Insight Template Group\n\nCreate a new insight group\n\n`POST /ai/conversations/insight-groups` — Required: `name`\n\nOptional: `description` (string), `webhook` (string)\n\n```javascript\nconst insightTemplateGroupDetail = await client.ai.conversations.insightGroups.insightGroups({\n  name: 'my-resource',\n});\n\nconsole.log(insightTemplateGroupDetail.data);\n```\n\nReturns: `created_at` (date-time), `description` (string), `id` (uuid), `insights` (array[object]), `name` (string), `webhook` (string)\n\n## Get Insight Template Group\n\nGet insight group by ID\n\n`GET /ai/conversations/insight-groups/{group_id}`\n\n```javascript\nconst insightTemplateGroupDetail = await client.ai.conversations.insightGroups.retrieve(\n  '182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e',\n);\n\nconsole.log(insightTemplateGroupDetail.data);\n```\n\nReturns: `created_at` (date-time), `description` (string), `id` (uuid), `insights` (array[object]), `name` (string), `webhook` (string)\n\n## Update Insight Template Group\n\nUpdate an insight template group\n\n`PUT /ai/conversations/insight-groups/{group_id}`\n\nOptional: `description` (string), `name` (string), `webhook` (string)\n\n```javascript\nconst insightTemplateGroupDetail = await client.ai.conversations.insightGroups.update(\n  '182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e',\n);\n\nconsole.log(insightTemplateGroupDetail.data);\n```\n\nReturns: `created_at` (date-time), `description` (string), `id` (uuid), `insights` (array[object]), `name` (string), `webhook` (string)\n\n## Delete Insight Template Group\n\nDelete insight group by ID\n\n`DELETE /ai/conversations/insight-groups/{group_id}`\n\n```javascript\nawait client.ai.conversations.insightGroups.delete('182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e');\n```\n\n## Assign Insight Template To Group\n\nAssign an insight to a group\n\n`POST /ai/conversations/insight-groups/{group_id}/insights/{insight_id}/assign`\n\n```javascript\nawait client.ai.conversations.insightGroups.insights.assign(\n  '182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e',\n  { group_id: '182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e' },\n);\n```\n\n## Unassign Insight Template From Group\n\nRemove an insight from a group\n\n`DELETE /ai/conversations/insight-groups/{group_id}/insights/{insight_id}/unassign`\n\n```javascript\nawait client.ai.conversations.insightGroups.insights.deleteUnassign(\n  '182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e',\n  { group_id: '182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e' },\n);\n```\n\n## Get Insight Templates\n\nGet all insights\n\n`GET /ai/conversations/insights`\n\n```javascript\n// Automatically fetches more pages as needed.\nfor await (const insightTemplate of client.ai.conversations.insights.list()) {\n  console.log(insightTemplate.id);\n}\n```\n\nReturns: `created_at` (date-time), `id` (uuid), `insight_type` (enum: custom, default), `instructions` (string), `json_schema` (object), `name` (string), `webhook` (string)\n\n## Create Insight Template\n\nCreate a new insight\n\n`POST /ai/conversations/insights` — Required: `instructions`, `name`\n\nOptional: `json_schema` (object), `webhook` (string)\n\n```javascript\nconst insightTemplateDetail = await client.ai.conversations.insights.create({\n  instructions: 'You are a helpful assistant.',\n  name: 'my-resource',\n});\n\nconsole.log(insightTemplateDetail.data);\n```\n\nReturns: `created_at` (date-time), `id` (uuid), `insight_type` (enum: custom, default), `instructions` (string), `json_schema` (object), `name` (string), `webhook` (string)\n\n## Get Insight Template\n\nGet insight by ID\n\n`GET /ai/conversations/insights/{insight_id}`\n\n```javascript\nconst insightTemplateDetail = await client.ai.conversations.insights.retrieve(\n  '182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e',\n);\n\nconsole.log(insightTemplateDetail.data);\n```\n\nReturns: `created_at` (date-time), `id` (uuid), `insight_type` (enum: custom, default), `instructions` (string), `json_schema` (object), `name` (string), `webhook` (string)\n\n## Update Insight Template\n\nUpdate an insight template\n\n`PUT /ai/conversations/insights/{insight_id}`\n\nOptional: `instructions` (string), `json_schema` (object), `name` (string), `webhook` (string)\n\n```javascript\nconst insightTemplateDetail = await client.ai.conversations.insights.update(\n  '182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e',\n);\n\nconsole.log(insightTemplateDetail.data);\n```\n\nReturns: `created_at` (date-time), `id` (uuid), `insight_type` (enum: custom, default), `instructions` (string), `json_schema` (object), `name` (string), `webhook` (string)\n\n## Delete Insight Template\n\nDelete insight by ID\n\n`DELETE /ai/conversations/insights/{insight_id}`\n\n```javascript\nawait client.ai.conversations.insights.delete('182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e');\n```\n\n## Get a conversation\n\nRetrieve a specific AI conversation by its ID.\n\n`GET /ai/conversations/{conversation_id}`\n\n```javascript\nconst conversation = await client.ai.conversations.retrieve('550e8400-e29b-41d4-a716-446655440000');\n\nconsole.log(conversation.data);\n```\n\nReturns: `created_at` (date-time), `id` (uuid), `last_message_at` (date-time), `metadata` (object), `name` (string)\n\n## Update conversation metadata\n\nUpdate metadata for a specific conversation.\n\n`PUT /ai/conversations/{conversation_id}`\n\nOptional: `metadata` (object)\n\n```javascript\nconst conversation = await client.ai.conversations.update('550e8400-e29b-41d4-a716-446655440000');\n\nconsole.log(conversation.data);\n```\n\nReturns: `created_at` (date-time), `id` (uuid), `last_message_at` (date-time), `metadata` (object), `name` (string)\n\n## Delete a conversation\n\nDelete a specific conversation by its ID.\n\n`DELETE /ai/conversations/{conversation_id}`\n\n```javascript\nawait client.ai.conversations.delete('550e8400-e29b-41d4-a716-446655440000');\n```\n\n## Get insights for a conversation\n\nRetrieve insights for a specific conversation\n\n`GET /ai/conversations/{conversation_id}/conversations-insights`\n\n```javascript\nconst response = await client.ai.conversations.retrieveConversationsInsights('550e8400-e29b-41d4-a716-446655440000');\n\nconsole.log(response.data);\n```\n\nReturns: `conversation_insights` (array[object]), `created_at` (date-time), `id` (string), `status` (enum: pending, in_progress, completed, failed)\n\n## Create Message\n\nAdd a new message to the conversation. Used to insert a new messages to a conversation manually ( without using chat endpoint )\n\n`POST /ai/conversations/{conversation_id}/message` — Required: `role`\n\nOptional: `content` (string), `metadata` (object), `name` (string), `sent_at` (date-time), `tool_call_id` (string), `tool_calls` (array[object]), `tool_choice` (object)\n\n```javascript\nawait client.ai.conversations.addMessage('182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e', { role: 'user' });\n```\n\n## Get conversation messages\n\nRetrieve messages for a specific conversation, including tool calls made by the assistant.\n\n`GET /ai/conversations/{conversation_id}/messages`\n\n```javascript\nconst messages = await client.ai.conversations.messages.list('550e8400-e29b-41d4-a716-446655440000');\n\nconsole.log(messages.data);\n```\n\nReturns: `created_at` (date-time), `role` (enum: user, assistant, tool), `sent_at` (date-time), `text` (string), `tool_calls` (array[object])\n\n## Get Tasks by Status\n\nRetrieve tasks for the user that are either `queued`, `processing`, `failed`, `success` or `partial_success` based on the query string. Defaults to `queued` and `processing`.\n\n`GET /ai/embeddings`\n\n```javascript\nconst embeddings = await client.ai.embeddings.list();\n\nconsole.log(embeddings.data);\n```\n\nReturns: `bucket` (string), `created_at` (date-time), `finished_at` (date-time), `status` (enum: queued, processing, success, failure, partial_success), `task_id` (string), `task_name` (string), `user_id` (string)\n\n## Embed documents\n\nPerform embedding on a Telnyx Storage Bucket using an embedding model. The current supported file types are:\n- PDF\n- HTML\n- txt/unstructured text files\n- json\n- csv\n- 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.\n\n`POST /ai/embeddings` — Required: `bucket_name`\n\nOptional: `document_chunk_overlap_size` (integer), `document_chunk_size` (integer), `embedding_model` (object), `loader` (object)\n\n```javascript\nconst embeddingResponse = await client.ai.embeddings.create({ bucket_name: 'bucket_name' });\n\nconsole.log(embeddingResponse.data);\n```\n\nReturns: `created_at` (string), `finished_at` (string | null), `status` (string), `task_id` (uuid), `task_name` (string), `user_id` (uuid)\n\n## List embedded buckets\n\nGet all embedding buckets for a user.\n\n`GET /ai/embeddings/buckets`\n\n```javascript\nconst buckets = await client.ai.embeddings.buckets.list();\n\nconsole.log(buckets.data);\n```\n\nReturns: `buckets` (array[string])\n\n## Get file-level embedding statuses for a bucket\n\nGet all embedded files for a given user bucket, including their processing status.\n\n`GET /ai/embeddings/buckets/{bucket_name}`\n\n```javascript\nconst bucket = await client.ai.embeddings.buckets.retrieve('bucket_name');\n\nconsole.log(bucket.data);\n```\n\nReturns: `created_at` (date-time), `error_reason` (string), `filename` (string), `last_embedded_at` (date-time), `status` (string), `updated_at` (date-time)\n\n## Disable AI for an Embedded Bucket\n\nDeletes an entire bucket's embeddings and disables the bucket for AI-use, returning it to normal storage pricing.\n\n`DELETE /ai/embeddings/buckets/{bucket_name}`\n\n```javascript\nawait client.ai.embeddings.buckets.delete('bucket_name');\n```\n\n## Search for documents\n\nPerform a similarity search on a Telnyx Storage Bucket, returning the most similar `num_docs` document chunks to the query. Currently the only available distance metric is cosine similarity which will return a `distance` between 0 and 1. The lower the distance, the more similar the returned document chunks are to the query.\n\n`POST /ai/embeddings/similarity-search` — Required: `bucket_name`, `query`\n\nOptional: `num_of_docs` (integer)\n\n```javascript\nconst response = await client.ai.embeddings.similaritySearch({\n  bucket_name: 'bucket_name',\n  query: 'What is Telnyx?',\n});\n\nconsole.log(response.data);\n```\n\nReturns: `distance` (number), `document_chunk` (string), `metadata` (object)\n\n## Embed URL content\n\nEmbed 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.\n\n`POST /ai/embeddings/url` — Required: `url`, `bucket_name`\n\n```javascript\nconst embeddingResponse = await client.ai.embeddings.url({\n  bucket_name: 'bucket_name',\n  url: 'https://example.com/resource',\n});\n\nconsole.log(embeddingResponse.data);\n```\n\nReturns: `created_at` (string), `finished_at` (string | null), `status` (string), `task_id` (uuid), `task_name` (string), `user_id` (uuid)\n\n## Get an embedding task's status\n\nCheck the status of a current embedding task. Will be one of the following:\n- `queued` - Task is waiting to be picked up by a worker\n- `processing` - The embedding task is running\n- `success` - Task completed successfully and the bucket is embedded\n- `failure` - Task failed and no files were embedded successfully\n- `partial_success` - Some files were embedded successfully, but at least one failed\n\n`GET /ai/embeddings/{task_id}`\n\n```javascript\nconst embedding = await client.ai.embeddings.retrieve('task_id');\n\nconsole.log(embedding.data);\n```\n\nReturns: `created_at` (string), `finished_at` (string), `status` (enum: queued, processing, success, failure, partial_success), `task_id` (uuid), `task_name` (string)\n\n## List fine tuning jobs\n\nRetrieve a list of all fine tuning jobs created by the user.\n\n`GET /ai/fine_tuning/jobs`\n\n```javascript\nconst jobs = await client.ai.fineTuning.jobs.list();\n\nconsole.log(jobs.data);\n```\n\nReturns: `created_at` (integer), `finished_at` (integer | null), `hyperparameters` (object), `id` (string), `model` (string), `organization_id` (string), `status` (enum: queued, running, succeeded, failed, cancelled), `trained_tokens` (integer | null), `training_file` (string)\n\n## Create a fine tuning job\n\nCreate a new fine tuning job.\n\n`POST /ai/fine_tuning/jobs` — Required: `model`, `training_file`\n\nOptional: `hyperparameters` (object), `suffix` (string)\n\n```javascript\nconst fineTuningJob = await client.ai.fineTuning.jobs.create({\n  model: 'openai/gpt-4o',\n  training_file: 'training_file',\n});\n\nconsole.log(fineTuningJob.id);\n```\n\nReturns: `created_at` (integer), `finished_at` (integer | null), `hyperparameters` (object), `id` (string), `model` (string), `organization_id` (string), `status` (enum: queued, running, succeeded, failed, cancelled), `trained_tokens` (integer | null), `training_file` (string)\n\n## Get a fine tuning job\n\nRetrieve a fine tuning job by `job_id`.\n\n`GET /ai/fine_tuning/jobs/{job_id}`\n\n```javascript\nconst fineTuningJob = await client.ai.fineTuning.jobs.retrieve('job_id');\n\nconsole.log(fineTuningJob.id);\n```\n\nReturns: `created_at` (integer), `finished_at` (integer | null), `hyperparameters` (object), `id` (string), `model` (string), `organization_id` (string), `status` (enum: queued, running, succeeded, failed, cancelled), `trained_tokens` (integer | null), `training_file` (string)\n\n## Cancel a fine tuning job\n\nCancel a fine tuning job.\n\n`POST /ai/fine_tuning/jobs/{job_id}/cancel`\n\n```javascript\nconst fineTuningJob = await client.ai.fineTuning.jobs.cancel('job_id');\n\nconsole.log(fineTuningJob.id);\n```\n\nReturns: `created_at` (integer), `finished_at` (integer | null), `hyperparameters` (object), `id` (string), `model` (string), `organization_id` (string), `status` (enum: queued, running, succeeded, failed, cancelled), `trained_tokens` (integer | null), `training_file` (string)\n\n## Get available models\n\nThis endpoint returns a list of Open Source and OpenAI models that are available for use.    **Note**: Model `id`'s will be in the form `{source}/{model_name}`. For example `openai/gpt-4` or `mistralai/Mistral-7B-Instruct-v0.1` consistent with HuggingFace naming conventions.\n\n`GET /ai/models`\n\n```javascript\nconst response = await client.ai.retrieveModels();\n\nconsole.log(response.data);\n```\n\nReturns: `created` (integer), `id` (string), `object` (string), `owned_by` (string)\n\n## Create embeddings\n\nCreates an embedding vector representing the input text. This endpoint is compatible with the [OpenAI Embeddings API](https://platform.openai.com/docs/api-reference/embeddings) and may be used with the OpenAI JS or Python SDK by setting the base URL to `https://api.telnyx.com/v2/ai/openai`.\n\n`POST /ai/openai/embeddings` — Required: `input`, `model`\n\nOptional: `dimensions` (integer), `encoding_format` (enum: float, base64), `user` (string)\n\n```javascript\nconst response = await client.ai.openai.embeddings.createEmbeddings({\n  input: 'The quick brown fox jumps over the lazy dog',\n  model: 'thenlper/gte-large',\n});\n\nconsole.log(response.data);\n```\n\nReturns: `data` (array[object]), `model` (string), `object` (string), `usage` (object)\n\n## List embedding models\n\nReturns a list of available embedding models. This endpoint is compatible with the OpenAI Models API format.\n\n`GET /ai/openai/embeddings/models`\n\n```javascript\nconst response = await client.ai.openai.embeddings.listEmbeddingModels();\n\nconsole.log(response.data);\n```\n\nReturns: `created` (integer), `id` (string), `object` (string), `owned_by` (string)\n\n## Summarize file content\n\nGenerate a summary of a file's contents. Supports the following text formats: \n- PDF, HTML, txt, json, csv\n\n Supports the following media formats (billed for both the transcription and summary): \n- flac, mp3, mp4, mpeg, mpga, m4a, ogg, wav, or webm\n- Up to 100 MB\n\n`POST /ai/summarize` — Required: `bucket`, `filename`\n\nOptional: `system_prompt` (string)\n\n```javascript\nconst response = await client.ai.summarize({ bucket: 'my-bucket', filename: 'data.csv' });\n\nconsole.log(response.data);\n```\n\nReturns: `summary` (string)\n\n## Get all Speech to Text batch report requests\n\nRetrieves all Speech to Text batch report requests for the authenticated user\n\n`GET /legacy/reporting/batch_detail_records/speech_to_text`\n\n```javascript\nconst speechToTexts = await client.legacy.reporting.batchDetailRecords.speechToText.list();\n\nconsole.log(speechToTexts.data);\n```\n\nReturns: `created_at` (date-time), `download_link` (string), `end_date` (date-time), `id` (string), `record_type` (string), `start_date` (date-time), `status` (enum: PENDING, COMPLETE, FAILED, EXPIRED)\n\n## Create a new Speech to Text batch report request\n\nCreates a new Speech to Text batch report request with the specified filters\n\n`POST /legacy/reporting/batch_detail_records/speech_to_text` — Required: `start_date`, `end_date`\n\n```javascript\nconst speechToText = await client.legacy.reporting.batchDetailRecords.speechToText.create({\n  end_date: '2020-07-01T00:00:00-06:00',\n  start_date: '2020-07-01T00:00:00-06:00',\n});\n\nconsole.log(speechToText.data);\n```\n\nReturns: `created_at` (date-time), `download_link` (string), `end_date` (date-time), `id` (string), `record_type` (string), `start_date` (date-time), `status` (enum: PENDING, COMPLETE, FAILED, EXPIRED)\n\n## Get a specific Speech to Text batch report request\n\nRetrieves a specific Speech to Text batch report request by ID\n\n`GET /legacy/reporting/batch_detail_records/speech_to_text/{id}`\n\n```javascript\nconst speechToText = await client.legacy.reporting.batchDetailRecords.speechToText.retrieve(\n  '182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e',\n);\n\nconsole.log(speechToText.data);\n```\n\nReturns: `created_at` (date-time), `download_link` (string), `end_date` (date-time), `id` (string), `record_type` (string), `start_date` (date-time), `status` (enum: PENDING, COMPLETE, FAILED, EXPIRED)\n\n## Delete a Speech to Text batch report request\n\nDeletes a specific Speech to Text batch report request by ID\n\n`DELETE /legacy/reporting/batch_detail_records/speech_to_text/{id}`\n\n```javascript\nconst speechToText = await client.legacy.reporting.batchDetailRecords.speechToText.delete(\n  '182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e',\n);\n\nconsole.log(speechToText.data);\n```\n\nReturns: `created_at` (date-time), `download_link` (string), `end_date` (date-time), `id` (string), `record_type` (string), `start_date` (date-time), `status` (enum: PENDING, COMPLETE, FAILED, EXPIRED)\n\n## Get speech to text usage report\n\nGenerate 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.\n\n`GET /legacy/reporting/usage_reports/speech_to_text`\n\n```javascript\nconst response = await client.legacy.reporting.usageReports.retrieveSpeechToText();\n\nconsole.log(response.data);\n```\n\nReturns: `data` (object)\n\n## Generate speech from text\n\nGenerate 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 `Authorization: Bearer ` header.\n\n`POST /text-to-speech/speech`\n\nOptional: `aws` (object), `azure` (object), `disable_cache` (boolean), `elevenlabs` (object), `language` (string), `minimax` (object), `output_type` (enum: binary_output, base64_output), `provider` (enum: aws, telnyx, azure, elevenlabs, minimax, rime, resemble), `resemble` (object), `rime` (object), `telnyx` (object), `text` (string), `text_type` (enum: text, ssml), `voice` (string), `voice_settings` (object)\n\n```javascript\nconst response = await client.textToSpeech.generate();\n\nconsole.log(response.base64_audio);\n```\n\nReturns: `base64_audio` (string)\n\n## List available voices\n\nRetrieve a list of available voices from one or all TTS providers. When `provider` is specified, returns voices for that provider only. Otherwise, returns voices from all providers.\n\n`GET /text-to-speech/voices`\n\n```javascript\nconst response = await client.textToSpeech.listVoices();\n\nconsole.log(response.voices);\n```\n\nReturns: `voices` (array[object])","tags":["telnyx","inference","javascript","team-telnyx","agent-skills","ai-coding-agent","claude-code","cpaas","cursor","iot","llm","sdk"],"capabilities":["skill","source-team-telnyx","skill-telnyx-ai-inference-javascript","topic-agent-skills","topic-ai-coding-agent","topic-claude-code","topic-cpaas","topic-cursor","topic-iot","topic-llm","topic-sdk","topic-sip","topic-sms","topic-speech-to-text","topic-telephony"],"categories":["ai"],"synonyms":[],"warnings":[],"endpointUrl":"https://skills.sh/team-telnyx/ai/telnyx-ai-inference-javascript","protocol":"skill","transport":"skills-sh","auth":{"type":"none","details":{"cli":"npx skills add team-telnyx/ai","source_repo":"https://github.com/team-telnyx/ai","install_from":"skills.sh"}},"qualityScore":"0.533","qualityRationale":"deterministic score 0.53 from registry signals: · indexed on github topic:agent-skills · 167 github stars · SKILL.md body (24,520 chars)","verified":false,"liveness":"unknown","lastLivenessCheck":null,"agentReviews":{"count":0,"score_avg":null,"cost_usd_avg":null,"success_rate":null,"latency_p50_ms":null,"narrative_summary":null,"summary_updated_at":null},"enrichmentModel":"deterministic:skill-github:v1","enrichmentVersion":1,"enrichedAt":"2026-04-22T12:54:44.308Z","embedding":null,"createdAt":"2026-04-18T22:06:20.089Z","updatedAt":"2026-04-22T12:54:44.308Z","lastSeenAt":"2026-04-22T12:54:44.308Z","tsv":"'+13125550001':82 '+13125550002':84 '-01':2430,2440 '-06':2434,2444 '-07':2429,2439 '/ai/audio/transcriptions':233 '/ai/chat/completions':288 '/ai/conversations':428,463,1005,1049,1097,1121,1181,1238 '/ai/conversations/insight-groups':503,546,592,635,685,709,745 '/ai/conversations/insights':776,822,879,925,981 '/ai/embeddings':1307,1403,1809 '/ai/embeddings/buckets':1463,1498,1561 '/ai/embeddings/similarity-search':1626 '/ai/embeddings/url':1702 '/ai/fine_tuning/jobs':1859,1910,1978,2032 '/ai/models':2118 '/ai/openai/embeddings':2179 '/ai/openai/embeddings/models':2243 '/ai/summarize':2309 '/assign':715 '/cancel':2035 '/conversations-insights':1124 '/distil-large-v2':243 '/docs/api-reference/audio/createtranscription)':220 '/docs/api-reference/chat)':275 '/docs/api-reference/embeddings)':2157 '/en/stable/api.html#horizontal-filtering-rows)':404 '/insights':712,748 '/legacy/reporting/batch_detail_records/speech_to_text':2354,2415,2499,2564 '/legacy/reporting/usage_reports/speech_to_text':2642 '/message':1184 '/messages':1241 '/resource'',':1719 '/text-to-speech/speech':2694 '/text-to-speech/voices':2786 '/unassign':751 '/v2/ai/openai':2177 '0':1607 '00':2432,2433,2435,2442,2443,2445 '1':120,1609 '100':2306 '1000':128 '100mb':1383 '182bd5e5':601,651,692,720,728,756,764,888,944,988,1214,2507,2572 '182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e':600,650,691,719,727,755,763,887,943,987,1213,2506,2571 '2020':2428,2438 '401':68,153 '403':157 '404':160 '41d4':1016,1063,1106,1133,1250 '422':64,141,164 '429':61,105,170 '446655440000':1018,1065,1108,1135,1252 '4fe4':603,653,694,722,730,758,766,890,946,990,1216,2509,2574 '5':1674 '550e8400':1013,1060,1103,1130,1247 '6e1a':602,652,693,721,729,757,765,889,945,989,1215,2508,2573 'a716':1017,1064,1107,1134,1251 'a799':604,654,695,723,731,759,767,891,947,991,1217,2510,2575 'aa6d9a6ab26e':605,655,696,724,732,760,768,892,948,992,1218,2511,2576 'add':1159 'ai':3,7,390,460,999,1535,1552 'ai-us':1551 'alreadi':44 'alway':69 'api':28,52,135,155,217,272,292,2154,2240 'api.telnyx.com':2176 'api.telnyx.com/v2/ai/openai':2175 'apikey':25 'array':250,310,350,530,576,619,669,1141,1205,1275,1473,2214,2796 'assign':697,702 'assist':842,1236,1264 'assum':41 'attempt':1395 'audio':1371,2660,2665,2671,2679,2752 'authent':66,2351,2684 'author':2690 'auto':185,347 'auto-pagin':184 'automat':200,505,778 'avail':1595,2077,2092,2229,2755,2761 'aw':2696,2718 'await':79,121,190,237,365,432,472,512,557,598,648,689,717,753,785,835,885,941,985,1011,1058,1101,1128,1211,1245,1311,1425,1467,1504,1565,1639,1710,1815,1863,1923,1984,2039,2122,2196,2247,2320,2358,2424,2504,2569,2646,2746,2790 'azur':2698,2720 'backoff':113,176 'base':1296,2172 'base64':2190,2674,2714,2751 'base64-encoded':2673 'bash':11 'batch':2338,2346,2398,2407,2484,2493,2549,2558 'beam':359 'bearer':2691 'best':296 'bill':2287 'binari':2670,2712 'boolean':301,304,322,340,361,2702 'brown':2201 'bucket':1316,1353,1405,1427,1429,1454,1458,1466,1472,1483,1492,1499,1503,1506,1539,1543,1549,1562,1567,1580,1628,1641,1643,1700,1705,1712,1714,1784,2311,2322,2325 'bucket.data':1509 'buckets.data':1470 'cach':2701 'call':53,1200,1204,1232,1274 'cancel':1890,1956,2013,2021,2026,2068 'catch':87 'chat':256,258,270,1178 'chatbot':375 'check':96,145,167,1747 'child':1670 'choic':309,344,1208 'chunk':1409,1414,1588,1620,1655 'client':22,42 'client.ai.audio.transcribe':238 'client.ai.chat.createcompletion':366 'client.ai.conversations.addmessage':1212 'client.ai.conversations.create':473 'client.ai.conversations.delete':1102 'client.ai.conversations.insightgroups.delete':690 'client.ai.conversations.insightgroups.insightgroups':558 'client.ai.conversations.insightgroups.insights.assign':718 'client.ai.conversations.insightgroups.insights.deleteunassign':754 'client.ai.conversations.insightgroups.retrieve':599 'client.ai.conversations.insightgroups.retrieveinsightgroups':516 'client.ai.conversations.insightgroups.update':649 'client.ai.conversations.insights.create':836 'client.ai.conversations.insights.delete':986 'client.ai.conversations.insights.list':789 'client.ai.conversations.insights.retrieve':886 'client.ai.conversations.insights.update':942 'client.ai.conversations.list':433 'client.ai.conversations.messages.list':1246 'client.ai.conversations.retrieve':1012 'client.ai.conversations.retrieveconversationsinsights':1129 'client.ai.conversations.update':1059 'client.ai.embeddings.buckets.delete':1566 'client.ai.embeddings.buckets.list':1468 'client.ai.embeddings.buckets.retrieve':1505 'client.ai.embeddings.create':1426 'client.ai.embeddings.list':1312 'client.ai.embeddings.retrieve':1816 'client.ai.embeddings.similaritysearch':1640 'client.ai.embeddings.url':1711 'client.ai.finetuning.jobs.cancel':2040 'client.ai.finetuning.jobs.create':1924 'client.ai.finetuning.jobs.list':1864 'client.ai.finetuning.jobs.retrieve':1985 'client.ai.openai.embeddings.createembeddings':2197 'client.ai.openai.embeddings.listembeddingmodels':2248 'client.ai.retrievemodels':2123 'client.ai.summarize':2321 'client.legacy.reporting.batchdetailrecords.speechtotext.create':2425 'client.legacy.reporting.batchdetailrecords.speechtotext.delete':2570 'client.legacy.reporting.batchdetailrecords.speechtotext.list':2359 'client.legacy.reporting.batchdetailrecords.speechtotext.retrieve':2505 'client.legacy.reporting.usagereports.retrievespeechtotext':2647 'client.messages.send':80 'client.texttospeech.generate':2747 'client.texttospeech.listvoices':2791 'cloud':1698 'code':74,152 'common':150 'compat':2149,2235 'complet':257,271,1155,1780,2389,2475,2541,2606 'configur':392 'connect':97 'consist':212,266,2112 'console.error':93,134,142 'console.log':244,381,434,474,517,563,606,656,790,847,893,949,1019,1066,1136,1253,1313,1431,1469,1508,1649,1720,1819,1865,1931,1988,2043,2124,2210,2249,2328,2360,2446,2512,2577,2648,2748,2792 'const':21,77,114,191,235,363,430,470,513,555,596,646,786,833,883,939,1009,1056,1126,1243,1309,1423,1465,1502,1637,1708,1813,1861,1921,1982,2037,2120,2194,2245,2318,2356,2422,2502,2567,2644,2744,2788 'content':370,378,1188,1661,1664,1686,2263,2271 'convent':2116 'convers':384,391,431,456,461,471,995,1000,1006,1010,1040,1047,1050,1057,1088,1092,1098,1113,1119,1122,1139,1165,1174,1182,1222,1229,1239 'conversation.data':1020,1067 'conversation.id':475 'conversations.data':435 'cosin':1599 'crawl':1683 'creat':254,437,454,457,477,520,536,540,566,609,659,793,814,817,850,896,952,1022,1069,1143,1157,1256,1318,1434,1511,1723,1822,1854,1868,1898,1903,1934,1991,2046,2127,2136,2138,2252,2363,2392,2401,2449,2515,2580 'csv':1370,2281 'current':1359,1592,1752 'custom':803,860,906,962 'data':2213,2651 'data.csv':2327 'date':440,448,480,488,523,569,612,662,796,853,899,955,1025,1033,1072,1080,1146,1197,1259,1269,1321,1326,1514,1525,1532,2366,2372,2374,2382,2384,2418,2420,2427,2437,2452,2458,2460,2468,2470,2518,2524,2526,2534,2536,2583,2589,2591,2599,2601 'date-tim':439,447,479,487,522,568,611,661,795,852,898,954,1024,1032,1071,1079,1145,1196,1258,1268,1320,1325,1513,1524,1531,2365,2373,2383,2451,2459,2469,2517,2525,2535,2582,2590,2600 'deep':1676 'default':33,804,861,907,963,1301 'delet':675,679,684,744,973,976,980,1086,1089,1096,1540,1560,2544,2552,2563 'descript':525,550,571,614,639,664 'dimens':2184 'disabl':1534,1547,2700 'distanc':1596,1605,1613,1652 'distil':241 'distil-whisp':240 'doc':1586,1634 'document':1346,1408,1413,1571,1587,1619,1654 'dog':2207 'domain':1680 'download':2368,2454,2520,2585 'durat':247 'e29b':1015,1062,1105,1132,1249 'e29b-41d4-a716':1014,1061,1104,1131,1248 'earli':299 'either':1288 'elevenlab':2703,2721 'els':100,129 'emb':1345,1659,1662 'embed':1310,1348,1356,1398,1417,1453,1457,1479,1486,1522,1538,1545,1743,1753,1774,1786,1794,1801,1814,2137,2140,2153,2223,2230 'embedding.data':1820 'embeddingrespons':1424,1709 'embeddingresponse.data':1432,1721 'embeddings.data':1314 'enabl':302 'encod':2186,2675 'end':2371,2419,2426,2457,2523,2588 'endpoint':210,264,1179,2080,2147,2233,2625 'entir':1542 'enum':345,802,859,905,961,1151,1262,1329,1829,1885,1951,2008,2063,2188,2387,2473,2539,2604,2711,2717,2735 'err':88,90,102,131 'err.headers':116 'err.message':138 'err.status':137,140 'error':49,58,63,67,71,95,136,144,151,166,1516 'exampl':39,407,2108 'example.com':1718 'example.com/resource'',':1717 'expir':2391,2477,2543,2608 'exponenti':112,175 'fail':55,1156,1291,1789,1807,1889,1955,2012,2067,2390,2476,2542,2607 'failur':1333,1787,1833 'fetch':506,779,2617,2630 'field':147,168,414,421 'file':1361,1368,1384,1387,1477,1487,1792,1799,1896,1914,1928,1930,1962,2019,2074,2262,2269 'file-level':1476 'filenam':1519,2312,2326 'filter':406,418,2413 'fine':1843,1851,1900,1906,1966,1971,2023,2028 'finetuningjob':1922,1983,2038 'finetuningjob.id':1932,1989,2044 'finish':1323,1437,1726,1825,1871,1937,1994,2049 'flac':2294 'float':2189 'follow':1760,2274,2284 'form':2103 'format':149,169,337,2187,2241,2276,2286,2669 'found':163 'fox':2202 'frequenc':305 'friend':374 'generat':2264,2615,2628,2653,2657 'get':427,494,498,502,582,586,591,769,772,775,871,874,878,993,1004,1109,1120,1221,1237,1277,1306,1455,1462,1475,1484,1497,1741,1808,1858,1964,1977,2076,2117,2242,2333,2353,2478,2498,2609,2641,2785 'given':1490 'group':497,501,539,544,585,588,593,628,633,636,678,681,686,701,707,710,725,737,743,746,761 'guid':308,312,315 'handl':50,70 'header':2692 'hello':86,379 'help':841 'html':1365,2278 'huggingfac':2114 'hyperparamet':1875,1916,1941,1998,2053 'id':442,482,527,573,590,594,616,637,666,683,687,711,714,726,747,750,762,798,855,877,881,901,927,957,979,983,1003,1007,1027,1051,1074,1095,1099,1123,1148,1183,1201,1240,1337,1343,1444,1450,1733,1739,1811,1818,1837,1877,1882,1943,1948,1976,1980,1987,2000,2005,2034,2042,2055,2060,2097,2129,2254,2376,2462,2497,2500,2528,2562,2565,2593 'import':17,177 'includ':409,1230,1493,1669 'infer':4,8 'initi':45 'input':2144,2181,2198,2663 'insert':1168 'insight':495,500,529,537,543,575,583,587,618,626,631,668,676,680,698,704,713,734,740,749,770,774,800,815,820,857,872,875,880,903,918,922,926,959,974,977,982,1110,1115,1140 'insighttempl':787 'insighttemplate.id':791 'insighttemplatedetail':834,884,940 'insighttemplatedetail.data':848,894,950 'insighttemplategroup':514 'insighttemplategroup.id':518 'insighttemplategroupdetail':556,597,647 'insighttemplategroupdetail.data':564,607,657 'instal':10,13 'instanceof':91,103,132 'instruct':805,824,837,862,908,929,964 'insuffici':158 'integ':298,325,354,1412,1416,1635,1870,1873,1893,1936,1939,1959,1993,1996,2016,2048,2051,2071,2128,2185,2253 'invalid':154 'item':192 'iter':187,196 'javascript':5,9,16,75,234,362,429,469,504,554,595,645,688,716,752,777,832,882,938,984,1008,1055,1100,1125,1210,1242,1308,1422,1464,1501,1564,1636,1707,1812,1860,1920,1981,2036,2119,2193,2244,2317,2355,2421,2501,2566,2643,2743,2787 'job':1845,1853,1862,1902,1908,1968,1973,1975,1979,1986,2025,2030,2033,2041 'jobs.data':1866 'js':228,283,2165 'json':313,425,807,827,864,910,931,966,1369,2280,2676 'jump':2203 'key':29,156,293 'languag':261,2705 'last':444,484,1029,1076,1521 'later':2682 'lazi':2206 'least':1805 'length':318 'level':1478,1675 'limit':60,107,172 'link':1693,2369,2455,2521,2586 'list':180,383,387,1452,1842,1848,2083,2222,2227,2754,2759 'load':1685 'loader':1420 'logprob':321,353 'lower':1611 'm4a':1377,2299 'made':1233 'main':1689 'manual':1175 'match':1389 'max':323,1381 'may':222,277,2159 'mb':2307 'media':2285 'messag':290,367,445,485,1030,1077,1158,1162,1171,1223,1225,1244 'messages.data':1254 'metadata':413,424,450,465,490,1035,1041,1043,1053,1082,1190,1657 'method':181 'metric':1597 'min':326 'minimax':2707,2722 'mistralai/mistral-7b-instruct-v0.1':2111 'model':239,262,329,1357,1418,1879,1912,1925,1945,2002,2057,2078,2089,2096,2105,2182,2208,2216,2224,2231,2239 'mp3':1373,2295 'mp4':1374,2296 'mpeg':1375,2297 'mpga':1376,2298 'my-bucket':2323 'my-resourc':560,844 'n':331 'name':452,467,492,532,548,559,578,621,641,671,810,825,843,867,913,934,969,1037,1084,1192,1340,1406,1428,1430,1447,1500,1507,1563,1568,1629,1642,1644,1706,1713,1715,1736,1840,2106,2115 'need':510,783 'network':57,94 'new':23,122,459,542,819,1161,1170,1905,2394,2403 'none':346 'normal':1557 'note':178,2095 'npm':12 'null':1440,1729,1874,1894,1940,1960,1997,2017,2052,2072 'num':1585,1632 'number':248,307,320,328,332,335,342,357,1653 'object':251,314,338,351,426,451,466,491,531,577,620,670,809,829,866,912,933,968,1036,1054,1083,1142,1191,1206,1209,1276,1419,1421,1658,1876,1917,1942,1999,2054,2131,2215,2218,2221,2256,2652,2697,2699,2704,2708,2726,2728,2730,2742,2797 'ogg':2300 'omit':37 'one':1757,1806,2764 'open':2085 'openai':215,227,269,282,2088,2152,2164,2238 'openai/gpt-4':2109 'openai/gpt-4o':1926 'option':291,464,549,638,826,928,1052,1187,1407,1631,1915,2183,2313,2695 'organ':1881,1947,2004,2059 'otherwis':2779 'output':2709,2713,2715 'overlap':1410 'own':2133,2258 'p':327,356 'page':199,508,781,1671,1694 'pagin':179,186 'paramet':401 'partial':1294,1334,1796,1834 'pdf':1364,2277 'penalti':306,319,334 'pend':1152,2388,2474,2540,2605 'perform':1347,1572 'period':2640 'permiss':159 'pick':1767 'platform.openai.com':219,274,2156 'platform.openai.com/docs/api-reference/audio/createtranscription)':218 'platform.openai.com/docs/api-reference/chat)':273 'platform.openai.com/docs/api-reference/embeddings)':2155 'post':232,287,462,545,708,821,1180,1402,1625,1701,1909,2031,2178,2308,2414,2693 'postgrest':398 'postgrest-styl':397 'postgrest.org':403 'postgrest.org/en/stable/api.html#horizontal-filtering-rows)':402 'presenc':333 'price':1559 'process':1290,1305,1331,1495,1682,1772,1831 'process.env':26 'product':73 'progress':1154 'promis':123 'prompt':2315 'provid':2686,2716,2768,2770,2777,2784 'put':634,924,1048 'python':230,285,2167 'queri':400,1299,1591,1624,1630,1645 'queu':1289,1303,1330,1761,1830,1886,1952,2009,2064 'quick':2200 'r':124,126 'rate':59,106,171 'reason':1517 'record':2378,2464,2530,2595 'ref':294 'regex':316 'remov':738 'report':2339,2347,2399,2408,2485,2494,2550,2559,2614,2622,2635 'repres':2142 'request':2340,2348,2400,2409,2486,2495,2551,2560,2668 'requir':146,289,348,547,823,1185,1404,1627,1703,1911,2180,2310,2416 'resembl':2724,2725 'resourc':161,562,846 'respons':236,336,364,382,1127,1638,2121,2195,2246,2319,2645,2745,2789 'response.base64_audio':2749 'response.data':1137,1650,2125,2211,2250,2329,2649 'response.text':245 'response.voices':2793 'result':78,194 'retri':99,110,118,173 'retriev':385,996,1114,1224,1281,1846,1969,2341,2487,2683,2757 'retry-aft':117 'retryaft':115,127 'return':182,246,436,476,519,565,608,658,792,849,895,951,1021,1068,1138,1255,1315,1433,1471,1510,1554,1581,1603,1618,1651,1722,1821,1867,1933,1990,2045,2081,2126,2212,2225,2251,2330,2362,2448,2514,2579,2650,2664,2750,2773,2780,2794 'rime':2723,2727 'role':368,376,1186,1219,1261 'run':1777,1887,1953,2010,2065 'schema':808,828,865,911,932,967 'sdk':231,286,2168 'search':360,1569,1575 'segment':249 'sent':1194,1266 'set':2170,2741 'settimeout':125 'setup':15 'shown':47 'similar':1574,1584,1600,1616 'size':1385,1411,1415 'skill' 'skill-telnyx-ai-inference-javascript' 'sourc':2086,2104 'source-team-telnyx' 'specif':998,1046,1091,1118,1228,2480,2489,2554 'specifi':1667,2412,2638,2772 'speech':202,206,2335,2343,2395,2404,2481,2490,2546,2555,2610,2618,2632,2654,2659 'speechtotext':2357,2423,2503,2568 'speechtotext.data':2447,2513,2578 'speechtotexts.data':2361 'ssml':2737 'standard':412,2689 'start':2381,2417,2436,2467,2533,2598 'status':1150,1280,1328,1441,1480,1496,1527,1730,1746,1749,1828,1884,1950,2007,2062,2386,2472,2538,2603 'stop':300 'storag':1352,1558,1579,1699 'stream':339,2672 'string':253,295,311,317,330,453,468,493,526,533,535,551,553,572,579,581,615,622,624,640,642,644,665,672,674,806,811,813,831,863,868,870,909,914,916,930,935,937,965,970,972,1038,1085,1149,1189,1193,1202,1272,1300,1317,1338,1341,1344,1436,1439,1442,1448,1474,1518,1520,1528,1656,1725,1728,1731,1737,1824,1827,1841,1878,1880,1883,1897,1919,1944,1946,1949,1963,2001,2003,2006,2020,2056,2058,2061,2075,2130,2132,2135,2192,2217,2219,2255,2257,2260,2316,2332,2370,2377,2380,2456,2463,2466,2522,2529,2532,2587,2594,2597,2706,2732,2739,2753 'style':399 'succeed':1888,1954,2011,2066 'success':1292,1295,1332,1335,1778,1781,1795,1797,1802,1832,1835 'suffix':1918 'summar':2261 'summari':2266,2293,2331 'support':396,1360,2272,2282 'synchron':2623 'synthes':2658 'system':369,2314 't00':2431,2441 'task':1278,1282,1336,1339,1443,1446,1732,1735,1744,1754,1762,1775,1779,1788,1810,1817,1836,1839 'telnyx':2,6,14,18,20,24,27,1351,1578,1648,1697,2719,2729 'telnyx-ai-inference-javascript':1 'telnyx.apiconnectionerror':92 'telnyx.apierror':133 'telnyx.ratelimiterror':104 'temperatur':341 'templat':496,538,584,627,632,677,699,735,771,816,873,919,923,975 'text':85,204,208,252,1271,1367,1401,2145,2275,2337,2345,2397,2406,2483,2492,2548,2557,2612,2620,2634,2656,2662,2731,2733,2736 'thenlper/gte-large':2209 'think':303 'time':441,449,481,489,524,570,613,663,797,854,900,956,1026,1034,1073,1081,1147,1198,1260,1270,1322,1327,1515,1526,1533,2367,2375,2385,2453,2461,2471,2519,2527,2537,2584,2592,2602,2639 'token':324,1892,1958,2015,2070 'tool':343,349,1199,1203,1207,1231,1265,1273 'top':352,355 'topic-agent-skills' 'topic-ai-coding-agent' 'topic-claude-code' 'topic-cpaas' 'topic-cursor' 'topic-iot' 'topic-llm' 'topic-sdk' 'topic-sip' 'topic-sms' 'topic-speech-to-text' 'topic-telephony' 'train':1891,1895,1913,1927,1929,1957,1961,2014,2018,2069,2073 'transcrib':201,205 'transcript':216,2291 'tri':76 'tts':2767 'tune':1844,1852,1901,1907,1967,1972,2024,2029 'txt':2279 'txt/unstructured':1366 'type':801,858,904,960,1362,1392,2379,2465,2531,2596,2710,2734 'unassign':733 'unstructur':1400 'updat':625,629,917,920,1039,1042,1529 'url':1660,1668,1690,1704,1716,2173,2680 'usag':2220,2613,2621 'use':188,224,279,358,1166,1177,1354,1553,2094,2161 'user':377,395,1220,1263,1285,1342,1449,1461,1491,1738,1857,2191,2352 'uuid':443,483,528,574,617,667,799,856,902,958,1028,1075,1445,1451,1734,1740,1838 'valid':62,143,165 'vector':2141 'via':2687 'video':1372 'voic':2738,2740,2756,2762,2774,2781,2795 'wait':108,1764 'wav':1378,2301 'webhook':534,552,580,623,643,673,812,830,869,915,936,971 'webm':1380,2303 'websit':1663 'whisper':242 'within':1677 'without':1176 'worker':1771 'world':380","prices":[{"id":"0293b2f4-5122-4834-b32a-14dbbb173527","listingId":"72cfef64-f491-4955-af11-cecd22c7d0c1","amountUsd":"0","unit":"free","nativeCurrency":null,"nativeAmount":null,"chain":null,"payTo":null,"paymentMethod":"skill-free","isPrimary":true,"details":{"org":"team-telnyx","category":"ai","install_from":"skills.sh"},"createdAt":"2026-04-18T22:06:20.089Z"}],"sources":[{"listingId":"72cfef64-f491-4955-af11-cecd22c7d0c1","source":"github","sourceId":"team-telnyx/ai/telnyx-ai-inference-javascript","sourceUrl":"https://github.com/team-telnyx/ai/tree/main/skills/telnyx-ai-inference-javascript","isPrimary":false,"firstSeenAt":"2026-04-18T22:06:20.089Z","lastSeenAt":"2026-04-22T12:54:44.308Z"}],"details":{"listingId":"72cfef64-f491-4955-af11-cecd22c7d0c1","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"team-telnyx","slug":"telnyx-ai-inference-javascript","github":{"repo":"team-telnyx/ai","stars":167,"topics":["agent-skills","ai","ai-coding-agent","claude-code","cpaas","cursor","iot","llm","sdk","sip","sms","speech-to-text","telephony","telnyx","tts","twilio-migration","voice-agents","voice-ai","webrtc","windsurf"],"license":"mit","html_url":"https://github.com/team-telnyx/ai","pushed_at":"2026-04-21T22:09:49Z","description":"Official one-stop shop for AI Agents and developers building with Telnyx.","skill_md_sha":"1227690c27a3d6274065766999ca5509c83cf4e4","skill_md_path":"skills/telnyx-ai-inference-javascript/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/team-telnyx/ai/tree/main/skills/telnyx-ai-inference-javascript"},"layout":"multi","source":"github","category":"ai","frontmatter":{"name":"telnyx-ai-inference-javascript","description":">-"},"skills_sh_url":"https://skills.sh/team-telnyx/ai/telnyx-ai-inference-javascript"},"updatedAt":"2026-04-22T12:54:44.308Z"}}