{"id":"b68899f1-b76f-4eab-9f7d-91b4cdb72ef2","shortId":"W8Ypta","kind":"skill","title":"telnyx-ai-assistants-go","tagline":">-","description":"<!-- Auto-generated from Telnyx OpenAPI specs. Do not edit. -->\n\n# Telnyx AI Assistants - 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\nassistant, err := client.AI.Assistants.New(context.Background(), telnyx.AIAssistantNewParams{\n\t\tInstructions: \"You are a helpful assistant.\",\n\t\tModel: \"openai/gpt-4o\",\n\t\tName: \"my-resource\",\n\t})\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      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- **Phone numbers** must be in E.164 format (e.g., `+13125550001`). Include the `+` prefix and country code. No spaces, dashes, or parentheses.\n- **Pagination:** Use `ListAutoPaging()` for automatic iteration: `iter := client.Resource.ListAutoPaging(ctx, params); for iter.Next() { item := iter.Current() }`.\n\n## Reference Use Rules\n\nDo not invent Telnyx parameters, enums, response fields, or webhook fields.\n\n- If the parameter, enum, or response field you need is not shown inline in this skill, read [references/api-details.md](references/api-details.md) before writing code.\n- Before using any operation in `## Additional Operations`, read [the optional-parameters section](references/api-details.md#optional-parameters) and [the response-schemas section](references/api-details.md#response-schemas).\n\n## Core Tasks\n\n### Create an assistant\n\nAssistant creation is the entrypoint for any AI assistant integration. Agents need the exact creation method and the top-level fields returned by the SDK.\n\n`client.AI.Assistants.New()` — `POST /ai/assistants`\n\n| Parameter | Type | Required | Description |\n|-----------|------|----------|-------------|\n| `Name` | string | Yes |  |\n| `Model` | string | Yes | ID of the model to use. |\n| `Instructions` | string | Yes | System instructions for the assistant. |\n| `Tools` | array[object] | No | The tools that the assistant can use. |\n| `ToolIds` | array[string] | No |  |\n| `Description` | string | No |  |\n| ... | | | +12 optional params in [references/api-details.md](references/api-details.md) |\n\n```go\n\tassistant, err := client.AI.Assistants.New(context.Background(), telnyx.AIAssistantNewParams{\n\t\tInstructions: \"You are a helpful assistant.\",\n\t\tModel: \"openai/gpt-4o\",\n\t\tName: \"my-resource\",\n\t})\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tfmt.Printf(\"%+v\\n\", assistant.ID)\n```\n\nPrimary response fields:\n- `assistant.ID`\n- `assistant.Name`\n- `assistant.Model`\n- `assistant.Instructions`\n- `assistant.CreatedAt`\n- `assistant.Description`\n\n### Chat with an assistant\n\nChat is the primary runtime path. Agents need the exact assistant method and the response content field.\n\n`client.AI.Assistants.Chat()` — `POST /ai/assistants/{assistant_id}/chat`\n\n| Parameter | Type | Required | Description |\n|-----------|------|----------|-------------|\n| `Content` | string | Yes | The message content sent by the client to the assistant |\n| `ConversationId` | string (UUID) | Yes | A unique identifier for the conversation thread, used to mai... |\n| `AssistantId` | string (UUID) | Yes |  |\n| `Name` | string | No | The optional display name of the user sending the message |\n\n```go\n\tresponse, err := client.AI.Assistants.Chat(\n\t\tcontext.Background(),\n\t\t\"assistant_id\",\n\t\ttelnyx.AIAssistantChatParams{\n\t\t\tContent:        \"Tell me a joke about cats\",\n\t\t\tConversationID: \"42b20469-1215-4a9a-8964-c36f66b406f4\",\n\t\t},\n\t)\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tfmt.Printf(\"%+v\\n\", response.Content)\n```\n\nPrimary response fields:\n- `response.Content`\n\n### Create an assistant test\n\nTest creation is the main validation path for production assistant behavior before deployment.\n\n`client.AI.Assistants.Tests.New()` — `POST /ai/assistants/tests`\n\n| Parameter | Type | Required | Description |\n|-----------|------|----------|-------------|\n| `Name` | string | Yes | A descriptive name for the assistant test. |\n| `Destination` | string | Yes | The target destination for the test conversation. |\n| `Instructions` | string | Yes | Detailed instructions that define the test scenario and what... |\n| `Rubric` | array[object] | Yes | Evaluation criteria used to assess the assistant's performan... |\n| `Description` | string | No | Optional detailed description of what this test evaluates an... |\n| `TelnyxConversationChannel` | object | No | The communication channel through which the test will be con... |\n| `MaxDurationSeconds` | integer | No | Maximum duration in seconds that the test conversation shoul... |\n| ... | | | +1 optional params in [references/api-details.md](references/api-details.md) |\n\n```go\n\tassistantTest, err := client.AI.Assistants.Tests.New(context.Background(), telnyx.AIAssistantTestNewParams{\n\t\tDestination:  \"+15551234567\",\n\t\tInstructions: \"Act as a frustrated customer who received a damaged product. Ask for a refund and escalate if not satisfied with the initial response.\",\n\t\tName:         \"Customer Support Bot Test\",\n\t\tRubric: []telnyx.AIAssistantTestNewParamsRubric{{\n\t\t\tCriteria: \"Assistant responds within 30 seconds\",\n\t\t\tName:     \"Response Time\",\n\t\t}, {\n\t\t\tCriteria: \"Provides correct product information\",\n\t\t\tName:     \"Accuracy\",\n\t\t}},\n\t})\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tfmt.Printf(\"%+v\\n\", assistantTest.TestID)\n```\n\nPrimary response fields:\n- `assistantTest.TestID`\n- `assistantTest.Name`\n- `assistantTest.Destination`\n- `assistantTest.CreatedAt`\n- `assistantTest.Instructions`\n- `assistantTest.Description`\n\n---\n\n## Important Supporting Operations\n\nUse these when the core tasks above are close to your flow, but you need a common variation or follow-up step.\n\n### Get an assistant\n\nFetch the current state before updating, deleting, or making control-flow decisions.\n\n`client.AI.Assistants.Get()` — `GET /ai/assistants/{assistant_id}`\n\n| Parameter | Type | Required | Description |\n|-----------|------|----------|-------------|\n| `AssistantId` | string (UUID) | Yes |  |\n| `CallControlId` | string (UUID) | No |  |\n| `FetchDynamicVariablesFromWebhook` | boolean | No |  |\n| `From` | string (E.164) | No |  |\n| ... | | | +1 optional params in [references/api-details.md](references/api-details.md) |\n\n```go\n\tassistant, err := client.AI.Assistants.Get(\n\t\tcontext.Background(),\n\t\t\"assistant_id\",\n\t\ttelnyx.AIAssistantGetParams{},\n\t)\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tfmt.Printf(\"%+v\\n\", assistant.ID)\n```\n\nPrimary response fields:\n- `assistant.ID`\n- `assistant.Name`\n- `assistant.CreatedAt`\n- `assistant.Description`\n- `assistant.DynamicVariables`\n- `assistant.DynamicVariablesWebhookURL`\n\n### Update an assistant\n\nCreate or provision an additional resource when the core tasks do not cover this flow.\n\n`client.AI.Assistants.Update()` — `POST /ai/assistants/{assistant_id}`\n\n| Parameter | Type | Required | Description |\n|-----------|------|----------|-------------|\n| `AssistantId` | string (UUID) | Yes |  |\n| `Name` | string | No |  |\n| `Model` | string | No | ID of the model to use. |\n| `Instructions` | string | No | System instructions for the assistant. |\n| ... | | | +16 optional params in [references/api-details.md](references/api-details.md) |\n\n```go\n\tassistant, err := client.AI.Assistants.Update(\n\t\tcontext.Background(),\n\t\t\"assistant_id\",\n\t\ttelnyx.AIAssistantUpdateParams{},\n\t)\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tfmt.Printf(\"%+v\\n\", assistant.ID)\n```\n\nPrimary response fields:\n- `assistant.ID`\n- `assistant.Name`\n- `assistant.CreatedAt`\n- `assistant.Description`\n- `assistant.DynamicVariables`\n- `assistant.DynamicVariablesWebhookURL`\n\n### List assistants\n\nInspect available resources or choose an existing resource before mutating it.\n\n`client.AI.Assistants.List()` — `GET /ai/assistants`\n\n```go\n\tassistantsList, err := client.AI.Assistants.List(context.Background())\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tfmt.Printf(\"%+v\\n\", assistantsList.Data)\n```\n\nResponse wrapper:\n- items: `assistantsList.data`\n\nPrimary item fields:\n- `ID`\n- `Name`\n- `CreatedAt`\n- `Description`\n- `DynamicVariables`\n- `DynamicVariablesWebhookURL`\n\n### Import assistants from external provider\n\nImport existing assistants from an external provider instead of creating from scratch.\n\n`client.AI.Assistants.Imports()` — `POST /ai/assistants/import`\n\n| Parameter | Type | Required | Description |\n|-----------|------|----------|-------------|\n| `Provider` | enum (elevenlabs, vapi, retell) | Yes | The external provider to import assistants from. |\n| `ApiKeyRef` | string | Yes | Integration secret pointer that refers to the API key for th... |\n| `ImportIds` | array[string] | No | Optional list of assistant IDs to import from the external p... |\n\n```go\n\tassistantsList, err := client.AI.Assistants.Imports(context.Background(), telnyx.AIAssistantImportsParams{\n\t\tAPIKeyRef: \"my-openai-key\",\n\t\tProvider:  telnyx.AIAssistantImportsParamsProviderElevenlabs,\n\t})\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tfmt.Printf(\"%+v\\n\", assistantsList.Data)\n```\n\nResponse wrapper:\n- items: `assistantsList.data`\n\nPrimary item fields:\n- `ID`\n- `Name`\n- `CreatedAt`\n- `Description`\n- `DynamicVariables`\n- `DynamicVariablesWebhookURL`\n\n### Get All Tags\n\nInspect available resources or choose an existing resource before mutating it.\n\n`client.AI.Assistants.Tags.List()` — `GET /ai/assistants/tags`\n\n```go\n\ttags, err := client.AI.Assistants.Tags.List(context.Background())\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tfmt.Printf(\"%+v\\n\", tags.Tags)\n```\n\nPrimary response fields:\n- `tags.Tags`\n\n### List assistant tests with pagination\n\nInspect available resources or choose an existing resource before mutating it.\n\n`client.AI.Assistants.Tests.List()` — `GET /ai/assistants/tests`\n\n| Parameter | Type | Required | Description |\n|-----------|------|----------|-------------|\n| `TestSuite` | string | No | Filter tests by test suite name |\n| `TelnyxConversationChannel` | string | No | Filter tests by communication channel (e.g., 'web_chat', 'sm... |\n| `Destination` | string | No | Filter tests by destination (phone number, webhook URL, etc.... |\n| ... | | | +1 optional params in [references/api-details.md](references/api-details.md) |\n\n```go\n\tpage, err := client.AI.Assistants.Tests.List(context.Background(), telnyx.AIAssistantTestListParams{})\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tfmt.Printf(\"%+v\\n\", page)\n```\n\nResponse wrapper:\n- items: `page.data`\n- pagination: `page.meta`\n\nPrimary item fields:\n- `Name`\n- `CreatedAt`\n- `Description`\n- `Destination`\n- `Instructions`\n- `MaxDurationSeconds`\n\n### Get all test suite names\n\nInspect available resources or choose an existing resource before mutating it.\n\n`client.AI.Assistants.Tests.TestSuites.List()` — `GET /ai/assistants/tests/test-suites`\n\n```go\n\ttestSuites, err := client.AI.Assistants.Tests.TestSuites.List(context.Background())\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tfmt.Printf(\"%+v\\n\", testSuites.Data)\n```\n\nResponse wrapper:\n- items: `testSuites.data`\n\nPrimary item fields:\n- `Data`\n\n### Get test suite run history\n\nFetch the current state before updating, deleting, or making control-flow decisions.\n\n`client.AI.Assistants.Tests.TestSuites.Runs.List()` — `GET /ai/assistants/tests/test-suites/{suite_name}/runs`\n\n| Parameter | Type | Required | Description |\n|-----------|------|----------|-------------|\n| `SuiteName` | string | Yes |  |\n| `TestSuiteRunId` | string (UUID) | No | Filter runs by specific suite execution batch ID |\n| `Status` | string | No | Filter runs by execution status (pending, running, completed... |\n| `Page` | object | No | Consolidated page parameter (deepObject style). |\n\n```go\n\tpage, err := client.AI.Assistants.Tests.TestSuites.Runs.List(\n\t\tcontext.Background(),\n\t\t\"suite_name\",\n\t\ttelnyx.AIAssistantTestTestSuiteRunListParams{},\n\t)\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tfmt.Printf(\"%+v\\n\", page)\n```\n\nResponse wrapper:\n- items: `page.data`\n- pagination: `page.meta`\n\nPrimary item fields:\n- `Status`\n- `CreatedAt`\n- `UpdatedAt`\n- `CompletedAt`\n- `ConversationID`\n- `ConversationInsightsID`\n\n---\n\n## Additional Operations\n\nUse the core tasks above first. The operations below are indexed here with exact SDK methods and required params; use [references/api-details.md](references/api-details.md) for full optional params, response schemas, and lower-frequency webhook payloads.\nBefore using any operation below, read [the optional-parameters section](references/api-details.md#optional-parameters) and [the response-schemas section](references/api-details.md#response-schemas) so you do not guess missing fields.\n\n| Operation | SDK method | Endpoint | Use when | Required params |\n|-----------|------------|----------|----------|-----------------|\n| Trigger test suite execution | `client.AI.Assistants.Tests.TestSuites.Runs.Trigger()` | `POST /ai/assistants/tests/test-suites/{suite_name}/runs` | Trigger a follow-up action in an existing workflow rather than creating a new top-level resource. | `SuiteName` |\n| Get assistant test by ID | `client.AI.Assistants.Tests.Get()` | `GET /ai/assistants/tests/{test_id}` | Fetch the current state before updating, deleting, or making control-flow decisions. | `TestId` |\n| Update an assistant test | `client.AI.Assistants.Tests.Update()` | `PUT /ai/assistants/tests/{test_id}` | Modify an existing resource without recreating it. | `TestId` |\n| Delete an assistant test | `client.AI.Assistants.Tests.Delete()` | `DELETE /ai/assistants/tests/{test_id}` | Remove, detach, or clean up an existing resource. | `TestId` |\n| Get test run history for a specific test | `client.AI.Assistants.Tests.Runs.List()` | `GET /ai/assistants/tests/{test_id}/runs` | Fetch the current state before updating, deleting, or making control-flow decisions. | `TestId` |\n| Trigger a manual test run | `client.AI.Assistants.Tests.Runs.Trigger()` | `POST /ai/assistants/tests/{test_id}/runs` | Trigger a follow-up action in an existing workflow rather than creating a new top-level resource. | `TestId` |\n| Get specific test run details | `client.AI.Assistants.Tests.Runs.Get()` | `GET /ai/assistants/tests/{test_id}/runs/{run_id}` | Fetch the current state before updating, deleting, or making control-flow decisions. | `TestId`, `RunId` |\n| Delete an assistant | `client.AI.Assistants.Delete()` | `DELETE /ai/assistants/{assistant_id}` | Remove, detach, or clean up an existing resource. | `AssistantId` |\n| Get Canary Deploy | `client.AI.Assistants.CanaryDeploys.Get()` | `GET /ai/assistants/{assistant_id}/canary-deploys` | Fetch the current state before updating, deleting, or making control-flow decisions. | `AssistantId` |\n| Create Canary Deploy | `client.AI.Assistants.CanaryDeploys.New()` | `POST /ai/assistants/{assistant_id}/canary-deploys` | Create or provision an additional resource when the core tasks do not cover this flow. | `Versions`, `AssistantId` |\n| Update Canary Deploy | `client.AI.Assistants.CanaryDeploys.Update()` | `PUT /ai/assistants/{assistant_id}/canary-deploys` | Modify an existing resource without recreating it. | `Versions`, `AssistantId` |\n| Delete Canary Deploy | `client.AI.Assistants.CanaryDeploys.Delete()` | `DELETE /ai/assistants/{assistant_id}/canary-deploys` | Remove, detach, or clean up an existing resource. | `AssistantId` |\n| Assistant Sms Chat | `client.AI.Assistants.SendSMS()` | `POST /ai/assistants/{assistant_id}/chat/sms` | Run assistant chat over SMS instead of direct API chat. | `From`, `To`, `AssistantId` |\n| Clone Assistant | `client.AI.Assistants.Clone()` | `POST /ai/assistants/{assistant_id}/clone` | Trigger a follow-up action in an existing workflow rather than creating a new top-level resource. | `AssistantId` |\n| List scheduled events | `client.AI.Assistants.ScheduledEvents.List()` | `GET /ai/assistants/{assistant_id}/scheduled_events` | Fetch the current state before updating, deleting, or making control-flow decisions. | `AssistantId` |\n| Create a scheduled event | `client.AI.Assistants.ScheduledEvents.New()` | `POST /ai/assistants/{assistant_id}/scheduled_events` | Create or provision an additional resource when the core tasks do not cover this flow. | `TelnyxConversationChannel`, `TelnyxEndUserTarget`, `TelnyxAgentTarget`, `ScheduledAtFixedDatetime`, +1 more |\n| Get a scheduled event | `client.AI.Assistants.ScheduledEvents.Get()` | `GET /ai/assistants/{assistant_id}/scheduled_events/{event_id}` | Fetch the current state before updating, deleting, or making control-flow decisions. | `AssistantId`, `EventId` |\n| Delete a scheduled event | `client.AI.Assistants.ScheduledEvents.Delete()` | `DELETE /ai/assistants/{assistant_id}/scheduled_events/{event_id}` | Remove, detach, or clean up an existing resource. | `AssistantId`, `EventId` |\n| Add Assistant Tag | `client.AI.Assistants.Tags.Add()` | `POST /ai/assistants/{assistant_id}/tags` | Create or provision an additional resource when the core tasks do not cover this flow. | `Tag`, `AssistantId` |\n| Remove Assistant Tag | `client.AI.Assistants.Tags.Remove()` | `DELETE /ai/assistants/{assistant_id}/tags/{tag}` | Remove, detach, or clean up an existing resource. | `AssistantId`, `Tag` |\n| Get assistant texml | `client.AI.Assistants.GetTexml()` | `GET /ai/assistants/{assistant_id}/texml` | Fetch the current state before updating, deleting, or making control-flow decisions. | `AssistantId` |\n| Add Assistant Tool | `client.AI.Assistants.Tools.Add()` | `PUT /ai/assistants/{assistant_id}/tools/{tool_id}` | Modify an existing resource without recreating it. | `AssistantId`, `ToolId` |\n| Remove Assistant Tool | `client.AI.Assistants.Tools.Remove()` | `DELETE /ai/assistants/{assistant_id}/tools/{tool_id}` | Remove, detach, or clean up an existing resource. | `AssistantId`, `ToolId` |\n| Test Assistant Tool | `client.AI.Assistants.Tools.Test()` | `POST /ai/assistants/{assistant_id}/tools/{tool_id}/test` | Trigger a follow-up action in an existing workflow rather than creating a new top-level resource. | `AssistantId`, `ToolId` |\n| Get all versions of an assistant | `client.AI.Assistants.Versions.List()` | `GET /ai/assistants/{assistant_id}/versions` | Fetch the current state before updating, deleting, or making control-flow decisions. | `AssistantId` |\n| Get a specific assistant version | `client.AI.Assistants.Versions.Get()` | `GET /ai/assistants/{assistant_id}/versions/{version_id}` | Fetch the current state before updating, deleting, or making control-flow decisions. | `AssistantId`, `VersionId` |\n| Update a specific assistant version | `client.AI.Assistants.Versions.Update()` | `POST /ai/assistants/{assistant_id}/versions/{version_id}` | Create or provision an additional resource when the core tasks do not cover this flow. | `AssistantId`, `VersionId` |\n| Delete a specific assistant version | `client.AI.Assistants.Versions.Delete()` | `DELETE /ai/assistants/{assistant_id}/versions/{version_id}` | Remove, detach, or clean up an existing resource. | `AssistantId`, `VersionId` |\n| Promote an assistant version to main | `client.AI.Assistants.Versions.Promote()` | `POST /ai/assistants/{assistant_id}/versions/{version_id}/promote` | Trigger a follow-up action in an existing workflow rather than creating a new top-level resource. | `AssistantId`, `VersionId` |\n| List MCP Servers | `client.AI.McpServers.List()` | `GET /ai/mcp_servers` | Inspect available resources or choose an existing resource before mutating it. | None |\n| Create MCP Server | `client.AI.McpServers.New()` | `POST /ai/mcp_servers` | Create or provision an additional resource when the core tasks do not cover this flow. | `Name`, `Type`, `Url` |\n| Get MCP Server | `client.AI.McpServers.Get()` | `GET /ai/mcp_servers/{mcp_server_id}` | Fetch the current state before updating, deleting, or making control-flow decisions. | `McpServerId` |\n| Update MCP Server | `client.AI.McpServers.Update()` | `PUT /ai/mcp_servers/{mcp_server_id}` | Modify an existing resource without recreating it. | `McpServerId` |\n| Delete MCP Server | `client.AI.McpServers.Delete()` | `DELETE /ai/mcp_servers/{mcp_server_id}` | Remove, detach, or clean up an existing resource. | `McpServerId` |\n| List Tools | `client.AI.Tools.List()` | `GET /ai/tools` | Inspect available resources or choose an existing resource before mutating it. | None |\n| Create Tool | `client.AI.Tools.New()` | `POST /ai/tools` | Create or provision an additional resource when the core tasks do not cover this flow. | `Type`, `DisplayName` |\n| Get Tool | `client.AI.Tools.Get()` | `GET /ai/tools/{tool_id}` | Fetch the current state before updating, deleting, or making control-flow decisions. | `ToolId` |\n| Update Tool | `client.AI.Tools.Update()` | `PATCH /ai/tools/{tool_id}` | Modify an existing resource without recreating it. | `ToolId` |\n| Delete Tool | `client.AI.Tools.Delete()` | `DELETE /ai/tools/{tool_id}` | Remove, detach, or clean up an existing resource. | `ToolId` |\n\n---\n\nFor exhaustive optional parameters, full response schemas, and complete webhook payloads, see [references/api-details.md](references/api-details.md).","tags":["telnyx","assistants","team-telnyx","agent-skills","ai-coding-agent","claude-code","cpaas","cursor","iot","llm","sdk","sip"],"capabilities":["skill","source-team-telnyx","skill-telnyx-ai-assistants-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-assistants-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 (21,795 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:43.394Z","embedding":null,"createdAt":"2026-04-18T22:06:13.643Z","updatedAt":"2026-04-22T12:54:43.394Z","lastSeenAt":"2026-04-22T12:54:43.394Z","tsv":"'+1':598,743,1093,1720 '+12':340 '+13125550001':175 '+15551234567':611 '+16':826 '-1215':474 '-4':475 '-8964':477 '/ai/assistants':297,405,721,795,873,1521,1538,1561,1587,1605,1623,1644,1673,1697,1728,1755,1776,1802,1822,1845,1865,1886,1922,1947,1975,2005,2029 '/ai/assistants/import':920 '/ai/assistants/tags':1018 '/ai/assistants/tests':511,1055,1377,1400,1417,1439,1464,1495 '/ai/assistants/tests/test-suites':1147,1190,1346 '/ai/mcp_servers':2062,2080,2104,2127,2144 '/ai/tools':2161,2178,2200,2221,2236 '/canary-deploys':1541,1564,1590,1608 '/chat':408 '/chat/sms':1626 '/clone':1647 '/promote':2035 '/runs':1193,1349,1442,1467,1498 '/scheduled_events':1676,1700,1731,1758 '/tags':1779,1805 '/team-telnyx/telnyx-go':16,25 '/team-telnyx/telnyx-go/option':28 '/test':1892 '/texml':1825 '/tools':1848,1868,1889 '/versions':1925,1950,1978,2008,2032 '30':647 '401':66,141 '403':145 '404':148 '422':62,106,152 '429':59,116,158 '42b20469':473 'a9a':476 'accuraci':658 'act':613 'action':1355,1473,1653,1898,2041 'add':1771,1840 'addit':242,782,1264,1569,1705,1784,1985,2085,2183 'agent':279,392 'ai':3,7,276 'alreadi':42 'alway':67 'api':34,50,123,143,948,1635 'apierr':97,102 'apierr.error':129 'apierr.statuscode':104,128 'apikeyref':938,973 'array':323,334,549,953 'ask':623 'assess':556 'assist':4,8,76,86,268,269,277,321,330,347,357,385,396,406,425,462,494,505,524,558,644,705,722,750,754,777,796,825,833,837,859,902,908,936,959,1038,1371,1396,1413,1518,1522,1539,1562,1588,1606,1618,1624,1628,1641,1645,1674,1698,1729,1756,1772,1777,1798,1803,1818,1823,1841,1846,1861,1866,1882,1887,1919,1923,1943,1948,1971,1976,2001,2006,2023,2030 'assistant.createdat':380,771,854 'assistant.description':381,772,855 'assistant.dynamicvariables':773,856 'assistant.dynamicvariableswebhookurl':774,857 'assistant.id':372,376,765,769,848,852 'assistant.instructions':379 'assistant.model':378 'assistant.name':377,770,853 'assistantid':440,728,802,1532,1555,1581,1599,1617,1639,1667,1690,1747,1769,1796,1815,1839,1858,1879,1912,1939,1966,1996,2019,2055 'assistantslist':875,968 'assistantslist.data':887,891,988,992 'assistanttest':605 'assistanttest.createdat':674 'assistanttest.description':676 'assistanttest.destination':673 'assistanttest.instructions':675 'assistanttest.name':672 'assistanttest.testid':667,671 'assum':39 'authent':64 'automat':191 'avail':861,1006,1043,1135,2064,2163 'backoff':164 'bash':11 'batch':1211 'behavior':506 'boolean':737 'bot':639 'c36f66b406f4':478 'call':51 'callcontrolid':732 'canari':1534,1557,1583,1601 'case':105,115 'cat':471 'channel':578,1076 'chat':382,386,1079,1620,1629,1636 'check':110,134,155 'choos':864,1009,1046,1138,2067,2166 'clean':1423,1527,1612,1764,1810,1874,2014,2151,2242 'client':29,40,422 'client.ai.assistants.canarydeploys.delete':1603 'client.ai.assistants.canarydeploys.get':1536 'client.ai.assistants.canarydeploys.new':1559 'client.ai.assistants.canarydeploys.update':1585 'client.ai.assistants.chat':403,460 'client.ai.assistants.clone':1642 'client.ai.assistants.delete':1519 'client.ai.assistants.get':719,752 'client.ai.assistants.gettexml':1820 'client.ai.assistants.imports':918,970 'client.ai.assistants.list':871,877 'client.ai.assistants.new':78,295,349 'client.ai.assistants.scheduledevents.delete':1753 'client.ai.assistants.scheduledevents.get':1726 'client.ai.assistants.scheduledevents.list':1671 'client.ai.assistants.scheduledevents.new':1695 'client.ai.assistants.sendsms':1621 'client.ai.assistants.tags.add':1774 'client.ai.assistants.tags.list':1016,1022 'client.ai.assistants.tags.remove':1800 'client.ai.assistants.tests.delete':1415 'client.ai.assistants.tests.get':1375 'client.ai.assistants.tests.list':1053,1102 'client.ai.assistants.tests.new':509,607 'client.ai.assistants.tests.runs.get':1493 'client.ai.assistants.tests.runs.list':1437 'client.ai.assistants.tests.runs.trigger':1462 'client.ai.assistants.tests.testsuites.list':1145,1151 'client.ai.assistants.tests.testsuites.runs.list':1188,1235 'client.ai.assistants.tests.testsuites.runs.trigger':1344 'client.ai.assistants.tests.update':1398 'client.ai.assistants.tools.add':1843 'client.ai.assistants.tools.remove':1863 'client.ai.assistants.tools.test':1884 'client.ai.assistants.update':793,835 'client.ai.assistants.versions.delete':2003 'client.ai.assistants.versions.get':1945 'client.ai.assistants.versions.list':1920 'client.ai.assistants.versions.promote':2027 'client.ai.assistants.versions.update':1973 'client.ai.mcpservers.delete':2142 'client.ai.mcpservers.get':2102 'client.ai.mcpservers.list':2060 'client.ai.mcpservers.new':2078 'client.ai.mcpservers.update':2125 'client.ai.tools.delete':2234 'client.ai.tools.get':2198 'client.ai.tools.list':2159 'client.ai.tools.new':2176 'client.ai.tools.update':2219 'client.resource.listautopaging':194 'clone':1640 'close':688 'code':72,140,181,236 'common':138,696 'communic':577,1075 'complet':1223,2256 'completedat':1261 'con':585 'connect':135 'consolid':1227 'content':401,413,418,465 'context':20 'context.background':79,350,461,608,753,836,878,971,1023,1103,1152,1236 'control':716,1185,1390,1453,1511,1552,1687,1744,1836,1936,1963,2118,2213 'control-flow':715,1184,1389,1452,1510,1551,1686,1743,1835,1935,1962,2117,2212 'convers':435,535,596 'conversationid':426,472,1262 'conversationinsightsid':1263 'core':264,684,786,1268,1573,1709,1788,1989,2089,2187 'correct':654 'countri':180 'cover':790,1577,1713,1792,1993,2093,2191 'creat':266,492,778,915,1362,1480,1556,1565,1660,1691,1701,1780,1905,1981,2048,2075,2081,2174,2179 'createdat':897,998,1124,1259 'creation':270,283,497 'criteria':553,643,652 'ctx':195 'current':708,1177,1382,1445,1503,1544,1679,1736,1828,1928,1955,2110,2205 'custom':617,637 'd':125 'damag':621 'dash':184 'data':1169 'decis':718,1187,1392,1455,1513,1554,1689,1746,1838,1938,1965,2120,2215 'deepobject':1230 'default':121 'defin':542 'delet':712,1181,1386,1411,1416,1449,1507,1516,1520,1548,1600,1604,1683,1740,1749,1754,1801,1832,1864,1932,1959,1998,2004,2114,2139,2143,2209,2232,2235 'deploy':508,1535,1558,1584,1602 'descript':301,337,412,515,520,561,566,727,801,898,924,999,1059,1125,1197 'destin':526,531,610,1081,1087,1126 'detach':1421,1525,1610,1762,1808,1872,2012,2149,2240 'detail':539,565,1492 'direct':1634 'display':449 'displaynam':2195 'durat':590 'dynamicvari':899,1000 'dynamicvariableswebhookurl':900,1001 'e.164':172,741 'e.g':174,1077 'elevenlab':927 'els':130 'endpoint':1335 'entrypoint':273 'enum':209,218,926 'err':77,94,101,348,365,368,459,480,483,606,660,663,751,758,761,834,841,844,876,880,883,969,981,984,1021,1025,1028,1101,1106,1109,1150,1154,1157,1234,1241,1244 'error':47,56,61,65,69,75,109,124,133,139,154 'errors.as':100 'escal':628 'etc':1092 'evalu':552,571 'event':1670,1694,1725,1732,1752,1759 'eventid':1748,1770 'exact':282,395,1279 'exampl':37 'execut':1210,1219,1343 'exhaust':2249 'exist':866,907,1011,1048,1140,1358,1405,1426,1476,1530,1593,1615,1656,1767,1813,1853,1877,1901,2017,2044,2069,2133,2154,2168,2226,2245 'exponenti':163 'extern':904,911,932,965 'fail':53 'fetch':706,1175,1380,1443,1501,1542,1677,1734,1826,1926,1953,2108,2203 'fetchdynamicvariablesfromwebhook':736 'field':112,156,211,214,221,290,375,402,490,670,768,851,894,995,1035,1122,1168,1257,1331 'filter':1063,1072,1084,1205,1216 'first':1271 'flow':691,717,792,1186,1391,1454,1512,1553,1579,1688,1715,1745,1794,1837,1937,1964,1995,2095,2119,2193,2214 'fmt':21 'fmt.printf':122,369,484,664,762,845,884,985,1029,1110,1158,1245 'fmt.println':107,117,131 'follow':700,1353,1471,1651,1896,2039 'follow-up':699,1352,1470,1650,1895,2038 'format':114,157,173 'found':151 'frequenc':1297 'frustrat':616 'full':1289,2252 'get':13,703,720,872,1002,1017,1054,1129,1146,1170,1189,1370,1376,1429,1438,1488,1494,1533,1537,1672,1722,1727,1817,1821,1914,1921,1940,1946,2061,2099,2103,2160,2196,2199 'github.com':15,24,27 'github.com/team-telnyx/telnyx-go':14,23 'github.com/team-telnyx/telnyx-go/option':26 'go':5,9,12,18,73,346,457,604,749,832,874,967,1019,1099,1148,1232 'guess':1329 'handl':48,68 'help':85,356 'histori':1174,1432 'id':308,407,463,723,755,797,812,838,895,960,996,1212,1374,1379,1402,1419,1441,1466,1497,1500,1523,1540,1563,1589,1607,1625,1646,1675,1699,1730,1733,1757,1760,1778,1804,1824,1847,1850,1867,1870,1888,1891,1924,1949,1952,1977,1980,2007,2010,2031,2034,2107,2130,2147,2202,2223,2238 'identifi':432 'import':19,74,165,677,901,906,935,962 'importid':952 'includ':176 'index':1276 'inform':656 'initi':43,634 'inlin':227 'inspect':860,1005,1042,1134,2063,2162 'instal':10 'instead':913,1632 'instruct':81,314,318,352,536,540,612,818,822,1127 'insuffici':146 'integ':587 'integr':278,941 'invalid':142 'invent':206 'item':199,890,893,991,994,1116,1121,1164,1167,1251,1256 'iter':192,193 'iter.current':200 'iter.next':198 'joke':469 'key':35,144,949,977 'level':289,1367,1485,1665,1910,2053 'limit':58,119,160 'list':858,957,1037,1668,2057,2157 'listautopag':189 'log.fatal':367,482,662,760,843,882,983,1027,1108,1156,1243 'lower':1296 'lower-frequ':1295 'mai':439 'main':500,2026 'make':714,1183,1388,1451,1509,1550,1685,1742,1834,1934,1961,2116,2211 'manual':1459 'maxdurationsecond':586,1128 'maximum':589 'mcp':2058,2076,2100,2105,2123,2128,2140,2145 'mcpserverid':2121,2138,2156 'messag':417,456 'method':284,397,1281,1334 'miss':1330 'model':87,305,311,358,809,815 'modifi':1403,1591,1851,2131,2224 'must':169 'mutat':869,1014,1051,1143,2072,2171 'my-openai-key':974 'my-resourc':90,361 'n':127,371,486,666,764,847,886,987,1031,1112,1160,1247 'name':89,302,360,444,450,516,521,636,649,657,806,896,997,1068,1123,1133,1192,1238,1348,2096 'need':223,280,393,694 'network':55,132 'new':1364,1482,1662,1907,2050 'nil':95,366,481,661,759,842,881,982,1026,1107,1155,1242 'none':2074,2173 'note':166 'number':168,1089 'object':324,550,574,1225 'openai':976 'openai/gpt-4o':88,359 'oper':240,243,679,1265,1273,1303,1332 'option':247,252,341,448,564,599,744,827,956,1094,1290,1308,1313,2250 'option.withapikey':31 'optional-paramet':246,251,1307,1312 'os':22 'os.getenv':32 'p':966 'page':1100,1113,1224,1228,1233,1248 'page.data':1117,1252 'page.meta':1119,1254 'pagin':187,1041,1118,1253 'param':196,342,600,745,828,1095,1284,1291,1339 'paramet':208,217,248,253,298,409,512,724,798,921,1056,1194,1229,1309,1314,2251 'parenthes':186 'patch':2220 'path':391,502 'payload':1299,2258 'pend':1221 'performan':560 'permiss':147 'phone':167,1088 'pointer':943 'post':296,404,510,794,919,1345,1463,1560,1622,1643,1696,1775,1885,1974,2028,2079,2177 'prefix':178 'primari':373,389,488,668,766,849,892,993,1033,1120,1166,1255 'product':71,504,622,655 'promot':2021 'provid':653,905,912,925,933,978 'provis':780,1567,1703,1782,1983,2083,2181 'put':1399,1586,1844,2126 'rate':57,118,159 'rather':1360,1478,1658,1903,2046 'read':231,244,1305 'receiv':619 'recreat':1408,1596,1856,2136,2229 'refer':201,945 'references/api-details.md':232,233,250,260,344,345,602,603,747,748,830,831,1097,1098,1286,1287,1311,1321,2260,2261 'refund':626 'remov':1420,1524,1609,1761,1797,1807,1860,1871,2011,2148,2239 'requir':111,300,411,514,726,800,923,1058,1196,1283,1338 'resourc':92,149,363,783,862,867,1007,1012,1044,1049,1136,1141,1368,1406,1427,1486,1531,1570,1594,1616,1666,1706,1768,1785,1814,1854,1878,1911,1986,2018,2054,2065,2070,2086,2134,2155,2164,2169,2184,2227,2246 'respond':645 'respons':210,220,257,262,374,400,458,489,635,650,669,767,850,888,989,1034,1114,1162,1249,1292,1318,1323,2253 'response-schema':256,261,1317,1322 'response.content':487,491 'retel':929 'retri':120,137,161 'return':291 'rubric':548,641 'rule':203 'run':1173,1206,1217,1222,1431,1461,1491,1499,1627 'runid':1515 'runtim':390 'satisfi':631 'scenario':545 'schedul':1669,1693,1724,1751 'scheduledatfixeddatetim':1719 'schema':258,263,1293,1319,1324,2254 'scratch':917 'sdk':294,1280,1333 'second':592,648 'secret':942 'section':249,259,1310,1320 'see':2259 'send':454 'sent':419 'server':2059,2077,2101,2106,2124,2129,2141,2146 'setup':17 'shoul':597 'shown':45,226 'skill':230 'skill-telnyx-ai-assistants-go' 'sm':1080 'sms':1619,1631 'source-team-telnyx' 'space':183 'specif':1208,1435,1489,1942,1970,2000 'state':709,1178,1383,1446,1504,1545,1680,1737,1829,1929,1956,2111,2206 'status':1213,1220,1258 'step':702 'string':303,306,315,335,338,414,427,441,445,517,527,537,562,729,733,740,803,807,810,819,939,954,1061,1070,1082,1199,1202,1214 'style':1231 'suit':1067,1132,1172,1191,1209,1237,1342,1347 'suitenam':1198,1369 'support':638,678 'switch':103 'system':317,821 'tag':1004,1020,1773,1795,1799,1806,1816 'tags.tags':1032,1036 'target':530 'task':265,685,787,1269,1574,1710,1789,1990,2090,2188 'tell':466 'telnyx':2,6,33,207 'telnyx-ai-assistants-go':1 'telnyx.aiassistantchatparams':464 'telnyx.aiassistantgetparams':756 'telnyx.aiassistantimportsparams':972 'telnyx.aiassistantimportsparamsproviderelevenlabs':979 'telnyx.aiassistantnewparams':80,351 'telnyx.aiassistanttestlistparams':1104 'telnyx.aiassistanttestnewparams':609 'telnyx.aiassistanttestnewparamsrubric':642 'telnyx.aiassistanttesttestsuiterunlistparams':1239 'telnyx.aiassistantupdateparams':839 'telnyx.error':98 'telnyx.newclient':30 'telnyxagenttarget':1718 'telnyxconversationchannel':573,1069,1716 'telnyxendusertarget':1717 'test':495,496,525,534,544,570,582,595,640,1039,1064,1066,1073,1085,1131,1171,1341,1372,1378,1397,1401,1414,1418,1430,1436,1440,1460,1465,1490,1496,1881 'testid':1393,1410,1428,1456,1487,1514 'testsuit':1060,1149 'testsuiterunid':1201 'testsuites.data':1161,1165 'texml':1819 'th':951 'thread':436 'time':651 'tool':322,327,1842,1849,1862,1869,1883,1890,2158,2175,2197,2201,2218,2222,2233,2237 'toolid':333,1859,1880,1913,2216,2231,2247 'top':288,1366,1484,1664,1909,2052 'top-level':287,1365,1483,1663,1908,2051 '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' 'trigger':1340,1350,1457,1468,1648,1893,2036 'type':299,410,513,725,799,922,1057,1195,2097,2194 'uniqu':431 'updat':711,775,1180,1385,1394,1448,1506,1547,1582,1682,1739,1831,1931,1958,1968,2113,2122,2208,2217 'updatedat':1260 'url':1091,2098 'use':188,202,238,313,332,437,554,680,817,1266,1285,1301,1336 'user':453 'uuid':428,442,730,734,804,1203 'v':370,485,665,763,846,885,986,1030,1111,1159,1246 'valid':60,108,153,501 'vapi':928 'var':96 'variat':697 'version':1580,1598,1916,1944,1951,1972,1979,2002,2009,2024,2033 'versionid':1967,1997,2020,2056 'web':1078 'webhook':213,1090,1298,2257 'within':646 'without':1407,1595,1855,2135,2228 'workflow':1359,1477,1657,1902,2045 'wrapper':889,990,1115,1163,1250 'write':235 'yes':304,307,316,415,429,443,518,528,538,551,731,805,930,940,1200","prices":[{"id":"30bbeab6-1382-4f25-9fcb-0f19d1002fbe","listingId":"b68899f1-b76f-4eab-9f7d-91b4cdb72ef2","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:13.643Z"}],"sources":[{"listingId":"b68899f1-b76f-4eab-9f7d-91b4cdb72ef2","source":"github","sourceId":"team-telnyx/ai/telnyx-ai-assistants-go","sourceUrl":"https://github.com/team-telnyx/ai/tree/main/skills/telnyx-ai-assistants-go","isPrimary":false,"firstSeenAt":"2026-04-18T22:06:13.643Z","lastSeenAt":"2026-04-22T12:54:43.394Z"}],"details":{"listingId":"b68899f1-b76f-4eab-9f7d-91b4cdb72ef2","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"team-telnyx","slug":"telnyx-ai-assistants-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":"07d76834c6257ca7940a5a00557640039775d2a6","skill_md_path":"skills/telnyx-ai-assistants-go/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/team-telnyx/ai/tree/main/skills/telnyx-ai-assistants-go"},"layout":"multi","source":"github","category":"ai","frontmatter":{"name":"telnyx-ai-assistants-go","description":">-"},"skills_sh_url":"https://skills.sh/team-telnyx/ai/telnyx-ai-assistants-go"},"updatedAt":"2026-04-22T12:54:43.394Z"}}