{"id":"50f0eea2-4e00-4d66-a3bc-e9e6b849d2ad","shortId":"Yxw4dE","kind":"skill","title":"telnyx-video-ruby","tagline":">-","description":"<!-- Auto-generated from Telnyx OpenAPI specs. Do not edit. -->\n\n# Telnyx Video - Ruby\n\n## Installation\n\n```bash\ngem install telnyx\n```\n\n## Setup\n\n```ruby\nrequire \"telnyx\"\n\nclient = Telnyx::Client.new(\n  api_key: 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```ruby\nbegin\n  result = client.messages.send_(to: \"+13125550001\", from: \"+13125550002\", text: \"Hello\")\nrescue Telnyx::Errors::APIConnectionError\n  puts \"Network error — check connectivity and retry\"\nrescue Telnyx::Errors::RateLimitError\n  # 429: rate limited — wait and retry with exponential backoff\n  sleep(1) # Check Retry-After header for actual delay\nrescue Telnyx::Errors::APIStatusError => e\n  puts \"API error #{e.status}: #{e.message}\"\n  if e.status == 422\n    puts \"Validation error — check required fields and formats\"\n  end\nend\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## View a list of room compositions.\n\n`GET /room_compositions`\n\n```ruby\npage = client.room_compositions.list\n\nputs(page)\n```\n\nReturns: `completed_at` (date-time), `created_at` (date-time), `download_url` (string), `duration_secs` (integer), `ended_at` (date-time), `format` (enum: mp4), `id` (uuid), `record_type` (string), `resolution` (string), `room_id` (uuid), `session_id` (uuid), `size_mb` (float), `started_at` (date-time), `status` (enum: completed, enqueued, processing), `updated_at` (date-time), `user_id` (uuid), `video_layout` (object), `webhook_event_failover_url` (uri), `webhook_event_url` (uri), `webhook_timeout_secs` (integer)\n\n## Create a room composition.\n\nAsynchronously create a room composition.\n\n`POST /room_compositions`\n\nOptional: `format` (string), `resolution` (string), `session_id` (uuid), `video_layout` (object), `webhook_event_failover_url` (uri), `webhook_event_url` (uri), `webhook_timeout_secs` (integer)\n\n```ruby\nroom_composition = client.room_compositions.create\n\nputs(room_composition)\n```\n\nReturns: `completed_at` (date-time), `created_at` (date-time), `download_url` (string), `duration_secs` (integer), `ended_at` (date-time), `format` (enum: mp4), `id` (uuid), `record_type` (string), `resolution` (string), `room_id` (uuid), `session_id` (uuid), `size_mb` (float), `started_at` (date-time), `status` (enum: completed, enqueued, processing), `updated_at` (date-time), `user_id` (uuid), `video_layout` (object), `webhook_event_failover_url` (uri), `webhook_event_url` (uri), `webhook_timeout_secs` (integer)\n\n## View a room composition.\n\n`GET /room_compositions/{room_composition_id}`\n\n```ruby\nroom_composition = client.room_compositions.retrieve(\"5219b3af-87c6-4c08-9b58-5a533d893e21\")\n\nputs(room_composition)\n```\n\nReturns: `completed_at` (date-time), `created_at` (date-time), `download_url` (string), `duration_secs` (integer), `ended_at` (date-time), `format` (enum: mp4), `id` (uuid), `record_type` (string), `resolution` (string), `room_id` (uuid), `session_id` (uuid), `size_mb` (float), `started_at` (date-time), `status` (enum: completed, enqueued, processing), `updated_at` (date-time), `user_id` (uuid), `video_layout` (object), `webhook_event_failover_url` (uri), `webhook_event_url` (uri), `webhook_timeout_secs` (integer)\n\n## Delete a room composition.\n\nSynchronously delete a room composition.\n\n`DELETE /room_compositions/{room_composition_id}`\n\n```ruby\nresult = client.room_compositions.delete(\"5219b3af-87c6-4c08-9b58-5a533d893e21\")\n\nputs(result)\n```\n\n## View a list of room participants.\n\n`GET /room_participants`\n\n```ruby\npage = client.room_participants.list\n\nputs(page)\n```\n\nReturns: `context` (string), `id` (uuid), `joined_at` (date-time), `left_at` (date-time), `record_type` (string), `session_id` (uuid), `updated_at` (date-time)\n\n## View a room participant.\n\n`GET /room_participants/{room_participant_id}`\n\n```ruby\nroom_participant = client.room_participants.retrieve(\"0ccc7b54-4df3-4bca-a65a-3da1ecc777f0\")\n\nputs(room_participant)\n```\n\nReturns: `context` (string), `id` (uuid), `joined_at` (date-time), `left_at` (date-time), `record_type` (string), `session_id` (uuid), `updated_at` (date-time)\n\n## View a list of room recordings.\n\n`GET /room_recordings`\n\n```ruby\npage = client.room_recordings.list\n\nputs(page)\n```\n\nReturns: `codec` (string), `completed_at` (date-time), `created_at` (date-time), `download_url` (string), `duration_secs` (integer), `ended_at` (date-time), `id` (uuid), `participant_id` (uuid), `record_type` (string), `room_id` (uuid), `session_id` (uuid), `size_mb` (float), `started_at` (date-time), `status` (enum: completed, processing), `type` (enum: audio, video), `updated_at` (date-time)\n\n## Delete several room recordings in a bulk.\n\n`DELETE /room_recordings`\n\n```ruby\nresponse = client.room_recordings.delete_bulk\n\nputs(response)\n```\n\nReturns: `room_recordings` (integer)\n\n## View a room recording.\n\n`GET /room_recordings/{room_recording_id}`\n\n```ruby\nroom_recording = client.room_recordings.retrieve(\"0ccc7b54-4df3-4bca-a65a-3da1ecc777f0\")\n\nputs(room_recording)\n```\n\nReturns: `codec` (string), `completed_at` (date-time), `created_at` (date-time), `download_url` (string), `duration_secs` (integer), `ended_at` (date-time), `id` (uuid), `participant_id` (uuid), `record_type` (string), `room_id` (uuid), `session_id` (uuid), `size_mb` (float), `started_at` (date-time), `status` (enum: completed, processing), `type` (enum: audio, video), `updated_at` (date-time)\n\n## Delete a room recording.\n\nSynchronously delete a Room Recording.\n\n`DELETE /room_recordings/{room_recording_id}`\n\n```ruby\nresult = client.room_recordings.delete(\"0ccc7b54-4df3-4bca-a65a-3da1ecc777f0\")\n\nputs(result)\n```\n\n## View a list of room sessions.\n\n`GET /room_sessions`\n\n```ruby\npage = client.rooms.sessions.list_0\n\nputs(page)\n```\n\nReturns: `active` (boolean), `created_at` (date-time), `ended_at` (date-time), `id` (uuid), `participants` (array[object]), `record_type` (string), `room_id` (uuid), `updated_at` (date-time)\n\n## View a room session.\n\n`GET /room_sessions/{room_session_id}`\n\n```ruby\nsession = client.rooms.sessions.retrieve(\"0ccc7b54-4df3-4bca-a65a-3da1ecc777f0\")\n\nputs(session)\n```\n\nReturns: `active` (boolean), `created_at` (date-time), `ended_at` (date-time), `id` (uuid), `participants` (array[object]), `record_type` (string), `room_id` (uuid), `updated_at` (date-time)\n\n## End a room session.\n\nNote: this will also kick all participants currently present in the room\n\n`POST /room_sessions/{room_session_id}/actions/end`\n\n```ruby\nresponse = client.rooms.sessions.actions.end_(\"0ccc7b54-4df3-4bca-a65a-3da1ecc777f0\")\n\nputs(response)\n```\n\nReturns: `result` (string)\n\n## Kick participants from a room session.\n\n`POST /room_sessions/{room_session_id}/actions/kick`\n\nOptional: `exclude` (array[string]), `participants` (object)\n\n```ruby\nresponse = client.rooms.sessions.actions.kick(\"0ccc7b54-4df3-4bca-a65a-3da1ecc777f0\")\n\nputs(response)\n```\n\nReturns: `result` (string)\n\n## Mute participants in room session.\n\n`POST /room_sessions/{room_session_id}/actions/mute`\n\nOptional: `exclude` (array[string]), `participants` (object)\n\n```ruby\nresponse = client.rooms.sessions.actions.mute(\"0ccc7b54-4df3-4bca-a65a-3da1ecc777f0\")\n\nputs(response)\n```\n\nReturns: `result` (string)\n\n## Unmute participants in room session.\n\n`POST /room_sessions/{room_session_id}/actions/unmute`\n\nOptional: `exclude` (array[string]), `participants` (object)\n\n```ruby\nresponse = client.rooms.sessions.actions.unmute(\"0ccc7b54-4df3-4bca-a65a-3da1ecc777f0\")\n\nputs(response)\n```\n\nReturns: `result` (string)\n\n## View a list of room participants.\n\n`GET /room_sessions/{room_session_id}/participants`\n\n```ruby\npage = client.rooms.sessions.retrieve_participants(\"0ccc7b54-4df3-4bca-a65a-3da1ecc777f0\")\n\nputs(page)\n```\n\nReturns: `context` (string), `id` (uuid), `joined_at` (date-time), `left_at` (date-time), `record_type` (string), `session_id` (uuid), `updated_at` (date-time)\n\n## View a list of rooms.\n\n`GET /rooms`\n\n```ruby\npage = client.rooms.list\n\nputs(page)\n```\n\nReturns: `active_session_id` (uuid), `created_at` (date-time), `enable_recording` (boolean), `id` (uuid), `max_participants` (integer), `record_type` (string), `sessions` (array[object]), `unique_name` (string), `updated_at` (date-time), `webhook_event_failover_url` (uri), `webhook_event_url` (uri), `webhook_timeout_secs` (integer)\n\n## Create a room.\n\nSynchronously create a Room.\n\n`POST /rooms`\n\nOptional: `enable_recording` (boolean), `max_participants` (integer), `unique_name` (string), `webhook_event_failover_url` (uri), `webhook_event_url` (uri), `webhook_timeout_secs` (integer)\n\n```ruby\nroom = client.rooms.create(unique_name: \"my-meeting-room\", max_participants: 10)\nputs(room)\n```\n\nReturns: `active_session_id` (uuid), `created_at` (date-time), `enable_recording` (boolean), `id` (uuid), `max_participants` (integer), `record_type` (string), `sessions` (array[object]), `unique_name` (string), `updated_at` (date-time), `webhook_event_failover_url` (uri), `webhook_event_url` (uri), `webhook_timeout_secs` (integer)\n\n## View a room.\n\n`GET /rooms/{room_id}`\n\n```ruby\nroom = client.rooms.retrieve(\"0ccc7b54-4df3-4bca-a65a-3da1ecc777f0\")\n\nputs(room)\n```\n\nReturns: `active_session_id` (uuid), `created_at` (date-time), `enable_recording` (boolean), `id` (uuid), `max_participants` (integer), `record_type` (string), `sessions` (array[object]), `unique_name` (string), `updated_at` (date-time), `webhook_event_failover_url` (uri), `webhook_event_url` (uri), `webhook_timeout_secs` (integer)\n\n## Update a room.\n\nSynchronously update a Room.\n\n`PATCH /rooms/{room_id}`\n\nOptional: `enable_recording` (boolean), `max_participants` (integer), `unique_name` (string), `webhook_event_failover_url` (uri), `webhook_event_url` (uri), `webhook_timeout_secs` (integer)\n\n```ruby\nroom = client.rooms.update(\"0ccc7b54-4df3-4bca-a65a-3da1ecc777f0\")\n\nputs(room)\n```\n\nReturns: `active_session_id` (uuid), `created_at` (date-time), `enable_recording` (boolean), `id` (uuid), `max_participants` (integer), `record_type` (string), `sessions` (array[object]), `unique_name` (string), `updated_at` (date-time), `webhook_event_failover_url` (uri), `webhook_event_url` (uri), `webhook_timeout_secs` (integer)\n\n## Delete a room.\n\nSynchronously delete a Room. Participants from that room will be kicked out, they won't be able to join that room anymore, and you won't be charged anymore for that room.\n\n`DELETE /rooms/{room_id}`\n\n```ruby\nresult = client.rooms.delete(\"0ccc7b54-4df3-4bca-a65a-3da1ecc777f0\")\n\nputs(result)\n```\n\n## Create Client Token to join a room.\n\nSynchronously create an Client Token to join a Room. Client Token is necessary to join a Telnyx Room. Client Token will expire after `token_ttl_secs`, a Refresh Token is also provided to refresh a Client Token, the Refresh Token expires after `refresh_token_ttl_secs`.\n\n`POST /rooms/{room_id}/actions/generate_join_client_token`\n\nOptional: `refresh_token_ttl_secs` (integer), `token_ttl_secs` (integer)\n\n```ruby\nresponse = client.rooms.actions.generate_join_client_token(\"0ccc7b54-4df3-4bca-a65a-3da1ecc777f0\")\n\nputs(response)\n```\n\nReturns: `refresh_token` (string), `refresh_token_expires_at` (date-time), `token` (string), `token_expires_at` (date-time)\n\n## Refresh Client Token to join a room.\n\nSynchronously refresh an Client Token to join a Room. Client Token is necessary to join a Telnyx Room. Client Token will expire after `token_ttl_secs`.\n\n`POST /rooms/{room_id}/actions/refresh_client_token` — Required: `refresh_token`\n\nOptional: `token_ttl_secs` (integer)\n\n```ruby\nresponse = client.rooms.actions.refresh_client_token(\n  \"0ccc7b54-4df3-4bca-a65a-3da1ecc777f0\",\n  refresh_token: \"eyJhbGciOiJIUzUxMiIsInR5cCI6IkpXVCJ9.eyJhdWQiOiJ0ZWxueXhfdGVsZXBob255IiwiZXhwIjoxNTkwMDEwMTQzLCJpYXQiOjE1ODc1OTA5NDMsImlzcyI6InRlbG55eF90ZWxlcGhvbnkiLCJqdGkiOiJiOGM3NDgzNy1kODllLTRhNjUtOWNmMi0zNGM3YTZmYTYwYzgiLCJuYmYiOjE1ODc1OTA5NDIsInN1YiI6IjVjN2FjN2QwLWRiNjUtNGYxMS05OGUxLWVlYzBkMWQ1YzZhZSIsInRlbF90b2tlbiI6InJqX1pra1pVT1pNeFpPZk9tTHBFVUIzc2lVN3U2UmpaRmVNOXMtZ2JfeENSNTZXRktGQUppTXlGMlQ2Q0JSbWxoX1N5MGlfbGZ5VDlBSThzRWlmOE1USUlzenl6U2xfYURuRzQ4YU81MHlhSEd1UlNZYlViU1ltOVdJaVEwZz09IiwidHlwIjoiYWNjZXNzIn0.gNEwzTow5MLLPLQENytca7pUN79PmPj6FyqZWW06ZeEmesxYpwKh0xRtA0TzLh6CDYIRHrI8seofOO0YFGDhpQ\"\n)\n\nputs(response)\n```\n\nReturns: `token` (string), `token_expires_at` (date-time)\n\n## View a list of room sessions.\n\n`GET /rooms/{room_id}/sessions`\n\n```ruby\npage = client.rooms.sessions.list_1(\"0ccc7b54-4df3-4bca-a65a-3da1ecc777f0\")\n\nputs(page)\n```\n\nReturns: `active` (boolean), `created_at` (date-time), `ended_at` (date-time), `id` (uuid), `participants` (array[object]), `record_type` (string), `room_id` (uuid), `updated_at` (date-time)","tags":["telnyx","video","ruby","team-telnyx","agent-skills","ai-coding-agent","claude-code","cpaas","cursor","iot","llm","sdk"],"capabilities":["skill","source-team-telnyx","skill-telnyx-video-ruby","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-video-ruby","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 (12,976 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-22T00:54:50.528Z","embedding":null,"createdAt":"2026-04-18T22:08:12.140Z","updatedAt":"2026-04-22T00:54:50.528Z","lastSeenAt":"2026-04-22T00:54:50.528Z","tsv":"'+13125550001':76 '+13125550002':78 '/actions/end':889 '/actions/generate_join_client_token':1456 '/actions/kick':915 '/actions/mute':946 '/actions/refresh_client_token':1537 '/actions/unmute':977 '/participants':1009 '/room_compositions':172,263,375,477 '/room_participants':499,536 '/room_recordings':586,659,675,761 '/room_sessions':783,824,885,911,942,973,1005 '/rooms':1054,1113,1200,1267,1385,1453,1534,1578 '/sessions':1581 '0':787 '0ccc7b54':545,684,769,832,894,926,957,988,1015,1207,1297,1392,1474,1552,1587 '0ccc7b54-4df3-4bca-a65a-3da1ecc777f0':544,683,768,831,893,925,956,987,1014,1206,1296,1391,1473,1551,1586 '1':106,1585 '10':1148 '3da1ecc777f0':549,688,773,836,898,930,961,992,1019,1211,1301,1396,1478,1556,1591 '401':64,141 '403':145 '404':148 '422':60,127,152 '429':57,96,158 '4bca':547,686,771,834,896,928,959,990,1017,1209,1299,1394,1476,1554,1589 '4c08':386,487 '4df3':546,685,770,833,895,927,958,989,1016,1208,1298,1393,1475,1553,1588 '5219b3af':384,485 '5219b3af-87c6-4c08-9b58-5a533d893e21':383,484 '5a533d893e21':388,489 '87c6':385,486 '9b58':387,488 'a65a':548,687,772,835,897,929,960,991,1018,1210,1300,1395,1477,1555,1590 'abl':1368 'activ':791,840,1061,1152,1215,1305,1595 'actual':113 'alreadi':40 'also':875,1436 'alway':65 'anymor':1373,1380 'api':20,24,48,121,143 'apiconnectionerror':84 'apistatuserror':118 'array':806,855,918,949,980,1082,1173,1236,1326,1610 'assum':37 'asynchron':257 'audio':644,744 'authent':62 'backoff':104,164 'bash':9 'begin':72 'boolean':792,841,1072,1117,1163,1226,1273,1316,1596 'bulk':657,663 'call':49 'charg':1379 'check':88,107,131,155 'client':17,38,1400,1409,1415,1424,1441,1471,1501,1510,1516,1525,1549 'client.messages.send':74 'client.new':19 'client.room_compositions.create':291 'client.room_compositions.delete':483 'client.room_compositions.list':175 'client.room_compositions.retrieve':382 'client.room_participants.list':502 'client.room_participants.retrieve':543 'client.room_recordings.delete':662,767 'client.room_recordings.list':589 'client.room_recordings.retrieve':682 'client.rooms.actions.generate':1469 'client.rooms.actions.refresh':1548 'client.rooms.create':1139 'client.rooms.delete':1390 'client.rooms.list':1057 'client.rooms.retrieve':1205 'client.rooms.sessions.actions.end':892 'client.rooms.sessions.actions.kick':924 'client.rooms.sessions.actions.mute':955 'client.rooms.sessions.actions.unmute':986 'client.rooms.sessions.list':786,1584 'client.rooms.sessions.retrieve':830,1012 'client.rooms.update':1295 'code':70,140 'codec':593,693 'common':138 'complet':179,226,296,343,393,440,595,640,695,740 'composit':170,256,261,290,294,373,377,381,391,470,475,479 'connect':89 'context':506,554,1023 'creat':184,253,258,301,398,600,700,793,842,1065,1105,1109,1156,1219,1309,1399,1407,1597 'current':879 'date':182,187,198,222,232,299,304,315,339,349,396,401,412,436,446,513,518,529,561,566,577,598,603,614,636,649,698,703,714,736,749,796,801,817,845,850,866,1030,1035,1046,1068,1090,1159,1181,1222,1244,1312,1334,1490,1498,1569,1600,1605,1621 'date-tim':181,186,197,221,231,298,303,314,338,348,395,400,411,435,445,512,517,528,560,565,576,597,602,613,635,648,697,702,713,735,748,795,800,816,844,849,865,1029,1034,1045,1067,1089,1158,1180,1221,1243,1311,1333,1489,1497,1568,1599,1604,1620 'default':29 'delay':114 'delet':467,472,476,651,658,751,756,760,1349,1353,1384 'download':189,306,403,605,705 'durat':192,309,406,608,708 'e':119 'e.message':124 'e.status':123,126 'enabl':1070,1115,1161,1224,1271,1314 'end':136,137,195,312,409,611,711,798,847,868,1602 'enqueu':227,344,441 'enum':201,225,318,342,415,439,639,643,739,743 'env':22 'error':45,54,59,63,67,83,87,94,117,122,130,139,154 'event':241,246,276,281,358,363,455,460,1093,1098,1125,1130,1184,1189,1247,1252,1281,1286,1337,1342 'exampl':35 'exclud':917,948,979 'expir':1427,1446,1487,1495,1528,1566 'exponenti':103,163 'eyjhbgcioijiuzuxmiisinr5cci6ikpxvcj9.eyjhdwqioij0zwxuexhfdgvszxbob255iiwizxhwijoxntkwmdewmtqzlcjpyxqioje1odc1ota5ndmsimlzcyi6inrlbg55ef90zwxlcghvbnkilcjqdgkioijiogm3ndgzny1kodllltrhnjutownmmi0zngm3ytzmytywyzgilcjuymyioje1odc1ota5ndisinn1yii6ijvjn2fjn2qwlwrinjutngyxms05oguxlwvlyzbkmwq1yzzhzsisinrlbf90b2tlbii6injqx1pra1pvt1pnefppzk9tthbfvuizc2lvn3u2umparmvnoxmtz2jfeensntzxrktgqupptxlgmlq2q0jsbwxox1n5mglfbgz5vdlbsthzrwlmoe1usulzenl6u2xfyururzq4yu81mhlhsed1ulnzylviu1ltovdjavewzz09iiwidhlwijoiywnjzxnzin0.gnewztow5mllplqenytca7pun79pmpj6fyqzww06zeemesxypwkh0xrta0tzlh6cdyirhri8seofoo0yfgdhpq':1559 'fail':51 'failov':242,277,359,456,1094,1126,1185,1248,1282,1338 'field':133,156 'float':218,335,432,632,732 'format':135,157,200,265,317,414 'found':151 'gem':10 'get':171,374,498,535,585,674,782,823,1004,1053,1199,1577 'handl':46,66 'header':111 'hello':80 'id':203,211,214,235,270,320,328,331,352,378,417,425,428,449,480,508,524,539,556,572,616,619,625,628,678,716,719,725,728,764,803,812,827,852,861,888,914,945,976,1008,1025,1041,1063,1073,1154,1164,1202,1217,1227,1269,1307,1317,1387,1455,1536,1580,1607,1616 'initi':41 'instal':8,11 'insuffici':146 'integ':194,252,287,311,369,408,466,610,669,710,1077,1104,1120,1136,1168,1195,1231,1258,1276,1292,1321,1348,1462,1466,1545 'invalid':142 'join':510,558,1027,1370,1403,1412,1420,1470,1504,1513,1521 'key':21,25,144 'kick':876,904,1362 'layout':238,273,355,452 'left':515,563,1032 'limit':56,98,160 'list':167,494,581,778,1000,1050,1573 'max':1075,1118,1146,1166,1229,1274,1319 'mb':217,334,431,631,731 'meet':1144 'mp4':202,319,416 'mute':936 'my-meeting-room':1142 'name':1085,1122,1141,1176,1239,1278,1329 'necessari':1418,1519 'network':53,86 'note':872 'object':239,274,356,453,807,856,921,952,983,1083,1174,1237,1327,1611 'omit':33 'option':264,916,947,978,1114,1270,1457,1541 'page':174,177,501,504,588,591,785,789,1011,1021,1056,1059,1583,1593 'particip':497,534,538,542,552,618,718,805,854,878,905,920,937,951,968,982,1003,1013,1076,1119,1147,1167,1230,1275,1320,1356,1609 'patch':1266 'permiss':147 'post':262,884,910,941,972,1112,1452,1533 'present':880 'process':228,345,442,641,741 'product':69 'provid':1437 'put':85,120,128,176,292,389,490,503,550,590,664,689,774,788,837,899,931,962,993,1020,1058,1149,1212,1302,1397,1479,1560,1592 'rate':55,97,159 'ratelimiterror':95 'record':205,322,419,520,568,584,621,654,668,673,677,681,691,721,754,759,763,808,857,1037,1071,1078,1116,1162,1169,1225,1232,1272,1315,1322,1612 'refresh':1433,1439,1444,1448,1458,1482,1485,1500,1508,1539,1557 'requir':15,132,1538 'rescu':81,92,115 'resolut':208,267,325,422 'resourc':149 'respons':661,665,891,900,923,932,954,963,985,994,1468,1480,1547,1561 'result':73,482,491,766,775,902,934,965,996,1389,1398 'retri':91,101,109,161 'retry-aft':108 'return':178,295,392,505,553,592,666,692,790,839,901,933,964,995,1022,1060,1151,1214,1304,1481,1562,1594 'room':169,210,255,260,289,293,327,372,376,380,390,424,469,474,478,496,533,537,541,551,583,624,653,667,672,676,680,690,724,753,758,762,780,811,821,825,860,870,883,886,908,912,939,943,970,974,1002,1006,1052,1107,1111,1138,1145,1150,1198,1201,1204,1213,1261,1265,1268,1294,1303,1351,1355,1359,1372,1383,1386,1405,1414,1423,1454,1506,1515,1524,1535,1575,1579,1615 'rubi':4,7,14,71,173,288,379,481,500,540,587,660,679,765,784,828,890,922,953,984,1010,1055,1137,1203,1293,1388,1467,1546,1582 'sec':193,251,286,310,368,407,465,609,709,1103,1135,1194,1257,1291,1347,1431,1451,1461,1465,1532,1544 'session':213,269,330,427,523,571,627,727,781,822,826,829,838,871,887,909,913,940,944,971,975,1007,1040,1062,1081,1153,1172,1216,1235,1306,1325,1576 'setup':13 'sever':652 'shown':43 'size':216,333,430,630,730 'skill' 'skill-telnyx-video-ruby' 'sleep':105 'source-team-telnyx' 'start':219,336,433,633,733 'status':224,341,438,638,738 'string':191,207,209,266,268,308,324,326,405,421,423,507,522,555,570,594,607,623,694,707,723,810,859,903,919,935,950,966,981,997,1024,1039,1080,1086,1123,1171,1177,1234,1240,1279,1324,1330,1484,1493,1564,1614 'synchron':471,755,1108,1262,1352,1406,1507 'telnyx':2,5,12,16,18,23,82,93,116,1422,1523 'telnyx-video-rubi':1 'text':79 'time':183,188,199,223,233,300,305,316,340,350,397,402,413,437,447,514,519,530,562,567,578,599,604,615,637,650,699,704,715,737,750,797,802,818,846,851,867,1031,1036,1047,1069,1091,1160,1182,1223,1245,1313,1335,1491,1499,1570,1601,1606,1622 'timeout':250,285,367,464,1102,1134,1193,1256,1290,1346 'token':1401,1410,1416,1425,1429,1434,1442,1445,1449,1459,1463,1472,1483,1486,1492,1494,1502,1511,1517,1526,1530,1540,1542,1550,1558,1563,1565 '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' 'ttl':1430,1450,1460,1464,1531,1543 'type':206,323,420,521,569,622,642,722,742,809,858,1038,1079,1170,1233,1323,1613 'uniqu':1084,1121,1140,1175,1238,1277,1328 'unmut':967 'updat':229,346,443,526,574,646,746,814,863,1043,1087,1178,1241,1259,1263,1331,1618 'uri':244,248,279,283,361,365,458,462,1096,1100,1128,1132,1187,1191,1250,1254,1284,1288,1340,1344 'url':190,243,247,278,282,307,360,364,404,457,461,606,706,1095,1099,1127,1131,1186,1190,1249,1253,1283,1287,1339,1343 'user':234,351,448 'uuid':204,212,215,236,271,321,329,332,353,418,426,429,450,509,525,557,573,617,620,626,629,717,720,726,729,804,813,853,862,1026,1042,1064,1074,1155,1165,1218,1228,1308,1318,1608,1617 'valid':58,129,153 'video':3,6,237,272,354,451,645,745 'view':165,370,492,531,579,670,776,819,998,1048,1196,1571 'wait':99 'webhook':240,245,249,275,280,284,357,362,366,454,459,463,1092,1097,1101,1124,1129,1133,1183,1188,1192,1246,1251,1255,1280,1285,1289,1336,1341,1345 'won':1365,1376","prices":[{"id":"be213f78-feaf-46a9-8426-d3468cb9e348","listingId":"50f0eea2-4e00-4d66-a3bc-e9e6b849d2ad","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:08:12.140Z"}],"sources":[{"listingId":"50f0eea2-4e00-4d66-a3bc-e9e6b849d2ad","source":"github","sourceId":"team-telnyx/ai/telnyx-video-ruby","sourceUrl":"https://github.com/team-telnyx/ai/tree/main/skills/telnyx-video-ruby","isPrimary":false,"firstSeenAt":"2026-04-18T22:08:12.140Z","lastSeenAt":"2026-04-22T00:54:50.528Z"}],"details":{"listingId":"50f0eea2-4e00-4d66-a3bc-e9e6b849d2ad","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"team-telnyx","slug":"telnyx-video-ruby","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":"51c47ff8f2584902894aae790f30f9442b694344","skill_md_path":"skills/telnyx-video-ruby/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/team-telnyx/ai/tree/main/skills/telnyx-video-ruby"},"layout":"multi","source":"github","category":"ai","frontmatter":{"name":"telnyx-video-ruby","description":">-"},"skills_sh_url":"https://skills.sh/team-telnyx/ai/telnyx-video-ruby"},"updatedAt":"2026-04-22T00:54:50.528Z"}}