Conference (Meet) API¶
Overview¶
Altegon Meet APIs provide comprehensive integration support with RESTful API integration. These APIs enable integration with any source system and provide complete meeting management functionality.
Base URL: https://lb.altegon.com
Product Packages¶
Essential: Everything you need to run a normal meeting - Create/join meeting, audio/video streaming, text chatting, participants controls, screen sharing, basic recording
Professional: Builds on Essential with AI features - Noise suppression, enhanced chatting, real-time captions, transcripts, summaries, interactive whiteboard, virtual backgrounds, speaker tagging, advanced analytics
Key Concepts¶
- Meeting: a container where participants connect and exchange audio/video/data.
- Participant: a connected user in the meeting(attendee, host).
- Track: An audio or video stream from the participant
- SDK/Client: The JavaScript helper library that simplifies talking to REST + real-time APIs
Recommended Flow¶
- Create room (server API)
- Create token (server API)
- Join room (client)
- Create and init stream
- Publish local stream
- Subscribe to remote streams
- Use data channel for app-level messages
- Leave Room
REST API Endpoints¶
Authentication & User Management¶
Register User - POST /auth/register
Creates a new user account.
| Field | Type | Required | Description |
|---|---|---|---|
| String | Yes | Valid user email which is not already registered | |
| fName | String | Yes | User's first name |
| lName | String | Yes | User's last name |
| phoneNumber | String | Yes | User's contact number |
| country | String | Yes | User's country where he/she lives |
| password | String | Yes | Password used for login purpose |
Example Request:
{
"email": "haseeb@altegon.com",
"fName": "Haseeb",
"lName": "Asif",
"phoneNumber": "923085000453",
"country": "Pakistan",
"password": "AB1239001"
}
Response (201, 409, 401):
{
"success": true,
"message": "User created successfully",
"data": {
"user": {
"fName": "Haseeb",
"lName": "Asif",
"email": "haseeb@altegon.com",
"_id": "68afea5f8ed95fae8f7f6d86"
}
}
}
User Login - POST /auth/login
Authenticates a user and returns an access token.
| Field | Type | Required | Description |
|---|---|---|---|
| userName | String | Yes | Valid user email |
| password | String | Yes | Password that was entered on registration |
Example Request:
Response (200, 401):
Room Management¶
Create Room - POST /room/create
Creates a new virtual room for hosting meetings or conferences.
| Field | Type | Required | Description |
|---|---|---|---|
| name | String | Yes | Room name |
| type | String | Yes | Room type (e.g., "meeting", "conference") |
| maxParticipants | Number | No | Maximum number of participants |
| isPrivate | Boolean | No | Whether the room is private |
Example Request:
Response
{
"success": true,
"data": {
"id": "68aff60d0d7bbb02c917906d",
"name": "Haseeb Asif",
"type": "conference",
"p2p": true
},
"msg": "Room created Successfully!"
}
Meeting Management¶
Create Meeting - POST /meetings/create
Creates a new meeting with a title, host, and transcript settings.
| Field | Type | Required | Description |
|---|---|---|---|
| title | String | Yes | Meeting title |
| hostId | String | Yes | User ID |
| transcriptEnabled | Boolean | Yes | Transcript enabled or not |
Example Request:
Response (201, 500):
Update Meeting - POST /meetings/update/:meetingId
Updates meeting details such as title, transcript, summary generation, and recording information.
| Field | Type | Required | Description |
|---|---|---|---|
| userId | String | Yes | User unqiue ID |
| roomId | String | No | Room ID of meeting room |
| recordingId | String | No | Recording ID |
| title | String | No | Title of meeting |
| summaryGenerated | Boolean | No | Summary generation enabled |
| transcriptEnabled | Boolean | No | Transcription enabled |
Example Request:
{
"title": "Test Meeting",
"transcriptEnabled": false,
"summaryGenerated": false,
"roomId": "68aff60da51d6c83a24245a2",
"recordingId": "1737978989992_59591",
}
Response (204, 404, 500)
Get Meeting - GET /meetings/list/:userId
Retrieves the list of meetings created by a specific user.
| Field | Type | Required | Description |
|---|---|---|---|
| userId | String | Yes | User unqiue ID |
Response (200, 500):
{
"data" : {
"createdAt" : "2025-10-14T13:08:09.559Z",
"hostId" : "68de7a9d8f40ff41c940c7fb",
"recordingIds" : [],
"summaryGenerated" : false,
"title" : "dsa",
"transcriptEnabled" : false,
"_id": "68ee4b39b22d6134386fc5dc"
}
}
Recording Controls¶
Start Recording - POST /recording/start
Initiates recording for a specific room and stream with defined recording details.
| Field Name | Type | Mandatory | Description |
|---|---|---|---|
| roomId | String | Yes | Room ID where recording. |
| userName | String | Yes | Username who requested recording. |
| streamId | String | Yes | Stream ID. |
| recordingId | String | Yes | Recording ID. |
| startTime | Date | Yes | Recording start time. |
| videoType | String | Yes | Video type. |
| status | String | Yes | Recording status. |
Example Request:
{
"roomId": "68affe24fabc0702c5d30c29",
"userName": "Haseeb Asif",
"streamId": 755961800257348400,
"recordingId": "1756364334628_738386",
"startTime": 1756364334634,
"videoType": "video",
"status": "pending"
}
Response (201, 500)
Stop Recording - POST /recording/stop
Stops the ongoing recording and saves the recording end time.
| Field Name | Type | Mandatory | Description |
|---|---|---|---|
| recordingId | String | Yes | Recording ID to be stopped. |
| streamId | String | Yes | Stream ID. |
| endTime | Date | Yes | End time when you ended the recording. |
Example Request:
Response (204, 404, 500)
Get Recordings - GET /recordings/list
Retrieves a list of all recorded sessions with their details.
Example Request:
Response (200, 500):
[
{
"_id": "670bc2ab12f5b0e6f7a4e9d4",
"roomId": "68affe24fabc0702c5d30c29",
"recordingId": "1756364334628_738386",
"hostName": "Haseeb Asif",
"status": true,
"createdAt": "2025-10-13T10:15:30.000Z",
"updatedAt": "2025-10-13T10:20:00.000Z"
}
]
File Upload¶
Upload File - POST /room/:roomId/upload
Uploads a file to a specific meeting room.
| Field Name | Type | Mandatory | Description |
|---|---|---|---|
| roomId | String | Yes | Room ID for file upload. |
Example Request:
Response (200, 400):
{
"success": true,
"data": {
"originalName": "Document_72835505.docx",
"filename": "68b01f530d7bbb02c917906f_Document_72835505.docx",
"size": 27685,
"roomId": "68b01f530d7bbb02c917906f",
"path": "documents/68b01f530d7bbb02c917906f/68b01f530d7bbb02c917906f_Document_72835505.docx"
},
"msg": "File uploaded successfully!"
}
Get File - GET /room/:roomId/files/:filename
Retrieves the details of an uploaded file in a specific meeting room.
| Field Name | Type | Mandatory | Description |
|---|---|---|---|
| roomId | String | Yes | Room ID for file upload. |
| filename | String | Yes | File Name of uploaded file. |
Response (200, 404, 500):
{
"success": true,
"data": {
"filename": "68b01f530d7bbb02c917906f_ZekliOpenAPI-for Customers - Instant.docx",
"originalName": "ZekliOpenAPI-for Customers - Instant.docx",
"size": 27685,
"uploadDate": "2025-08-28T09:32:48.745Z",
"path": "documents/68b01f530d7bbb02c917906f/68b01f530d7bbb02c917906f_ZekliOpenAPI for Customers -
Instant.docx"
},
"msg": "File retrieved successfully!"
}
Delete Files - DELETE /room/:roomId/files
Deletes all files uploaded in a specific meeting room.
| Field Name | Type | Mandatory | Description |
|---|---|---|---|
| roomId | String | Yes | Room ID for file upload. |
Response (200, 400, 404, 500):
Transcription¶
Get Speech Token - GET /api/get-speech-token
Generates speech token for transcripiton using Azure AI foundry model.
Response:
{
"token":
"eyJhbGciOiJFUzI1NiIsImtpZCI6ImtleTEiLCJ0eXAiOiJKV1QifQ.eyJyZWdpb24iOiJlYXN0dXMyIiwic3Vic2NyaXB0aW9uL
WlkIjoiZGQzMzZkZTFjN2M4NDk3MTgyZjQ4MTQ1YzZkYzM3MTciLCJwcm9kdWN0LWlkIjoiQUlTZXJ2aWNlcy5TMCIsI
mNvZ25pdGl2ZS1zZXJ2aWNlcy1lbmRwb2ludCI6Imh0dHBzOi8vYXBpLmNvZ25pdGl2ZS5taWNyb3NvZnQuY29tL2lu
dGVybmFsL3YxLjAvIiwiYXp1cmUtcmVzb3VyY2UtaWQiOiIvc3Vic2NyaXB0aW9ucy8wYzUxMWU0My0xNWNmLTRj
ODMtOWE1ZS05MTY3NmE0NjFmMGUvcmVzb3VyY2VHcm91cHMvcmctc2hhaG5hd2F6LTI1NTVfYWkvcHJvdmlkZ
XJzL01pY3Jvc29mdC5Db2duaXRpdmVTZXJ2aWNlcy9hY2NvdW50cy9haS1zaGFobmF3YXo4NzI5YWk1NTU2NDUw
OTQ4NzEiLCJzY29wZSI6WyJzcGVlY2hzZXJ2aWNlcyIsInZpc2lvbiIsImh0dHBzOi8vYXBpLm1pY3Jvc29mdHRyYW5zbGF
0b3IuY29tLyJdLCJhdWQiOlsidXJuOm1zLnNwZWVjaCIsInVybjptcy5zcGVlY2hzZXJ2aWNlcy5lYXN0dXMyIiwidXJuOm1
zLnZpc2lvbi5lYXN0dXMyIiwidXJuOm1zLm1pY3Jvc29mdHRyYW5zbGF0b3IiXSwiZXhwIjoxNzU4MjgyNjM5LCJpc3Mi
OiJ1cm46bXMuY29nbml0aXZlc2VydmljZXMifQ.byrrHOyz6gvykiqylXh2A7A79rlmmQBrgpnGZSsJZR9qJjRgLfFO1QzR
MTyMOz3pwXyAMk0D682SPS3_gdL8PA",
"region": "eastus2"
}
Send Transcript - POST /send-transcript
Stores a transcript message for a specific meeting.
| Field | Type | Required | Description |
|---|---|---|---|
| meetingId | String | Yes | ID of the meeting |
| userName | String | Yes | Name of the user sending the message |
| message | String | Yes | Transcript message |
Example Request:
Response (201, 500)
View Transcript - GET /view-transcript/:meetingId
Retrieves the entire transcript history for a specific meeting.
| Parameter | Type | Required | Description |
|---|---|---|---|
| meetingId | String | Yes | ID of the meeting |
Response:
{
"data": [
{
"_id": "670b88775cba2f7de6f739d0",
"meetingId": "68cd413466eab302c9f078cd",
"userName": "Haseeb Stats",
"message": "Hello.",
"createdAt": "2025-10-13T12:20:30.000Z"
}
]
}
Generate Transcript Summary - POST /transcription/generate-summary/:meetingId
Generates a summary of the transcript for a specific meeting.
| Parameter | Type | Required | Description |
|---|---|---|---|
| meetingId | String | Yes | ID of the meeting |
Response (200, 404, 500):
Get Transcript Summary - GET /meeting/:meetingId/summary
Retrieves the generated summary of a meeting.
| Parameter | Type | Required | Description |
|---|---|---|---|
| meetingId | String | Yes | ID of the meeting |
Response (200, 404, 500):
{
"summary": "The participants discussed the upcoming product release, assigned tasks, and confirmed the timeline for testing."
}
Dashboard Analytics¶
Get Total Sessions - GET /reporting/total-sessions-for-user
Returns the total number of completed sessions based on filters.
| Query Parameter | Type | Required | Description |
|---|---|---|---|
| domain | String | No | Domain name to filter sessions |
| sessionType | String | No | Type of session |
| countryCode | String | No | Country code |
| countryName | String | No | Country name |
| cityName | String | No | City name |
| startDateRange | Date | No | Start date for filtering sessions |
| endDateRange | Date | No | End date for filtering sessions |
| userID | String | No | User ID of the host |
Example Response:
GET /reporting/total-sessions-for-user?startDateRange=2025-10-01T00:00:00.000Z&endDateRange=2025-10-31T23:59:59.999Z&sessionType=&userID=68de7a9d8f40ff41c940c7fb
Response:
Get Total Sessions Aggregation - GET /reporting/total-sessions-aggregation-for-user
Returns total session counts grouped by domain and date.
| Query Parameter | Type | Required | Description |
|---|---|---|---|
| domain | String | No | Domain name to filter sessions |
| sessionType | String | No | Type of session |
| countryCode | String | No | Country code |
| countryName | String | No | Country name |
| cityName | String | No | City name |
| startDateRange | Date | No | Start date for filtering sessions |
| endDateRange | Date | No | End date for filtering sessions |
| userID | String | No | User ID of the host |
Example Request:
GET /reporting/total-sessions-aggregation-for-user?sessionType=&userID=68de7a9d8f40ff41c940c7fb&startDateRange=2025-10-12T00%3A00%3A00.000Z&endDateRange=2025-10-18T23%3A59%3A59.999Z
Response:
{
"success": true,
"data": [
{
"domainCounts": [
{
"domain": "altegon.com",
"count": 5
}
],
"date": "2025-10-12T00:00:00.000Z",
}
]
}
Get Total Sessions Statistics - GET /reporting/total-sessions-statistics-for-user
Provides total number of sessions and sessions grouped by session type.
| Query Parameter | Type | Required | Description |
|---|---|---|---|
| domain | String | No | Domain name to filter sessions |
| sessionType | String | No | Type of session |
| countryCode | String | No | Country code |
| countryName | String | No | Country name |
| cityName | String | No | City name |
| startDateRange | Date | No | Start date for filtering sessions |
| endDateRange | Date | No | End date for filtering sessions |
| userID | String | No | User ID of the host |
Example Request:
GET /reporting/total-sessions-statistics-for-user?startDateRange=2025-10-01T00:00:00.000Z&endDateRange=2025-10-31T23:59:59.999Z&sessionType=&userID=68de7a9d8f40ff41c940c7fb
Response:
{
"success": true,
"data": {
"totalSessions": 35,
"totalSessionsByType": [
{
"sessionType": "live",
"totalSessions": 15
}
{
"sessionType": "webinar",
"totalSessions": 20
},
{
"sessionType": "conference",
"totalSessions": 15
}
]
}
}
Get Total Sessions By Location - GET /reporting/total-sessions-by-location-for-user
Returns total number of sessions grouped by city, region, and country.
| Query Parameter | Type | Required | Description |
|---|---|---|---|
| domain | String | No | Domain name to filter sessions |
| sessionType | String | No | Type of session |
| countryCode | String | No | Country code |
| countryName | String | No | Country name |
| cityName | String | No | City name |
| startDateRange | Date | No | Start date for filtering sessions |
| endDateRange | Date | No | End date for filtering sessions |
| userID | String | No | User ID of the host |
Example Request:
GET /reporting/total-sessions-by-location-for-user?startDateRange=2025-10-01T00:00:00.000Z&endDateRange=2025-10-31T23:59:59.999Z&sessionType=&userID=68de7a9d8f40ff41c940c7fb
Response:
{
"success": true,
"data": [
{
"_id": {
"city": "Lahore",
"region": "Punjab",
"country": "PK",
"country_name": "Pakistan"
},
"count": 12
},
{
"_id": {
"city": "Karachi",
"region": "Sindh",
"country": "PK",
"country_name": "Pakistan"
},
"count": 8
}
]
}
Get Total Sessions and Participants Count By Location - GET /reporting/total-sessions-and-participants-count-by-location-for-user
Returns total sessions and total participants count grouped by city.
| Query Parameter | Type | Required | Description |
|---|---|---|---|
| domain | String | No | Domain name to filter sessions |
| sessionType | String | No | Type of session |
| countryCode | String | No | Country code |
| countryName | String | No | Country name |
| cityName | String | No | City name |
| startDateRange | Date | No | Start date for filtering sessions |
| endDateRange | Date | No | End date for filtering sessions |
| userID | String | No | User ID of the host |
Example Request:
GET /reporting/total-sessions-and-participants-count-by-location-for-user?startDateRange=2025-10-01T00:00:00.000Z&endDateRange=2025-10-31T23:59:59.999Z&sessionType=&userID=68de7a9d8f40ff41c940c7fb
Response:
{
"success": true,
"data": [
{
"_id": "Lahore",
"totalSessions": 10,
"totalParticipants": 125
},
{
"_id": "Karachi",
"totalSessions": 6,
"totalParticipants": 89
}
]
}
Authentication Headers¶
All protected endpoints require:
Error Handling¶
The API uses standard HTTP status codes:
200 - Success | 201 - Created | 204 - No Content | 400 - Bad Request | 401 - Unauthorized |
403 - Forbidden | 404 - Not Found | 409 - Conflict | 500 - Internal Server Error
WebSocket Connection¶
Overview¶
This section describes all the WebSocket events exchanged between Client ↔ Server,and their expected payloads.
ART package socket¶
Base URL: wss://prod.altegon.com/erizocontroller/socket.io
Events:¶
This package uses send data function to send socket events with their specific types as mentioned below:
view_count¶
Description: Notifies client when total views increase.
Payload:
room_connected¶
Description: Notifies when a user joins the room.
Payload:
start-transcript¶
Description: Triggers start of meeting transcription.
Payload:
chat-box¶
Description: Chat messages in live session.
Payload: Request (Client → Server)
Response (Server → Client)
{
"type": "chat-box",
"id": "user123",
"username": "John",
"time": 1692345678,
"msg": "Hello everyone!"
}
request-mic¶
Description: Viewer requests to speak (turn on mic).
Payload: Request (Client → Server)
Response (Server → Client)
request-mic-accepted¶
Description: Host accepts mic request.
Payload:
request-mic-rejected¶
Description: Host rejects mic request.
Payload:
mic-accepted-ack¶
Description: Viewer acknowledges mic acceptance.
Payload:
mute-mic-request¶
Description: Mute/unmute specific participant.
Payload:
video-off¶
Description: Notify participant turned off camera.
Payload:
device-switch¶
Description: Notify device change.
Payload:
product-selected¶
Description: Viewer selects a product.
Payload:
sell-live¶
Description: Start live selling session.
Payload:
recording¶
Description: Start/stop recording session.
Payload:
sharing-toggle¶
Description: Toggle screen sharing.
Payload:
whiteBoardToggle¶
Description:
Toggles the whiteboard on or off for a specific room. This is typically emitted when a host enables or disables the whiteboard feature.
Payload:
whiteBoardStateRequest¶
Description: A newly joined participant emits this to request the current whiteboard state from the active whiteboard owner.
Payload:
white-board-stage¶
Description:Sends the entire current canvas state as JSON. Used when a new peer joins and needs the current state. The host explicitly syncs the canvas to everyone.
Payload:
{
"type": "white-board-stage",
"msg": {
"stage": { "attrs": { ... }, "children": [ ... ] },
"socketId": "abc123",
"room_id": "12345"
}
}
sendDrawingData¶
Description: Handles real-time drawing actions (brush strokes, erasing, cursor movements, etc.) to sync between participants.
Payload:
{
"type": "sendDrawingData",
"msg": {
"drawingType": "mousedown",
"payload": {
"pos": { "x": 200, "y": 150 },
"eraser": false,
"brushSize": 3,
"inkColor": "#000000",
"brushOpacity": 1
},
"socketId": "abc123",
"room_id": "12345"
}
}
Un-do¶
Description: Triggered when a user performs an undo action on their whiteboard. All peers remove the most recent stroke.
Payload:
clear-whiteBoard¶
Description: Triggered when the whiteboard is cleared by the host or a user. All peers remove all strokes.
Payload:
mute-all-participants¶
Description: Performs mute-all-participants actions.
Payload:
mute-participant, remove-participant¶
Description: Host controls participant state.
Payload:
transcript¶
Description: Real-time transcript text data.
Payload:
{
"type": "transcript",
"id": "user123",
"username": "John",
"msg": "This is the transcript text.",
"time": 1692345678
}
annotation¶
Description: Send or receive annotation events.
Payload:
meetingId¶
Description: Broadcast meeting ID to participants.
Payload:
Altegon Meet APIs socket:¶
Base URL: wss://prod.altegon.com/socket.io
Events¶
room.join¶
Description: Joins a user to a session room (v1.0 logic).
Payload
Recording Server Socket:¶
Base URL: wss://prod.altegon.com:3304/socket.io
Events¶
create-file¶
Description: Starts creating a recording file on server for a specific video track.
Payload
stream¶
Description: Streams binary video chunks to the server.
Payload:
process-recording¶
Description: Trigger final recording processing (scale + concat video).
Payload
stop-writing¶
Description: Stop writing stream for a specific video ID and finalize file.
Payload
Support & Contact¶
For technical implementation assistance, troubleshooting, or additional architecture details, please contact our support team.