Agent skill
telnyx-missions-ruby
Create and manage Telnyx Missions — automated workflows, tasks, and sub-resources for AI-driven telecom operations. This skill provides Ruby SDK examples.
Install this agent skill to your Project
npx add-skill https://github.com/team-telnyx/ai/tree/main/providers/claude/plugin/skills/telnyx-missions-ruby
Metadata
Additional technical details for this skill
- author
- telnyx
- product
- missions
- language
- ruby
- generated by
- telnyx-ext-skills-generator
SKILL.md
Telnyx Missions - Ruby
Installation
gem install telnyx
Setup
require "telnyx"
client = Telnyx::Client.new(
api_key: ENV["TELNYX_API_KEY"], # This is the default and can be omitted
)
All examples below assume client is already initialized as shown above.
Error 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:
begin
result = client.messages.send_(to: "+13125550001", from: "+13125550002", text: "Hello")
rescue Telnyx::Errors::APIConnectionError
puts "Network error — check connectivity and retry"
rescue Telnyx::Errors::RateLimitError
# 429: rate limited — wait and retry with exponential backoff
sleep(1) # Check Retry-After header for actual delay
rescue Telnyx::Errors::APIStatusError => e
puts "API error #{e.status}: #{e.message}"
if e.status == 422
puts "Validation error — check required fields and formats"
end
end
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).
Important Notes
- Pagination: Use
.auto_paging_eachfor automatic iteration:page.auto_paging_each { |item| puts item.id }.
List missions
List all missions for the organization
GET /ai/missions
page = client.ai.missions.list
puts(page)
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 mission
Create a new mission definition
POST /ai/missions — Required: name
Optional: description (string), execution_mode (enum: external, managed), instructions (string), metadata (object), model (string)
mission = client.ai.missions.create(name: "my-resource")
puts(mission)
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
List recent events across all missions
GET /ai/missions/events
page = client.ai.missions.list_events
puts(page)
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
List recent runs across all missions
GET /ai/missions/runs
page = client.ai.missions.runs.list_runs
puts(page)
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 mission
Get a mission by ID (includes tools, knowledge_bases, mcp_servers)
GET /ai/missions/{mission_id}
mission = client.ai.missions.retrieve("182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e")
puts(mission)
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 mission
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)
response = client.ai.missions.update_mission("182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e")
puts(response)
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 mission
Delete a mission
DELETE /ai/missions/{mission_id}
result = client.ai.missions.delete_mission("182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e")
puts(result)
Clone mission
Clone an existing mission
POST /ai/missions/{mission_id}/clone
response = client.ai.missions.clone_mission("mission_id")
puts(response)
List knowledge bases
List all knowledge bases for a mission
GET /ai/missions/{mission_id}/knowledge-bases
response = client.ai.missions.knowledge_bases.list_knowledge_bases("mission_id")
puts(response)
Create knowledge base
Create a new knowledge base for a mission
POST /ai/missions/{mission_id}/knowledge-bases
response = client.ai.missions.knowledge_bases.create_knowledge_base("mission_id")
puts(response)
Get knowledge base
Get a specific knowledge base by ID
GET /ai/missions/{mission_id}/knowledge-bases/{knowledge_base_id}
response = client.ai.missions.knowledge_bases.get_knowledge_base("knowledge_base_id", mission_id: "550e8400-e29b-41d4-a716-446655440000")
puts(response)
Update knowledge base
Update a knowledge base definition
PUT /ai/missions/{mission_id}/knowledge-bases/{knowledge_base_id}
response = client.ai.missions.knowledge_bases.update_knowledge_base("knowledge_base_id", mission_id: "550e8400-e29b-41d4-a716-446655440000")
puts(response)
Delete knowledge base
Delete a knowledge base from a mission
DELETE /ai/missions/{mission_id}/knowledge-bases/{knowledge_base_id}
result = client.ai.missions.knowledge_bases.delete_knowledge_base("knowledge_base_id", mission_id: "550e8400-e29b-41d4-a716-446655440000")
puts(result)
List MCP servers
List all MCP servers for a mission
GET /ai/missions/{mission_id}/mcp-servers
response = client.ai.missions.mcp_servers.list_mcp_servers("mission_id")
puts(response)
Create MCP server
Create a new MCP server for a mission
POST /ai/missions/{mission_id}/mcp-servers
response = client.ai.missions.mcp_servers.create_mcp_server("mission_id")
puts(response)
Get MCP server
Get a specific MCP server by ID
GET /ai/missions/{mission_id}/mcp-servers/{mcp_server_id}
response = client.ai.missions.mcp_servers.get_mcp_server("mcp_server_id", mission_id: "550e8400-e29b-41d4-a716-446655440000")
puts(response)
Update MCP server
Update an MCP server definition
PUT /ai/missions/{mission_id}/mcp-servers/{mcp_server_id}
response = client.ai.missions.mcp_servers.update_mcp_server("mcp_server_id", mission_id: "550e8400-e29b-41d4-a716-446655440000")
puts(response)
Delete MCP server
Delete an MCP server from a mission
DELETE /ai/missions/{mission_id}/mcp-servers/{mcp_server_id}
result = client.ai.missions.mcp_servers.delete_mcp_server("mcp_server_id", mission_id: "550e8400-e29b-41d4-a716-446655440000")
puts(result)
List runs for mission
List all runs for a specific mission
GET /ai/missions/{mission_id}/runs
page = client.ai.missions.runs.list("182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e")
puts(page)
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 run
Start a new run for a mission
POST /ai/missions/{mission_id}/runs
Optional: input (object), metadata (object)
run = client.ai.missions.runs.create("182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e")
puts(run)
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 run details
Get details of a specific run
GET /ai/missions/{mission_id}/runs/{run_id}
run = client.ai.missions.runs.retrieve(
"182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e",
mission_id: "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e"
)
puts(run)
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
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)
run = client.ai.missions.runs.update(
"182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e",
mission_id: "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e"
)
puts(run)
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 run
Cancel a running or paused run
POST /ai/missions/{mission_id}/runs/{run_id}/cancel
response = client.ai.missions.runs.cancel_run(
"182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e",
mission_id: "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e"
)
puts(response)
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
List events for a run (paginated)
GET /ai/missions/{mission_id}/runs/{run_id}/events
page = client.ai.missions.runs.events.list(
"182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e",
mission_id: "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e"
)
puts(page)
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 event
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)
response = 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
)
puts(response)
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 event details
Get details of a specific event
GET /ai/missions/{mission_id}/runs/{run_id}/events/{event_id}
response = client.ai.missions.runs.events.get_event_details(
"event_id",
mission_id: "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e",
run_id: "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e"
)
puts(response)
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 run
Pause a running run
POST /ai/missions/{mission_id}/runs/{run_id}/pause
response = client.ai.missions.runs.pause_run(
"182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e",
mission_id: "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e"
)
puts(response)
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 plan
Get the plan (all steps) for a run
GET /ai/missions/{mission_id}/runs/{run_id}/plan
plan = client.ai.missions.runs.plan.retrieve(
"182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e",
mission_id: "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e"
)
puts(plan)
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 initial plan
Create the initial plan for a run
POST /ai/missions/{mission_id}/runs/{run_id}/plan — Required: steps
plan = 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"}]
)
puts(plan)
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 step(s) to plan
Add one or more steps to an existing plan
POST /ai/missions/{mission_id}/runs/{run_id}/plan/steps — Required: steps
response = client.ai.missions.runs.plan.add_steps_to_plan(
"182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e",
mission_id: "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e",
steps: [{description: "description", sequence: 0, step_id: "550e8400-e29b-41d4-a716-446655440000"}]
)
puts(response)
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 step details
Get details of a specific plan step
GET /ai/missions/{mission_id}/runs/{run_id}/plan/steps/{step_id}
response = client.ai.missions.runs.plan.get_step_details(
"step_id",
mission_id: "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e",
run_id: "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e"
)
puts(response)
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 step status
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)
response = client.ai.missions.runs.plan.update_step(
"step_id",
mission_id: "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e",
run_id: "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e"
)
puts(response)
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 run
Resume a paused run
POST /ai/missions/{mission_id}/runs/{run_id}/resume
response = client.ai.missions.runs.resume_run(
"182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e",
mission_id: "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e"
)
puts(response)
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 linked Telnyx agents
List all Telnyx agents linked to a run
GET /ai/missions/{mission_id}/runs/{run_id}/telnyx-agents
telnyx_agents = client.ai.missions.runs.telnyx_agents.list(
"182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e",
mission_id: "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e"
)
puts(telnyx_agents)
Returns: created_at (date-time), run_id (string), telnyx_agent_id (string)
Link Telnyx agent to run
Link a Telnyx AI agent (voice/messaging) to a run
POST /ai/missions/{mission_id}/runs/{run_id}/telnyx-agents — Required: telnyx_agent_id
response = client.ai.missions.runs.telnyx_agents.link(
"182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e",
mission_id: "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e",
telnyx_agent_id: "550e8400-e29b-41d4-a716-446655440000"
)
puts(response)
Returns: created_at (date-time), run_id (string), telnyx_agent_id (string)
Unlink Telnyx agent
Unlink a Telnyx agent from a run
DELETE /ai/missions/{mission_id}/runs/{run_id}/telnyx-agents/{telnyx_agent_id}
result = client.ai.missions.runs.telnyx_agents.unlink(
"telnyx_agent_id",
mission_id: "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e",
run_id: "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e"
)
puts(result)
List tools
List all tools for a mission
GET /ai/missions/{mission_id}/tools
response = client.ai.missions.tools.list_tools("mission_id")
puts(response)
Create tool
Create a new tool for a mission
POST /ai/missions/{mission_id}/tools
response = client.ai.missions.tools.create_tool("mission_id")
puts(response)
Get tool
Get a specific tool by ID
GET /ai/missions/{mission_id}/tools/{tool_id}
response = client.ai.missions.tools.get_tool("tool_id", mission_id: "550e8400-e29b-41d4-a716-446655440000")
puts(response)
Update tool
Update a tool definition
PUT /ai/missions/{mission_id}/tools/{tool_id}
response = client.ai.missions.tools.update_tool("tool_id", mission_id: "550e8400-e29b-41d4-a716-446655440000")
puts(response)
Delete tool
Delete a tool from a mission
DELETE /ai/missions/{mission_id}/tools/{tool_id}
result = client.ai.missions.tools.delete_tool("tool_id", mission_id: "550e8400-e29b-41d4-a716-446655440000")
puts(result)
Recommended Agent Skills
Expand your agent's capabilities with these related and highly-rated skills.
telnyx-oauth-go
Implement OAuth 2.0 authentication flows for Telnyx API access. This skill provides Go SDK examples.
telnyx-account-access-ruby
Configure account addresses, authentication providers, IP access controls, billing groups, and integration secrets. This skill provides Ruby SDK examples.
telnyx-sip-curl
Configure SIP trunking connections and outbound voice profiles. Use when connecting PBX systems or managing SIP infrastructure. This skill provides REST API (curl) examples.
telnyx-storage-java
Manage cloud storage buckets and objects using the S3-compatible Telnyx Storage API. This skill provides Java SDK examples.
telnyx-voice-advanced-ruby
Advanced call control features including DTMF sending, SIPREC recording, noise suppression, client state, and supervisor controls. This skill provides Ruby SDK examples.
telnyx-numbers-compliance-ruby
Manage regulatory requirements, number bundles, supporting documents, and verified numbers for compliance. This skill provides Ruby SDK examples.
Didn't find tool you were looking for?