OpenAPI Specification
openapi: 3.1.0
info:
contact:
email: support@telnyx.com
description: Telnyx provides global communications and connectivity APIs for developers — including SIP trunking, programmable voice, SMS, MMS, WhatsApp Business Messaging, Call Control, Fax, Wireless (IoT & eSIM), Phone Numbers (DID provisioning & porting), Emergency Services, and Network APIs for private interconnects and edge connectivity. Build, scale, and manage voice, messaging, and data networks with Telnyx's carrier-grade global infrastructure and API-first platform.
title: Telnyx Access Tokens Room Compositions API
version: 2.0.0
x-endpoint-cost: light
servers:
- description: Version 2.0.0 of the Telnyx API
url: https://api.telnyx.com/v2
security:
- bearerAuth: []
tags:
- description: Rooms Compositions operations.
name: Room Compositions
paths:
/room_compositions:
get:
description: ''
operationId: ListRoomCompositions
parameters:
- description: 'Consolidated filter parameter (deepObject style). Originally: filter[date_created_at][eq], filter[date_created_at][gte], filter[date_created_at][lte], filter[session_id], filter[status]'
explode: true
in: query
name: filter
required: false
schema:
properties:
date_created_at:
properties:
eq:
description: ISO 8601 date for filtering room compositions created on that date.
example: '2021-04-25'
format: date
type: string
gte:
description: ISO 8601 date for filtering room compositions created on or after that date.
example: '2021-04-25'
format: date
type: string
lte:
description: ISO 8601 date for filtering room compositions created on or before that date.
example: '2021-04-25'
format: date
type: string
type: object
session_id:
description: The session_id for filtering room compositions.
example: 92e7d459-bcc5-4386-9f5f-6dd14a82588d
format: uuid
type: string
status:
description: The status for filtering room compositions.
enum:
- completed
- processing
- enqueued
example: completed
type: string
type: object
style: deepObject
- $ref: '#/components/parameters/video_PageConsolidated'
responses:
'200':
$ref: '#/components/responses/ListRoomCompositionsResponse'
4XX:
$ref: '#/components/responses/video_GenericErrorResponse'
summary: View a list of room compositions.
tags:
- Room Compositions
x-endpoint-cost: medium
x-latency-category: responsive
post:
description: Asynchronously create a room composition.
operationId: CreateRoomComposition
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/CreateRoomCompositionRequest'
description: Parameters that can be defined during room composition creation.
required: true
responses:
'202':
$ref: '#/components/responses/CreateRoomCompositionResponse'
'422':
$ref: '#/components/responses/video_UnprocessableEntity'
summary: Create a room composition.
tags:
- Room Compositions
x-endpoint-cost: heavy
x-latency-category: responsive
/room_compositions/{room_composition_id}:
delete:
description: Synchronously delete a room composition.
operationId: DeleteRoomComposition
parameters:
- description: The unique identifier of a room composition.
in: path
name: room_composition_id
required: true
schema:
example: 5219b3af-87c6-4c08-9b58-5a533d893e21
format: uuid
type: string
responses:
'204':
description: The resource was deleted successfully.
'404':
$ref: '#/components/responses/video_ResourceNotFound'
summary: Delete a room composition.
tags:
- Room Compositions
x-endpoint-cost: medium
x-latency-category: responsive
get:
operationId: ViewRoomComposition
parameters:
- description: The unique identifier of a room composition.
in: path
name: room_composition_id
required: true
schema:
example: 5219b3af-87c6-4c08-9b58-5a533d893e21
format: uuid
type: string
responses:
'200':
$ref: '#/components/responses/GetRoomCompositionResponse'
'404':
$ref: '#/components/responses/video_ResourceNotFound'
summary: View a room composition.
tags:
- Room Compositions
x-endpoint-cost: light
x-latency-category: responsive
components:
schemas:
video_Errors:
properties:
errors:
items:
$ref: '#/components/schemas/video_Error'
type: array
type: object
PaginationMeta:
properties:
page_number:
example: 2
type: integer
page_size:
example: 25
type: integer
total_pages:
example: 3
type: integer
total_results:
example: 55
type: integer
type: object
video_Error:
properties:
code:
type: string
detail:
type: string
meta:
additionalProperties: true
type: object
source:
properties:
parameter:
description: Indicates which query parameter caused the error.
type: string
pointer:
description: JSON pointer (RFC6901) to the offending entity.
type: string
type: object
title:
type: string
required:
- code
- title
type: object
RoomComposition:
example:
completed_at: '2022-02-25T05:39:56.377426Z'
download_url: https://example.com
duration_secs: 84
ended_at: '2022-02-24T23:22:24.577677Z'
format: mp4
id: 7103dc53-ee59-4b54-a58b-c77d99ceb037
record_type: composition
resolution: 1280x720
room_id: f981dbb3-228a-44e9-ac54-e87f0e2658b0
session_id: 8f728d7b-00e2-4c59-8c27-f564b828df87
size_mb: 6
started_at: '2022-02-24T23:21:00.077209Z'
status: enqueued
user_id: 12a04ec9-0f91-4a91-9f3a-a19d9931182e
video_layout:
first:
height: 720
video_sources:
- 7b61621f-62e0-4aad-ab11-9fd19e272e73
width: 1280
x_pos: 0
y_pos: 0
z_pos: 0
webhook_event_url: https://webhook.site/544663ce-b692-4f9c-80ed-e5ad97cd5c02
properties:
completed_at:
description: ISO 8601 timestamp when the room composition has completed.
example: '2021-03-26T17:51:59.588408Z'
format: date-time
type: string
created_at:
description: ISO 8601 timestamp when the room composition was created.
example: '2021-03-26T17:51:59.588408Z'
format: date-time
type: string
download_url:
description: Url to download the composition.
example: https://www.example.com
type: string
duration_secs:
description: Shows the room composition duration in seconds.
example: 67
type: integer
ended_at:
description: ISO 8601 timestamp when the room composition has ended.
example: '2021-03-26T17:51:59.588408Z'
format: date-time
type: string
format:
description: Shows format of the room composition.
enum:
- mp4
example: mp4
type: string
id:
description: A unique identifier for the room composition.
example: 0ccc7b54-4df3-4bca-a65a-3da1ecc777f0
format: uuid
type: string
record_type:
example: room_composition
readOnly: true
type: string
resolution:
description: The resolution of the room composition.
example: 1280x720
type: string
room_id:
description: Identify the room associated with the room composition.
example: 0ccc7b54-4df3-4bca-a65a-3da1ecc777b0
format: uuid
type: string
session_id:
description: Identify the room session associated with the room composition.
example: 0ccc7b54-4df3-4bca-a65a-3da1ecc777b0
format: uuid
type: string
size_mb:
description: Shows the room composition size in MB.
example: 10.5
format: float
type: number
started_at:
description: ISO 8601 timestamp when the room composition has stated.
example: '2021-03-26T17:51:59.588408Z'
format: date-time
type: string
status:
description: Shows the room composition status.
enum:
- completed
- enqueued
- processing
example: completed
type: string
updated_at:
description: ISO 8601 timestamp when the room composition was updated.
example: '2021-03-26T17:51:59.588408Z'
format: date-time
type: string
user_id:
description: Identify the user associated with the room composition.
example: 0ccc7b54-4df3-4bca-a65a-3da1ecc777b0
format: uuid
type: string
video_layout:
additionalProperties:
$ref: '#/components/schemas/VideoRegion'
description: Describes the video layout of the room composition in terms of regions. Limited to 2 regions.
type: object
webhook_event_failover_url:
default: ''
description: The failover URL where webhooks related to this room composition will be sent if sending to the primary URL fails. Must include a scheme, such as 'https'.
example: https://failover.example.com
format: uri
type: string
webhook_event_url:
description: The URL where webhooks related to this room composition will be sent. Must include a scheme, such as 'https'.
example: https://example.com
format: uri
type: string
webhook_timeout_secs:
default: null
description: Specifies how many seconds to wait before timing out a webhook.
example: 25
maximum: 30
minimum: 0
type: integer
type: object
CreateRoomCompositionRequest:
properties:
format:
default: mp4
description: The desired format of the room composition.
example: mp4
type: string
resolution:
default: 1280x720
description: The desired resolution (width/height in pixels) of the resulting video of the room composition. Both width and height are required to be between 16 and 1280; and width * height should not exceed 1280 * 720
example: 800x600
type: string
session_id:
description: id of the room session associated with the room composition.
example: 0ccc7b54-4df3-4bca-a65a-3da1ecc777b0
format: uuid
type: string
video_layout:
additionalProperties:
$ref: '#/components/schemas/VideoRegion'
description: Describes the video layout of the room composition in terms of regions.
type: object
webhook_event_failover_url:
default: ''
description: The failover URL where webhooks related to this room composition will be sent if sending to the primary URL fails. Must include a scheme, such as 'https'.
example: https://failover.example.com
format: uri
type: string
webhook_event_url:
description: The URL where webhooks related to this room composition will be sent. Must include a scheme, such as 'https'.
example: https://example.com
format: uri
type: string
webhook_timeout_secs:
default: null
description: Specifies how many seconds to wait before timing out a webhook.
example: 25
maximum: 30
minimum: 0
type: integer
type: object
VideoRegion:
properties:
height:
description: Height of the video region
example: 360
minimum: 16
type: integer
max_columns:
description: Maximum number of columns of the region's placement grid. By default, the region has as many columns as needed to layout all the specified video sources.
example: 3
maximum: 1000
minimum: 1
type: integer
max_rows:
description: Maximum number of rows of the region's placement grid. By default, the region has as many rows as needed to layout all the specified video sources.
example: 3
maximum: 1000
minimum: 1
type: integer
video_sources:
description: Array of video recording ids to be composed in the region. Can be "*" to specify all video recordings in the session
items:
example: 7b61621f-62e0-4aad-ab11-9fd19e272e73
format: uuid
type: string
type: array
width:
description: Width of the video region
example: 480
minimum: 16
type: integer
x_pos:
default: 0
description: X axis value (in pixels) of the region's upper left corner relative to the upper left corner of the whole room composition viewport.
example: 100
type: integer
y_pos:
default: 0
description: Y axis value (in pixels) of the region's upper left corner relative to the upper left corner of the whole room composition viewport.
example: 100
type: integer
z_pos:
default: 0
description: Regions with higher z_pos values are stacked on top of regions with lower z_pos values
example: 1
maximum: 99
minimum: -99
type: integer
type: object
responses:
video_ResourceNotFound:
content:
application/json:
schema:
$ref: '#/components/schemas/video_Error'
description: Resource not found
video_GenericErrorResponse:
content:
application/json:
schema:
properties:
message:
example: Error
type: string
success:
example: false
type: boolean
type: object
description: Unexpected error
CreateRoomCompositionResponse:
content:
application/json:
schema:
properties:
data:
$ref: '#/components/schemas/RoomComposition'
type: object
description: Create room composition response.
video_UnprocessableEntity:
content:
application/json:
schema:
$ref: '#/components/schemas/video_Errors'
description: Unprocessable entity. Check the 'detail' field in response for details.
GetRoomCompositionResponse:
content:
application/json:
schema:
properties:
data:
$ref: '#/components/schemas/RoomComposition'
type: object
description: Get room composition response.
ListRoomCompositionsResponse:
content:
application/json:
schema:
properties:
data:
items:
$ref: '#/components/schemas/RoomComposition'
type: array
meta:
$ref: '#/components/schemas/PaginationMeta'
type: object
description: List room compositions response.
parameters:
video_PageConsolidated:
description: 'Consolidated page parameter (deepObject style). Originally: page[size], page[number]'
explode: true
in: query
name: page
schema:
properties:
number:
default: 1
description: The page number to load.
minimum: 1
type: integer
size:
default: 20
description: The size of the page.
maximum: 250
minimum: 1
type: integer
type: object
style: deepObject
securitySchemes:
bearerAuth:
scheme: bearer
type: http
branded-calling_bearerAuth:
description: API key passed as a Bearer token in the Authorization header
scheme: bearer
type: http
oauthClientAuth:
description: OAuth 2.0 authentication for Telnyx API and MCP integrations
flows:
authorizationCode:
authorizationUrl: https://api.telnyx.com/v2/oauth/authorize
refreshUrl: https://api.telnyx.com/v2/oauth/token
scopes:
admin: Administrative access to Telnyx resources
tokenUrl: https://api.telnyx.com/v2/oauth/token
clientCredentials:
scopes:
admin: Administrative access to Telnyx resources
tokenUrl: https://api.telnyx.com/v2/oauth/token
type: oauth2
outbound-voice-profiles_bearerAuth:
bearerFormat: JWT
scheme: bearer
type: http
pronunciation-dicts_bearerAuth:
description: Telnyx API v2 key. Obtain from https://portal.telnyx.com
scheme: bearer
type: http
stored-payment-transactions_bearerAuth:
bearerFormat: JWT
scheme: bearer
type: http