{"id":"589a8a38-a7fa-4f0d-a5f0-1940120d482b","shortId":"mzeJ4G","kind":"skill","title":"telnyx-ai-assistants-javascript","tagline":">-","description":"<!-- Auto-generated from Telnyx OpenAPI specs. Do not edit. -->\n\n# Telnyx AI Assistants - JavaScript\n\n## Installation\n\n```bash\nnpm install telnyx\n```\n\n## Setup\n\n```javascript\nimport Telnyx from 'telnyx';\n\nconst client = new Telnyx({\n  apiKey: process.env['TELNYX_API_KEY'], // This is the default and can be omitted\n});\n```\n\nAll examples below assume `client` is already initialized as shown above.\n\n## Error Handling\n\nAll API calls can fail with network errors, rate limits (429), validation errors (422),\nor authentication errors (401). Always handle errors in production code:\n\n```javascript\ntry {\n  const assistant = await client.ai.assistants.create({\n    instructions: 'You are a helpful assistant.',\n    model: 'openai/gpt-4o',\n    name: 'my-resource',\n  });\n} catch (err) {\n  if (err instanceof Telnyx.APIConnectionError) {\n    console.error('Network error — check connectivity and retry');\n  } else if (err instanceof Telnyx.RateLimitError) {\n    const retryAfter = err.headers?.['retry-after'] || 1;\n    await new Promise(r => setTimeout(r, retryAfter * 1000));\n  } else if (err instanceof Telnyx.APIError) {\n    console.error(`API error ${err.status}: ${err.message}`);\n    if (err.status === 422) {\n      console.error('Validation error — check required fields and formats');\n    }\n  }\n}\n```\n\nCommon error codes: `401` invalid API key, `403` insufficient permissions,\n`404` resource not found, `422` validation error (check field formats),\n`429` rate limited (retry with exponential backoff).\n\n## Important Notes\n\n- **Phone numbers** must be in E.164 format (e.g., `+13125550001`). Include the `+` prefix and country code. No spaces, dashes, or parentheses.\n- **Pagination:** List methods return an auto-paginating iterator. Use `for await (const item of result) { ... }` to iterate through all pages automatically.\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.create()` — `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```javascript\nconst assistant = await client.ai.assistants.create({\n  instructions: 'You are a helpful assistant.',\n  model: 'openai/gpt-4o',\n  name: 'my-resource',\n});\n\nconsole.log(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```javascript\nconst response = await client.ai.assistants.chat('assistant_id', {\n  content: 'Tell me a joke about cats',\n  conversation_id: '42b20469-1215-4a9a-8964-c36f66b406f4',\n});\n\nconsole.log(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.create()` — `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```javascript\nconst assistantTest = await client.ai.assistants.tests.create({\n  destination: '+15551234567',\n  instructions:\n    'Act as a frustrated customer who received a damaged product. Ask for a refund and escalate if not satisfied with the initial response.',\n  name: 'Customer Support Bot Test',\n  rubric: [\n    { criteria: 'Assistant responds within 30 seconds', name: 'Response Time' },\n    { criteria: 'Provides correct product information', name: 'Accuracy' },\n  ],\n});\n\nconsole.log(assistantTest.test_id);\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.retrieve()` — `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```javascript\nconst assistant = await client.ai.assistants.retrieve('550e8400-e29b-41d4-a716-446655440000');\n\nconsole.log(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```javascript\nconst assistant = await client.ai.assistants.update('550e8400-e29b-41d4-a716-446655440000');\n\nconsole.log(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```javascript\nconst assistantsList = await client.ai.assistants.list();\n\nconsole.log(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```javascript\nconst assistantsList = await client.ai.assistants.imports({\n  api_key_ref: 'api_key_ref',\n  provider: 'elevenlabs',\n});\n\nconsole.log(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```javascript\nconst tags = await client.ai.assistants.tags.list();\n\nconsole.log(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```javascript\n// Automatically fetches more pages as needed.\nfor await (const assistantTest of client.ai.assistants.tests.list()) {\n  console.log(assistantTest.test_id);\n}\n```\n\nResponse wrapper:\n- items: `assistantTest.data`\n- pagination: `assistantTest.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```javascript\nconst testSuites = await client.ai.assistants.tests.testSuites.list();\n\nconsole.log(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```javascript\n// Automatically fetches more pages as needed.\nfor await (const testRunResponse of client.ai.assistants.tests.testSuites.runs.list('suite_name')) {\n  console.log(testRunResponse.run_id);\n}\n```\n\nResponse wrapper:\n- items: `testRunResponse.data`\n- pagination: `testRunResponse.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.retrieve()` | `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.retrieve()` | `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.retrieve()` | `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.create()` | `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.create()` | `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.retrieve()` | `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.retrieve()` | `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.create()` | `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.retrieve()` | `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.create()` | `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.retrieve()` | `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","javascript","team-telnyx","agent-skills","ai-coding-agent","claude-code","cpaas","cursor","iot","llm","sdk"],"capabilities":["skill","source-team-telnyx","skill-telnyx-ai-assistants-javascript","topic-agent-skills","topic-ai-coding-agent","topic-claude-code","topic-cpaas","topic-cursor","topic-iot","topic-llm","topic-sdk","topic-sip","topic-sms","topic-speech-to-text","topic-telephony"],"categories":["ai"],"synonyms":[],"warnings":[],"endpointUrl":"https://skills.sh/team-telnyx/ai/telnyx-ai-assistants-javascript","protocol":"skill","transport":"skills-sh","auth":{"type":"none","details":{"cli":"npx skills add team-telnyx/ai","source_repo":"https://github.com/team-telnyx/ai","install_from":"skills.sh"}},"qualityScore":"0.533","qualityRationale":"deterministic score 0.53 from registry signals: · indexed on github topic:agent-skills · 167 github stars · SKILL.md body (21,151 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.614Z","embedding":null,"createdAt":"2026-04-18T22:06:15.295Z","updatedAt":"2026-04-22T12:54:43.614Z","lastSeenAt":"2026-04-22T12:54:43.614Z","tsv":"'+1':600,737,1058,1680 '+12':357 '+13125550001':184 '+15551234567':612 '+16':816 '-1215':483 '-4':484 '-8964':486 '/ai/assistants':314,414,715,785,859,1481,1498,1521,1547,1565,1583,1604,1633,1657,1688,1715,1736,1762,1782,1805,1825,1846,1882,1907,1935,1965,1989 '/ai/assistants/import':899 '/ai/assistants/tags':990 '/ai/assistants/tests':513,1020,1337,1360,1377,1399,1424,1455 '/ai/assistants/tests/test-suites':1113,1149,1306 '/ai/mcp_servers':2022,2040,2064,2087,2104 '/ai/tools':2121,2138,2160,2181,2196 '/canary-deploys':1501,1524,1550,1568 '/chat':417 '/chat/sms':1586 '/clone':1607 '/promote':1995 '/runs':1152,1309,1402,1427,1458 '/scheduled_events':1636,1660,1691,1718 '/tags':1739,1765 '/test':1852 '/texml':1785 '/tools':1808,1828,1849 '/versions':1885,1910,1938,1968,1992 '1':117 '1000':125 '30':647 '401':68,150 '403':154 '404':157 '41d4':751,830 '422':64,138,161 '429':61,167 '42b20469':482 '446655440000':753,832 '550e8400':748,827 'a716':752,831 'a9a':485 'accuraci':658 'act':614 'action':1315,1433,1613,1858,2001 'add':1731,1800 'addit':259,772,1224,1529,1665,1744,1945,2045,2143 'agent':296,401 'ai':3,7,293 'alreadi':44 'alway':69 'api':28,52,132,152,927,951,954,1595 'apikey':25 'apikeyref':917 'array':340,351,551,932 'ask':624 'assess':558 'assist':4,8,78,86,285,286,294,338,347,365,373,394,405,415,434,471,496,507,526,560,644,699,716,745,767,786,815,824,845,881,887,915,938,1003,1331,1356,1373,1478,1482,1499,1522,1548,1566,1578,1584,1588,1601,1605,1634,1658,1689,1716,1732,1737,1758,1763,1778,1783,1801,1806,1821,1826,1842,1847,1879,1883,1903,1908,1931,1936,1961,1966,1983,1990 'assistant.createdat':389,761,840 'assistant.description':390,762,841 'assistant.dynamicvariables':763,842 'assistant.dynamicvariableswebhookurl':764,843 'assistant.id':381,385,755,759,834,838 'assistant.instructions':388 'assistant.model':387 'assistant.name':386,760,839 'assistantid':449,722,792,1492,1515,1541,1559,1577,1599,1627,1650,1707,1729,1756,1775,1799,1818,1839,1872,1899,1926,1956,1979,2015 'assistantslist':862,948 'assistantslist.data':866,870,960,964 'assistanttest':608,1074 'assistanttest.createdat':668 'assistanttest.data':1083 'assistanttest.description':670 'assistanttest.destination':667 'assistanttest.instructions':669 'assistanttest.meta':1085 'assistanttest.name':666 'assistanttest.test':660,1078 'assistanttest.testid':665 'assum':41 'authent':66 'auto':202 'auto-pagin':201 'automat':217,1065,1192 'avail':847,978,1008,1101,2024,2123 'await':79,118,207,366,469,609,746,825,863,949,994,1072,1117,1199 'backoff':173 'bash':11 'batch':1170 'behavior':508 'boolean':731 'bot':640 'c36f66b406f4':487 'call':53 'callcontrolid':726 'canari':1494,1517,1543,1561 'cat':479 'catch':93 'channel':580,1041 'chat':391,395,1044,1580,1589,1596 'check':102,142,164 'choos':850,981,1011,1104,2027,2126 'clean':1383,1487,1572,1724,1770,1834,1974,2111,2202 'client':22,42,431 'client.ai.assistants.canarydeploys.create':1519 'client.ai.assistants.canarydeploys.delete':1563 'client.ai.assistants.canarydeploys.retrieve':1496 'client.ai.assistants.canarydeploys.update':1545 'client.ai.assistants.chat':412,470 'client.ai.assistants.clone':1602 'client.ai.assistants.create':80,312,367 'client.ai.assistants.delete':1479 'client.ai.assistants.gettexml':1780 'client.ai.assistants.imports':897,950 'client.ai.assistants.list':857,864 'client.ai.assistants.retrieve':713,747 'client.ai.assistants.scheduledevents.create':1655 'client.ai.assistants.scheduledevents.delete':1713 'client.ai.assistants.scheduledevents.list':1631 'client.ai.assistants.scheduledevents.retrieve':1686 'client.ai.assistants.sendsms':1581 'client.ai.assistants.tags.add':1734 'client.ai.assistants.tags.list':988,995 'client.ai.assistants.tags.remove':1760 'client.ai.assistants.tests.create':511,610 'client.ai.assistants.tests.delete':1375 'client.ai.assistants.tests.list':1018,1076 'client.ai.assistants.tests.retrieve':1335 'client.ai.assistants.tests.runs.list':1397 'client.ai.assistants.tests.runs.retrieve':1453 'client.ai.assistants.tests.runs.trigger':1422 'client.ai.assistants.tests.testsuites.list':1111,1118 'client.ai.assistants.tests.testsuites.runs.list':1147,1203 'client.ai.assistants.tests.testsuites.runs.trigger':1304 'client.ai.assistants.tests.update':1358 'client.ai.assistants.tools.add':1803 'client.ai.assistants.tools.remove':1823 'client.ai.assistants.tools.test':1844 'client.ai.assistants.update':783,826 'client.ai.assistants.versions.delete':1963 'client.ai.assistants.versions.list':1880 'client.ai.assistants.versions.promote':1987 'client.ai.assistants.versions.retrieve':1905 'client.ai.assistants.versions.update':1933 'client.ai.mcpservers.create':2038 'client.ai.mcpservers.delete':2102 'client.ai.mcpservers.list':2020 'client.ai.mcpservers.retrieve':2062 'client.ai.mcpservers.update':2085 'client.ai.tools.create':2136 'client.ai.tools.delete':2194 'client.ai.tools.list':2119 'client.ai.tools.retrieve':2158 'client.ai.tools.update':2179 'clone':1600 'close':682 'code':74,149,190,253 'common':147,690 'communic':579,1040 'complet':1182,2216 'completedat':1221 'con':587 'connect':103 'console.error':99,131,139 'console.log':380,488,659,754,833,865,959,996,1077,1119,1206 'consolid':1186 'const':21,77,111,208,364,467,607,744,823,861,947,992,1073,1115,1200 'content':410,422,427,473 'control':710,1144,1350,1413,1471,1512,1647,1704,1796,1896,1923,2078,2173 'control-flow':709,1143,1349,1412,1470,1511,1646,1703,1795,1895,1922,2077,2172 'convers':444,480,537,598 'conversationid':435,1222 'conversationinsightsid':1223 'core':281,678,776,1228,1533,1669,1748,1949,2049,2147 'correct':654 'countri':189 'cover':780,1537,1673,1752,1953,2053,2151 'creat':283,494,768,894,1322,1440,1516,1525,1620,1651,1661,1740,1865,1941,2008,2035,2041,2134,2139 'createdat':876,970,1090,1219 'creation':287,300,499 'criteria':555,643,652 'current':702,1136,1342,1405,1463,1504,1639,1696,1788,1888,1915,2070,2165 'custom':618,638 'damag':622 'dash':193 'data':1128 'decis':712,1146,1352,1415,1473,1514,1649,1706,1798,1898,1925,2080,2175 'deepobject':1189 'default':33 'defin':544 'delet':706,1140,1346,1371,1376,1409,1467,1476,1480,1508,1560,1564,1643,1700,1709,1714,1761,1792,1824,1892,1919,1958,1964,2074,2099,2103,2169,2192,2195 'deploy':510,1495,1518,1544,1562 'descript':318,354,421,517,522,563,568,721,791,877,903,971,1024,1091,1156 'destin':528,533,611,1046,1052,1092 'detach':1381,1485,1570,1722,1768,1832,1972,2109,2200 'detail':541,567,1452 'direct':1594 'display':458 'displaynam':2155 'durat':592 'dynamicvari':878,972 'dynamicvariableswebhookurl':879,973 'e.164':181,735 'e.g':183,1042 'e29b':750,829 'e29b-41d4-a716':749,828 'elevenlab':906,958 'els':106,126 'endpoint':1295 'entrypoint':290 'enum':226,235,905 'err':94,96,108,128 'err.headers':113 'err.message':135 'err.status':134,137 'error':49,58,63,67,71,101,133,141,148,163 'escal':629 'etc':1057 'evalu':554,573 'event':1630,1654,1685,1692,1712,1719 'eventid':1708,1730 'exact':299,404,1239 'exampl':39 'execut':1169,1178,1303 'exhaust':2209 'exist':852,886,983,1013,1106,1318,1365,1386,1436,1490,1553,1575,1616,1727,1773,1813,1837,1861,1977,2004,2029,2093,2114,2128,2186,2205 'exponenti':172 'extern':883,890,911,944 'fail':55 'fetch':700,1066,1134,1193,1340,1403,1461,1502,1637,1694,1786,1886,1913,2068,2163 'fetchdynamicvariablesfromwebhook':730 'field':144,165,228,231,238,307,384,411,492,664,758,837,873,967,1000,1088,1127,1217,1291 'filter':1028,1037,1049,1164,1175 'first':1231 'flow':685,711,782,1145,1351,1414,1472,1513,1539,1648,1675,1705,1754,1797,1897,1924,1955,2055,2079,2153,2174 'follow':694,1313,1431,1611,1856,1999 'follow-up':693,1312,1430,1610,1855,1998 'format':146,166,182 'found':160 'frequenc':1257 'frustrat':617 'full':1249,2212 'get':697,714,858,974,989,1019,1095,1112,1129,1148,1330,1336,1389,1398,1448,1454,1493,1497,1632,1682,1687,1777,1781,1874,1881,1900,1906,2021,2059,2063,2120,2156,2159 'guess':1289 'handl':50,70 'help':85,372 'histori':1133,1392 'id':325,416,472,481,661,717,787,802,874,939,968,1079,1171,1208,1334,1339,1362,1379,1401,1426,1457,1460,1483,1500,1523,1549,1567,1585,1606,1635,1659,1690,1693,1717,1720,1738,1764,1784,1807,1810,1827,1830,1848,1851,1884,1909,1912,1937,1940,1967,1970,1991,1994,2067,2090,2107,2162,2183,2198 'identifi':441 'import':17,174,671,880,885,914,941 'importid':931 'includ':185 'index':1236 'inform':656 'initi':45,635 'inlin':244 'inspect':846,977,1007,1100,2023,2122 'instal':10,13 'instanceof':97,109,129 'instead':892,1592 'instruct':81,331,335,368,538,542,613,808,812,1093 'insuffici':155 'integ':589 'integr':295,920 'invalid':151 'invent':223 'item':209,869,872,963,966,1082,1087,1123,1126,1211,1216 'iter':204,213 'javascript':5,9,16,75,363,466,606,743,822,860,946,991,1064,1114,1191 'joke':477 'key':29,153,928,952,955 'level':306,1327,1445,1625,1870,2013 'limit':60,169 'list':197,844,936,1002,1628,2017,2117 'lower':1256 'lower-frequ':1255 'mai':448 'main':502,1986 'make':708,1142,1348,1411,1469,1510,1645,1702,1794,1894,1921,2076,2171 'manual':1419 'maxdurationsecond':588,1094 'maximum':591 'mcp':2018,2036,2060,2065,2083,2088,2100,2105 'mcpserverid':2081,2098,2116 'messag':426,465 'method':198,301,406,1241,1294 'miss':1290 'model':87,322,328,374,799,805 'modifi':1363,1551,1811,2091,2184 'must':178 'mutat':855,986,1016,1109,2032,2131 'my-resourc':90,377 'name':89,319,376,453,459,518,523,637,649,657,796,875,969,1033,1089,1099,1151,1205,1308,2056 'need':240,297,402,688,1070,1197 'network':57,100 'new':23,119,1324,1442,1622,1867,2010 'none':2034,2133 'note':175 'npm':12 'number':177,1054 'object':341,552,576,1184 'omit':37 'openai/gpt-4o':88,375 'oper':257,260,673,1225,1233,1263,1292 'option':264,269,358,457,566,601,738,817,935,1059,1250,1268,1273,2210 'optional-paramet':263,268,1267,1272 'p':945 'page':216,1068,1183,1187,1195 'pagin':196,203,1006,1084,1213 'param':359,602,739,818,1060,1244,1251,1299 'paramet':225,234,265,270,315,418,514,718,788,900,1021,1153,1188,1269,1274,2211 'parenthes':195 'patch':2180 'path':400,504 'payload':1259,2218 'pend':1180 'performan':562 'permiss':156 'phone':176,1053 'pointer':922 'post':313,413,512,784,898,1305,1423,1520,1582,1603,1656,1735,1845,1934,1988,2039,2137 'prefix':187 'primari':382,398,490,662,756,835,871,965,998,1086,1125,1215 'process.env':26 'product':73,506,623,655 'promis':120 'promot':1981 'provid':653,884,891,904,912,957 'provis':770,1527,1663,1742,1943,2043,2141 'put':1359,1546,1804,2086 'r':121,123 'rate':59,168 'rather':1320,1438,1618,1863,2006 'read':248,261,1265 'receiv':620 'recreat':1368,1556,1816,2096,2189 'ref':953,956 'refer':218,924 'references/api-details.md':249,250,267,277,361,362,604,605,741,742,820,821,1062,1063,1246,1247,1271,1281,2220,2221 'refund':627 'remov':1380,1484,1569,1721,1757,1767,1820,1831,1971,2108,2199 'requir':143,317,420,516,720,790,902,1023,1155,1243,1298 'resourc':92,158,379,773,848,853,979,984,1009,1014,1102,1107,1328,1366,1387,1446,1491,1530,1554,1576,1626,1666,1728,1745,1774,1814,1838,1871,1946,1978,2014,2025,2030,2046,2094,2115,2124,2129,2144,2187,2206 'respond':645 'respons':227,237,274,279,383,409,468,491,636,650,663,757,836,867,961,999,1080,1121,1209,1252,1278,1283,2213 'response-schema':273,278,1277,1282 'response.content':489,493 'result':211 'retel':908 'retri':105,115,170 'retry-aft':114 'retryaft':112,124 'return':199,308 'rubric':550,642 'rule':220 'run':1132,1165,1176,1181,1391,1421,1451,1459,1587 'runid':1475 'runtim':399 'satisfi':632 'scenario':547 'schedul':1629,1653,1684,1711 'scheduledatfixeddatetim':1679 'schema':275,280,1253,1279,1284,2214 'scratch':896 'sdk':311,1240,1293 'second':594,648 'secret':921 'section':266,276,1270,1280 'see':2219 'send':463 'sent':428 'server':2019,2037,2061,2066,2084,2089,2101,2106 'settimeout':122 'setup':15 'shoul':599 'shown':47,243 'skill':247 'skill-telnyx-ai-assistants-javascript' 'sm':1045 'sms':1579,1591 'source-team-telnyx' 'space':192 'specif':1167,1395,1449,1902,1930,1960 'state':703,1137,1343,1406,1464,1505,1640,1697,1789,1889,1916,2071,2166 'status':1172,1179,1218 'step':696 'string':320,323,332,352,355,423,436,450,454,519,529,539,564,723,727,734,793,797,800,809,918,933,1026,1035,1047,1158,1161,1173 'style':1190 'suit':1032,1098,1131,1150,1168,1204,1302,1307 'suitenam':1157,1329 'support':639,672 'system':334,811 'tag':976,993,1733,1755,1759,1766,1776 'tags.tags':997,1001 'target':532 'task':282,679,777,1229,1534,1670,1749,1950,2050,2148 'tell':474 'telnyx':2,6,14,18,20,24,27,224 'telnyx-ai-assistants-javascript':1 'telnyx.apiconnectionerror':98 'telnyx.apierror':130 'telnyx.ratelimiterror':110 'telnyxagenttarget':1678 'telnyxconversationchannel':575,1034,1676 'telnyxendusertarget':1677 'test':497,498,527,536,546,572,584,597,641,1004,1029,1031,1038,1050,1097,1130,1301,1332,1338,1357,1361,1374,1378,1390,1396,1400,1420,1425,1450,1456,1841 'testid':1353,1370,1388,1416,1447,1474 'testrunrespons':1201 'testrunresponse.data':1212 'testrunresponse.meta':1214 'testrunresponse.run':1207 'testsuit':1025,1116 'testsuiterunid':1160 'testsuites.data':1120,1124 'texml':1779 'th':930 'thread':445 'time':651 'tool':339,344,1802,1809,1822,1829,1843,1850,2118,2135,2157,2161,2178,2182,2193,2197 'toolid':350,1819,1840,1873,2176,2191,2207 'top':305,1326,1444,1624,1869,2012 'top-level':304,1325,1443,1623,1868,2011 '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' 'tri':76 'trigger':1300,1310,1417,1428,1608,1853,1996 'type':316,419,515,719,789,901,1022,1154,2057,2154 'uniqu':440 'updat':705,765,1139,1345,1354,1408,1466,1507,1542,1642,1699,1791,1891,1918,1928,2073,2082,2168,2177 'updatedat':1220 'url':1056,2058 'use':205,219,255,330,349,446,556,674,807,1226,1245,1261,1296 'user':462 'uuid':437,451,724,728,794,1162 'valid':62,140,162,503 'vapi':907 'variat':691 'version':1540,1558,1876,1904,1911,1932,1939,1962,1969,1984,1993 'versionid':1927,1957,1980,2016 'web':1043 'webhook':230,1055,1258,2217 'within':646 'without':1367,1555,1815,2095,2188 'workflow':1319,1437,1617,1862,2005 'wrapper':868,962,1081,1122,1210 'write':252 'yes':321,324,333,424,438,452,520,530,540,553,725,795,909,919,1159","prices":[{"id":"020b5431-3cec-4f39-ab8e-43b4fd4f8b6d","listingId":"589a8a38-a7fa-4f0d-a5f0-1940120d482b","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:15.295Z"}],"sources":[{"listingId":"589a8a38-a7fa-4f0d-a5f0-1940120d482b","source":"github","sourceId":"team-telnyx/ai/telnyx-ai-assistants-javascript","sourceUrl":"https://github.com/team-telnyx/ai/tree/main/skills/telnyx-ai-assistants-javascript","isPrimary":false,"firstSeenAt":"2026-04-18T22:06:15.295Z","lastSeenAt":"2026-04-22T12:54:43.614Z"}],"details":{"listingId":"589a8a38-a7fa-4f0d-a5f0-1940120d482b","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"team-telnyx","slug":"telnyx-ai-assistants-javascript","github":{"repo":"team-telnyx/ai","stars":167,"topics":["agent-skills","ai","ai-coding-agent","claude-code","cpaas","cursor","iot","llm","sdk","sip","sms","speech-to-text","telephony","telnyx","tts","twilio-migration","voice-agents","voice-ai","webrtc","windsurf"],"license":"mit","html_url":"https://github.com/team-telnyx/ai","pushed_at":"2026-04-21T22:09:49Z","description":"Official one-stop shop for AI Agents and developers building with Telnyx.","skill_md_sha":"4b950ff1bef9c902db55010bff8207e3799edd51","skill_md_path":"skills/telnyx-ai-assistants-javascript/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/team-telnyx/ai/tree/main/skills/telnyx-ai-assistants-javascript"},"layout":"multi","source":"github","category":"ai","frontmatter":{"name":"telnyx-ai-assistants-javascript","description":">-"},"skills_sh_url":"https://skills.sh/team-telnyx/ai/telnyx-ai-assistants-javascript"},"updatedAt":"2026-04-22T12:54:43.614Z"}}