{"id":"e7f943b8-be9f-48e3-8e5a-8ecf43110a4a","shortId":"f6Lc5X","kind":"skill","title":"telnyx-ai-inference-python","tagline":">-","description":"<!-- Auto-generated from Telnyx OpenAPI specs. Do not edit. -->\n\n# Telnyx Ai Inference - Python\n\n## Installation\n\n```bash\npip install telnyx\n```\n\n## Setup\n\n```python\nimport os\nfrom telnyx import Telnyx\n\nclient = Telnyx(\n    api_key=os.environ.get(\"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```python\nimport telnyx\n\ntry:\n    result = client.messages.send(to=\"+13125550001\", from_=\"+13125550002\", text=\"Hello\")\nexcept telnyx.APIConnectionError:\n    print(\"Network error — check connectivity and retry\")\nexcept telnyx.RateLimitError:\n    # 429: rate limited — wait and retry with exponential backoff\n    import time\n    time.sleep(1)  # Check Retry-After header for actual delay\nexcept telnyx.APIStatusError as e:\n    print(f\"API error {e.status_code}: {e.message}\")\n    if e.status_code == 422:\n        print(\"Validation error — check required fields and formats\")\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 item in page_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```python\nresponse = client.ai.audio.transcribe(\n    model=\"distil-whisper/distil-large-v2\",\n)\nprint(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```python\nresponse = client.ai.chat.create_completion(\n    messages=[{\n        \"role\": \"system\",\n        \"content\": \"You are a friendly chatbot.\",\n    }, {\n        \"role\": \"user\",\n        \"content\": \"Hello, world!\",\n    }],\n)\nprint(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```python\nconversations = client.ai.conversations.list()\nprint(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```python\nconversation = client.ai.conversations.create()\nprint(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```python\npage = client.ai.conversations.insight_groups.retrieve_insight_groups()\npage = page.data[0]\nprint(page.id)\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```python\ninsight_template_group_detail = client.ai.conversations.insight_groups.insight_groups(\n    name=\"my-resource\",\n)\nprint(insight_template_group_detail.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```python\ninsight_template_group_detail = client.ai.conversations.insight_groups.retrieve(\n    \"182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e\",\n)\nprint(insight_template_group_detail.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```python\ninsight_template_group_detail = client.ai.conversations.insight_groups.update(\n    group_id=\"182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e\",\n)\nprint(insight_template_group_detail.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```python\nclient.ai.conversations.insight_groups.delete(\n    \"182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e\",\n)\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```python\nclient.ai.conversations.insight_groups.insights.assign(\n    insight_id=\"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```python\nclient.ai.conversations.insight_groups.insights.delete_unassign(\n    insight_id=\"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```python\npage = client.ai.conversations.insights.list()\npage = page.data[0]\nprint(page.id)\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```python\ninsight_template_detail = client.ai.conversations.insights.create(\n    instructions=\"You are a helpful assistant.\",\n    name=\"my-resource\",\n)\nprint(insight_template_detail.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```python\ninsight_template_detail = client.ai.conversations.insights.retrieve(\n    \"182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e\",\n)\nprint(insight_template_detail.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```python\ninsight_template_detail = client.ai.conversations.insights.update(\n    insight_id=\"182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e\",\n)\nprint(insight_template_detail.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```python\nclient.ai.conversations.insights.delete(\n    \"182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e\",\n)\n```\n\n## Get a conversation\n\nRetrieve a specific AI conversation by its ID.\n\n`GET /ai/conversations/{conversation_id}`\n\n```python\nconversation = client.ai.conversations.retrieve(\n    \"conversation_id\",\n)\nprint(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```python\nconversation = client.ai.conversations.update(\n    conversation_id=\"550e8400-e29b-41d4-a716-446655440000\",\n)\nprint(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```python\nclient.ai.conversations.delete(\n    \"conversation_id\",\n)\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```python\nresponse = client.ai.conversations.retrieve_conversations_insights(\n    \"conversation_id\",\n)\nprint(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```python\nclient.ai.conversations.add_message(\n    conversation_id=\"182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e\",\n    role=\"user\",\n)\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```python\nmessages = client.ai.conversations.messages.list(\n    \"conversation_id\",\n)\nprint(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```python\nembeddings = client.ai.embeddings.list()\nprint(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```python\nembedding_response = client.ai.embeddings.create(\n    bucket_name=\"my-bucket\",\n)\nprint(embedding_response.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```python\nbuckets = client.ai.embeddings.buckets.list()\nprint(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```python\nbucket = client.ai.embeddings.buckets.retrieve(\n    \"bucket_name\",\n)\nprint(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```python\nclient.ai.embeddings.buckets.delete(\n    \"bucket_name\",\n)\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```python\nresponse = client.ai.embeddings.similarity_search(\n    bucket_name=\"my-bucket\",\n    query=\"What is Telnyx?\",\n)\nprint(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```python\nembedding_response = client.ai.embeddings.url(\n    bucket_name=\"my-bucket\",\n    url=\"https://example.com/resource\",\n)\nprint(embedding_response.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```python\nembedding = client.ai.embeddings.retrieve(\n    \"task_id\",\n)\nprint(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```python\njobs = client.ai.fine_tuning.jobs.list()\nprint(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```python\nfine_tuning_job = client.ai.fine_tuning.jobs.create(\n    model=\"openai/gpt-4o\",\n    training_file=\"training-data.jsonl\",\n)\nprint(fine_tuning_job.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```python\nfine_tuning_job = client.ai.fine_tuning.jobs.retrieve(\n    \"job_id\",\n)\nprint(fine_tuning_job.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```python\nfine_tuning_job = client.ai.fine_tuning.jobs.cancel(\n    \"job_id\",\n)\nprint(fine_tuning_job.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```python\nresponse = client.ai.retrieve_models()\nprint(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```python\nresponse = client.ai.openai.embeddings.create_embeddings(\n    input=\"The quick brown fox jumps over the lazy dog\",\n    model=\"thenlper/gte-large\",\n)\nprint(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```python\nresponse = client.ai.openai.embeddings.list_embedding_models()\nprint(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```python\nresponse = client.ai.summarize(\n    bucket=\"my-bucket\",\n    filename=\"data.csv\",\n)\nprint(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```python\nspeech_to_texts = client.legacy.reporting.batch_detail_records.speech_to_text.list()\nprint(speech_to_texts.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```python\nfrom datetime import datetime\n\nspeech_to_text = client.legacy.reporting.batch_detail_records.speech_to_text.create(\n    end_date=datetime.fromisoformat(\"2020-07-01T00:00:00-06:00\"),\n    start_date=datetime.fromisoformat(\"2020-07-01T00:00:00-06:00\"),\n)\nprint(speech_to_text.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```python\nspeech_to_text = client.legacy.reporting.batch_detail_records.speech_to_text.retrieve(\n    \"182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e\",\n)\nprint(speech_to_text.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```python\nspeech_to_text = client.legacy.reporting.batch_detail_records.speech_to_text.delete(\n    \"182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e\",\n)\nprint(speech_to_text.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```python\nresponse = client.legacy.reporting.usage_reports.retrieve_speech_to_text()\nprint(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```python\nresponse = client.text_to_speech.generate()\nprint(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```python\nresponse = client.text_to_speech.list_voices()\nprint(response.voices)\n```\n\nReturns: `voices` (array[object])","tags":["telnyx","inference","python","team-telnyx","agent-skills","ai-coding-agent","claude-code","cpaas","cursor","iot","llm","sdk"],"capabilities":["skill","source-team-telnyx","skill-telnyx-ai-inference-python","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-python","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 (23,508 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.403Z","embedding":null,"createdAt":"2026-04-18T22:06:20.889Z","updatedAt":"2026-04-22T12:54:44.403Z","lastSeenAt":"2026-04-22T12:54:44.403Z","tsv":"'+13125550001':83 '+13125550002':85 '-01':2382,2393 '-06':2386,2397 '-07':2381,2392 '/ai/audio/transcriptions':225 '/ai/chat/completions':278 '/ai/conversations':417,450,987,1025,1073,1092,1148,1207 '/ai/conversations/insight-groups':488,526,574,618,671,694,731 '/ai/conversations/insights':764,803,860,906,964 '/ai/embeddings':1270,1364,1765 '/ai/embeddings/buckets':1424,1457,1518 '/ai/embeddings/similarity-search':1582 '/ai/embeddings/url':1658 '/ai/fine_tuning/jobs':1813,1862,1929,1983 '/ai/models':2069 '/ai/openai/embeddings':2129 '/ai/openai/embeddings/models':2192 '/ai/summarize':2258 '/assign':700 '/cancel':1986 '/conversations-insights':1095 '/distil-large-v2':233 '/docs/api-reference/audio/createtranscription)':212 '/docs/api-reference/chat)':265 '/docs/api-reference/embeddings)':2107 '/en/stable/api.html#horizontal-filtering-rows)':393 '/insights':697,734 '/legacy/reporting/batch_detail_records/speech_to_text':2301,2362,2452,2517 '/legacy/reporting/usage_reports/speech_to_text':2595 '/message':1151 '/messages':1210 '/resource':1675 '/text-to-speech/speech':2648 '/text-to-speech/voices':2738 '/unassign':737 '/v2/ai/openai':2127 '0':496,770,1563 '00':2384,2385,2387,2395,2396,2398 '1':111,1565 '100':2255 '100mb':1344 '182bd5e5':584,637,677,706,714,744,752,869,927,970,1183,2460,2525 '182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e':583,636,676,705,713,743,751,868,926,969,1182,2459,2524 '2020':2380,2391 '401':69,146 '403':150 '404':153 '41d4':1039 '422':65,134,157 '429':62,99,163 '446655440000':1041 '4fe4':586,639,679,708,716,746,754,871,929,972,1185,2462,2527 '5':1630 '550e8400':1036 '6e1a':585,638,678,707,715,745,753,870,928,971,1184,2461,2526 'a716':1040 'a799':587,640,680,709,717,747,755,872,930,973,1186,2463,2528 'aa6d9a6ab26e':588,641,681,710,718,748,756,873,931,974,1187,2464,2529 'actual':118 'add':1126 'ai':3,7,379,447,981,1492,1509 'ai-us':1508 'alreadi':45 'alway':70 'api':25,29,53,126,148,209,262,282,2104,2189 'api.telnyx.com':2126 'api.telnyx.com/v2/ai/openai':2125 'array':240,300,340,510,558,602,655,1108,1172,1238,1432,2163,2747 'assign':682,687 'assist':823,1205,1227 'assum':42 'attempt':1356 'audio':1332,2614,2619,2625,2633,2704 'authent':67,2298,2638 'author':2644 'auto':178,337 'auto-pagin':177 'automat':192 'avail':1551,2028,2043,2178,2707,2713 'aw':2650,2672 'azur':2652,2674 'backoff':107,169 'base':1259,2122 'base64':2140,2628,2668,2703 'base64-encoded':2627 'bash':11 'batch':2285,2293,2345,2354,2437,2446,2502,2511 'beam':349 'bearer':2645 'best':286 'bill':2236 'binari':2624,2666 'boolean':291,294,312,330,351,2656 'brown':2150 'bucket':1277,1314,1366,1387,1391,1415,1419,1426,1431,1442,1451,1458,1461,1463,1496,1500,1506,1519,1523,1536,1584,1596,1600,1656,1661,1667,1671,1740,2260,2269,2272 'bucket.data':1466 'buckets.data':1429 'cach':2655 'call':54,1167,1171,1201,1237 'cancel':1842,1907,1964,1972,1977,2019 'chat':246,248,260,1145 'chatbot':364 'check':93,112,138,160,1703 'child':1626 'choic':299,334,1175 'chunk':1370,1375,1544,1576,1611 'client':23,43 'client.ai.audio.transcribe':228 'client.ai.chat.create':354 'client.ai.conversations.add':1178 'client.ai.conversations.create':458 'client.ai.conversations.delete':1077 'client.ai.conversations.insight_groups.delete':675 'client.ai.conversations.insight_groups.insight':539 'client.ai.conversations.insight_groups.insights.assign':702 'client.ai.conversations.insight_groups.insights.delete':739 'client.ai.conversations.insight_groups.retrieve':491,582 'client.ai.conversations.insight_groups.update':633 'client.ai.conversations.insights.create':817 'client.ai.conversations.insights.delete':968 'client.ai.conversations.insights.list':767 'client.ai.conversations.insights.retrieve':867 'client.ai.conversations.insights.update':923 'client.ai.conversations.list':420 'client.ai.conversations.messages.list':1213 'client.ai.conversations.retrieve':992,1098 'client.ai.conversations.update':1033 'client.ai.embeddings.buckets.delete':1522 'client.ai.embeddings.buckets.list':1427 'client.ai.embeddings.buckets.retrieve':1462 'client.ai.embeddings.create':1386 'client.ai.embeddings.list':1273 'client.ai.embeddings.retrieve':1770 'client.ai.embeddings.similarity':1594 'client.ai.embeddings.url':1666 'client.ai.fine_tuning.jobs.cancel':1991 'client.ai.fine_tuning.jobs.create':1876 'client.ai.fine_tuning.jobs.list':1816 'client.ai.fine_tuning.jobs.retrieve':1936 'client.ai.openai.embeddings.create':2145 'client.ai.openai.embeddings.list':2195 'client.ai.retrieve':2072 'client.ai.summarize':2268 'client.legacy.reporting.batch_detail_records.speech_to_text.create':2376 'client.legacy.reporting.batch_detail_records.speech_to_text.delete':2523 'client.legacy.reporting.batch_detail_records.speech_to_text.list':2306 'client.legacy.reporting.batch_detail_records.speech_to_text.retrieve':2458 'client.legacy.reporting.usage_reports.retrieve':2598 'client.messages.send':81 'client.text_to_speech.generate':2699 'client.text_to_speech.list':2741 'cloud':1654 'code':75,129,133,145 'common':143 'compat':2099,2184 'complet':247,261,355,1122,1736,2336,2428,2494,2559 'configur':381 'connect':94 'consist':204,256,2063 'content':359,367,1155,1617,1620,1642,2212,2220 'convent':2067 'convers':373,380,419,443,448,457,977,982,988,991,993,1016,1023,1026,1032,1034,1064,1068,1074,1078,1084,1090,1093,1099,1101,1106,1132,1141,1149,1180,1191,1198,1208,1214 'conversation.data':996,1043 'conversation.id':460 'conversations.data':422 'cosin':1555 'crawl':1639 'creat':244,424,441,444,462,500,516,520,548,592,645,774,795,798,831,877,935,998,1045,1110,1124,1219,1279,1395,1468,1679,1776,1808,1820,1850,1855,1885,1942,1997,2077,2086,2088,2201,2310,2339,2348,2402,2468,2533 'csv':1331,2230 'current':1320,1548,1708 'custom':784,841,887,945 'data':2162,2605 'data.csv':2274 'date':427,435,465,473,503,551,595,648,777,834,880,938,1001,1009,1048,1056,1113,1164,1222,1232,1282,1287,1471,1482,1489,2313,2319,2321,2329,2331,2365,2367,2378,2389,2405,2411,2413,2421,2423,2471,2477,2479,2487,2489,2536,2542,2544,2552,2554 'date-tim':426,434,464,472,502,550,594,647,776,833,879,937,1000,1008,1047,1055,1112,1163,1221,1231,1281,1286,1470,1481,1488,2312,2320,2330,2404,2412,2422,2470,2478,2488,2535,2543,2553 'datetim':2370,2372 'datetime.fromisoformat':2379,2390 'deep':1632 'default':34,785,842,888,946,1264 'delay':119 'delet':661,665,670,730,956,959,963,1062,1065,1072,1497,1517,2497,2505,2516 'descript':505,530,553,597,622,650 'detail':538,581,632,816,866,922 'dimens':2134 'disabl':1491,1504,2654 'distanc':1552,1561,1569,1608 'distil':231 'distil-whisp':230 'doc':1542,1590 'document':1307,1369,1374,1527,1543,1575,1610 'dog':2156 'domain':1636 'download':2315,2407,2473,2538 'durat':237 'e':123 'e.message':130 'e.status':128,132 'e29b':1038 'e29b-41d4-a716':1037 'earli':289 'either':1251 'elevenlab':2657,2675 'emb':1306,1615,1618 'embed':1272,1309,1317,1359,1378,1384,1414,1418,1438,1445,1479,1495,1502,1664,1699,1709,1730,1742,1750,1757,1769,2087,2090,2103,2146,2172,2179,2196 'embedding.data':1774 'embedding_response.data':1393,1677 'embeddings.data':1275 'enabl':292 'encod':2136,2629 'end':2318,2366,2377,2410,2476,2541 'endpoint':202,254,1146,2031,2097,2182,2578 'entir':1499 'enum':335,783,840,886,944,1118,1225,1290,1783,1837,1902,1959,2014,2138,2334,2426,2492,2557,2665,2671,2689 'error':50,59,64,68,72,92,127,137,144,159,1473 'exampl':40,396,2059 'example.com':1674 'example.com/resource':1673 'except':88,97,120 'expir':2338,2430,2496,2561 'exponenti':106,168 'f':125 'fail':56,1123,1254,1745,1763,1841,1906,1963,2018,2337,2429,2495,2560 'failur':1294,1743,1787 'fetch':2570,2583 'field':140,161,403,410 'file':1322,1329,1345,1348,1436,1446,1748,1755,1848,1866,1880,1913,1970,2025,2211,2218 'file-level':1435 'filenam':1476,2261,2273 'filter':395,407,2360 'fine':1797,1805,1852,1858,1873,1917,1922,1933,1974,1979,1988 'fine_tuning_job.id':1883,1940,1995 'finish':1284,1398,1682,1779,1823,1888,1945,2000 'flac':2243 'float':2139 'follow':1716,2223,2233 'form':2054 'format':142,162,327,2137,2190,2225,2235,2623 'found':156 'fox':2151 'frequenc':295 'friend':363 'generat':2213,2568,2581,2607,2611 'get':416,479,483,487,564,568,573,757,760,763,852,855,859,975,986,1080,1091,1190,1206,1240,1269,1416,1423,1434,1443,1456,1697,1764,1812,1915,1928,2027,2068,2191,2280,2300,2431,2451,2562,2594,2737 'given':1449 'group':482,486,493,519,524,537,540,567,570,575,580,611,616,619,631,634,664,667,672,686,692,695,711,723,729,732,749 'guid':298,302,305 'handl':51,71 'header':116,2646 'hello':87,368 'help':822 'html':1326,2227 'huggingfac':2065 'hyperparamet':1827,1868,1892,1949,2004 'id':429,467,507,555,572,576,599,620,635,652,669,673,696,699,704,712,733,736,742,750,779,836,858,862,882,908,925,940,962,966,985,989,994,1003,1027,1035,1050,1071,1075,1079,1094,1102,1115,1150,1168,1181,1209,1215,1298,1304,1405,1411,1689,1695,1767,1772,1791,1829,1834,1894,1899,1927,1931,1938,1951,1956,1985,1993,2006,2011,2048,2079,2203,2323,2415,2450,2453,2481,2515,2518,2546 'import':17,21,77,108,170,2371 'includ':398,1199,1452,1625 'infer':4,8 'initi':46 'input':2094,2131,2147,2617 'insert':1135 'insight':480,485,492,509,517,523,535,557,565,569,578,601,609,614,629,654,662,666,683,689,698,703,720,726,735,741,758,762,781,796,801,814,838,853,856,861,864,884,899,903,907,920,924,942,957,960,965,1081,1086,1100,1107 'insight_template_detail.data':829,875,933 'insight_template_group_detail.data':546,590,643 'instal':10,13 'instruct':786,805,818,843,889,910,947 'insuffici':151 'integ':288,315,344,1373,1377,1591,1822,1825,1845,1887,1890,1910,1944,1947,1967,1999,2002,2022,2078,2135,2202 'invalid':147 'item':183 'iter':180,188 'job':1799,1807,1815,1854,1860,1875,1919,1924,1926,1930,1935,1937,1976,1981,1984,1990,1992 'jobs.data':1818 'js':220,273,2115 'json':303,414,788,808,845,891,912,949,1330,2229,2630 'jump':2152 'key':26,30,149,283 'languag':251,2659 'last':431,469,1005,1052,1478 'later':2636 'lazi':2155 'least':1761 'length':308 'level':1437,1631 'limit':61,101,165 'link':1649,2316,2408,2474,2539 'list':173,372,376,1413,1796,1802,2034,2171,2176,2706,2711 'load':1641 'loader':1381 'logprob':311,343 'lower':1567 'm4a':1338,2248 'made':1202 'main':1645 'manual':1142 'match':1350 'max':313,1342 'may':214,267,2109 'mb':2256 'media':2234 'messag':280,356,432,470,1006,1053,1125,1129,1138,1179,1192,1194,1212 'messages.data':1217 'metadata':402,413,437,452,475,1011,1017,1019,1029,1058,1157,1613 'method':174 'metric':1553 'min':316 'minimax':2661,2676 'mistralai/mistral-7b-instruct-v0.1':2062 'model':229,252,319,1318,1379,1831,1864,1877,1896,1953,2008,2029,2040,2047,2056,2073,2132,2157,2165,2173,2180,2188,2197 'mp3':1334,2244 'mp4':1335,2245 'mpeg':1336,2246 'mpga':1337,2247 'my-bucket':1389,1598,1669,2270 'my-resourc':542,825 'n':321 'name':439,454,477,512,528,541,560,604,624,657,791,806,824,848,894,915,952,1013,1060,1159,1301,1367,1388,1408,1459,1464,1520,1524,1585,1597,1662,1668,1692,1794,2057,2066 'network':58,91 'new':446,522,800,1128,1137,1857,2341,2350 'none':336 'normal':1514 'note':171,2046 'null':1401,1685,1826,1846,1891,1911,1948,1968,2003,2023 'num':1541,1588 'number':238,297,310,318,322,325,332,347,1609 'object':241,304,328,341,415,438,453,476,511,559,603,656,790,810,847,893,914,951,1012,1030,1059,1109,1158,1173,1176,1239,1380,1382,1614,1828,1869,1893,1950,2005,2081,2164,2167,2170,2205,2606,2651,2653,2658,2662,2680,2682,2684,2696,2748 'ogg':2249 'omit':38 'one':1713,1762,2716 'open':2036 'openai':207,219,259,272,2039,2102,2114,2187 'openai/gpt-4':2060 'openai/gpt-4o':1878 'option':281,451,529,621,807,909,1028,1154,1368,1587,1867,2133,2262,2649 'organ':1833,1898,1955,2010 'os':18 'os.environ.get':27 'otherwis':2731 'output':2663,2667,2669 'overlap':1371 'own':2083,2207 'p':317,346 'page':185,191,490,494,766,768,1627,1650 'page.data':495,769 'page.id':498,772 'pagin':172,179 'paramet':390 'partial':1257,1295,1752,1788 'pdf':1325,2226 'penalti':296,309,324 'pend':1119,2335,2427,2493,2558 'perform':1308,1528 'period':2593 'permiss':152 'pick':1723 'pip':12 'platform.openai.com':211,264,2106 'platform.openai.com/docs/api-reference/audio/createtranscription)':210 'platform.openai.com/docs/api-reference/chat)':263 'platform.openai.com/docs/api-reference/embeddings)':2105 'post':224,277,449,525,693,802,1147,1363,1581,1657,1861,1982,2128,2257,2361,2647 'postgrest':387 'postgrest-styl':386 'postgrest.org':392 'postgrest.org/en/stable/api.html#horizontal-filtering-rows)':391 'presenc':323 'price':1516 'print':90,124,135,234,370,421,459,497,545,589,642,771,828,874,932,995,1042,1103,1216,1274,1392,1428,1465,1605,1676,1773,1817,1882,1939,1994,2074,2159,2198,2275,2307,2399,2465,2530,2602,2700,2743 'process':1253,1268,1292,1454,1638,1728,1785 'product':74 'progress':1121 'prompt':2264 'provid':2640,2670,2720,2722,2729,2736 'put':617,905,1024 'python':5,9,16,76,222,226,275,352,418,456,489,534,577,628,674,701,738,765,813,863,919,967,990,1031,1076,1096,1177,1211,1271,1383,1425,1460,1521,1592,1663,1768,1814,1872,1932,1987,2070,2117,2143,2193,2266,2302,2368,2454,2519,2596,2697,2739 'queri':389,1262,1547,1580,1586,1601 'queu':1252,1266,1291,1717,1784,1838,1903,1960,2015 'quick':2149 'rate':60,100,164 'reason':1474 'record':2325,2417,2483,2548 'ref':284 'regex':306 'remov':724 'report':2286,2294,2346,2355,2438,2447,2503,2512,2567,2575,2588 'repres':2092 'request':2287,2295,2347,2356,2439,2448,2504,2513,2622 'requir':139,279,338,527,804,1152,1365,1583,1659,1863,2130,2259,2363 'resembl':2678,2679 'resourc':154,544,827 'respons':227,326,353,371,1097,1385,1593,1665,2071,2144,2194,2267,2597,2698,2740 'response.base64_audio':2701 'response.data':1104,1606,2075,2160,2199,2276,2603 'response.text':235 'response.voices':2744 'result':80,186 'retri':96,104,114,166 'retriev':374,978,1085,1193,1244,1800,1920,2288,2440,2637,2709 'retry-aft':113 'return':175,236,423,461,499,547,591,644,773,830,876,934,997,1044,1105,1218,1276,1394,1430,1467,1511,1537,1559,1574,1607,1678,1775,1819,1884,1941,1996,2032,2076,2161,2174,2200,2277,2309,2401,2467,2532,2604,2618,2702,2725,2732,2745 'rime':2677,2681 'role':357,365,1153,1188,1224 'run':1733,1839,1904,1961,2016 'schema':789,809,846,892,913,950 'sdk':223,276,2118 'search':350,1525,1531,1595 'segment':239 'sent':1161,1229 'set':2120,2695 'setup':15 'shown':48 'similar':1530,1540,1556,1572 'size':1346,1372,1376 'skill' 'skill-telnyx-ai-inference-python' 'sourc':2037,2055 'source-team-telnyx' 'specif':980,1022,1067,1089,1197,2433,2442,2507 'specifi':1623,2359,2591,2724 'speech':194,198,2282,2290,2303,2342,2351,2373,2434,2443,2455,2499,2508,2520,2563,2571,2585,2599,2608,2613 'speech_to_text.data':2400,2466,2531 'speech_to_texts.data':2308 'ssml':2691 'standard':401,2643 'start':2328,2364,2388,2420,2486,2551 'status':1117,1243,1289,1402,1439,1455,1484,1686,1702,1705,1782,1836,1901,1958,2013,2333,2425,2491,2556 'stop':290 'storag':1313,1515,1535,1655 'stream':329,2626 'string':243,285,301,307,320,440,455,478,506,513,515,531,533,554,561,563,598,605,607,623,625,627,651,658,660,787,792,794,812,844,849,851,890,895,897,911,916,918,948,953,955,1014,1061,1116,1156,1160,1169,1235,1263,1278,1299,1302,1305,1397,1400,1403,1409,1433,1475,1477,1485,1612,1681,1684,1687,1693,1778,1781,1795,1830,1832,1835,1849,1871,1895,1897,1900,1914,1952,1954,1957,1971,2007,2009,2012,2026,2080,2082,2085,2142,2166,2168,2204,2206,2209,2265,2279,2317,2324,2327,2409,2416,2419,2475,2482,2485,2540,2547,2550,2660,2686,2693,2705 'style':388 'succeed':1840,1905,1962,2017 'success':1255,1258,1293,1296,1734,1737,1751,1753,1758,1786,1789 'suffix':1870 'summar':2210 'summari':2215,2242,2278 'support':385,1321,2221,2231 'synchron':2576 'synthes':2612 'system':358,2263 't00':2383,2394 'task':1241,1245,1297,1300,1404,1407,1688,1691,1700,1710,1718,1731,1735,1744,1766,1771,1790,1793 'telnyx':2,6,14,20,22,24,28,78,1312,1534,1604,1653,2673,2683 'telnyx-ai-inference-python':1 'telnyx.apiconnectionerror':89 'telnyx.apistatuserror':121 'telnyx.ratelimiterror':98 'temperatur':331 'templat':481,518,536,566,579,610,615,630,663,684,721,759,797,815,854,865,900,904,921,958 'text':86,196,200,242,1234,1328,1362,2095,2224,2284,2292,2305,2344,2353,2375,2436,2445,2457,2501,2510,2522,2565,2573,2587,2601,2610,2616,2685,2687,2690 'thenlper/gte-large':2158 'think':293 'time':109,428,436,466,474,504,552,596,649,778,835,881,939,1002,1010,1049,1057,1114,1165,1223,1233,1283,1288,1472,1483,1490,2314,2322,2332,2406,2414,2424,2472,2480,2490,2537,2545,2555,2592 'time.sleep':110 'token':314,1844,1909,1966,2021 'tool':333,339,1166,1170,1174,1200,1228,1236 'top':342,345 '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':1843,1847,1865,1879,1908,1912,1965,1969,2020,2024 'training-data.jsonl':1881 'transcrib':193,197 'transcript':208,2240 'tri':79 'tts':2719 'tune':1798,1806,1853,1859,1874,1918,1923,1934,1975,1980,1989 'txt':2228 'txt/unstructured':1327 'type':782,839,885,943,1323,1353,2326,2418,2484,2549,2664,2688 'unassign':719,740 'unstructur':1361 'updat':608,612,898,901,1015,1018,1486 'url':1616,1624,1646,1660,1672,2123,2634 'usag':2169,2566,2574 'use':181,216,269,348,1133,1144,1315,1510,2045,2111 'user':366,384,1189,1226,1248,1303,1410,1422,1450,1694,1811,2141,2299 'uuid':430,468,508,556,600,653,780,837,883,941,1004,1051,1406,1412,1690,1696,1792 'valid':63,136,158 'vector':2091 'via':2641 'video':1333 'voic':2692,2694,2708,2714,2726,2733,2742,2746 'wait':102,1720 'wav':1339,2250 'webhook':514,532,562,606,626,659,793,811,850,896,917,954 'webm':1341,2252 'websit':1619 'whisper':232 'within':1633 'without':1143 'worker':1727 'world':369","prices":[{"id":"10482ced-1ea4-4156-9e12-d1a49c642f56","listingId":"e7f943b8-be9f-48e3-8e5a-8ecf43110a4a","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.889Z"}],"sources":[{"listingId":"e7f943b8-be9f-48e3-8e5a-8ecf43110a4a","source":"github","sourceId":"team-telnyx/ai/telnyx-ai-inference-python","sourceUrl":"https://github.com/team-telnyx/ai/tree/main/skills/telnyx-ai-inference-python","isPrimary":false,"firstSeenAt":"2026-04-18T22:06:20.889Z","lastSeenAt":"2026-04-22T12:54:44.403Z"}],"details":{"listingId":"e7f943b8-be9f-48e3-8e5a-8ecf43110a4a","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"team-telnyx","slug":"telnyx-ai-inference-python","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":"4d904a82138f118491a723678bd9007626ba2cd1","skill_md_path":"skills/telnyx-ai-inference-python/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/team-telnyx/ai/tree/main/skills/telnyx-ai-inference-python"},"layout":"multi","source":"github","category":"ai","frontmatter":{"name":"telnyx-ai-inference-python","description":">-"},"skills_sh_url":"https://skills.sh/team-telnyx/ai/telnyx-ai-inference-python"},"updatedAt":"2026-04-22T12:54:44.403Z"}}