Dyte Sessions API
Retrieve information about completed meetings (sessions) across an organization, including participant lists and details, plus active-session lookups for ongoing meetings. Responses are paginated.
Retrieve information about completed meetings (sessions) across an organization, including participant lists and details, plus active-session lookups for ongoing meetings. Responses are paginated.
openapi: 3.0.1
info:
title: Dyte v2 REST API
description: >-
Server-side v2 REST API for the Dyte live video and voice platform. Use it to
create and manage meetings, add participants and issue the auth tokens that
initialize the frontend SDKs, query completed sessions, and manage recordings,
livestreams, and webhooks. Authentication is HTTP Basic with the base64-encoded
string organizationId:apiKey. Dyte was acquired by Cloudflare in 2025 and is
transitioning to Cloudflare RealtimeKit; the Dyte v2 API is in maintenance mode.
termsOfService: https://dyte.io/terms
contact:
name: Dyte Support
url: https://docs.dyte.io/
version: '2.0'
servers:
- url: https://api.dyte.io/v2
description: Dyte v2 production API
security:
- basicAuth: []
tags:
- name: Meetings
description: Create and manage meeting rooms.
- name: Participants
description: Add participants and issue/refresh their SDK auth tokens.
- name: Sessions
description: Query completed and active sessions.
- name: Recordings
description: Start, stop, and fetch meeting recordings.
- name: Livestreams
description: Manage livestreams for a meeting.
- name: Webhooks
description: Manage webhook event subscriptions.
paths:
/meetings:
get:
operationId: listMeetings
tags:
- Meetings
summary: Fetch all meetings
description: Returns a paginated list of meetings for the organization.
parameters:
- $ref: '#/components/parameters/PageNo'
- $ref: '#/components/parameters/PerPage'
responses:
'200':
description: A paginated list of meetings.
content:
application/json:
schema:
$ref: '#/components/schemas/MeetingListResponse'
'401':
$ref: '#/components/responses/Unauthorized'
post:
operationId: createMeeting
tags:
- Meetings
summary: Create a meeting
description: Creates a new meeting room and returns its id.
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CreateMeetingRequest'
responses:
'201':
description: Meeting created.
content:
application/json:
schema:
$ref: '#/components/schemas/MeetingResponse'
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
/meetings/{meetingId}:
parameters:
- $ref: '#/components/parameters/MeetingId'
get:
operationId: getMeeting
tags:
- Meetings
summary: Fetch a meeting
responses:
'200':
description: Meeting details.
content:
application/json:
schema:
$ref: '#/components/schemas/MeetingResponse'
'404':
$ref: '#/components/responses/NotFound'
patch:
operationId: updateMeeting
tags:
- Meetings
summary: Update a meeting
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateMeetingRequest'
responses:
'200':
description: Meeting updated.
content:
application/json:
schema:
$ref: '#/components/schemas/MeetingResponse'
'404':
$ref: '#/components/responses/NotFound'
/meetings/{meetingId}/participants:
parameters:
- $ref: '#/components/parameters/MeetingId'
get:
operationId: listParticipants
tags:
- Participants
summary: Fetch all participants in a meeting
responses:
'200':
description: A list of participants.
content:
application/json:
schema:
$ref: '#/components/schemas/ParticipantListResponse'
post:
operationId: addParticipant
tags:
- Participants
summary: Add a participant
description: >-
Adds a participant to the meeting and returns an auth token used to
initialize the frontend SDKs.
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/AddParticipantRequest'
responses:
'201':
description: Participant added.
content:
application/json:
schema:
$ref: '#/components/schemas/ParticipantResponse'
'400':
$ref: '#/components/responses/BadRequest'
/meetings/{meetingId}/participants/{participantId}:
parameters:
- $ref: '#/components/parameters/MeetingId'
- $ref: '#/components/parameters/ParticipantId'
get:
operationId: getParticipant
tags:
- Participants
summary: Fetch a participant
responses:
'200':
description: Participant details.
content:
application/json:
schema:
$ref: '#/components/schemas/ParticipantResponse'
'404':
$ref: '#/components/responses/NotFound'
patch:
operationId: updateParticipant
tags:
- Participants
summary: Edit a participant
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateParticipantRequest'
responses:
'200':
description: Participant updated.
content:
application/json:
schema:
$ref: '#/components/schemas/ParticipantResponse'
delete:
operationId: deleteParticipant
tags:
- Participants
summary: Delete a participant
responses:
'200':
description: Participant deleted.
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
/meetings/{meetingId}/participants/{participantId}/token:
parameters:
- $ref: '#/components/parameters/MeetingId'
- $ref: '#/components/parameters/ParticipantId'
post:
operationId: regenerateParticipantToken
tags:
- Participants
summary: Regenerate a participant auth token
description: Issues a fresh auth token for an existing participant.
responses:
'200':
description: New token issued.
content:
application/json:
schema:
$ref: '#/components/schemas/ParticipantTokenResponse'
/sessions:
get:
operationId: listSessions
tags:
- Sessions
summary: Fetch all sessions
description: >-
Returns a paginated list of completed sessions (meetings that have ended)
for the organization.
parameters:
- $ref: '#/components/parameters/PageNo'
- $ref: '#/components/parameters/PerPage'
responses:
'200':
description: A paginated list of sessions.
content:
application/json:
schema:
$ref: '#/components/schemas/SessionListResponse'
/sessions/{sessionId}:
parameters:
- $ref: '#/components/parameters/SessionId'
get:
operationId: getSession
tags:
- Sessions
summary: Fetch a session
responses:
'200':
description: Session details.
content:
application/json:
schema:
$ref: '#/components/schemas/SessionResponse'
'404':
$ref: '#/components/responses/NotFound'
/sessions/{sessionId}/participants:
parameters:
- $ref: '#/components/parameters/SessionId'
get:
operationId: listSessionParticipants
tags:
- Sessions
summary: Fetch participants of a session
responses:
'200':
description: A list of session participants.
content:
application/json:
schema:
$ref: '#/components/schemas/ParticipantListResponse'
/active-sessions/{meetingId}:
parameters:
- $ref: '#/components/parameters/MeetingId'
get:
operationId: getActiveSession
tags:
- Sessions
summary: Fetch the active session for a meeting
responses:
'200':
description: Active session details.
content:
application/json:
schema:
$ref: '#/components/schemas/SessionResponse'
/recordings:
get:
operationId: listRecordings
tags:
- Recordings
summary: Fetch all recordings
parameters:
- $ref: '#/components/parameters/PageNo'
- $ref: '#/components/parameters/PerPage'
responses:
'200':
description: A paginated list of recordings.
content:
application/json:
schema:
$ref: '#/components/schemas/RecordingListResponse'
post:
operationId: startRecording
tags:
- Recordings
summary: Start a recording
description: >-
Starts recording a meeting, optionally writing to a custom storage
configuration such as an AWS S3 bucket.
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/StartRecordingRequest'
responses:
'201':
description: Recording started.
content:
application/json:
schema:
$ref: '#/components/schemas/RecordingResponse'
/recordings/{recordingId}:
parameters:
- $ref: '#/components/parameters/RecordingId'
get:
operationId: getRecording
tags:
- Recordings
summary: Fetch a recording
responses:
'200':
description: Recording details.
content:
application/json:
schema:
$ref: '#/components/schemas/RecordingResponse'
put:
operationId: updateRecording
tags:
- Recordings
summary: Stop or update a recording
description: Stops an in-progress recording when action is set to stop.
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateRecordingRequest'
responses:
'200':
description: Recording updated.
content:
application/json:
schema:
$ref: '#/components/schemas/RecordingResponse'
/recordings/active-recordings/{meetingId}:
parameters:
- $ref: '#/components/parameters/MeetingId'
get:
operationId: getActiveRecording
tags:
- Recordings
summary: Fetch the active recording for a meeting
responses:
'200':
description: Active recording details.
content:
application/json:
schema:
$ref: '#/components/schemas/RecordingResponse'
/meetings/{meetingId}/livestreams:
parameters:
- $ref: '#/components/parameters/MeetingId'
get:
operationId: listLivestreams
tags:
- Livestreams
summary: Fetch all livestreams for a meeting
responses:
'200':
description: A list of livestreams.
content:
application/json:
schema:
$ref: '#/components/schemas/LivestreamListResponse'
post:
operationId: startLivestream
tags:
- Livestreams
summary: Create and start a livestream
description: >-
Starts livestreaming the meeting and returns the livestream id, stream
key, ingest server, and playback URL.
requestBody:
required: false
content:
application/json:
schema:
$ref: '#/components/schemas/StartLivestreamRequest'
responses:
'201':
description: Livestream started.
content:
application/json:
schema:
$ref: '#/components/schemas/LivestreamResponse'
/meetings/{meetingId}/active-livestream:
parameters:
- $ref: '#/components/parameters/MeetingId'
get:
operationId: getActiveLivestream
tags:
- Livestreams
summary: Fetch the active livestream for a meeting
responses:
'200':
description: Active livestream status and details.
content:
application/json:
schema:
$ref: '#/components/schemas/LivestreamResponse'
/meetings/{meetingId}/active-livestream/stop:
parameters:
- $ref: '#/components/parameters/MeetingId'
post:
operationId: stopLivestream
tags:
- Livestreams
summary: Stop the active livestream
responses:
'200':
description: Livestream stopped.
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
/webhooks:
get:
operationId: listWebhooks
tags:
- Webhooks
summary: Fetch all webhooks
responses:
'200':
description: A list of webhooks.
content:
application/json:
schema:
$ref: '#/components/schemas/WebhookListResponse'
post:
operationId: createWebhook
tags:
- Webhooks
summary: Add a webhook
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CreateWebhookRequest'
responses:
'201':
description: Webhook created.
content:
application/json:
schema:
$ref: '#/components/schemas/WebhookResponse'
/webhooks/{webhookId}:
parameters:
- $ref: '#/components/parameters/WebhookId'
patch:
operationId: updateWebhook
tags:
- Webhooks
summary: Edit a webhook
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CreateWebhookRequest'
responses:
'200':
description: Webhook updated.
content:
application/json:
schema:
$ref: '#/components/schemas/WebhookResponse'
delete:
operationId: deleteWebhook
tags:
- Webhooks
summary: Delete a webhook
responses:
'200':
description: Webhook deleted.
content:
application/json:
schema:
$ref: '#/components/schemas/SuccessResponse'
components:
securitySchemes:
basicAuth:
type: http
scheme: basic
description: >-
HTTP Basic auth using the base64-encoded string organizationId:apiKey
(organizationId as the username, apiKey as the password).
parameters:
MeetingId:
name: meetingId
in: path
required: true
description: Unique meeting identifier.
schema:
type: string
format: uuid
ParticipantId:
name: participantId
in: path
required: true
description: Unique participant identifier.
schema:
type: string
format: uuid
SessionId:
name: sessionId
in: path
required: true
description: Unique session identifier.
schema:
type: string
format: uuid
RecordingId:
name: recordingId
in: path
required: true
description: Unique recording identifier.
schema:
type: string
format: uuid
WebhookId:
name: webhookId
in: path
required: true
description: Unique webhook identifier.
schema:
type: string
format: uuid
PageNo:
name: page_no
in: query
required: false
description: Page number for paginated results.
schema:
type: integer
default: 1
PerPage:
name: per_page
in: query
required: false
description: Number of items per page.
schema:
type: integer
default: 20
responses:
BadRequest:
description: The request was malformed or missing required fields.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
Unauthorized:
description: Missing or invalid Basic auth credentials.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
NotFound:
description: The requested resource does not exist.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
schemas:
CreateMeetingRequest:
type: object
properties:
title:
type: string
example: Weekly Standup
preferred_region:
type: string
description: Preferred media server region for the meeting.
example: ap-south-1
record_on_start:
type: boolean
default: false
live_stream_on_start:
type: boolean
default: false
UpdateMeetingRequest:
type: object
properties:
title:
type: string
status:
type: string
enum:
- ACTIVE
- INACTIVE
MeetingResponse:
type: object
properties:
success:
type: boolean
data:
$ref: '#/components/schemas/Meeting'
MeetingListResponse:
type: object
properties:
success:
type: boolean
data:
type: array
items:
$ref: '#/components/schemas/Meeting'
paging:
$ref: '#/components/schemas/Paging'
Meeting:
type: object
properties:
id:
type: string
format: uuid
title:
type: string
preferred_region:
type: string
record_on_start:
type: boolean
live_stream_on_start:
type: boolean
status:
type: string
created_at:
type: string
format: date-time
updated_at:
type: string
format: date-time
AddParticipantRequest:
type: object
required:
- preset_name
properties:
name:
type: string
example: Jane Doe
picture:
type: string
format: uri
preset_name:
type: string
description: Name of the preset that defines this participant's permissions.
example: group_call_host
custom_participant_id:
type: string
description: Your application's identifier for the participant.
UpdateParticipantRequest:
type: object
properties:
name:
type: string
picture:
type: string
format: uri
preset_name:
type: string
ParticipantResponse:
type: object
properties:
success:
type: boolean
data:
$ref: '#/components/schemas/Participant'
ParticipantListResponse:
type: object
properties:
success:
type: boolean
data:
type: array
items:
$ref: '#/components/schemas/Participant'
paging:
$ref: '#/components/schemas/Paging'
Participant:
type: object
properties:
id:
type: string
format: uuid
name:
type: string
picture:
type: string
format: uri
preset_name:
type: string
custom_participant_id:
type: string
token:
type: string
description: Auth token used to initialize the frontend SDKs.
created_at:
type: string
format: date-time
updated_at:
type: string
format: date-time
ParticipantTokenResponse:
type: object
properties:
success:
type: boolean
data:
type: object
properties:
token:
type: string
SessionResponse:
type: object
properties:
success:
type: boolean
data:
$ref: '#/components/schemas/Session'
SessionListResponse:
type: object
properties:
success:
type: boolean
data:
type: array
items:
$ref: '#/components/schemas/Session'
paging:
$ref: '#/components/schemas/Paging'
Session:
type: object
properties:
id:
type: string
format: uuid
associated_id:
type: string
description: The meeting id this session belongs to.
type:
type: string
status:
type: string
live_participants:
type: integer
max_concurrent_participants:
type: integer
minutes_consumed:
type: number
started_at:
type: string
format: date-time
ended_at:
type: string
format: date-time
StartRecordingRequest:
type: object
required:
- meeting_id
properties:
meeting_id:
type: string
format: uuid
file_name_prefix:
type: string
audio_config:
type: object
properties:
codec:
type: string
enum:
- AAC
- MP3
video_config:
type: object
properties:
codec:
type: string
enum:
- H264
- VP8
width:
type: integer
height:
type: integer
storage_config:
$ref: '#/components/schemas/StorageConfig'
UpdateRecordingRequest:
type: object
required:
- action
properties:
action:
type: string
enum:
- stop
- pause
- resume
StorageConfig:
type: object
description: Optional custom storage (e.g. AWS S3) for recording output.
properties:
type:
type: string
enum:
- aws
- gcs
- azure
- digitalocean
access_key:
type: string
secret:
type: string
bucket:
type: string
region:
type: string
path:
type: string
RecordingResponse:
type: object
properties:
success:
type: boolean
data:
$ref: '#/components/schemas/Recording'
RecordingListResponse:
type: object
properties:
success:
type: boolean
data:
type: array
items:
$ref: '#/components/schemas/Recording'
paging:
$ref: '#/components/schemas/Paging'
Recording:
type: object
properties:
id:
type: string
format: uuid
meeting_id:
type: string
format: uuid
session_id:
type: string
format: uuid
status:
type: string
enum:
- INVOKED
- RECORDING
- UPLOADING
- UPLOADED
- ERRORED
output_file_name:
type: string
download_url:
type: string
format: uri
started_time:
type: string
format: date-time
stopped_time:
type: string
format: date-time
StartLivestreamRequest:
type: object
properties:
name:
type: string
LivestreamResponse:
type: object
properties:
success:
type: boolean
data:
$ref: '#/components/schemas/Livestream'
LivestreamListResponse:
type: object
properties:
success:
type: boolean
data:
type: array
items:
$ref: '#/components/schemas/Livestream'
Livestream:
type: object
properties:
id:
type: string
format: uuid
name:
type: string
status:
type: string
enum:
- LIVE
- OFFLINE
- STARTING
- STOPPING
rtmp_url:
type: string
stream_key:
type: string
playback_url:
type: string
format: uri
CreateWebhookRequest:
type: object
required:
- name
- url
- events
properties:
name:
type: string
url:
type: string
format: uri
events:
type: array
items:
type: string
enum:
- meeting.started
- meeting.ended
- meeting.participantJoined
- meeting.participantLeft
- recording.statusUpdate
- livestreaming.statusUpdate
WebhookResponse:
type: object
properties:
success:
type: boolean
data:
$ref: '#/components/schemas/Webhook'
WebhookListResponse:
type: object
properties:
success:
type: boolean
data:
type: array
items:
$ref: '#/components/schemas/Webhook'
Webhook:
type: object
properties:
id:
type: string
format: uuid
name:
type: string
url:
type: string
format: uri
events:
type: array
items:
type: string
Paging:
type: object
properties:
total_count:
type: integer
start_offset:
type: integer
end_offset:
type: integer
SuccessResponse:
type: object
properties:
success:
type: boolean
message:
type: string
ErrorResponse:
type: object
properties:
success:
type: boolean
example: false
error:
type: object
properties:
code:
type: integer
message:
type: string