Telnyx Meeting Session Data API
Read lifecycle events, transcript segments, and recordings for a meeting session.
Read lifecycle events, transcript segments, and recordings for a meeting session.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.curl "https://apis.io/api/v1/apis/telnyx:telnyx-meeting-session-data-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
version: 2.0.0
x-latency-category: responsive
x-endpoint-cost: light
title: Telnyx Meeting Session Data API
description: SIP trunking, SMS, MMS, Call Control and Telephony Data Services.
contact:
email: support@telnyx.com
servers:
- url: https://api.telnyx.com/v2
description: Version 2.0.0 of the Telnyx API
security:
- bearerAuth: []
tags:
- name: Meeting Session Data
description: Read lifecycle events, transcript segments, and recordings for a meeting session.
paths:
/meeting_sessions/{id}/events:
get:
operationId: listMeetingSessionEvents
tags:
- Meeting Session Data
summary: List meeting session events
description: Returns stored events ordered by ascending `seq`. To continue, pass the last returned item's `seq` as `after`. An empty page means no later stored events existed at read time; this operation returns no separate next-page cursor. Default `limit` is 100 and maximum is 1,000.
parameters:
- $ref: '#/components/parameters/MeetingSessionId'
- $ref: '#/components/parameters/After'
- $ref: '#/components/parameters/Limit'
responses:
'200':
description: Successful response with a list of meeting session events.
content:
application/json:
schema:
$ref: '#/components/schemas/MeetingSessionEventListResponse'
example:
data:
- seq: 12
type: session.status_changed
payload:
status: active
previous_status: waiting_for_admission
occurred_at: '2026-06-16T09:00:05Z'
'400':
$ref: '#/components/responses/meeting-sessions_BadRequest'
'401':
$ref: '#/components/responses/meeting-sessions_Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
'404':
$ref: '#/components/responses/meeting-sessions_NotFound'
'429':
$ref: '#/components/responses/TooManyRequests'
'500':
$ref: '#/components/responses/meeting-sessions_InternalServerError'
'503':
$ref: '#/components/responses/MeetingReadAuthUnavailable'
/meeting_sessions/{id}/recording_media:
delete:
operationId: deleteMeetingSessionRecordingMedia
tags:
- Meeting Session Data
summary: Delete meeting session recording media
description: Irreversibly requests deletion of the aggregate recording media for the session. The operation retains the Telnyx-local Meeting session, transcript segments, events, artifacts, and usage records. It is separate from `DELETE /meeting_sessions/{id}`, which stops or cancels participation without deleting the persisted session. A missing/foreign session returns 404; provider deletion failures return 502.
security:
- bearerAuth: []
parameters:
- $ref: '#/components/parameters/MeetingSessionId'
responses:
'202':
description: The irreversible recording-media deletion request was accepted, or a deletion is already in progress.
content:
application/json:
schema:
$ref: '#/components/schemas/MeetingSessionRecordingMediaDeletionResponse'
'401':
$ref: '#/components/responses/meeting-sessions_Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
'404':
$ref: '#/components/responses/RecordingMediaResourceNotFound'
'409':
$ref: '#/components/responses/RecordingMediaInvalidState'
'422':
$ref: '#/components/responses/RecordingMediaUnsupportedCapability'
'429':
$ref: '#/components/responses/TooManyRequests'
'500':
$ref: '#/components/responses/meeting-sessions_InternalServerError'
'502':
$ref: '#/components/responses/RecordingMediaProviderError'
'503':
$ref: '#/components/responses/RecordingMediaAuthenticationUnavailable'
/meeting_sessions/{id}/recordings:
get:
operationId: listMeetingSessionRecordings
tags:
- Meeting Session Data
summary: List meeting session recordings
description: Returns recordings for a meeting session.
parameters:
- $ref: '#/components/parameters/MeetingSessionId'
responses:
'200':
description: Successful response with a list of meeting session recordings.
content:
application/json:
schema:
$ref: '#/components/schemas/MeetingSessionRecordingListResponse'
example:
data:
- type: video_mixed
url: https://cdn.telnyx.com/recordings/mtgsess_9b2f.../video_mixed.mp4
expires_at: '2026-06-17T09:00:42Z'
'401':
$ref: '#/components/responses/meeting-sessions_Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
'404':
$ref: '#/components/responses/meeting-sessions_NotFound'
'429':
$ref: '#/components/responses/TooManyRequests'
'500':
$ref: '#/components/responses/meeting-sessions_InternalServerError'
'502':
$ref: '#/components/responses/MeetingRecordingLookupProviderError'
'503':
$ref: '#/components/responses/MeetingReadAuthUnavailable'
/meeting_sessions/{id}/transcript:
get:
operationId: listMeetingSessionTranscript
tags:
- Meeting Session Data
summary: List meeting session transcript
description: 'Returns transcript segments ordered by ascending `seq`. Default `limit` is 100 and maximum is 1,000. Continue with `after=meta.next_after`. A long-poll timeout returns 200 with empty `data` and `meta.next_after: null`; retain the cursor supplied to that request because null is not a replacement cursor.'
parameters:
- $ref: '#/components/parameters/MeetingSessionId'
- $ref: '#/components/parameters/After'
- $ref: '#/components/parameters/Limit'
- $ref: '#/components/parameters/WaitSeconds'
responses:
'200':
description: Successful response with transcript segments (may be empty on wait timeout).
content:
application/json:
schema:
$ref: '#/components/schemas/TranscriptSegmentListResponse'
'400':
$ref: '#/components/responses/meeting-sessions_BadRequest'
'401':
$ref: '#/components/responses/meeting-sessions_Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
'404':
$ref: '#/components/responses/meeting-sessions_NotFound'
'429':
$ref: '#/components/responses/TooManyRequests'
'500':
$ref: '#/components/responses/meeting-sessions_InternalServerError'
'503':
$ref: '#/components/responses/MeetingReadAuthUnavailable'
components:
parameters:
WaitSeconds:
name: wait_seconds
in: query
required: false
description: Long-poll duration in seconds. The server holds the connection open for up to this many seconds, waiting for new or updated results before returning an empty response. Set to 0 for an immediate response.
schema:
type: integer
minimum: 0
maximum: 25
default: 0
After:
name: after
in: query
required: false
description: Return results with a cursor position after this value.
schema:
type: integer
minimum: 0
default: 0
MeetingSessionId:
name: id
in: path
required: true
description: Unique identifier for the meeting session.
schema:
type: string
examples:
- mtgsess_a1b2c3d4-e5f6-7890-abcd-ef1234567890
Limit:
name: limit
in: query
required: false
description: Maximum number of results to return per page.
schema:
type: integer
minimum: 1
maximum: 1000
default: 100
responses:
meeting-sessions_BadRequest:
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/meeting-sessions_ErrorResponse'
example:
error:
code: invalid_request
message: request is invalid
MeetingRecordingLookupProviderError:
description: The provider failed to return recording entries.
content:
application/json:
schema:
$ref: '#/components/schemas/meeting-sessions_ErrorResponse'
example:
error:
code: provider_error
message: failed to fetch recordings from provider
RecordingMediaInvalidState:
description: Provider recording media cannot be deleted while the meeting is in progress.
content:
application/json:
schema:
$ref: '#/components/schemas/meeting-sessions_ErrorResponse'
example:
error:
code: invalid_state
message: provider recording media cannot be deleted while the meeting is in progress
RecordingMediaUnsupportedCapability:
description: The session's provider does not support recording-media deletion, or does not match the configured provider.
content:
application/json:
schema:
$ref: '#/components/schemas/meeting-sessions_ErrorResponse'
example:
error:
code: unsupported_capability
message: provider recording-media deletion is not supported
TooManyRequests:
description: Authentication is temporarily overloaded. Retry after the number of seconds in `Retry-After`.
headers:
Retry-After:
required: true
description: Seconds to wait before retrying.
schema:
type: integer
minimum: 1
maximum: 5
content:
application/json:
schema:
$ref: '#/components/schemas/meeting-sessions_ErrorResponse'
example:
error:
code: auth_overloaded
message: authentication temporarily overloaded
meeting-sessions_NotFound:
description: Not Found
content:
application/json:
schema:
$ref: '#/components/schemas/meeting-sessions_ErrorResponse'
example:
error:
code: not_found
message: meeting session not found
meeting-sessions_InternalServerError:
description: Internal Server Error
content:
application/json:
schema:
$ref: '#/components/schemas/meeting-sessions_ErrorResponse'
example:
error:
code: internal_error
message: internal server error
RecordingMediaAuthenticationUnavailable:
description: The authentication service is unavailable.
content:
application/json:
schema:
$ref: '#/components/schemas/meeting-sessions_ErrorResponse'
example:
error:
code: auth_unavailable
message: authentication service is unavailable
meeting-sessions_Unauthorized:
description: 'Unauthorized. On api.telnyx.com, authentication is enforced by the API gateway before the request reaches the Meeting service, so a missing or invalid API key returns the standard Telnyx error envelope (`{"errors": [{"code": "10009", ...}]}`) rather than the single-`error` shape below.'
content:
application/json:
schema:
$ref: '#/components/schemas/meeting-sessions_ErrorResponse'
example:
error:
code: unauthorized
message: invalid or missing credentials
RecordingMediaProviderError:
description: The provider request failed and the recording-media deletion outcome is unknown.
content:
application/json:
schema:
$ref: '#/components/schemas/meeting-sessions_ErrorResponse'
example:
error:
code: provider_error
message: recording-media deletion outcome is unknown
RecordingMediaResourceNotFound:
description: The meeting session does not exist or belongs to another account.
content:
application/json:
schema:
$ref: '#/components/schemas/meeting-sessions_ErrorResponse'
example:
error:
code: not_found
message: meeting session not found
MeetingReadAuthUnavailable:
description: Authentication is temporarily unavailable.
content:
application/json:
schema:
$ref: '#/components/schemas/meeting-sessions_ErrorResponse'
example:
error:
code: auth_unavailable
message: authentication service unavailable
Forbidden:
description: The authenticated credential is not permitted to perform this operation.
content:
application/json:
schema:
$ref: '#/components/schemas/meeting-sessions_ErrorResponse'
example:
error:
code: forbidden
message: credential is not permitted
schemas:
MeetingSessionRecording:
type: object
additionalProperties: false
required:
- type
- url
- expires_at
properties:
type:
type: string
url:
type: string
format: uri
description: Current provider download URL. The API does not guarantee URL lifetime or refresh behavior.
expires_at:
type:
- string
- 'null'
description: Expiry timestamp when available, or null. Currently returns null.
MeetingSessionEventListResponse:
type: object
additionalProperties: false
required:
- data
properties:
data:
type: array
items:
$ref: '#/components/schemas/MeetingSessionEvent'
MeetingSessionEvent:
type: object
additionalProperties: false
required:
- seq
- type
- payload
- occurred_at
properties:
seq:
type: integer
type:
type: string
payload:
type: object
additionalProperties: true
occurred_at:
type: string
format: date-time
TranscriptSegment:
type: object
additionalProperties: false
required:
- seq
- text
- confidence
- speaker_label
- relative_ts
- occurred_at
properties:
seq:
type: integer
text:
type: string
confidence:
type:
- number
- 'null'
minimum: 0
maximum: 1
speaker_label:
type:
- string
- 'null'
relative_ts:
type:
- number
- 'null'
occurred_at:
type: string
format: date-time
example:
seq: 1
text: Welcome to the project kickoff.
confidence: 0.98
speaker_label: Speaker 1
relative_ts: 12.5
occurred_at: '2025-01-15T10:00:12Z'
meeting-sessions_ErrorResponse:
type: object
additionalProperties: false
required:
- error
properties:
error:
type: object
additionalProperties: false
required:
- code
- message
properties:
code:
type: string
message:
type: string
examples:
- error:
code: invalid_request
message: webhook_url is disabled
- error:
code: not_found
message: meeting session not found
- error:
code: unsupported_capability
message: avatar video is not supported on platform 'unknown'
- error:
code: internal_error
message: internal server error
MeetingSessionRecordingListResponse:
type: object
additionalProperties: false
required:
- data
properties:
data:
type: array
items:
$ref: '#/components/schemas/MeetingSessionRecording'
MeetingSessionRecordingMediaDeletionResponse:
type: object
additionalProperties: false
required:
- data
properties:
data:
type: object
additionalProperties: false
required:
- meeting_session_id
- provider
- scope
- deletion_status
properties:
meeting_session_id:
type: string
description: The account-scoped Meeting Session identifier.
provider:
type: string
const: telnyx
scope:
type: string
const: provider_recording_media
deletion_status:
type: string
enum:
- requested
- already_in_progress
example:
data:
meeting_session_id: mtgsess_a1b2c3d4-e5f6-7890-abcd-ef1234567890
provider: telnyx
scope: provider_recording_media
deletion_status: requested
TranscriptSegmentListResponse:
type: object
additionalProperties: false
required:
- data
- meta
properties:
data:
type: array
items:
$ref: '#/components/schemas/TranscriptSegment'
meta:
type: object
additionalProperties: false
required:
- next_after
properties:
next_after:
type:
- integer
- 'null'
description: Cursor to pass as `after` on the next request, or null when the response contains no segments.
example:
data:
- seq: 41
text: let's ship it
confidence: 0.94
speaker_label: Ada L.
relative_ts: 1240.5
occurred_at: '2026-06-16T09:00:42Z'
meta:
next_after: 41
securitySchemes:
BearerAuth:
type: http
scheme: bearer
bearerFormat: API key
description: 'Telnyx API key supplied as `Authorization: Bearer <token>`. In production, auth may be validated by the API gateway and forwarded via Telnyx auth headers.'
Payment:
type: apiKey
in: header
name: Authorization
description: 'Machine Payment Protocol credential used on paid retries, sent as `Authorization: Payment ...`. Obtained by paying a challenge returned in the `WWW-Authenticate` header of a 402 response. This is not a Telnyx API key; initial challenge requests use standard bearer authentication instead.'
agent-memory_bearerAuth:
type: http
scheme: bearer
description: Telnyx API key
bearerAuth:
type: http
scheme: bearer
branded-calling_bearerAuth:
type: http
scheme: bearer
description: Telnyx API key. Generate one at https://portal.telnyx.com/#/app/api-keys.
collections_bearerAuth:
type: http
scheme: bearer
description: Telnyx API key. Collections and results are automatically scoped to the authenticated user's organization.
number-reputation_bearerAuth:
type: http
scheme: bearer
description: Telnyx API key. Generate one at https://portal.telnyx.com/#/app/api-keys.
oauthClientAuth:
type: oauth2
flows:
clientCredentials:
tokenUrl: https://api.telnyx.com/v2/oauth/token
scopes:
admin: Administrative access to Telnyx resources
authorizationCode:
authorizationUrl: https://api.telnyx.com/v2/oauth/authorize
tokenUrl: https://api.telnyx.com/v2/oauth/token
refreshUrl: https://api.telnyx.com/v2/oauth/token
scopes:
admin: Administrative access to Telnyx resources
description: OAuth 2.0 authentication for Telnyx API and MCP integrations
outbound-voice-profiles_bearerAuth:
type: http
scheme: bearer
bearerFormat: JWT
pronunciation-dicts_bearerAuth:
type: http
scheme: bearer
description: Telnyx API v2 key. Obtain from https://portal.telnyx.com
rcs-registration_bearerAuth:
type: http
scheme: bearer
bearerFormat: API key
stored-payment-transactions_bearerAuth:
type: http
scheme: bearer
bearerFormat: JWT
transcriptions-search_bearerAuth:
type: http
scheme: bearer
description: Telnyx API key. Results are automatically scoped to the authenticated user's organization.
web-search_bearerAuth:
type: http
scheme: bearer
description: Telnyx API key
x-service-info:
categories:
- communication
- developer-tools
docs:
apiReference: https://developers.telnyx.com
homepage: https://telnyx.com
llms: https://telnyx.com/llms.txt