{"id":"7433c26d-57f7-473a-97c7-026fbe3198d0","shortId":"u4LY7m","kind":"skill","title":"telnyx-ai-inference-go","tagline":">-","description":"<!-- Auto-generated from Telnyx OpenAPI specs. Do not edit. -->\n\n# Telnyx Ai Inference - Go\n\n## Installation\n\n```bash\ngo get github.com/team-telnyx/telnyx-go\n```\n\n## Setup\n\n```go\nimport (\n  \"context\"\n  \"fmt\"\n  \"os\"\n\n  \"github.com/team-telnyx/telnyx-go\"\n  \"github.com/team-telnyx/telnyx-go/option\"\n)\n\nclient := telnyx.NewClient(\n  option.WithAPIKey(os.Getenv(\"TELNYX_API_KEY\")),\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```go\nimport \"errors\"\n\nresult, err := client.Messages.Send(ctx, params)\nif err != nil {\n  var apiErr *telnyx.Error\n  if errors.As(err, &apiErr) {\n    switch apiErr.StatusCode {\n    case 422:\n      fmt.Println(\"Validation error — check required fields and formats\")\n    case 429:\n      // Rate limited — wait and retry with exponential backoff\n      fmt.Println(\"Rate limited, retrying...\")\n    default:\n      fmt.Printf(\"API error %d: %s\\n\", apiErr.StatusCode, apiErr.Error())\n    }\n  } else {\n    fmt.Println(\"Network error — check connectivity and retry\")\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:** Use `ListAutoPaging()` for automatic iteration: `iter := client.Resource.ListAutoPaging(ctx, params); for iter.Next() { item := iter.Current() }`.\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```go\n\tresponse, err := client.AI.Audio.Transcribe(context.Background(), telnyx.AIAudioTranscribeParams{\n\t\tModel: telnyx.AIAudioTranscribeParamsModelDistilWhisperDistilLargeV2,\n\t})\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tfmt.Printf(\"%+v\\n\", 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```go\n\tresponse, err := client.AI.Chat.NewCompletion(context.Background(), telnyx.AIChatNewCompletionParams{\n\t\tMessages: []telnyx.AIChatNewCompletionParamsMessage{{\n\t\t\tRole: \"system\",\n\t\t\tContent: telnyx.AIChatNewCompletionParamsMessageContentUnion{\n\t\t\t\tOfString: telnyx.String(\"You are a friendly chatbot.\"),\n\t\t\t},\n\t\t}, {\n\t\t\tRole: \"user\",\n\t\t\tContent: telnyx.AIChatNewCompletionParamsMessageContentUnion{\n\t\t\t\tOfString: telnyx.String(\"Hello, world!\"),\n\t\t\t},\n\t\t}},\n\t})\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tfmt.Printf(\"%+v\\n\", 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```go\n\tconversations, err := client.AI.Conversations.List(context.Background(), telnyx.AIConversationListParams{})\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tfmt.Printf(\"%+v\\n\", 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```go\n\tconversation, err := client.AI.Conversations.New(context.Background(), telnyx.AIConversationNewParams{})\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tfmt.Printf(\"%+v\\n\", 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```go\n\tpage, err := client.AI.Conversations.InsightGroups.GetInsightGroups(context.Background(), telnyx.AIConversationInsightGroupGetInsightGroupsParams{})\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tfmt.Printf(\"%+v\\n\", page)\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```go\n\tinsightTemplateGroupDetail, err := client.AI.Conversations.InsightGroups.InsightGroups(context.Background(), telnyx.AIConversationInsightGroupInsightGroupsParams{\n\t\tName: \"my-resource\",\n\t})\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tfmt.Printf(\"%+v\\n\", 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```go\n\tinsightTemplateGroupDetail, err := client.AI.Conversations.InsightGroups.Get(context.Background(), \"182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e\")\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tfmt.Printf(\"%+v\\n\", 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```go\n\tinsightTemplateGroupDetail, err := client.AI.Conversations.InsightGroups.Update(\n\t\tcontext.Background(),\n\t\t\"182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e\",\n\t\ttelnyx.AIConversationInsightGroupUpdateParams{},\n\t)\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tfmt.Printf(\"%+v\\n\", 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```go\n\terr := client.AI.Conversations.InsightGroups.Delete(context.Background(), \"182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e\")\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\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```go\n\terr := client.AI.Conversations.InsightGroups.Insights.Assign(\n\t\tcontext.Background(),\n\t\t\"182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e\",\n\t\ttelnyx.AIConversationInsightGroupInsightAssignParams{\n\t\t\tGroupID: \"182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e\",\n\t\t},\n\t)\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\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```go\n\terr := client.AI.Conversations.InsightGroups.Insights.DeleteUnassign(\n\t\tcontext.Background(),\n\t\t\"182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e\",\n\t\ttelnyx.AIConversationInsightGroupInsightDeleteUnassignParams{\n\t\t\tGroupID: \"182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e\",\n\t\t},\n\t)\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n```\n\n## Get Insight Templates\n\nGet all insights\n\n`GET /ai/conversations/insights`\n\n```go\n\tpage, err := client.AI.Conversations.Insights.List(context.Background(), telnyx.AIConversationInsightListParams{})\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tfmt.Printf(\"%+v\\n\", page)\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```go\n\tinsightTemplateDetail, err := client.AI.Conversations.Insights.New(context.Background(), telnyx.AIConversationInsightNewParams{\n\t\tInstructions: \"You are a helpful assistant.\",\n\t\tName: \"my-resource\",\n\t})\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tfmt.Printf(\"%+v\\n\", 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```go\n\tinsightTemplateDetail, err := client.AI.Conversations.Insights.Get(context.Background(), \"182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e\")\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tfmt.Printf(\"%+v\\n\", 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```go\n\tinsightTemplateDetail, err := client.AI.Conversations.Insights.Update(\n\t\tcontext.Background(),\n\t\t\"182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e\",\n\t\ttelnyx.AIConversationInsightUpdateParams{},\n\t)\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tfmt.Printf(\"%+v\\n\", 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```go\n\terr := client.AI.Conversations.Insights.Delete(context.Background(), \"182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e\")\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n```\n\n## Get a conversation\n\nRetrieve a specific AI conversation by its ID.\n\n`GET /ai/conversations/{conversation_id}`\n\n```go\n\tconversation, err := client.AI.Conversations.Get(context.Background(), \"conversation_id\")\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tfmt.Printf(\"%+v\\n\", 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```go\n\tconversation, err := client.AI.Conversations.Update(\n\t\tcontext.Background(),\n\t\t\"conversation_id\",\n\t\ttelnyx.AIConversationUpdateParams{},\n\t)\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tfmt.Printf(\"%+v\\n\", 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```go\n\terr := client.AI.Conversations.Delete(context.Background(), \"conversation_id\")\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\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```go\n\tresponse, err := client.AI.Conversations.GetConversationsInsights(context.Background(), \"conversation_id\")\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tfmt.Printf(\"%+v\\n\", 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```go\n\terr := client.AI.Conversations.AddMessage(\n\t\tcontext.Background(),\n\t\t\"182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e\",\n\t\ttelnyx.AIConversationAddMessageParams{\n\t\t\tRole: \"user\",\n\t\t},\n\t)\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\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```go\n\tmessages, err := client.AI.Conversations.Messages.List(context.Background(), \"conversation_id\")\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tfmt.Printf(\"%+v\\n\", 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```go\n\tembeddings, err := client.AI.Embeddings.List(context.Background(), telnyx.AIEmbeddingListParams{})\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tfmt.Printf(\"%+v\\n\", 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```go\n\tembeddingResponse, err := client.AI.Embeddings.New(context.Background(), telnyx.AIEmbeddingNewParams{\n\t\tBucketName: \"my-bucket\",\n\t})\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tfmt.Printf(\"%+v\\n\", 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```go\n\tbuckets, err := client.AI.Embeddings.Buckets.List(context.Background())\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tfmt.Printf(\"%+v\\n\", 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```go\n\tbucket, err := client.AI.Embeddings.Buckets.Get(context.Background(), \"bucket_name\")\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tfmt.Printf(\"%+v\\n\", 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```go\n\terr := client.AI.Embeddings.Buckets.Delete(context.Background(), \"bucket_name\")\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\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```go\n\tresponse, err := client.AI.Embeddings.SimilaritySearch(context.Background(), telnyx.AIEmbeddingSimilaritySearchParams{\n\t\tBucketName: \"my-bucket\",\n\t\tQuery: \"What is Telnyx?\",\n\t})\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tfmt.Printf(\"%+v\\n\", 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```go\n\tembeddingResponse, err := client.AI.Embeddings.URL(context.Background(), telnyx.AIEmbeddingURLParams{\n\t\tBucketName: \"my-bucket\",\n\t\tURL: \"https://example.com/resource\",\n\t})\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tfmt.Printf(\"%+v\\n\", 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```go\n\tembedding, err := client.AI.Embeddings.Get(context.Background(), \"task_id\")\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tfmt.Printf(\"%+v\\n\", 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```go\n\tjobs, err := client.AI.FineTuning.Jobs.List(context.Background())\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tfmt.Printf(\"%+v\\n\", 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```go\n\tfineTuningJob, err := client.AI.FineTuning.Jobs.New(context.Background(), telnyx.AIFineTuningJobNewParams{\n\t\tModel: \"openai/gpt-4o\",\n\t\tTrainingFile: \"training-data.jsonl\",\n\t})\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tfmt.Printf(\"%+v\\n\", 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```go\n\tfineTuningJob, err := client.AI.FineTuning.Jobs.Get(context.Background(), \"job_id\")\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tfmt.Printf(\"%+v\\n\", 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```go\n\tfineTuningJob, err := client.AI.FineTuning.Jobs.Cancel(context.Background(), \"job_id\")\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tfmt.Printf(\"%+v\\n\", 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```go\n\tresponse, err := client.AI.GetModels(context.Background())\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tfmt.Printf(\"%+v\\n\", 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```go\n\tresponse, err := client.AI.OpenAI.Embeddings.NewEmbeddings(context.Background(), telnyx.AIOpenAIEmbeddingNewEmbeddingsParams{\n\t\tInput: telnyx.AIOpenAIEmbeddingNewEmbeddingsParamsInputUnion{\n\t\t\tOfString: telnyx.String(\"The quick brown fox jumps over the lazy dog\"),\n\t\t},\n\t\tModel: \"thenlper/gte-large\",\n\t})\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tfmt.Printf(\"%+v\\n\", 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```go\n\tresponse, err := client.AI.OpenAI.Embeddings.ListEmbeddingModels(context.Background())\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tfmt.Printf(\"%+v\\n\", 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```go\n\tresponse, err := client.AI.Summarize(context.Background(), telnyx.AISummarizeParams{\n\t\tBucket: \"my-bucket\",\n\t\tFilename: \"data.csv\",\n\t})\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tfmt.Printf(\"%+v\\n\", 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```go\n\tspeechToTexts, err := client.Legacy.Reporting.BatchDetailRecords.SpeechToText.List(context.Background())\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tfmt.Printf(\"%+v\\n\", 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```go\n\tspeechToText, err := client.Legacy.Reporting.BatchDetailRecords.SpeechToText.New(context.Background(), telnyx.LegacyReportingBatchDetailRecordSpeechToTextNewParams{\n\t\tEndDate:   time.Now(),\n\t\tStartDate: time.Now(),\n\t})\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tfmt.Printf(\"%+v\\n\", 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```go\n\tspeechToText, err := client.Legacy.Reporting.BatchDetailRecords.SpeechToText.Get(context.Background(), \"182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e\")\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tfmt.Printf(\"%+v\\n\", 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```go\n\tspeechToText, err := client.Legacy.Reporting.BatchDetailRecords.SpeechToText.Delete(context.Background(), \"182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e\")\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tfmt.Printf(\"%+v\\n\", 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```go\n\tresponse, err := client.Legacy.Reporting.UsageReports.GetSpeechToText(context.Background(), telnyx.LegacyReportingUsageReportGetSpeechToTextParams{})\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tfmt.Printf(\"%+v\\n\", 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```go\n\tresponse, err := client.TextToSpeech.Generate(context.Background(), telnyx.TextToSpeechGenerateParams{})\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tfmt.Printf(\"%+v\\n\", response.Base64Audio)\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```go\n\tresponse, err := client.TextToSpeech.ListVoices(context.Background(), telnyx.TextToSpeechListVoicesParams{})\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tfmt.Printf(\"%+v\\n\", response.Voices)\n```\n\nReturns: `voices` (array[object])","tags":["telnyx","inference","team-telnyx","agent-skills","ai-coding-agent","claude-code","cpaas","cursor","iot","llm","sdk","sip"],"capabilities":["skill","source-team-telnyx","skill-telnyx-ai-inference-go","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-go","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 (27,754 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.117Z","embedding":null,"createdAt":"2026-04-18T22:06:18.495Z","updatedAt":"2026-04-22T12:54:44.117Z","lastSeenAt":"2026-04-22T12:54:44.117Z","tsv":"'/ai/audio/transcriptions':209 '/ai/chat/completions':269 '/ai/conversations':424,467,1087,1134,1186,1212,1275,1339 '/ai/conversations/insight-groups':515,558,612,662,720,750,792 '/ai/conversations/insights':829,875,940,993,1057 '/ai/embeddings':1411,1515,1965 '/ai/embeddings/buckets':1583,1625,1695 '/ai/embeddings/similarity-search':1766 '/ai/embeddings/url':1850 '/ai/fine_tuning/jobs':2022,2080,2154,2215 '/ai/models':2308 '/ai/openai/embeddings':2376 '/ai/openai/embeddings/models':2451 '/ai/summarize':2524 '/assign':756 '/cancel':2218 '/conversations-insights':1215 '/docs/api-reference/audio/createtranscription)':196 '/docs/api-reference/chat)':256 '/docs/api-reference/embeddings)':2354 '/en/stable/api.html#horizontal-filtering-rows)':400 '/insights':753,795 '/legacy/reporting/batch_detail_records/speech_to_text':2577,2645,2721,2793 '/legacy/reporting/usage_reports/speech_to_text':2878 '/message':1278 '/messages':1342 '/resource':1868 '/team-telnyx/telnyx-go':16,25 '/team-telnyx/telnyx-go/option':28 '/text-to-speech/speech':2938 '/text-to-speech/voices':3038 '/unassign':798 '/v2/ai/openai':2374 '0':1747 '1':1749 '100':2521 '100mb':1495 '182bd5e5':621,678,728,762,770,804,812,949,1012,1065,1309,2729,2801 '182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e':620,677,727,761,769,803,811,948,1011,1064,1308,2728,2800 '401':66,137 '403':141 '404':144 '422':62,94,148 '429':59,104,154 '4fe4':623,680,730,764,772,806,814,951,1014,1067,1311,2731,2803 '5':1822 '6e1a':622,679,729,763,771,805,813,950,1013,1066,1310,2730,2802 'a799':624,681,731,765,773,807,815,952,1015,1068,1312,2732,2804 'aa6d9a6ab26e':625,682,732,766,774,808,816,953,1016,1069,1313,2733,2805 'add':1253 'ai':3,7,386,464,1081,1669,1686 'ai-us':1685 'alreadi':42 'alway':67 'api':34,50,119,139,193,253,273,2351,2448 'api.telnyx.com':2373 'api.telnyx.com/v2/ai/openai':2372 'apierr':85,90 'apierr.error':125 'apierr.statuscode':92,124 'array':231,291,331,542,596,646,704,1235,1299,1379,1600,2422,3056 'assign':738,743 'assist':896,1337,1368 'assum':39 'attempt':1507 'audio':1483,2904,2909,2915,2923,3004 'authent':64,2574,2928 'author':2934 'auto':328 'automat':167 'avail':1735,2267,2282,2437,3007,3013 'aw':2940,2962 'azur':2942,2964 'backoff':112,160 'base':1400,2369 'base64':2387,2918,2958,3003 'base64-encoded':2917 'bash':11 'batch':2561,2569,2628,2637,2706,2715,2778,2787 'beam':340 'bearer':2935 'best':277 'bill':2502 'binari':2914,2956 'boolean':282,285,303,321,342,2946 'brown':2402 'bucket':1428,1465,1517,1543,1574,1578,1585,1599,1610,1619,1626,1629,1633,1673,1677,1683,1696,1702,1720,1768,1785,1848,1853,1864,1940,2526,2538,2541 'bucket.data':1643 'bucketnam':1540,1782,1861 'buckets.data':1597 'cach':2945 'call':51,1294,1298,1333,1378 'cancel':2060,2132,2196,2204,2209,2258 'case':93,103 'chat':237,239,251,1272 'chatbot':361 'check':98,130,151,1903 'child':1818 'choic':290,325,1302 'chunk':1521,1526,1728,1760,1803 'client':29,40 'client.ai.audio.transcribe':213 'client.ai.chat.newcompletion':346 'client.ai.conversations.addmessage':1306 'client.ai.conversations.delete':1191 'client.ai.conversations.get':1093 'client.ai.conversations.getconversationsinsights':1219 'client.ai.conversations.insightgroups.delete':725 'client.ai.conversations.insightgroups.get':618 'client.ai.conversations.insightgroups.getinsightgroups':519 'client.ai.conversations.insightgroups.insightgroups':569 'client.ai.conversations.insightgroups.insights.assign':759 'client.ai.conversations.insightgroups.insights.deleteunassign':801 'client.ai.conversations.insightgroups.update':675 'client.ai.conversations.insights.delete':1062 'client.ai.conversations.insights.get':946 'client.ai.conversations.insights.list':833 'client.ai.conversations.insights.new':888 'client.ai.conversations.insights.update':1009 'client.ai.conversations.list':428 'client.ai.conversations.messages.list':1346 'client.ai.conversations.new':476 'client.ai.conversations.update':1143 'client.ai.embeddings.buckets.delete':1700 'client.ai.embeddings.buckets.get':1631 'client.ai.embeddings.buckets.list':1587 'client.ai.embeddings.get':1971 'client.ai.embeddings.list':1415 'client.ai.embeddings.new':1537 'client.ai.embeddings.similaritysearch':1779 'client.ai.embeddings.url':1858 'client.ai.finetuning.jobs.cancel':2222 'client.ai.finetuning.jobs.get':2160 'client.ai.finetuning.jobs.list':2026 'client.ai.finetuning.jobs.new':2093 'client.ai.getmodels':2312 'client.ai.openai.embeddings.listembeddingmodels':2455 'client.ai.openai.embeddings.newembeddings':2393 'client.ai.summarize':2535 'client.legacy.reporting.batchdetailrecords.speechtotext.delete':2798 'client.legacy.reporting.batchdetailrecords.speechtotext.get':2726 'client.legacy.reporting.batchdetailrecords.speechtotext.list':2581 'client.legacy.reporting.batchdetailrecords.speechtotext.new':2654 'client.legacy.reporting.usagereports.getspeechtotext':2882 'client.messages.send':78 'client.resource.listautopaging':170 'client.texttospeech.generate':2990 'client.texttospeech.listvoices':3042 'cloud':1846 'code':72,136 'common':134 'compat':2346,2443 'complet':238,252,1249,1936,2619,2697,2770,2842 'configur':388 'connect':131 'consist':188,247,2302 'content':353,364,1282,1809,1812,1834,2478,2486 'context':20 'context.background':214,347,429,477,520,570,619,676,726,760,802,834,889,947,1010,1063,1094,1144,1192,1220,1307,1347,1416,1538,1588,1632,1701,1780,1859,1972,2027,2094,2161,2223,2313,2394,2456,2536,2582,2655,2727,2799,2883,2991,3043 'convent':2306 'convers':380,387,426,460,465,474,1077,1082,1088,1091,1095,1125,1132,1135,1141,1145,1177,1181,1187,1193,1204,1210,1213,1221,1233,1259,1268,1276,1323,1330,1340,1348 'conversation.data':1105,1156 'conversation.id':487 'conversations.data':439 'cosin':1739 'crawl':1831 'creat':235,441,458,461,489,532,548,552,586,636,694,846,867,870,911,964,1028,1107,1158,1237,1251,1360,1430,1554,1645,1879,1985,2017,2038,2068,2073,2110,2174,2236,2324,2333,2335,2467,2593,2622,2631,2671,2744,2816 'csv':1482,2496 'ctx':79,171 'current':1471,1732,1908 'custom':856,921,974,1038 'd':121 'data':2421,2895 'data.csv':2543 'date':444,452,492,500,535,589,639,697,849,914,967,1031,1110,1118,1161,1169,1240,1291,1363,1373,1433,1438,1648,1659,1666,2596,2602,2604,2612,2614,2648,2650,2674,2680,2682,2690,2692,2747,2753,2755,2763,2765,2819,2825,2827,2835,2837 'date-tim':443,451,491,499,534,588,638,696,848,913,966,1030,1109,1117,1160,1168,1239,1290,1362,1372,1432,1437,1647,1658,1665,2595,2603,2613,2673,2681,2691,2746,2754,2764,2818,2826,2836 'deep':1824 'default':117,857,922,975,1039,1405 'delet':710,714,719,791,1049,1052,1056,1175,1178,1185,1674,1694,2773,2781,2792 'descript':537,562,591,641,666,699 'dimens':2381 'disabl':1668,1681,2944 'distanc':1736,1745,1753,1800 'doc':1726,1774 'document':1458,1520,1525,1711,1727,1759,1802 'dog':2408 'domain':1828 'download':2598,2676,2749,2821 'durat':228 'earli':280 'either':1392 'elevenlab':2947,2965 'els':126 'emb':1457,1807,1810 'embed':1413,1460,1468,1510,1529,1573,1577,1606,1613,1656,1672,1679,1899,1909,1930,1942,1950,1957,1969,2334,2337,2350,2431,2438 'embedding.data':1983 'embeddingrespons':1535,1856 'embeddingresponse.data':1552,1877 'embeddings.data':1426 'enabl':283 'encod':2383,2919 'end':2601,2649,2679,2752,2824 'enddat':2657 'endpoint':186,245,1273,2270,2344,2441,2861 'entir':1676 'enum':326,855,920,973,1037,1245,1366,1441,1992,2055,2127,2191,2253,2385,2617,2695,2768,2840,2955,2961,2979 'err':77,82,89,212,219,222,345,371,374,427,432,435,475,480,483,518,523,526,568,577,580,617,627,630,674,685,688,724,734,737,758,776,779,800,818,821,832,837,840,887,902,905,945,955,958,1008,1019,1022,1061,1071,1074,1092,1098,1101,1142,1149,1152,1190,1196,1199,1218,1224,1227,1305,1318,1321,1345,1351,1354,1414,1419,1422,1536,1545,1548,1586,1590,1593,1630,1636,1639,1699,1705,1708,1778,1791,1794,1857,1870,1873,1970,1976,1979,2025,2029,2032,2092,2101,2104,2159,2165,2168,2221,2227,2230,2311,2315,2318,2392,2412,2415,2454,2458,2461,2534,2545,2548,2580,2584,2587,2653,2662,2665,2725,2735,2738,2797,2807,2810,2881,2886,2889,2989,2994,2997,3041,3046,3049 'error':47,56,61,65,69,75,97,120,129,135,150,1650 'errors.as':88 'exampl':37,403,2298 'example.com':1867 'example.com/resource':1866 'expir':2621,2699,2772,2844 'exponenti':111,159 'fail':53,1250,1395,1945,1963,2059,2131,2195,2257,2620,2698,2771,2843 'failur':1445,1943,1996 'fetch':2853,2866 'field':100,152,410,417 'file':1473,1480,1496,1499,1604,1614,1948,1955,2066,2084,2138,2202,2264,2477,2484 'file-level':1603 'filenam':1653,2527,2542 'filter':402,414,2643 'fine':2006,2014,2070,2076,2142,2147,2206,2211 'finetuningjob':2091,2158,2220 'finetuningjob.id':2108,2172,2234 'finish':1435,1557,1882,1988,2041,2113,2177,2239 'flac':2509 'float':2386 'fmt':21 'fmt.printf':118,223,375,436,484,527,581,631,689,841,906,959,1023,1102,1153,1228,1355,1423,1549,1594,1640,1795,1874,1980,2033,2105,2169,2231,2319,2416,2462,2549,2588,2666,2739,2811,2890,2998,3050 'fmt.println':95,113,127 'follow':1916,2489,2499 'form':2293 'format':102,153,318,2384,2449,2491,2501,2913 'found':147 'fox':2403 'frequenc':286 'friend':360 'generat':2479,2851,2864,2897,2901 'get':13,423,506,510,514,602,606,611,822,825,828,932,935,939,1075,1086,1200,1211,1322,1338,1381,1410,1575,1582,1602,1611,1624,1897,1964,2021,2140,2153,2266,2307,2450,2556,2576,2700,2720,2845,2877,3037 'github.com':15,24,27 'github.com/team-telnyx/telnyx-go':14,23 'github.com/team-telnyx/telnyx-go/option':26 'given':1617 'go':5,9,12,18,73,210,343,425,473,516,566,615,672,723,757,799,830,885,943,1006,1060,1090,1140,1189,1216,1304,1343,1412,1534,1584,1628,1698,1776,1855,1968,2023,2090,2157,2219,2309,2390,2452,2532,2578,2651,2723,2795,2879,2987,3039 'group':509,513,551,556,605,608,613,655,660,663,713,716,721,742,748,751,784,790,793 'groupid':768,810 'guid':289,293,296 'handl':48,68 'header':2936 'hello':368 'help':895 'html':1477,2493 'huggingfac':2304 'hyperparamet':2045,2086,2117,2181,2243 'id':446,494,539,593,610,614,643,664,701,718,722,752,755,794,797,851,916,938,942,969,995,1033,1055,1059,1085,1089,1096,1112,1136,1146,1163,1184,1188,1194,1214,1222,1242,1277,1295,1341,1349,1449,1455,1564,1570,1889,1895,1967,1974,2000,2047,2052,2119,2124,2152,2156,2163,2183,2188,2217,2225,2245,2250,2287,2326,2469,2606,2684,2719,2722,2757,2791,2794,2829 'import':19,74,161 'includ':405,1331,1620,1817 'infer':4,8 'initi':43 'input':2341,2378,2396,2907 'insert':1262 'insight':507,512,541,549,555,595,603,607,645,653,658,703,711,715,739,745,754,781,787,796,823,827,853,868,873,918,933,936,941,971,986,990,994,1035,1050,1053,1058,1201,1206,1234 'insighttemplatedetail':886,944,1007 'insighttemplatedetail.data':909,962,1026 'insighttemplategroupdetail':567,616,673 'insighttemplategroupdetail.data':584,634,692 'instal':10 'instruct':858,877,891,923,976,997,1040 'insuffici':142 'integ':279,306,335,1524,1528,1775,2040,2043,2063,2112,2115,2135,2176,2179,2199,2238,2241,2261,2325,2382,2468 'invalid':138 'item':175 'iter':168,169 'iter.current':176 'iter.next':174 'job':2008,2016,2024,2072,2078,2144,2149,2151,2155,2162,2208,2213,2216,2224 'jobs.data':2036 'js':204,264,2362 'json':294,421,860,880,925,978,999,1042,1481,2495,2920 'jump':2404 'key':35,140,274 'languag':242,2949 'last':448,496,1114,1165,1655 'later':2926 'lazi':2407 'least':1961 'length':299 'level':1605,1823 'limit':58,106,115,156 'link':1841,2599,2677,2750,2822 'list':379,383,1572,2005,2011,2273,2430,2435,3006,3011 'listautopag':165 'load':1833 'loader':1532 'log.fatal':221,373,434,482,525,579,629,687,736,778,820,839,904,957,1021,1073,1100,1151,1198,1226,1320,1353,1421,1547,1592,1638,1707,1793,1872,1978,2031,2103,2167,2229,2317,2414,2460,2547,2586,2664,2737,2809,2888,2996,3048 'logprob':302,334 'lower':1751 'm4a':1489,2514 'made':1334 'main':1837 'manual':1269 'match':1501 'max':304,1493 'may':198,258,2356 'mb':2522 'media':2500 'messag':271,349,449,497,1115,1166,1252,1256,1265,1324,1326,1344 'messages.data':1358 'metadata':409,420,454,469,502,1120,1126,1128,1138,1171,1284,1805 'metric':1737 'min':307 'minimax':2951,2966 'mistralai/mistral-7b-instruct-v0.1':2301 'model':216,243,310,1469,1530,2049,2082,2096,2121,2185,2247,2268,2279,2286,2295,2379,2409,2424,2432,2439,2447 'mp3':1485,2510 'mp4':1486,2511 'mpeg':1487,2512 'mpga':1488,2513 'my-bucket':1541,1783,1862,2539 'my-resourc':573,898 'n':123,225,312,377,438,486,529,583,633,691,843,908,961,1025,1104,1155,1230,1357,1425,1551,1596,1642,1797,1876,1982,2035,2107,2171,2233,2321,2418,2464,2551,2590,2668,2741,2813,2892,3000,3052 'name':456,471,504,544,560,572,598,648,668,706,863,878,897,928,981,1002,1045,1122,1173,1286,1452,1518,1567,1627,1634,1697,1703,1769,1854,1892,2003,2296,2305 'network':55,128 'new':463,554,872,1255,1264,2075,2624,2633 'nil':83,220,372,433,481,524,578,628,686,735,777,819,838,903,956,1020,1072,1099,1150,1197,1225,1319,1352,1420,1546,1591,1637,1706,1792,1871,1977,2030,2102,2166,2228,2316,2413,2459,2546,2585,2663,2736,2808,2887,2995,3047 'none':327 'normal':1691 'note':162,2285 'null':1560,1885,2044,2064,2116,2136,2180,2200,2242,2262 'num':1725,1772 'number':229,288,301,309,313,316,323,338,1801 'object':232,295,319,332,422,455,470,503,543,597,647,705,862,882,927,980,1001,1044,1121,1139,1172,1236,1285,1300,1303,1380,1531,1533,1806,2046,2087,2118,2182,2244,2328,2423,2426,2429,2471,2896,2941,2943,2948,2952,2970,2972,2974,2986,3057 'ofstr':355,366,2398 'ogg':2515 'one':1913,1962,3016 'open':2275 'openai':191,203,250,263,2278,2349,2361,2446 'openai/gpt-4':2299 'openai/gpt-4o':2097 'option':272,468,561,665,879,996,1137,1281,1519,1771,2085,2380,2528,2939 'option.withapikey':31 'organ':2051,2123,2187,2249 'os':22 'os.getenv':32 'otherwis':3031 'output':2953,2957,2959 'overlap':1522 'own':2330,2473 'p':308,337 'page':517,530,831,844,1819,1842 'pagin':163 'param':80,172 'paramet':397 'partial':1398,1446,1952,1997 'pdf':1476,2492 'penalti':287,300,315 'pend':1246,2618,2696,2769,2841 'perform':1459,1712 'period':2876 'permiss':143 'pick':1923 'platform.openai.com':195,255,2353 'platform.openai.com/docs/api-reference/audio/createtranscription)':194 'platform.openai.com/docs/api-reference/chat)':254 'platform.openai.com/docs/api-reference/embeddings)':2352 'post':208,268,466,557,749,874,1274,1514,1765,1849,2079,2214,2375,2523,2644,2937 'postgrest':394 'postgrest-styl':393 'postgrest.org':399 'postgrest.org/en/stable/api.html#horizontal-filtering-rows)':398 'presenc':314 'price':1693 'process':1394,1409,1443,1622,1830,1928,1994 'product':71 'progress':1248 'prompt':2530 'provid':2930,2960,3020,3022,3029,3036 'put':661,992,1133 'python':206,266,2364 'queri':396,1403,1731,1764,1770,1786 'queu':1393,1407,1442,1917,1993,2056,2128,2192,2254 'quick':2401 'rate':57,105,114,155 'reason':1651 'record':2608,2686,2759,2831 'ref':275 'regex':297 'remov':785 'report':2562,2570,2629,2638,2707,2716,2779,2788,2850,2858,2871 'repres':2339 'request':2563,2571,2630,2639,2708,2717,2780,2789,2912 'requir':99,270,329,559,876,1279,1516,1767,1851,2081,2377,2525,2646 'resembl':2968,2969 'resourc':145,575,900 'respons':211,317,344,378,1217,1777,2310,2391,2453,2533,2880,2988,3040 'response.base64audio':3001 'response.data':1231,1798,2322,2419,2465,2552,2893 'response.text':226 'response.voices':3053 'result':76 'retri':109,116,133,157 'retriev':381,1078,1205,1325,1385,2009,2145,2564,2709,2927,3009 'return':227,440,488,531,585,635,693,845,910,963,1027,1106,1157,1232,1359,1427,1553,1598,1644,1688,1721,1743,1758,1799,1878,1984,2037,2109,2173,2235,2271,2323,2420,2433,2466,2553,2592,2670,2743,2815,2894,2908,3002,3025,3032,3054 'rime':2967,2971 'role':351,362,1280,1315,1365 'run':1933,2057,2129,2193,2255 'schema':861,881,926,979,1000,1043 'sdk':207,267,2365 'search':341,1709,1715 'segment':230 'sent':1288,1370 'set':2367,2985 'setup':17 'shown':45 'similar':1714,1724,1740,1756 'size':1497,1523,1527 'skill' 'skill-telnyx-ai-inference-go' 'sourc':2276,2294 'source-team-telnyx' 'specif':1080,1131,1180,1209,1329,2702,2711,2783 'specifi':1815,2642,2874,3024 'speech':178,182,2558,2566,2625,2634,2703,2712,2775,2784,2846,2854,2868,2898,2903 'speechtotext':2579,2652,2724,2796 'speechtotext.data':2669,2742,2814 'speechtotexts.data':2591 'ssml':2981 'standard':408,2933 'start':2611,2647,2689,2762,2834 'startdat':2659 'status':1244,1384,1440,1561,1607,1623,1661,1886,1902,1905,1991,2054,2126,2190,2252,2616,2694,2767,2839 'stop':281 'storag':1464,1692,1719,1847 'stream':320,2916 'string':234,276,292,298,311,457,472,505,538,545,547,563,565,592,599,601,642,649,651,667,669,671,700,707,709,859,864,866,884,924,929,931,977,982,984,998,1003,1005,1041,1046,1048,1123,1174,1243,1283,1287,1296,1376,1404,1429,1450,1453,1456,1556,1559,1562,1568,1601,1652,1654,1662,1804,1881,1884,1887,1893,1987,1990,2004,2048,2050,2053,2067,2089,2120,2122,2125,2139,2184,2186,2189,2203,2246,2248,2251,2265,2327,2329,2332,2389,2425,2427,2470,2472,2475,2531,2555,2600,2607,2610,2678,2685,2688,2751,2758,2761,2823,2830,2833,2950,2976,2983,3005 'style':395 'succeed':2058,2130,2194,2256 'success':1396,1399,1444,1447,1934,1937,1951,1953,1958,1995,1998 'suffix':2088 'summar':2476 'summari':2481,2508,2554 'support':392,1472,2487,2497 'switch':91 'synchron':2859 'synthes':2902 'system':352,2529 'task':1382,1386,1448,1451,1563,1566,1888,1891,1900,1910,1918,1931,1935,1944,1966,1973,1999,2002 'telnyx':2,6,33,1463,1718,1789,1845,2963,2973 'telnyx-ai-inference-go':1 'telnyx.aiaudiotranscribeparams':215 'telnyx.aiaudiotranscribeparamsmodeldistilwhisperdistillargev2':217 'telnyx.aichatnewcompletionparams':348 'telnyx.aichatnewcompletionparamsmessage':350 'telnyx.aichatnewcompletionparamsmessagecontentunion':354,365 'telnyx.aiconversationaddmessageparams':1314 'telnyx.aiconversationinsightgroupgetinsightgroupsparams':521 'telnyx.aiconversationinsightgroupinsightassignparams':767 'telnyx.aiconversationinsightgroupinsightdeleteunassignparams':809 'telnyx.aiconversationinsightgroupinsightgroupsparams':571 'telnyx.aiconversationinsightgroupupdateparams':683 'telnyx.aiconversationinsightlistparams':835 'telnyx.aiconversationinsightnewparams':890 'telnyx.aiconversationinsightupdateparams':1017 'telnyx.aiconversationlistparams':430 'telnyx.aiconversationnewparams':478 'telnyx.aiconversationupdateparams':1147 'telnyx.aiembeddinglistparams':1417 'telnyx.aiembeddingnewparams':1539 'telnyx.aiembeddingsimilaritysearchparams':1781 'telnyx.aiembeddingurlparams':1860 'telnyx.aifinetuningjobnewparams':2095 'telnyx.aiopenaiembeddingnewembeddingsparams':2395 'telnyx.aiopenaiembeddingnewembeddingsparamsinputunion':2397 'telnyx.aisummarizeparams':2537 'telnyx.error':86 'telnyx.legacyreportingbatchdetailrecordspeechtotextnewparams':2656 'telnyx.legacyreportingusagereportgetspeechtotextparams':2884 'telnyx.newclient':30 'telnyx.string':356,367,2399 'telnyx.texttospeechgenerateparams':2992 'telnyx.texttospeechlistvoicesparams':3044 'temperatur':322 'templat':508,550,604,654,659,712,740,782,824,869,934,987,991,1051 'text':180,184,233,1375,1479,1513,2342,2490,2560,2568,2627,2636,2705,2714,2777,2786,2848,2856,2870,2900,2906,2975,2977,2980 'thenlper/gte-large':2410 'think':284 'time':445,453,493,501,536,590,640,698,850,915,968,1032,1111,1119,1162,1170,1241,1292,1364,1374,1434,1439,1649,1660,1667,2597,2605,2615,2675,2683,2693,2748,2756,2766,2820,2828,2838,2875 'time.now':2658,2660 'token':305,2062,2134,2198,2260 'tool':324,330,1293,1297,1301,1332,1369,1377 'top':333,336 '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':2061,2065,2083,2133,2137,2197,2201,2259,2263 'training-data.jsonl':2099 'trainingfil':2098 'transcrib':177,181 'transcript':192,2506 'tts':3019 'tune':2007,2015,2071,2077,2143,2148,2207,2212 'txt':2494 'txt/unstructured':1478 'type':854,919,972,1036,1474,1504,2609,2687,2760,2832,2954,2978 'unassign':780 'unstructur':1512 'updat':652,656,985,988,1124,1127,1663 'url':1808,1816,1838,1852,1865,2370,2924 'usag':2428,2849,2857 'use':164,200,260,339,1260,1271,1466,1687,2284,2358 'user':363,391,1316,1367,1389,1454,1569,1581,1618,1894,2020,2388,2575 'uuid':447,495,540,594,644,702,852,917,970,1034,1113,1164,1565,1571,1890,1896,2001 'v':224,376,437,485,528,582,632,690,842,907,960,1024,1103,1154,1229,1356,1424,1550,1595,1641,1796,1875,1981,2034,2106,2170,2232,2320,2417,2463,2550,2589,2667,2740,2812,2891,2999,3051 'valid':60,96,149 'var':84 'vector':2338 'via':2931 'video':1484 'voic':2982,2984,3008,3014,3026,3033,3055 'wait':107,1920 'wav':1490,2516 'webhook':546,564,600,650,670,708,865,883,930,983,1004,1047 'webm':1492,2518 'websit':1811 'within':1825 'without':1270 'worker':1927 'world':369","prices":[{"id":"e42a2231-4fbb-48a1-9a6a-fc9fafc5f160","listingId":"7433c26d-57f7-473a-97c7-026fbe3198d0","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:18.495Z"}],"sources":[{"listingId":"7433c26d-57f7-473a-97c7-026fbe3198d0","source":"github","sourceId":"team-telnyx/ai/telnyx-ai-inference-go","sourceUrl":"https://github.com/team-telnyx/ai/tree/main/skills/telnyx-ai-inference-go","isPrimary":false,"firstSeenAt":"2026-04-18T22:06:18.495Z","lastSeenAt":"2026-04-22T12:54:44.117Z"}],"details":{"listingId":"7433c26d-57f7-473a-97c7-026fbe3198d0","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"team-telnyx","slug":"telnyx-ai-inference-go","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":"ee8b937477241e78d13cdee16aeb1242ce1d9d09","skill_md_path":"skills/telnyx-ai-inference-go/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/team-telnyx/ai/tree/main/skills/telnyx-ai-inference-go"},"layout":"multi","source":"github","category":"ai","frontmatter":{"name":"telnyx-ai-inference-go","description":">-"},"skills_sh_url":"https://skills.sh/team-telnyx/ai/telnyx-ai-inference-go"},"updatedAt":"2026-04-22T12:54:44.117Z"}}