Video conferencing API

The Callaba video conferencing API implements a minimal code integration strategy for embedding real-time video communication into your infrastructure. Only one request is required to create a room and obtain a video conference or online webinar as an embedded widget. It works in standard browsers and across all platforms, including Linux, Windows, MacOS, Android, and iOS, without the need for additional downloads or applications.

The Video conferencing API is suitable for the following use cases:

  1. Video calls.
  2. Online webinars.
  3. Real-time monitoring.
  4. Online shops or auctions.
  5. Real-time screen sharing.
  6. Bufferless streaming. Transmission delay only.
  7. Broadcasting online video calls or webinars to social networks.
  8. Monetizing video conferences. You can create a room and then generate a web player for this video conference room with monetization options for viewers.

To launch the Callaba Video conferencing API, follow these steps.

1. Create an “A” DNS record to associate your domain name with the IP address of your server. You can add “A” DNS records in the DNS management interface of your domain registrar or CDN/DNS hosting provider, like CloudFlare.

2. Open Callaba > General Settings > scroll down to the Server Settings section.

Specify your Domain name and Streaming domain name, WebRTC domain name, Turn domain name.

3. Create SSL. Choose either the free auto-renewing Let’s Encrypt X.509 certificate or upload your own certificate

4. Create a room.

5. Open the Meeting URL in the browser on your computer or mobile device. Also you can embed this room in your website. 

6. Done! Share the link with other people who need access to the video stream.

Read full article

Creating a new room
Expand
POST
/api/conferences/create

Creates a new room for hosting an online conference. After the request is made, the room is available for embedding in two modes:

  • Speaker mode: All connected participants through this link can communicate via video conferencing.

https://my-project-domain/conferences/65380ec8a33be4cd87d03e4f

  • View-only mode: All connected participants can watch and listen to the speakers. Communication is limited to text messages only.

https://my-project-domain/conferences-view-mode/65380ec8a33be4cd87d03e4f

Query parameters
name
string | required

Room name. This parameter is required.

active
boolean | required

Controls the state of the room. Possible values are true or false. Disabling the room will make it drop all connections and free up resources. The default value is true.

Creating a new room
cURL
curl -X POST https://your-project-domain/api/conferences/create \
-H "x-access-token: YOUR-API-TOKEN" \
-H "Content-Type: application/json" \
-d '{
"name": "First room",
"mediaType": "MEDIA_TYPE_VIDEO_AUDIO",
"max_participants": 50,
"active": true
}'
Response
Response: Creating a new room
JSON
{
"_id": "65380ec8a33be4cd87d03e4f",
"name": "First room",
"user_id": "652ecb03a33be4cd87cfd990",
"mediaType": "MEDIA_TYPE_VIDEO_AUDIO",
"max_participants": 50,
"active": true
}
Updating room
Expand
POST
/api/conferences/update

Use this method to change the room settings.

This method can take the same parameters as /api/conferences/create method

Query parameters
id
ObjectId | required

Identifier of the room that needs to be changed.

Updating room
cURL
curl -X POST https://your-project-domain/api/conferences/update \
-H "x-access-token: YOUR-API-TOKEN" \
-H "Content-Type: application/json" \
-d '{
"name": "First room",
"mediaType": "MEDIA_TYPE_VIDEO_AUDIO",
"max_participants": 50,
"active": true
}'
Response
Response: Updating room
JSON
{
"_id": "65380ec8a33be4cd87d03e4f",
"name": "First room",
"user_id": "652ecb03a33be4cd87cfd990",
"mediaType": "MEDIA_TYPE_VIDEO_AUDIO",
"max_participants": 50,
"active": true
}
Removing room
Expand
DELETE
/api/conferences/remove

Use this method to delete room.

Query parameters
id
ObjectId | required

Identifier of the room that needs to be removed.

Removing room
cURL
curl -X DELETE https://your-project-domain/api/conferences/remove \
-H "x-access-token: YOUR-API-TOKEN" \
-H "Content-Type: application/json" \
-d '{
"id": "65380ec8a33be4cd87d03e4f"
}'
Response
Response: Removing room
JSON
{
success: true
}
Getting a list of rooms
Expand
POST
/api/conferences/getAll

Use this method to get a list of rooms.

Query parameters
This method has no parameters
Getting a list of rooms
cURL
curl -X 'POST' \
'http://1.2.3.4/api/conferences/getAll' \
-H 'accept: application/json' \
-H 'x-access-token: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6IjYyMGJlYjA2MTM3YmIzMDAyYzhmNjAwYSIsImlhdCI6MTY0Njc0Njk4MiwiZXhwIjoxNjQ5MzM4OTgyfQ.qRphsD6OD8KYnRL5fUX8XEckp1XNCmZAYldWWnZbAxE' \
-d ''
Response
Response: Getting a list of rooms
JSON
[
{
"_id": "65380ec8a33be4cd87d03e4f",
"name": "First room",
"user_id": "652ecb03a33be4cd87cfd990",
"mediaType": "MEDIA_TYPE_VIDEO_AUDIO",
"max_participants": 50,
"active": true
}
]
Getting the room info by ID
Expand
POST
/api/conferences/getById

Getting the room info by ID

Query parameters
id
ObjectId | required

Room identifier.

Getting the room info by ID
cURL
curl -X 'POST' \
'http://1.2.3.4/api/conferences/getById' \
-H 'accept: application/json' \
-H 'x-access-token: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6IjYyMGJlYjA2MTM3YmIzMDAyYzhmNjAwYSIsImlhdCI6MTY0Njc0Njk4MiwiZXhwIjoxNjQ5MzM4OTgyfQ.qRphsD6OD8KYnRL5fUX8XEckp1XNCmZAYldWWnZbAxE' \
-H 'Content-Type: application/json' \
-d '{
"id": "622c93b366b14700326ff543"
}'
Response
Response: Getting the room info by ID
JSON
{
"name": "First room",
"mediaType": "MEDIA_TYPE_VIDEO_AUDIO",
"max_participants": 50,
"active": true
}