Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Create and manage Telnyx Missions — automated workflows, tasks, and sub-resources for AI-driven telecom operations. This skill provides Java SDK examples.
.claude/skills/team-telnyx-telnyx-missions-java/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-01 | ✗→✓ | ▲ Improved | 308% | 0% |
| case-02 | ✗→✓ | ▲ Improved | 224% | 0% |
| case-03 | ✗→✓ | ▲ Improved | 293% | 0% |
| case-05 | ✗→✓ | ▲ Improved | 552% | 0% |
| case-07 | ✗→✓ | ▲ Improved | 307% | 0% |
<!-- Auto-generated from Telnyx OpenAPI specs. Do not edit. -->
text<!-- Maven --> <dependency> <groupId>com.telnyx.sdk</groupId> <artifactId>telnyx</artifactId> <version>6.89.0</version> </dependency> // Gradle implementation("com.telnyx.sdk:telnyx:6.89.0")
javaimport com.telnyx.sdk.client.TelnyxClient; import com.telnyx.sdk.client.okhttp.TelnyxOkHttpClient; TelnyxClient client = TelnyxOkHttpClient.fromEnv();
All examples below assume client is already initialized as shown above.
All API calls can fail with network errors, rate limits (429), validation errors (422), or authentication errors (401). Always handle errors in production code:
javaimport com.telnyx.sdk.errors.TelnyxServiceException; try { var result = client.messages().send(params); } catch (TelnyxServiceException e) { System.err.println("API error " + e.statusCode() + ": " + e.getMessage()); if (e.statusCode() == 422) { System.err.println("Validation error — check required fields and formats"); } else if (e.statusCode() == 429) { // Rate limited — wait and retry with exponential backoff Thread.sleep(1000); } }
Common error codes: 401 invalid API key, 403 insufficient permissions, 404 resource not found, 422 validation error (check field formats), 429 rate limited (retry with exponential backoff).
.autoPager() for automatic iteration: for (var item : page.autoPager()) { ... }. For manual control, use .hasNextPage() and .nextPage().List all missions for the organization
GET /ai/missions
javaimport com.telnyx.sdk.models.ai.missions.MissionListPage; import com.telnyx.sdk.models.ai.missions.MissionListParams; MissionListPage page = client.ai().missions().list();
Returns: created_at (date-time), description (string), execution_mode (enum: external, managed), instructions (string), metadata (object), mission_id (uuid), model (string), name (string), updated_at (date-time)
Create a new mission definition
POST /ai/missions — Required: name
Optional: description (string), execution_mode (enum: external, managed), instructions (string), metadata (object), model (string)
javaimport com.telnyx.sdk.models.ai.missions.MissionCreateParams; import com.telnyx.sdk.models.ai.missions.MissionCreateResponse; MissionCreateParams params = MissionCreateParams.builder() .name("my-resource") .build(); MissionCreateResponse mission = client.ai().missions().create(params);
Returns: created_at (date-time), description (string), execution_mode (enum: external, managed), instructions (string), metadata (object), mission_id (uuid), model (string), name (string), updated_at (date-time)
List recent events across all missions
GET /ai/missions/events
javaimport com.telnyx.sdk.models.ai.missions.MissionListEventsPage; import com.telnyx.sdk.models.ai.missions.MissionListEventsParams; MissionListEventsPage page = client.ai().missions().listEvents();
Returns: agent_id (string), event_id (string), idempotency_key (string), payload (object), run_id (string), step_id (string), summary (string), timestamp (date-time), type (enum: status_change, step_started, step_completed, step_failed, tool_call, tool_result, message, error, custom)
List recent runs across all missions
GET /ai/missions/runs
javaimport com.telnyx.sdk.models.ai.missions.runs.RunListRunsPage; import com.telnyx.sdk.models.ai.missions.runs.RunListRunsParams; RunListRunsPage page = client.ai().missions().runs().listRuns();
Returns: error (string), finished_at (date-time), input (object), metadata (object), mission_id (uuid), result_payload (object), result_summary (string), run_id (uuid), started_at (date-time), status (enum: pending, running, paused, succeeded, failed, cancelled), updated_at (date-time)
Get a mission by ID (includes tools, knowledge_bases, mcp_servers)
GET /ai/missions/{mission_id}
javaimport com.telnyx.sdk.models.ai.missions.MissionRetrieveParams; import com.telnyx.sdk.models.ai.missions.MissionRetrieveResponse; MissionRetrieveResponse mission = client.ai().missions().retrieve("182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e");
Returns: created_at (date-time), description (string), execution_mode (enum: external, managed), instructions (string), metadata (object), mission_id (uuid), model (string), name (string), updated_at (date-time)
Update a mission definition
PUT /ai/missions/{mission_id}
Optional: description (string), execution_mode (enum: external, managed), instructions (string), metadata (object), model (string), name (string)
javaimport com.telnyx.sdk.models.ai.missions.MissionUpdateMissionParams; import com.telnyx.sdk.models.ai.missions.MissionUpdateMissionResponse; MissionUpdateMissionResponse response = client.ai().missions().updateMission("182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e");
Returns: created_at (date-time), description (string), execution_mode (enum: external, managed), instructions (string), metadata (object), mission_id (uuid), model (string), name (string), updated_at (date-time)
Delete a mission
DELETE /ai/missions/{mission_id}
javaimport com.telnyx.sdk.models.ai.missions.MissionDeleteMissionParams; client.ai().missions().deleteMission("182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e");
Clone an existing mission
POST /ai/missions/{mission_id}/clone
javaimport com.telnyx.sdk.models.ai.missions.MissionCloneMissionParams; import com.telnyx.sdk.models.ai.missions.MissionCloneMissionResponse; MissionCloneMissionResponse response = client.ai().missions().cloneMission("550e8400-e29b-41d4-a716-446655440000");
List all knowledge bases for a mission
GET /ai/missions/{mission_id}/knowledge-bases
javaimport com.telnyx.sdk.models.ai.missions.knowledgebases.KnowledgeBaseListKnowledgeBasesParams; import com.telnyx.sdk.models.ai.missions.knowledgebases.KnowledgeBaseListKnowledgeBasesResponse; KnowledgeBaseListKnowledgeBasesResponse response = client.ai().missions().knowledgeBases().listKnowledgeBases("550e8400-e29b-41d4-a716-446655440000");
Create a new knowledge base for a mission
POST /ai/missions/{mission_id}/knowledge-bases
javaimport com.telnyx.sdk.models.ai.missions.knowledgebases.KnowledgeBaseCreateKnowledgeBaseParams; import com.telnyx.sdk.models.ai.missions.knowledgebases.KnowledgeBaseCreateKnowledgeBaseResponse; KnowledgeBaseCreateKnowledgeBaseResponse response = client.ai().missions().knowledgeBases().createKnowledgeBase("550e8400-e29b-41d4-a716-446655440000");
Get a specific knowledge base by ID
GET /ai/missions/{mission_id}/knowledge-bases/{knowledge_base_id}
javaimport com.telnyx.sdk.models.ai.missions.knowledgebases.KnowledgeBaseGetKnowledgeBaseParams; import com.telnyx.sdk.models.ai.missions.knowledgebases.KnowledgeBaseGetKnowledgeBaseResponse; KnowledgeBaseGetKnowledgeBaseParams params = KnowledgeBaseGetKnowledgeBaseParams.builder() .missionId("550e8400-e29b-41d4-a716-446655440000") .knowledgeBaseId("550e8400-e29b-41d4-a716-446655440000") .build(); KnowledgeBaseGetKnowledgeBaseResponse response = client.ai().missions().knowledgeBases().getKnowledgeBase(params);
Update a knowledge base definition
PUT /ai/missions/{mission_id}/knowledge-bases/{knowledge_base_id}
javaimport com.telnyx.sdk.models.ai.missions.knowledgebases.KnowledgeBaseUpdateKnowledgeBaseParams; import com.telnyx.sdk.models.ai.missions.knowledgebases.KnowledgeBaseUpdateKnowledgeBaseResponse; KnowledgeBaseUpdateKnowledgeBaseParams params = KnowledgeBaseUpdateKnowledgeBaseParams.builder() .missionId("550e8400-e29b-41d4-a716-446655440000") .knowledgeBaseId("550e8400-e29b-41d4-a716-446655440000") .build(); KnowledgeBaseUpdateKnowledgeBaseResponse response = client.ai().missions().knowledgeBases().updateKnowledgeBase(params);
Delete a knowledge base from a mission
DELETE /ai/missions/{mission_id}/knowledge-bases/{knowledge_base_id}
javaimport com.telnyx.sdk.models.ai.missions.knowledgebases.KnowledgeBaseDeleteKnowledgeBaseParams; KnowledgeBaseDeleteKnowledgeBaseParams params = KnowledgeBaseDeleteKnowledgeBaseParams.builder() .missionId("550e8400-e29b-41d4-a716-446655440000") .knowledgeBaseId("550e8400-e29b-41d4-a716-446655440000") .build(); client.ai().missions().knowledgeBases().deleteKnowledgeBase(params);
List all MCP servers for a mission
GET /ai/missions/{mission_id}/mcp-servers
javaimport com.telnyx.sdk.models.ai.missions.mcpservers.McpServerListMcpServersParams; import com.telnyx.sdk.models.ai.missions.mcpservers.McpServerListMcpServersResponse; McpServerListMcpServersResponse response = client.ai().missions().mcpServers().listMcpServers("550e8400-e29b-41d4-a716-446655440000");
Create a new MCP server for a mission
POST /ai/missions/{mission_id}/mcp-servers
javaimport com.telnyx.sdk.models.ai.missions.mcpservers.McpServerCreateMcpServerParams; import com.telnyx.sdk.models.ai.missions.mcpservers.McpServerCreateMcpServerResponse; McpServerCreateMcpServerResponse response = client.ai().missions().mcpServers().createMcpServer("550e8400-e29b-41d4-a716-446655440000");
Get a specific MCP server by ID
GET /ai/missions/{mission_id}/mcp-servers/{mcp_server_id}
javaimport com.telnyx.sdk.models.ai.missions.mcpservers.McpServerGetMcpServerParams; import com.telnyx.sdk.models.ai.missions.mcpservers.McpServerGetMcpServerResponse; McpServerGetMcpServerParams params = McpServerGetMcpServerParams.builder() .missionId("550e8400-e29b-41d4-a716-446655440000") .mcpServerId("550e8400-e29b-41d4-a716-446655440000") .build(); McpServerGetMcpServerResponse response = client.ai().missions().mcpServers().getMcpServer(params);
Update an MCP server definition
PUT /ai/missions/{mission_id}/mcp-servers/{mcp_server_id}
javaimport com.telnyx.sdk.models.ai.missions.mcpservers.McpServerUpdateMcpServerParams; import com.telnyx.sdk.models.ai.missions.mcpservers.McpServerUpdateMcpServerResponse; McpServerUpdateMcpServerParams params = McpServerUpdateMcpServerParams.builder() .missionId("550e8400-e29b-41d4-a716-446655440000") .mcpServerId("550e8400-e29b-41d4-a716-446655440000") .build(); McpServerUpdateMcpServerResponse response = client.ai().missions().mcpServers().updateMcpServer(params);
Delete an MCP server from a mission
DELETE /ai/missions/{mission_id}/mcp-servers/{mcp_server_id}
javaimport com.telnyx.sdk.models.ai.missions.mcpservers.McpServerDeleteMcpServerParams; McpServerDeleteMcpServerParams params = McpServerDeleteMcpServerParams.builder() .missionId("550e8400-e29b-41d4-a716-446655440000") .mcpServerId("550e8400-e29b-41d4-a716-446655440000") .build(); client.ai().missions().mcpServers().deleteMcpServer(params);
List all runs for a specific mission
GET /ai/missions/{mission_id}/runs
javaimport com.telnyx.sdk.models.ai.missions.runs.RunListPage; import com.telnyx.sdk.models.ai.missions.runs.RunListParams; RunListPage page = client.ai().missions().runs().list("182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e");
Returns: error (string), finished_at (date-time), input (object), metadata (object), mission_id (uuid), result_payload (object), result_summary (string), run_id (uuid), started_at (date-time), status (enum: pending, running, paused, succeeded, failed, cancelled), updated_at (date-time)
Start a new run for a mission
POST /ai/missions/{mission_id}/runs
Optional: input (object), metadata (object)
javaimport com.telnyx.sdk.models.ai.missions.runs.RunCreateParams; import com.telnyx.sdk.models.ai.missions.runs.RunCreateResponse; RunCreateResponse run = client.ai().missions().runs().create("182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e");
Returns: error (string), finished_at (date-time), input (object), metadata (object), mission_id (uuid), result_payload (object), result_summary (string), run_id (uuid), started_at (date-time), status (enum: pending, running, paused, succeeded, failed, cancelled), updated_at (date-time)
Get details of a specific run
GET /ai/missions/{mission_id}/runs/{run_id}
javaimport com.telnyx.sdk.models.ai.missions.runs.RunRetrieveParams; import com.telnyx.sdk.models.ai.missions.runs.RunRetrieveResponse; RunRetrieveParams params = RunRetrieveParams.builder() .missionId("182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e") .runId("182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e") .build(); RunRetrieveResponse run = client.ai().missions().runs().retrieve(params);
Returns: error (string), finished_at (date-time), input (object), metadata (object), mission_id (uuid), result_payload (object), result_summary (string), run_id (uuid), started_at (date-time), status (enum: pending, running, paused, succeeded, failed, cancelled), updated_at (date-time)
Update run status and/or result
PATCH /ai/missions/{mission_id}/runs/{run_id}
Optional: error (string), metadata (object), result_payload (object), result_summary (string), status (enum: pending, running, paused, succeeded, failed, cancelled)
javaimport com.telnyx.sdk.models.ai.missions.runs.RunUpdateParams; import com.telnyx.sdk.models.ai.missions.runs.RunUpdateResponse; RunUpdateParams params = RunUpdateParams.builder() .missionId("182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e") .runId("182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e") .build(); RunUpdateResponse run = client.ai().missions().runs().update(params);
Returns: error (string), finished_at (date-time), input (object), metadata (object), mission_id (uuid), result_payload (object), result_summary (string), run_id (uuid), started_at (date-time), status (enum: pending, running, paused, succeeded, failed, cancelled), updated_at (date-time)
Cancel a running or paused run
POST /ai/missions/{mission_id}/runs/{run_id}/cancel
javaimport com.telnyx.sdk.models.ai.missions.runs.RunCancelRunParams; import com.telnyx.sdk.models.ai.missions.runs.RunCancelRunResponse; RunCancelRunParams params = RunCancelRunParams.builder() .missionId("182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e") .runId("182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e") .build(); RunCancelRunResponse response = client.ai().missions().runs().cancelRun(params);
Returns: error (string), finished_at (date-time), input (object), metadata (object), mission_id (uuid), result_payload (object), result_summary (string), run_id (uuid), started_at (date-time), status (enum: pending, running, paused, succeeded, failed, cancelled), updated_at (date-time)
List events for a run (paginated)
GET /ai/missions/{mission_id}/runs/{run_id}/events
javaimport com.telnyx.sdk.models.ai.missions.runs.events.EventListPage; import com.telnyx.sdk.models.ai.missions.runs.events.EventListParams; EventListParams params = EventListParams.builder() .missionId("182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e") .runId("182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e") .build(); EventListPage page = client.ai().missions().runs().events().list(params);
Returns: agent_id (string), event_id (string), idempotency_key (string), payload (object), run_id (string), step_id (string), summary (string), timestamp (date-time), type (enum: status_change, step_started, step_completed, step_failed, tool_call, tool_result, message, error, custom)
Log an event for a run
POST /ai/missions/{mission_id}/runs/{run_id}/events — Required: type, summary
Optional: agent_id (string), idempotency_key (string), payload (object), step_id (string)
javaimport com.telnyx.sdk.models.ai.missions.runs.events.EventLogParams; import com.telnyx.sdk.models.ai.missions.runs.events.EventLogResponse; EventLogParams params = EventLogParams.builder() .missionId("182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e") .runId("182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e") .summary("Brief task summary") .type(EventLogParams.Type.STATUS_CHANGE) .build(); EventLogResponse response = client.ai().missions().runs().events().log(params);
Returns: agent_id (string), event_id (string), idempotency_key (string), payload (object), run_id (string), step_id (string), summary (string), timestamp (date-time), type (enum: status_change, step_started, step_completed, step_failed, tool_call, tool_result, message, error, custom)
Get details of a specific event
GET /ai/missions/{mission_id}/runs/{run_id}/events/{event_id}
javaimport com.telnyx.sdk.models.ai.missions.runs.events.EventGetEventDetailsParams; import com.telnyx.sdk.models.ai.missions.runs.events.EventGetEventDetailsResponse; EventGetEventDetailsParams params = EventGetEventDetailsParams.builder() .missionId("182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e") .runId("182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e") .eventId("550e8400-e29b-41d4-a716-446655440000") .build(); EventGetEventDetailsResponse response = client.ai().missions().runs().events().getEventDetails(params);
Returns: agent_id (string), event_id (string), idempotency_key (string), payload (object), run_id (string), step_id (string), summary (string), timestamp (date-time), type (enum: status_change, step_started, step_completed, step_failed, tool_call, tool_result, message, error, custom)
Pause a running run
POST /ai/missions/{mission_id}/runs/{run_id}/pause
javaimport com.telnyx.sdk.models.ai.missions.runs.RunPauseRunParams; import com.telnyx.sdk.models.ai.missions.runs.RunPauseRunResponse; RunPauseRunParams params = RunPauseRunParams.builder() .missionId("182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e") .runId("182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e") .build(); RunPauseRunResponse response = client.ai().missions().runs().pauseRun(params);
Returns: error (string), finished_at (date-time), input (object), metadata (object), mission_id (uuid), result_payload (object), result_summary (string), run_id (uuid), started_at (date-time), status (enum: pending, running, paused, succeeded, failed, cancelled), updated_at (date-time)
Get the plan (all steps) for a run
GET /ai/missions/{mission_id}/runs/{run_id}/plan
javaimport com.telnyx.sdk.models.ai.missions.runs.plan.PlanRetrieveParams; import com.telnyx.sdk.models.ai.missions.runs.plan.PlanRetrieveResponse; PlanRetrieveParams params = PlanRetrieveParams.builder() .missionId("182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e") .runId("182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e") .build(); PlanRetrieveResponse plan = client.ai().missions().runs().plan().retrieve(params);
Returns: completed_at (date-time), description (string), metadata (object), parent_step_id (string), run_id (uuid), sequence (integer), started_at (date-time), status (enum: pending, in_progress, completed, skipped, failed), step_id (string)
Create the initial plan for a run
POST /ai/missions/{mission_id}/runs/{run_id}/plan — Required: steps
javaimport com.telnyx.sdk.models.ai.missions.runs.plan.PlanCreateParams; import com.telnyx.sdk.models.ai.missions.runs.plan.PlanCreateResponse; PlanCreateParams params = PlanCreateParams.builder() .missionId("182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e") .runId("182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e") .addStep(PlanCreateParams.Step.builder() .description("description") .sequence(0L) .stepId("550e8400-e29b-41d4-a716-446655440000") .build()) .build(); PlanCreateResponse plan = client.ai().missions().runs().plan().create(params);
Returns: completed_at (date-time), description (string), metadata (object), parent_step_id (string), run_id (uuid), sequence (integer), started_at (date-time), status (enum: pending, in_progress, completed, skipped, failed), step_id (string)
Add one or more steps to an existing plan
POST /ai/missions/{mission_id}/runs/{run_id}/plan/steps — Required: steps
javaimport com.telnyx.sdk.models.ai.missions.runs.plan.PlanAddStepsToPlanParams; import com.telnyx.sdk.models.ai.missions.runs.plan.PlanAddStepsToPlanResponse; PlanAddStepsToPlanParams params = PlanAddStepsToPlanParams.builder() .missionId("182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e") .runId("182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e") .addStep(PlanAddStepsToPlanParams.Step.builder() .description("description") .sequence(0L) .stepId("550e8400-e29b-41d4-a716-446655440000") .build()) .build(); PlanAddStepsToPlanResponse response = client.ai().missions().runs().plan().addStepsToPlan(params);
Returns: completed_at (date-time), description (string), metadata (object), parent_step_id (string), run_id (uuid), sequence (integer), started_at (date-time), status (enum: pending, in_progress, completed, skipped, failed), step_id (string)
Get details of a specific plan step
GET /ai/missions/{mission_id}/runs/{run_id}/plan/steps/{step_id}
javaimport com.telnyx.sdk.models.ai.missions.runs.plan.PlanGetStepDetailsParams; import com.telnyx.sdk.models.ai.missions.runs.plan.PlanGetStepDetailsResponse; PlanGetStepDetailsParams params = PlanGetStepDetailsParams.builder() .missionId("182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e") .runId("182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e") .stepId("550e8400-e29b-41d4-a716-446655440000") .build(); PlanGetStepDetailsResponse response = client.ai().missions().runs().plan().getStepDetails(params);
Returns: completed_at (date-time), description (string), metadata (object), parent_step_id (string), run_id (uuid), sequence (integer), started_at (date-time), status (enum: pending, in_progress, completed, skipped, failed), step_id (string)
Update the status of a plan step
PATCH /ai/missions/{mission_id}/runs/{run_id}/plan/steps/{step_id}
Optional: metadata (object), status (enum: pending, in_progress, completed, skipped, failed)
javaimport com.telnyx.sdk.models.ai.missions.runs.plan.PlanUpdateStepParams; import com.telnyx.sdk.models.ai.missions.runs.plan.PlanUpdateStepResponse; PlanUpdateStepParams params = PlanUpdateStepParams.builder() .missionId("182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e") .runId("182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e") .stepId("550e8400-e29b-41d4-a716-446655440000") .build(); PlanUpdateStepResponse response = client.ai().missions().runs().plan().updateStep(params);
Returns: completed_at (date-time), description (string), metadata (object), parent_step_id (string), run_id (uuid), sequence (integer), started_at (date-time), status (enum: pending, in_progress, completed, skipped, failed), step_id (string)
Resume a paused run
POST /ai/missions/{mission_id}/runs/{run_id}/resume
javaimport com.telnyx.sdk.models.ai.missions.runs.RunResumeRunParams; import com.telnyx.sdk.models.ai.missions.runs.RunResumeRunResponse; RunResumeRunParams params = RunResumeRunParams.builder() .missionId("182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e") .runId("182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e") .build(); RunResumeRunResponse response = client.ai().missions().runs().resumeRun(params);
Returns: error (string), finished_at (date-time), input (object), metadata (object), mission_id (uuid), result_payload (object), result_summary (string), run_id (uuid), started_at (date-time), status (enum: pending, running, paused, succeeded, failed, cancelled), updated_at (date-time)
List all Telnyx agents linked to a run
GET /ai/missions/{mission_id}/runs/{run_id}/telnyx-agents
javaimport com.telnyx.sdk.models.ai.missions.runs.telnyxagents.TelnyxAgentListParams; import com.telnyx.sdk.models.ai.missions.runs.telnyxagents.TelnyxAgentListResponse; TelnyxAgentListParams params = TelnyxAgentListParams.builder() .missionId("182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e") .runId("182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e") .build(); TelnyxAgentListResponse telnyxAgents = client.ai().missions().runs().telnyxAgents().list(params);
Returns: created_at (date-time), run_id (string), telnyx_agent_id (string)
Link a Telnyx AI agent (voice/messaging) to a run
POST /ai/missions/{mission_id}/runs/{run_id}/telnyx-agents — Required: telnyx_agent_id
javaimport com.telnyx.sdk.models.ai.missions.runs.telnyxagents.TelnyxAgentLinkParams; import com.telnyx.sdk.models.ai.missions.runs.telnyxagents.TelnyxAgentLinkResponse; TelnyxAgentLinkParams params = TelnyxAgentLinkParams.builder() .missionId("182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e") .runId("182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e") .telnyxAgentId("550e8400-e29b-41d4-a716-446655440000") .build(); TelnyxAgentLinkResponse response = client.ai().missions().runs().telnyxAgents().link(params);
Returns: created_at (date-time), run_id (string), telnyx_agent_id (string)
Unlink a Telnyx agent from a run
DELETE /ai/missions/{mission_id}/runs/{run_id}/telnyx-agents/{telnyx_agent_id}
javaimport com.telnyx.sdk.models.ai.missions.runs.telnyxagents.TelnyxAgentUnlinkParams; TelnyxAgentUnlinkParams params = TelnyxAgentUnlinkParams.builder() .missionId("182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e") .runId("182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e") .telnyxAgentId("550e8400-e29b-41d4-a716-446655440000") .build(); client.ai().missions().runs().telnyxAgents().unlink(params);
List all tools for a mission
GET /ai/missions/{mission_id}/tools
javaimport com.telnyx.sdk.models.ai.missions.tools.ToolListToolsParams; import com.telnyx.sdk.models.ai.missions.tools.ToolListToolsResponse; ToolListToolsResponse response = client.ai().missions().tools().listTools("550e8400-e29b-41d4-a716-446655440000");
Create a new tool for a mission
POST /ai/missions/{mission_id}/tools
javaimport com.telnyx.sdk.models.ai.missions.tools.ToolCreateToolParams; import com.telnyx.sdk.models.ai.missions.tools.ToolCreateToolResponse; ToolCreateToolResponse response = client.ai().missions().tools().createTool("550e8400-e29b-41d4-a716-446655440000");
Get a specific tool by ID
GET /ai/missions/{mission_id}/tools/{tool_id}
javaimport com.telnyx.sdk.models.ai.missions.tools.ToolGetToolParams; import com.telnyx.sdk.models.ai.missions.tools.ToolGetToolResponse; ToolGetToolParams params = ToolGetToolParams.builder() .missionId("550e8400-e29b-41d4-a716-446655440000") .toolId("550e8400-e29b-41d4-a716-446655440000") .build(); ToolGetToolResponse response = client.ai().missions().tools().getTool(params);
Update a tool definition
PUT /ai/missions/{mission_id}/tools/{tool_id}
javaimport com.telnyx.sdk.models.ai.missions.tools.ToolUpdateToolParams; import com.telnyx.sdk.models.ai.missions.tools.ToolUpdateToolResponse; ToolUpdateToolParams params = ToolUpdateToolParams.builder() .missionId("550e8400-e29b-41d4-a716-446655440000") .toolId("550e8400-e29b-41d4-a716-446655440000") .build(); ToolUpdateToolResponse response = client.ai().missions().tools().updateTool(params);
Delete a tool from a mission
DELETE /ai/missions/{mission_id}/tools/{tool_id}
javaimport com.telnyx.sdk.models.ai.missions.tools.ToolDeleteToolParams; ToolDeleteToolParams params = ToolDeleteToolParams.builder() .missionId("550e8400-e29b-41d4-a716-446655440000") .toolId("550e8400-e29b-41d4-a716-446655440000") .build(); client.ai().missions().tools().deleteTool(params);
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | fail→pass | 15,857 | 18,943 | +19% | 1 | 1 | 0% | 3,264 | 13,310 | +308% | 0 | 0 | — |
case-02 | fail→pass | 26,382 | 19,902 | -25% | 1 | 1 | 0% | 4,454 | 14,424 | +224% | 0 | 0 | — |
case-03 | fail→pass | 18,062 | 13,688 | -24% | 1 | 1 | 0% | 3,376 | 13,266 | +293% | 0 | 0 | — |
case-04 | pass→pass | 11,329 | 4,271 | -62% | 1 | 1 | 0% | 1,925 | 11,104 | +477% | 0 | 0 | — |
case-05 | fail→pass | 8,516 | 1,507 | -82% | 1 | 1 | 0% | 1,623 | 10,581 | +552% | 0 | 0 | — |
case-06 | fail→fail | 12,320 | 3,092 | -75% | 1 | 1 | 0% | 2,361 | 10,931 | +363% | 0 | 0 | — |
case-07 | fail→pass | 14,587 | 7,721 | -47% | 1 | 1 | 0% | 2,955 | 12,018 | +307% | 0 | 0 | — |
case-08 | fail→pass | 13,435 | 5,587 | -58% | 1 | 1 | 0% | 2,584 | 11,455 | +343% | 0 | 0 | — |
case-09 | fail→pass | 10,331 | 5,737 | -44% | 1 | 1 | 0% | 2,131 | 11,660 | +447% | 0 | 0 | — |
case-10 | fail→pass | 13,664 | 6,010 | -56% | 1 | 1 | 0% | 2,517 | 11,643 | +363% | 0 | 0 | — |
case-11 | fail→pass | 11,493 | 4,255 | -63% | 1 | 1 | 0% | 2,438 | 11,161 | +358% | 0 | 0 | — |
case-12 | fail→pass | 6,707 | 3,632 | -46% | 1 | 1 | 0% | 1,192 | 11,026 | +825% | 0 | 0 | — |
case-13 | fail→pass | 11,122 | 3,016 | -73% | 1 | 1 | 0% | 1,945 | 10,893 | +460% | 0 | 0 | — |
case-14 | fail→pass | 10,784 | 7,901 | -27% | 1 | 1 | 0% | 1,935 | 12,061 | +523% | 0 | 0 | — |
case-15 | fail→pass | 15,157 | 4,740 | -69% | 1 | 1 | 0% | 2,788 | 11,310 | +306% | 0 | 0 | — |
case-16 | fail→pass | 14,434 | 5,736 | -60% | 1 | 1 | 0% | 2,535 | 11,525 | +355% | 0 | 0 | — |
case-17 | fail→pass | 11,231 | 4,979 | -56% | 1 | 1 | 0% | 2,054 | 11,457 | +458% | 0 | 0 | — |
case-18 | fail→pass | 6,215 | 3,118 | -50% | 1 | 1 | 0% | 1,052 | 10,962 | +942% | 0 | 0 | — |
case-19 | fail→pass | 15,643 | 7,189 | -54% | 1 | 1 | 0% | 3,148 | 11,867 | +277% | 0 | 0 | — |
case-20 | fail→pass | 16,031 | 3,042 | -81% | 1 | 1 | 0% | 2,486 | 10,836 | +336% | 0 | 0 | — |
case-21 | fail→pass | 9,801 | 4,461 | -54% | 1 | 1 | 0% | 1,935 | 11,241 | +481% | 0 | 0 | — |
case-22 | pass→pass | 12,185 | 6,282 | -48% | 1 | 1 | 0% | 2,236 | 11,508 | +415% | 0 | 0 | — |
case-23 | pass→pass | 10,681 | 7,702 | -28% | 1 | 1 | 0% | 2,144 | 12,004 | +460% | 0 | 0 | — |
case-24 | pass→pass | 15,366 | 12,021 | -22% | 1 | 1 | 0% | 2,813 | 12,759 | +354% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 24 cases were attempted. The headline lift of +79 percentage points is the difference between those two pass rates over the 24 comparable cases.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
| Model | Method | Date | Lift |
|---|---|---|---|
| gemini-3.6-flash | verified | 8/22/2026 | +88% |
Other measured skills in the registry, with their headline benchmark lift.