SKILL.md
<!-- Auto-generated from Telnyx OpenAPI specs. Do not edit. -->
Telnyx Video - curl
Installation
# curl is pre-installed on macOS, Linux, and Windows 10+
Setup
export TELNYX_API_KEY="YOUR_API_KEY_HERE"
All examples below use $TELNYXAPIKEY for authentication.
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:
# Check HTTP status code in response
response=$(curl -s -w "\n%{http_code}" \
-X POST "https://api.telnyx.com/v2/messages" \
-H "Authorization: Bearer $TELNYX_API_KEY" \
-H "Content-Type: application/json" \
-d '{"to": "+13125550001", "from": "+13125550002", "text": "Hello"}')
http_code=$(echo "$response" | tail -1)
body=$(echo "$response" | sed '$d')
case $http_code in
2*) echo "Success: $body" ;;
422) echo "Validation error — check required fields and formats" ;;
429) echo "Rate limited — retry after delay"; sleep 1 ;;
401) echo "Authentication failed — check TELNYX_API_KEY" ;;
*) echo "Error $http_code: $body" ;;
esac
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).
View a list of room compositions.
GET /room_compositions
curl -H "Authorization: Bearer $TELNYX_API_KEY" "https://api.telnyx.com/v2/room_compositions"
Returns: completedat (date-time), createdat (date-time), downloadurl (string), durationsecs (integer), endedat (date-time), format (enum: mp4), id (uuid), recordtype (string), resolution (string), roomid (uuid), sessionid (uuid), sizemb (float), startedat (date-time), status (enum: completed, enqueued, processing), updatedat (date-time), userid (uuid), videolayout (object), webhookeventfailoverurl (uri), webhookeventurl (uri), webhooktimeoutsecs (integer)
Create a room composition.
Asynchronously create a room composition.
POST /room_compositions
Optional: format (string), resolution (string), sessionid (uuid), videolayout (object), webhookeventfailoverurl (uri), webhookeventurl (uri), webhooktimeout_secs (integer)
curl \
-X POST \
-H "Authorization: Bearer $TELNYX_API_KEY" \
-H "Content-Type: application/json" \
"https://api.telnyx.com/v2/room_compositions"
Returns: completedat (date-time), createdat (date-time), downloadurl (string), durationsecs (integer), endedat (date-time), format (enum: mp4), id (uuid), recordtype (string), resolution (string), roomid (uuid), sessionid (uuid), sizemb (float), startedat (date-time), status (enum: completed, enqueued, processing), updatedat (date-time), userid (uuid), videolayout (object), webhookeventfailoverurl (uri), webhookeventurl (uri), webhooktimeoutsecs (integer)
View a room composition.
GET /roomcompositions/{roomcomposition_id}
curl -H "Authorization: Bearer $TELNYX_API_KEY" "https://api.telnyx.com/v2/room_compositions/5219b3af-87c6-4c08-9b58-5a533d893e21"
Returns: completedat (date-time), createdat (date-time), downloadurl (string), durationsecs (integer), endedat (date-time), format (enum: mp4), id (uuid), recordtype (string), resolution (string), roomid (uuid), sessionid (uuid), sizemb (float), startedat (date-time), status (enum: completed, enqueued, processing), updatedat (date-time), userid (uuid), videolayout (object), webhookeventfailoverurl (uri), webhookeventurl (uri), webhooktimeoutsecs (integer)
Delete a room composition.
Synchronously delete a room composition.
DELETE /roomcompositions/{roomcomposition_id}
curl \
-X DELETE \
-H "Authorization: Bearer $TELNYX_API_KEY" \
"https://api.telnyx.com/v2/room_compositions/5219b3af-87c6-4c08-9b58-5a533d893e21"
View a list of room participants.
GET /room_participants
curl -H "Authorization: Bearer $TELNYX_API_KEY" "https://api.telnyx.com/v2/room_participants"
Returns: context (string), id (uuid), joinedat (date-time), leftat (date-time), recordtype (string), sessionid (uuid), updated_at (date-time)
View a room participant.
GET /roomparticipants/{roomparticipant_id}
curl -H "Authorization: Bearer $TELNYX_API_KEY" "https://api.telnyx.com/v2/room_participants/0ccc7b54-4df3-4bca-a65a-3da1ecc777f0"
Returns: context (string), id (uuid), joinedat (date-time), leftat (date-time), recordtype (string), sessionid (uuid), updated_at (date-time)
View a list of room recordings.
GET /room_recordings
curl -H "Authorization: Bearer $TELNYX_API_KEY" "https://api.telnyx.com/v2/room_recordings"
Returns: codec (string), completedat (date-time), createdat (date-time), downloadurl (string), durationsecs (integer), endedat (date-time), id (uuid), participantid (uuid), recordtype (string), roomid (uuid), sessionid (uuid), sizemb (float), startedat (date-time), status (enum: completed, processing), type (enum: audio, video), updatedat (date-time)
Delete several room recordings in a bulk.
DELETE /room_recordings
curl \
-X DELETE \
-H "Authorization: Bearer $TELNYX_API_KEY" \
"https://api.telnyx.com/v2/room_recordings"
Returns: room_recordings (integer)
View a room recording.
GET /roomrecordings/{roomrecording_id}
curl -H "Authorization: Bearer $TELNYX_API_KEY" "https://api.telnyx.com/v2/room_recordings/0ccc7b54-4df3-4bca-a65a-3da1ecc777f0"
Returns: codec (string), completedat (date-time), createdat (date-time), downloadurl (string), durationsecs (integer), endedat (date-time), id (uuid), participantid (uuid), recordtype (string), roomid (uuid), sessionid (uuid), sizemb (float), startedat (date-time), status (enum: completed, processing), type (enum: audio, video), updatedat (date-time)
Delete a room recording.
Synchronously delete a Room Recording.
DELETE /roomrecordings/{roomrecording_id}
curl \
-X DELETE \
-H "Authorization: Bearer $TELNYX_API_KEY" \
"https://api.telnyx.com/v2/room_recordings/0ccc7b54-4df3-4bca-a65a-3da1ecc777f0"
View a list of room sessions.
GET /room_sessions
curl -H "Authorization: Bearer $TELNYX_API_KEY" "https://api.telnyx.com/v2/room_sessions?include_participants=True"
Returns: active (boolean), createdat (date-time), endedat (date-time), id (uuid), participants (array[object]), recordtype (string), roomid (uuid), updated_at (date-time)
View a room session.
GET /roomsessions/{roomsession_id}
curl -H "Authorization: Bearer $TELNYX_API_KEY" "https://api.telnyx.com/v2/room_sessions/0ccc7b54-4df3-4bca-a65a-3da1ecc777f0?include_participants=True"
Returns: active (boolean), createdat (date-time), endedat (date-time), id (uuid), participants (array[object]), recordtype (string), roomid (uuid), updated_at (date-time)
End a room session.
Note: this will also kick all participants currently present in the room
POST /roomsessions/{roomsession_id}/actions/end
curl \
-X POST \
-H "Authorization: Bearer $TELNYX_API_KEY" \
-H "Content-Type: application/json" \
"https://api.telnyx.com/v2/room_sessions/0ccc7b54-4df3-4bca-a65a-3da1ecc777f0/actions/end"
Returns: result (string)
Kick participants from a room session.
POST /roomsessions/{roomsession_id}/actions/kick
Optional: exclude (array[string]), participants (object)
curl \
-X POST \
-H "Authorization: Bearer $TELNYX_API_KEY" \
-H "Content-Type: application/json" \
"https://api.telnyx.com/v2/room_sessions/0ccc7b54-4df3-4bca-a65a-3da1ecc777f0/actions/kick"
Returns: result (string)
Mute participants in room session.
POST /roomsessions/{roomsession_id}/actions/mute
Optional: exclude (array[string]), participants (object)
curl \
-X POST \
-H "Authorization: Bearer $TELNYX_API_KEY" \
-H "Content-Type: application/json" \
"https://api.telnyx.com/v2/room_sessions/0ccc7b54-4df3-4bca-a65a-3da1ecc777f0/actions/mute"
Returns: result (string)
Unmute participants in room session.
POST /roomsessions/{roomsession_id}/actions/unmute
Optional: exclude (array[string]), participants (object)
curl \
-X POST \
-H "Authorization: Bearer $TELNYX_API_KEY" \
-H "Content-Type: application/json" \
"https://api.telnyx.com/v2/room_sessions/0ccc7b54-4df3-4bca-a65a-3da1ecc777f0/actions/unmute"
Returns: result (string)
View a list of room participants.
GET /roomsessions/{roomsession_id}/participants
curl -H "Authorization: Bearer $TELNYX_API_KEY" "https://api.telnyx.com/v2/room_sessions/0ccc7b54-4df3-4bca-a65a-3da1ecc777f0/participants"
Returns: context (string), id (uuid), joinedat (date-time), leftat (date-time), recordtype (string), sessionid (uuid), updated_at (date-time)
View a list of rooms.
GET /rooms
curl -H "Authorization: Bearer $TELNYX_API_KEY" "https://api.telnyx.com/v2/rooms?include_sessions=True"
Returns: activesessionid (uuid), createdat (date-time), enablerecording (boolean), id (uuid), maxparticipants (integer), recordtype (string), sessions (array[object]), uniquename (string), updatedat (date-time), webhookeventfailoverurl (uri), webhookeventurl (uri), webhooktimeout_secs (integer)
Create a room.
Synchronously create a Room.
POST /rooms
Optional: enablerecording (boolean), maxparticipants (integer), uniquename (string), webhookeventfailoverurl (uri), webhookeventurl (uri), webhooktimeoutsecs (integer)
curl \
-X POST \
-H "Authorization: Bearer $TELNYX_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"unique_name": "my-meeting-room",
"max_participants": 10
}' \
"https://api.telnyx.com/v2/rooms"
Returns: activesessionid (uuid), createdat (date-time), enablerecording (boolean), id (uuid), maxparticipants (integer), recordtype (string), sessions (array[object]), uniquename (string), updatedat (date-time), webhookeventfailoverurl (uri), webhookeventurl (uri), webhooktimeout_secs (integer)
View a room.
GET /rooms/{room_id}
curl -H "Authorization: Bearer $TELNYX_API_KEY" "https://api.telnyx.com/v2/rooms/0ccc7b54-4df3-4bca-a65a-3da1ecc777f0?include_sessions=True"
Returns: activesessionid (uuid), createdat (date-time), enablerecording (boolean), id (uuid), maxparticipants (integer), recordtype (string), sessions (array[object]), uniquename (string), updatedat (date-time), webhookeventfailoverurl (uri), webhookeventurl (uri), webhooktimeout_secs (integer)
Update a room.
Synchronously update a Room.
PATCH /rooms/{room_id}
Optional: enablerecording (boolean), maxparticipants (integer), uniquename (string), webhookeventfailoverurl (uri), webhookeventurl (uri), webhooktimeoutsecs (integer)
curl \
-X PATCH \
-H "Authorization: Bearer $TELNYX_API_KEY" \
-H "Content-Type: application/json" \
"https://api.telnyx.com/v2/rooms/0ccc7b54-4df3-4bca-a65a-3da1ecc777f0"
Returns: activesessionid (uuid), createdat (date-time), enablerecording (boolean), id (uuid), maxparticipants (integer), recordtype (string), sessions (array[object]), uniquename (string), updatedat (date-time), webhookeventfailoverurl (uri), webhookeventurl (uri), webhooktimeout_secs (integer)
Delete a room.
Synchronously 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.
DELETE /rooms/{room_id}
curl \
-X DELETE \
-H "Authorization: Bearer $TELNYX_API_KEY" \
"https://api.telnyx.com/v2/rooms/0ccc7b54-4df3-4bca-a65a-3da1ecc777f0"
Create Client Token to join a room.
Synchronously create an Client Token to join a Room. Client Token is necessary to join a Telnyx Room. Client Token will expire after tokenttlsecs, a Refresh Token is also provided to refresh a Client Token, the Refresh Token expires after refreshtokenttl_secs.
POST /rooms/{roomid}/actions/generatejoinclienttoken
Optional: refreshtokenttlsecs (integer), tokenttl_secs (integer)
curl \
-X POST \
-H "Authorization: Bearer $TELNYX_API_KEY" \
-H "Content-Type: application/json" \
"https://api.telnyx.com/v2/rooms/0ccc7b54-4df3-4bca-a65a-3da1ecc777f0/actions/generate_join_client_token"
Returns: refreshtoken (string), refreshtokenexpiresat (date-time), token (string), tokenexpiresat (date-time)
Refresh Client Token to join a room.
Synchronously refresh an Client Token to join a Room. Client Token is necessary to join a Telnyx Room. Client Token will expire after tokenttlsecs.
POST /rooms/{roomid}/actions/refreshclienttoken — Required: refreshtoken
Optional: tokenttlsecs (integer)
curl \
-X POST \
-H "Authorization: Bearer $TELNYX_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"refresh_token": "eyJhbGciOiJIUzUxMiIsInR5cCI6IkpXVCJ9.eyJhdWQiOiJ0ZWxueXhfdGVsZXBob255IiwiZXhwIjoxNTkwMDEwMTQzLCJpYXQiOjE1ODc1OTA5NDMsImlzcyI6InRlbG55eF90ZWxlcGhvbnkiLCJqdGkiOiJiOGM3NDgzNy1kODllLTRhNjUtOWNmMi0zNGM3YTZmYTYwYzgiLCJuYmYiOjE1ODc1OTA5NDIsInN1YiI6IjVjN2FjN2QwLWRiNjUtNGYxMS05OGUxLWVlYzBkMWQ1YzZhZSIsInRlbF90b2tlbiI6InJqX1pra1pVT1pNeFpPZk9tTHBFVUIzc2lVN3U2UmpaRmVNOXMtZ2JfeENSNTZXRktGQUppTXlGMlQ2Q0JSbWxoX1N5MGlfbGZ5VDlBSThzRWlmOE1USUlzenl6U2xfYURuRzQ4YU81MHlhSEd1UlNZYlViU1ltOVdJaVEwZz09IiwidHlwIjoiYWNjZXNzIn0.gNEwzTow5MLLPLQENytca7pUN79PmPj6FyqZWW06ZeEmesxYpwKh0xRtA0TzLh6CDYIRHrI8seofOO0YFGDhpQ"
}' \
"https://api.telnyx.com/v2/rooms/0ccc7b54-4df3-4bca-a65a-3da1ecc777f0/actions/refresh_client_token"
Returns: token (string), tokenexpiresat (date-time)
View a list of room sessions.
GET /rooms/{room_id}/sessions
curl -H "Authorization: Bearer $TELNYX_API_KEY" "https://api.telnyx.com/v2/rooms/0ccc7b54-4df3-4bca-a65a-3da1ecc777f0/sessions?include_participants=True"
Returns: active (boolean), createdat (date-time), endedat (date-time), id (uuid), participants (array[object]), recordtype (string), roomid (uuid), updated_at (date-time)