telnyx-missions-javascript
Original:🇺🇸 English
Translated
Create and manage Telnyx Missions — automated workflows, tasks, and sub-resources for AI-driven telecom operations. This skill provides JavaScript SDK examples.
4installs
Sourceteam-telnyx/skills
Added on
NPX Install
npx skill4agent add team-telnyx/skills telnyx-missions-javascriptTags
Translated version includes tags in frontmatterSKILL.md Content
View Translation Comparison →<!-- Auto-generated from Telnyx OpenAPI specs. Do not edit. -->
— Required:
— Required: ,
— Required:
— Required:
— Required:
Telnyx Missions - JavaScript
Installation
bash
npm install telnyxSetup
javascript
import Telnyx from 'telnyx';
const client = new Telnyx({
apiKey: process.env['TELNYX_API_KEY'], // This is the default and can be omitted
});All examples below assume is already initialized as shown above.
clientError Handling
All API calls can fail with network errors, rate limits (429), validation errors (422),
or authentication errors (401). Always handle errors in production code:
javascript
try {
const result = await client.messages.send({ to: '+13125550001', from: '+13125550002', text: 'Hello' });
} catch (err) {
if (err instanceof Telnyx.APIConnectionError) {
console.error('Network error — check connectivity and retry');
} else if (err instanceof Telnyx.RateLimitError) {
// 429: rate limited — wait and retry with exponential backoff
const retryAfter = err.headers?.['retry-after'] || 1;
await new Promise(r => setTimeout(r, retryAfter * 1000));
} else if (err instanceof Telnyx.APIError) {
console.error(`API error ${err.status}: ${err.message}`);
if (err.status === 422) {
console.error('Validation error — check required fields and formats');
}
}
}Common error codes: invalid API key, insufficient permissions,
resource not found, validation error (check field formats),
rate limited (retry with exponential backoff).
401403404422429Important Notes
- Pagination: List methods return an auto-paginating iterator. Use to iterate through all pages automatically.
for await (const item of result) { ... }
List missions
List all missions for the organization
GET /ai/missionsjavascript
// Automatically fetches more pages as needed.
for await (const missionData of client.ai.missions.list()) {
console.log(missionData.mission_id);
}Returns: (date-time), (string), (enum: external, managed), (string), (object), (uuid), (string), (string), (date-time)
created_atdescriptionexecution_modeinstructionsmetadatamission_idmodelnameupdated_atCreate mission
Create a new mission definition
POST /ai/missionsnameOptional: (string), (enum: external, managed), (string), (object), (string)
descriptionexecution_modeinstructionsmetadatamodeljavascript
const mission = await client.ai.missions.create({ name: 'my-resource' });
console.log(mission.data);Returns: (date-time), (string), (enum: external, managed), (string), (object), (uuid), (string), (string), (date-time)
created_atdescriptionexecution_modeinstructionsmetadatamission_idmodelnameupdated_atList recent events
List recent events across all missions
GET /ai/missions/eventsjavascript
// Automatically fetches more pages as needed.
for await (const eventData of client.ai.missions.listEvents()) {
console.log(eventData.event_id);
}Returns: (string), (string), (string), (object), (string), (string), (string), (date-time), (enum: status_change, step_started, step_completed, step_failed, tool_call, tool_result, message, error, custom)
agent_idevent_ididempotency_keypayloadrun_idstep_idsummarytimestamptypeList recent runs
List recent runs across all missions
GET /ai/missions/runsjavascript
// Automatically fetches more pages as needed.
for await (const missionRunData of client.ai.missions.runs.listRuns()) {
console.log(missionRunData.mission_id);
}Returns: (string), (date-time), (object), (object), (uuid), (object), (string), (uuid), (date-time), (enum: pending, running, paused, succeeded, failed, cancelled), (date-time)
errorfinished_atinputmetadatamission_idresult_payloadresult_summaryrun_idstarted_atstatusupdated_atGet mission
Get a mission by ID (includes tools, knowledge_bases, mcp_servers)
GET /ai/missions/{mission_id}javascript
const mission = await client.ai.missions.retrieve('182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e');
console.log(mission.data);Returns: (date-time), (string), (enum: external, managed), (string), (object), (uuid), (string), (string), (date-time)
created_atdescriptionexecution_modeinstructionsmetadatamission_idmodelnameupdated_atUpdate mission
Update a mission definition
PUT /ai/missions/{mission_id}Optional: (string), (enum: external, managed), (string), (object), (string), (string)
descriptionexecution_modeinstructionsmetadatamodelnamejavascript
const response = await client.ai.missions.updateMission('182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e');
console.log(response.data);Returns: (date-time), (string), (enum: external, managed), (string), (object), (uuid), (string), (string), (date-time)
created_atdescriptionexecution_modeinstructionsmetadatamission_idmodelnameupdated_atDelete mission
Delete a mission
DELETE /ai/missions/{mission_id}javascript
await client.ai.missions.deleteMission('182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e');Clone mission
Clone an existing mission
POST /ai/missions/{mission_id}/clonejavascript
const response = await client.ai.missions.cloneMission('mission_id');
console.log(response);List knowledge bases
List all knowledge bases for a mission
GET /ai/missions/{mission_id}/knowledge-basesjavascript
const response = await client.ai.missions.knowledgeBases.listKnowledgeBases('mission_id');
console.log(response);Create knowledge base
Create a new knowledge base for a mission
POST /ai/missions/{mission_id}/knowledge-basesjavascript
const response = await client.ai.missions.knowledgeBases.createKnowledgeBase('mission_id');
console.log(response);Get knowledge base
Get a specific knowledge base by ID
GET /ai/missions/{mission_id}/knowledge-bases/{knowledge_base_id}javascript
const response = await client.ai.missions.knowledgeBases.getKnowledgeBase('knowledge_base_id', {
mission_id: '550e8400-e29b-41d4-a716-446655440000',
});
console.log(response);Update knowledge base
Update a knowledge base definition
PUT /ai/missions/{mission_id}/knowledge-bases/{knowledge_base_id}javascript
const response = await client.ai.missions.knowledgeBases.updateKnowledgeBase('knowledge_base_id', {
mission_id: '550e8400-e29b-41d4-a716-446655440000',
});
console.log(response);Delete knowledge base
Delete a knowledge base from a mission
DELETE /ai/missions/{mission_id}/knowledge-bases/{knowledge_base_id}javascript
await client.ai.missions.knowledgeBases.deleteKnowledgeBase('knowledge_base_id', {
mission_id: '550e8400-e29b-41d4-a716-446655440000',
});List MCP servers
List all MCP servers for a mission
GET /ai/missions/{mission_id}/mcp-serversjavascript
const response = await client.ai.missions.mcpServers.listMcpServers('mission_id');
console.log(response);Create MCP server
Create a new MCP server for a mission
POST /ai/missions/{mission_id}/mcp-serversjavascript
const response = await client.ai.missions.mcpServers.createMcpServer('mission_id');
console.log(response);Get MCP server
Get a specific MCP server by ID
GET /ai/missions/{mission_id}/mcp-servers/{mcp_server_id}javascript
const response = await client.ai.missions.mcpServers.getMcpServer('mcp_server_id', {
mission_id: '550e8400-e29b-41d4-a716-446655440000',
});
console.log(response);Update MCP server
Update an MCP server definition
PUT /ai/missions/{mission_id}/mcp-servers/{mcp_server_id}javascript
const response = await client.ai.missions.mcpServers.updateMcpServer('mcp_server_id', {
mission_id: '550e8400-e29b-41d4-a716-446655440000',
});
console.log(response);Delete MCP server
Delete an MCP server from a mission
DELETE /ai/missions/{mission_id}/mcp-servers/{mcp_server_id}javascript
await client.ai.missions.mcpServers.deleteMcpServer('mcp_server_id', { mission_id: '550e8400-e29b-41d4-a716-446655440000' });List runs for mission
List all runs for a specific mission
GET /ai/missions/{mission_id}/runsjavascript
// Automatically fetches more pages as needed.
for await (const missionRunData of client.ai.missions.runs.list(
'182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e',
)) {
console.log(missionRunData.mission_id);
}Returns: (string), (date-time), (object), (object), (uuid), (object), (string), (uuid), (date-time), (enum: pending, running, paused, succeeded, failed, cancelled), (date-time)
errorfinished_atinputmetadatamission_idresult_payloadresult_summaryrun_idstarted_atstatusupdated_atStart a run
Start a new run for a mission
POST /ai/missions/{mission_id}/runsOptional: (object), (object)
inputmetadatajavascript
const run = await client.ai.missions.runs.create('182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e');
console.log(run.data);Returns: (string), (date-time), (object), (object), (uuid), (object), (string), (uuid), (date-time), (enum: pending, running, paused, succeeded, failed, cancelled), (date-time)
errorfinished_atinputmetadatamission_idresult_payloadresult_summaryrun_idstarted_atstatusupdated_atGet run details
Get details of a specific run
GET /ai/missions/{mission_id}/runs/{run_id}javascript
const run = await client.ai.missions.runs.retrieve('182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e', {
mission_id: '182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e',
});
console.log(run.data);Returns: (string), (date-time), (object), (object), (uuid), (object), (string), (uuid), (date-time), (enum: pending, running, paused, succeeded, failed, cancelled), (date-time)
errorfinished_atinputmetadatamission_idresult_payloadresult_summaryrun_idstarted_atstatusupdated_atUpdate run
Update run status and/or result
PATCH /ai/missions/{mission_id}/runs/{run_id}Optional: (string), (object), (object), (string), (enum: pending, running, paused, succeeded, failed, cancelled)
errormetadataresult_payloadresult_summarystatusjavascript
const run = await client.ai.missions.runs.update('182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e', {
mission_id: '182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e',
});
console.log(run.data);Returns: (string), (date-time), (object), (object), (uuid), (object), (string), (uuid), (date-time), (enum: pending, running, paused, succeeded, failed, cancelled), (date-time)
errorfinished_atinputmetadatamission_idresult_payloadresult_summaryrun_idstarted_atstatusupdated_atCancel run
Cancel a running or paused run
POST /ai/missions/{mission_id}/runs/{run_id}/canceljavascript
const response = await client.ai.missions.runs.cancelRun('182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e', {
mission_id: '182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e',
});
console.log(response.data);Returns: (string), (date-time), (object), (object), (uuid), (object), (string), (uuid), (date-time), (enum: pending, running, paused, succeeded, failed, cancelled), (date-time)
errorfinished_atinputmetadatamission_idresult_payloadresult_summaryrun_idstarted_atstatusupdated_atList events
List events for a run (paginated)
GET /ai/missions/{mission_id}/runs/{run_id}/eventsjavascript
// Automatically fetches more pages as needed.
for await (const eventData of client.ai.missions.runs.events.list(
'182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e',
{ mission_id: '182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e' },
)) {
console.log(eventData.event_id);
}Returns: (string), (string), (string), (object), (string), (string), (string), (date-time), (enum: status_change, step_started, step_completed, step_failed, tool_call, tool_result, message, error, custom)
agent_idevent_ididempotency_keypayloadrun_idstep_idsummarytimestamptypeLog event
Log an event for a run
POST /ai/missions/{mission_id}/runs/{run_id}/eventstypesummaryOptional: (string), (string), (object), (string)
agent_ididempotency_keypayloadstep_idjavascript
const response = await client.ai.missions.runs.events.log('182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e', {
mission_id: '182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e',
summary: 'Brief task summary',
type: 'status_change',
});
console.log(response.data);Returns: (string), (string), (string), (object), (string), (string), (string), (date-time), (enum: status_change, step_started, step_completed, step_failed, tool_call, tool_result, message, error, custom)
agent_idevent_ididempotency_keypayloadrun_idstep_idsummarytimestamptypeGet event details
Get details of a specific event
GET /ai/missions/{mission_id}/runs/{run_id}/events/{event_id}javascript
const response = await client.ai.missions.runs.events.getEventDetails('event_id', {
mission_id: '182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e',
run_id: '182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e',
});
console.log(response.data);Returns: (string), (string), (string), (object), (string), (string), (string), (date-time), (enum: status_change, step_started, step_completed, step_failed, tool_call, tool_result, message, error, custom)
agent_idevent_ididempotency_keypayloadrun_idstep_idsummarytimestamptypePause run
Pause a running run
POST /ai/missions/{mission_id}/runs/{run_id}/pausejavascript
const response = await client.ai.missions.runs.pauseRun('182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e', {
mission_id: '182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e',
});
console.log(response.data);Returns: (string), (date-time), (object), (object), (uuid), (object), (string), (uuid), (date-time), (enum: pending, running, paused, succeeded, failed, cancelled), (date-time)
errorfinished_atinputmetadatamission_idresult_payloadresult_summaryrun_idstarted_atstatusupdated_atGet plan
Get the plan (all steps) for a run
GET /ai/missions/{mission_id}/runs/{run_id}/planjavascript
const plan = await client.ai.missions.runs.plan.retrieve('182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e', {
mission_id: '182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e',
});
console.log(plan.data);Returns: (date-time), (string), (object), (string), (uuid), (integer), (date-time), (enum: pending, in_progress, completed, skipped, failed), (string)
completed_atdescriptionmetadataparent_step_idrun_idsequencestarted_atstatusstep_idCreate initial plan
Create the initial plan for a run
POST /ai/missions/{mission_id}/runs/{run_id}/planstepsjavascript
const plan = await client.ai.missions.runs.plan.create('182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e', {
mission_id: '182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e',
steps: [
{
description: 'description',
sequence: 0,
step_id: '550e8400-e29b-41d4-a716-446655440000',
},
],
});
console.log(plan.data);Returns: (date-time), (string), (object), (string), (uuid), (integer), (date-time), (enum: pending, in_progress, completed, skipped, failed), (string)
completed_atdescriptionmetadataparent_step_idrun_idsequencestarted_atstatusstep_idAdd step(s) to plan
Add one or more steps to an existing plan
POST /ai/missions/{mission_id}/runs/{run_id}/plan/stepsstepsjavascript
const response = await client.ai.missions.runs.plan.addStepsToPlan(
'182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e',
{
mission_id: '182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e',
steps: [
{
description: 'description',
sequence: 0,
step_id: '550e8400-e29b-41d4-a716-446655440000',
},
],
},
);
console.log(response.data);Returns: (date-time), (string), (object), (string), (uuid), (integer), (date-time), (enum: pending, in_progress, completed, skipped, failed), (string)
completed_atdescriptionmetadataparent_step_idrun_idsequencestarted_atstatusstep_idGet step details
Get details of a specific plan step
GET /ai/missions/{mission_id}/runs/{run_id}/plan/steps/{step_id}javascript
const response = await client.ai.missions.runs.plan.getStepDetails('step_id', {
mission_id: '182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e',
run_id: '182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e',
});
console.log(response.data);Returns: (date-time), (string), (object), (string), (uuid), (integer), (date-time), (enum: pending, in_progress, completed, skipped, failed), (string)
completed_atdescriptionmetadataparent_step_idrun_idsequencestarted_atstatusstep_idUpdate step status
Update the status of a plan step
PATCH /ai/missions/{mission_id}/runs/{run_id}/plan/steps/{step_id}Optional: (object), (enum: pending, in_progress, completed, skipped, failed)
metadatastatusjavascript
const response = await client.ai.missions.runs.plan.updateStep('step_id', {
mission_id: '182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e',
run_id: '182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e',
});
console.log(response.data);Returns: (date-time), (string), (object), (string), (uuid), (integer), (date-time), (enum: pending, in_progress, completed, skipped, failed), (string)
completed_atdescriptionmetadataparent_step_idrun_idsequencestarted_atstatusstep_idResume run
Resume a paused run
POST /ai/missions/{mission_id}/runs/{run_id}/resumejavascript
const response = await client.ai.missions.runs.resumeRun('182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e', {
mission_id: '182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e',
});
console.log(response.data);Returns: (string), (date-time), (object), (object), (uuid), (object), (string), (uuid), (date-time), (enum: pending, running, paused, succeeded, failed, cancelled), (date-time)
errorfinished_atinputmetadatamission_idresult_payloadresult_summaryrun_idstarted_atstatusupdated_atList linked Telnyx agents
List all Telnyx agents linked to a run
GET /ai/missions/{mission_id}/runs/{run_id}/telnyx-agentsjavascript
const telnyxAgents = await client.ai.missions.runs.telnyxAgents.list(
'182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e',
{ mission_id: '182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e' },
);
console.log(telnyxAgents.data);Returns: (date-time), (string), (string)
created_atrun_idtelnyx_agent_idLink Telnyx agent to run
Link a Telnyx AI agent (voice/messaging) to a run
POST /ai/missions/{mission_id}/runs/{run_id}/telnyx-agentstelnyx_agent_idjavascript
const response = await client.ai.missions.runs.telnyxAgents.link(
'182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e',
{ mission_id: '182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e', telnyx_agent_id: '550e8400-e29b-41d4-a716-446655440000' },
);
console.log(response.data);Returns: (date-time), (string), (string)
created_atrun_idtelnyx_agent_idUnlink Telnyx agent
Unlink a Telnyx agent from a run
DELETE /ai/missions/{mission_id}/runs/{run_id}/telnyx-agents/{telnyx_agent_id}javascript
await client.ai.missions.runs.telnyxAgents.unlink('telnyx_agent_id', {
mission_id: '182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e',
run_id: '182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e',
});List tools
List all tools for a mission
GET /ai/missions/{mission_id}/toolsjavascript
const response = await client.ai.missions.tools.listTools('mission_id');
console.log(response);Create tool
Create a new tool for a mission
POST /ai/missions/{mission_id}/toolsjavascript
const response = await client.ai.missions.tools.createTool('mission_id');
console.log(response);Get tool
Get a specific tool by ID
GET /ai/missions/{mission_id}/tools/{tool_id}javascript
const response = await client.ai.missions.tools.getTool('tool_id', { mission_id: '550e8400-e29b-41d4-a716-446655440000' });
console.log(response);Update tool
Update a tool definition
PUT /ai/missions/{mission_id}/tools/{tool_id}javascript
const response = await client.ai.missions.tools.updateTool('tool_id', { mission_id: '550e8400-e29b-41d4-a716-446655440000' });
console.log(response);Delete tool
Delete a tool from a mission
DELETE /ai/missions/{mission_id}/tools/{tool_id}javascript
await client.ai.missions.tools.deleteTool('tool_id', { mission_id: '550e8400-e29b-41d4-a716-446655440000' });