Ai telnyx-video-curl

install
source · Clone the upstream repo
git clone https://github.com/team-telnyx/ai
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/team-telnyx/ai "$T" && mkdir -p ~/.claude/skills && cp -r "$T/providers/cursor/plugin/skills/telnyx-video-curl" ~/.claude/skills/team-telnyx-ai-telnyx-video-curl-195898 && rm -rf "$T"
manifest: providers/cursor/plugin/skills/telnyx-video-curl/SKILL.md
source content
<!-- 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

$TELNYX_API_KEY
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:

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)

Create a room composition.

Asynchronously create a room composition.

POST /room_compositions

Optional:

format
(string),
resolution
(string),
session_id
(uuid),
video_layout
(object),
webhook_event_failover_url
(uri),
webhook_event_url
(uri),
webhook_timeout_secs
(integer)

curl \
  -X POST \
  -H "Authorization: Bearer $TELNYX_API_KEY" \
  -H "Content-Type: application/json" \
  "https://api.telnyx.com/v2/room_compositions"

Returns:

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)

View a room composition.

GET /room_compositions/{room_composition_id}

curl -H "Authorization: Bearer $TELNYX_API_KEY" "https://api.telnyx.com/v2/room_compositions/5219b3af-87c6-4c08-9b58-5a533d893e21"

Returns:

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)

Delete a room composition.

Synchronously delete a room composition.

DELETE /room_compositions/{room_composition_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),
joined_at
(date-time),
left_at
(date-time),
record_type
(string),
session_id
(uuid),
updated_at
(date-time)

View a room participant.

GET /room_participants/{room_participant_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),
joined_at
(date-time),
left_at
(date-time),
record_type
(string),
session_id
(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),
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)

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 /room_recordings/{room_recording_id}

curl -H "Authorization: Bearer $TELNYX_API_KEY" "https://api.telnyx.com/v2/room_recordings/0ccc7b54-4df3-4bca-a65a-3da1ecc777f0"

Returns:

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)

Delete a room recording.

Synchronously delete a Room Recording.

DELETE /room_recordings/{room_recording_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),
created_at
(date-time),
ended_at
(date-time),
id
(uuid),
participants
(array[object]),
record_type
(string),
room_id
(uuid),
updated_at
(date-time)

View a room session.

GET /room_sessions/{room_session_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),
created_at
(date-time),
ended_at
(date-time),
id
(uuid),
participants
(array[object]),
record_type
(string),
room_id
(uuid),
updated_at
(date-time)

End a room session.

Note: this will also kick all participants currently present in the room

POST /room_sessions/{room_session_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 /room_sessions/{room_session_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 /room_sessions/{room_session_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 /room_sessions/{room_session_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 /room_sessions/{room_session_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),
joined_at
(date-time),
left_at
(date-time),
record_type
(string),
session_id
(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:

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)

Create a room.

Synchronously create a Room.

POST /rooms

Optional:

enable_recording
(boolean),
max_participants
(integer),
unique_name
(string),
webhook_event_failover_url
(uri),
webhook_event_url
(uri),
webhook_timeout_secs
(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:

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)

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:

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)

Update a room.

Synchronously update a Room.

PATCH /rooms/{room_id}

Optional:

enable_recording
(boolean),
max_participants
(integer),
unique_name
(string),
webhook_event_failover_url
(uri),
webhook_event_url
(uri),
webhook_timeout_secs
(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:

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)

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

token_ttl_secs
, a Refresh Token is also provided to refresh a Client Token, the Refresh Token expires after
refresh_token_ttl_secs
.

POST /rooms/{room_id}/actions/generate_join_client_token

Optional:

refresh_token_ttl_secs
(integer),
token_ttl_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:

refresh_token
(string),
refresh_token_expires_at
(date-time),
token
(string),
token_expires_at
(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

token_ttl_secs
.

POST /rooms/{room_id}/actions/refresh_client_token
— Required:
refresh_token

Optional:

token_ttl_secs
(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),
token_expires_at
(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),
created_at
(date-time),
ended_at
(date-time),
id
(uuid),
participants
(array[object]),
record_type
(string),
room_id
(uuid),
updated_at
(date-time)