telnyx-video-curl
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" \
-d '{
"format": "mp4",
"resolution": "800x600",
"session_id": "0ccc7b54-4df3-4bca-a65a-3da1ecc777b0",
"webhook_event_url": "https://example.com",
"webhook_event_failover_url": "https://failover.example.com",
"webhook_timeout_secs": 25
}' \
"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 room",
"max_participants": 10,
"enable_recording": true,
"webhook_event_url": "https://example.com",
"webhook_event_failover_url": "https://failover.example.com",
"webhook_timeout_secs": 25
}' \
"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" \
-d '{
"unique_name": "My room",
"max_participants": 10,
"enable_recording": true,
"webhook_event_url": "https://example.com",
"webhook_event_failover_url": "https://failover.example.com",
"webhook_timeout_secs": 25
}' \
"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" \
-d '{
"token_ttl_secs": 600,
"refresh_token_ttl_secs": 3600
}' \
"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 '{
"token_ttl_secs": 600,
"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)