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 Media Storage API 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: Media Storage operations
name: Media Storage API
paths:
/media:
get:
description: Returns a list of stored media files.
operationId: ListMediaStorage
parameters:
- description: 'Consolidated filter parameter (deepObject style). Originally: filter[content_type][]'
explode: true
in: query
name: filter
schema:
properties:
content_type:
description: Filters files by given content types
items:
example: application_xml
type: string
type: array
type: object
style: deepObject
responses:
'200':
$ref: '#/components/responses/ListMediaResponse'
'401':
$ref: '#/components/responses/media-storage_GenericErrorResponse'
default:
$ref: '#/components/responses/media-storage_GenericErrorResponse'
summary: List uploaded media
tags:
- Media Storage API
x-latency-category: interactive
post:
description: Upload media file to Telnyx so it can be used with other Telnyx services
operationId: CreateMediaStorage
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/UploadMediaRequest'
multipart/form-data:
schema:
$ref: '#/components/schemas/UploadMediaMultipartRequest'
description: Upload media request
required: true
responses:
'201':
$ref: '#/components/responses/MediaResponse'
'401':
$ref: '#/components/responses/media-storage_GenericErrorResponse'
'422':
$ref: '#/components/responses/media-storage_GenericErrorResponse'
default:
$ref: '#/components/responses/media-storage_GenericErrorResponse'
summary: Upload media
tags:
- Media Storage API
x-latency-category: interactive
/media/{media_name}:
delete:
description: Deletes a stored media file.
operationId: DeleteMediaStorage
parameters:
- $ref: '#/components/parameters/MediaName'
responses:
'204':
description: The media was deleted successfully.
'401':
$ref: '#/components/responses/media-storage_GenericErrorResponse'
'404':
$ref: '#/components/responses/media-storage_GenericErrorResponse'
default:
$ref: '#/components/responses/media-storage_GenericErrorResponse'
summary: Deletes stored media
tags:
- Media Storage API
x-latency-category: interactive
get:
description: Returns the information about a stored media file.
operationId: GetMediaStorage
parameters:
- $ref: '#/components/parameters/MediaName'
responses:
'200':
$ref: '#/components/responses/MediaResponse'
'401':
$ref: '#/components/responses/media-storage_GenericErrorResponse'
'404':
$ref: '#/components/responses/media-storage_GenericErrorResponse'
default:
$ref: '#/components/responses/media-storage_GenericErrorResponse'
summary: Retrieve stored media
tags:
- Media Storage API
x-latency-category: interactive
put:
description: Updates a stored media file.
operationId: UpdateMediaStorage
parameters:
- $ref: '#/components/parameters/MediaName'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateMediaRequest'
multipart/form-data:
schema:
$ref: '#/components/schemas/UpdateMediaMultipartRequest'
description: Update media request
required: true
responses:
'200':
$ref: '#/components/responses/MediaResponse'
'401':
$ref: '#/components/responses/media-storage_GenericErrorResponse'
'404':
$ref: '#/components/responses/media-storage_GenericErrorResponse'
'422':
$ref: '#/components/responses/media-storage_GenericErrorResponse'
default:
$ref: '#/components/responses/media-storage_GenericErrorResponse'
summary: Update stored media
tags:
- Media Storage API
x-latency-category: interactive
/media/{media_name}/download:
get:
description: Downloads a stored media file.
operationId: DownloadMedia
parameters:
- $ref: '#/components/parameters/MediaName'
responses:
'200':
$ref: '#/components/responses/MediaDownloadResponse'
'401':
$ref: '#/components/responses/media-storage_GenericErrorResponse'
'404':
$ref: '#/components/responses/media-storage_GenericErrorResponse'
'422':
$ref: '#/components/responses/media-storage_GenericErrorResponse'
default:
$ref: '#/components/responses/media-storage_GenericErrorResponse'
summary: Download stored media
tags:
- Media Storage API
x-latency-category: interactive
components:
schemas:
UpdateMediaRequest:
example:
media_url: http://www.example.com/audio.mp3
ttl_secs: 86400
properties:
media_url:
description: The URL where the media to be stored in Telnyx network is currently hosted. The maximum allowed size is 20 MB.
example: http://www.example.com/audio.mp3
type: string
ttl_secs:
description: The number of seconds after which the media resource will be deleted, defaults to 2 days. The maximum allowed vale is 630720000, which translates to 20 years.
example: 86400
type: integer
title: Upload media request
type: object
MediaResource:
example:
content_type: application/xml
created_at: '2019-01-23T18:10:02.574Z'
expires_at: '2020-01-23T18:10:02.574Z'
media_name: f5586561-8ff0-4291-a0ac-84fe544797bd
updated_at: '2019-01-23T18:10:02.574Z'
properties:
content_type:
description: Content type of the file
example: application/xml
type: string
created_at:
description: ISO 8601 formatted date of when the media resource was created
example: '2019-01-23T18:10:02.574Z'
type: string
expires_at:
description: ISO 8601 formatted date of when the media resource will expire and be deleted.
example: '2020-01-23T18:10:02.574Z'
type: string
media_name:
description: Uniquely identifies a media resource.
type: string
updated_at:
description: ISO 8601 formatted date of when the media resource was last updated
example: '2019-01-23T18:10:02.574Z'
type: string
title: Media Resource
type: object
media-storage_Errors:
properties:
errors:
items:
$ref: '#/components/schemas/media-storage_Error'
type: array
type: object
media-storage_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
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
UploadMediaRequest:
example:
media_name: my-file
media_url: http://www.example.com/audio.mp3
ttl_secs: 86400
properties:
media_name:
description: The unique identifier of a file.
example: my_file
type: string
media_url:
description: The URL where the media to be stored in Telnyx network is currently hosted. The maximum allowed size is 20 MB.
example: http://www.example.com/audio.mp3
type: string
ttl_secs:
description: The number of seconds after which the media resource will be deleted, defaults to 2 days. The maximum allowed vale is 630720000, which translates to 20 years.
example: 86400
type: integer
required:
- media_url
title: Upload media request
type: object
UploadMediaMultipartRequest:
example:
media: string($binary)
media_name: my-file
ttl_secs: 86400
properties:
media:
description: The file you want to upload. The maximum allowed size is 20 MB.
format: binary
type: string
media_name:
description: The unique identifier of a file.
example: my_file
type: string
ttl_secs:
description: The number of seconds after which the media resource will be deleted, defaults to 2 days. The maximum allowed vale is 630720000, which translates to 20 years.
example: 86400
type: integer
required:
- media
title: Upload media multipart request
type: object
UpdateMediaMultipartRequest:
example:
media: string($binary)
ttl_secs: 86400
properties:
media:
description: The file you want to upload. The maximum allowed size is 20 MB.
format: binary
type: string
ttl_secs:
description: The number of seconds after which the media resource will be deleted, defaults to 2 days. The maximum allowed vale is 630720000, which translates to 20 years.
example: 86400
type: integer
title: Upload media multipart request
type: object
responses:
MediaDownloadResponse:
content:
application/octet-stream:
schema:
format: binary
type: string
description: A response describing a media resource
media-storage_GenericErrorResponse:
content:
application/json:
schema:
$ref: '#/components/schemas/media-storage_Errors'
description: Unexpected error
ListMediaResponse:
content:
application/json:
schema:
properties:
data:
items:
$ref: '#/components/schemas/MediaResource'
type: array
meta:
$ref: '#/components/schemas/PaginationMeta'
title: List of media resources response
type: object
description: A response with a list of media resources
MediaResponse:
content:
application/json:
schema:
properties:
data:
$ref: '#/components/schemas/MediaResource'
title: Media resource response
type: object
description: A response describing a media resource
parameters:
MediaName:
description: Uniquely identifies a media resource.
in: path
name: media_name
required: true
schema:
type: string
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