Mind API (draft) (1.0)

This document describes a draft version of Mind API and is subject to change at any time without notice.

Introduction

Mind API is a cloud platform (aka PaaS) that enables you to build applications where group of people communicate on the Internet using voice and video. For example, you can easily build a standalone application for video conferencing from scratch, or embed audio and video communication capabilities into an existing chat application, and do a lot more. Here is a list of features of Mind API:

  • Voice and video chats for up to X participants
  • Instant text messaging between the participants
  • Manageable recording of meetings on the server side
  • Screen/window sharing and streaming multimedia content
  • Support for SIP participants
  • Streaming meetings to YouTube, Twitch and other RTMP(S)-enabled servers
  • P2P audio and video calls (coming soon)
  • Support for H.323 participants (coming soon)
  • Sourcing external RTSP and RTMP streams (coming soon)

Mind API allows you to take a full advantage of described functionality without a need to dive deep into low level details. All the complexity is hidden behind a simple HTTP-based API which can be used directly on the server, but we highly encourage you to stick with one of our SDKs on the client:

Mind API is RESTful and built on top of HTTP. It uses predictable resource URIs and standard HTTP response status codes to indicate errors. The API accepts and returns JSON in the HTTP body. We use standard HTTP methods and authentication which are understood by almost any off-the-shelf HTTP client. We support cross-origin resource sharing, allowing you to interact directly with our API from a client-side web application deployed to its own domain. Mind API uses WebSockets to keep all the parts of your application in sync (they also help tracking the presence of participants).

See it in action

To demonstrate what you can do with Mind API we have developed a simple web-application for video conferencing. It allows you to create a media room where up to 5 participants can communicate using voice, video and text messages. The room is automatically destroyed in 15 minutes after creation. Try it yourself.

Get application ID and token

To use Mind API you will need an application ID and a token. For development purpose we suggest you to start with our free shared application ID 00e1db72-c57d-478c-88be-3533d43c8b34 and corresponding token:

W1VJggwnvg2ldDdvSYES07tpLCWLDlD5nFakVJ6QSCPiZRpAMGyAzKW07OpM1IpceZ2WT5h5Mu7Ekt7WDTQzMUoQkVTRE4NdYUFE

They allow creating unlimited number of conferences with up to 5 participants and up to 15 minutes duration each. These limits should be enough for you to start developing your application. To get an application ID and a token without such limits, please fill out a form here.

Authentication

Authentication is performed using bearer HTTP authentication scheme, thereby all HTTP requests to Mind API must include an access token which must be sent in the Authorization HTTP request header:

Authorization: Bearer <token>

If the client is unable to set the headers (which is the case for Javascript WebSocket API), the token can be sent as a value of access_token HTTP request parameter. Any request without a valid token will return 401 - Unauthorized HTTP response status code.

There are two types of accesss tokens: application token and participant token. Application token is requested together with the application ID. Application token gives anyone who is using it a full access to Mind API on behalf of corresponding application. This type of token is required to create and delete conferences, it is intended to be used on server-side code only and should never be exposed in public, i.e. never share your application token in publicly accessible areas such GitHub, client-side code, and so forth.

Participant token is generated whenever your create a new participant in the conference. It can't be used for conference creation or deletion (like application token), but it gives an ability to act on behalf of the corresponding participant, and is intended to be passed to (and used on) a client-side code. Every participant token is tied to a single conference. It invalidates if conference ends or if the participant was expelled from the conference.

Errors

Mind API uses conventional HTTP response status codes to indicate whether a specific API request has been completed successfully of failed. In general, 200 indicates success, 4xx indicate a failure due to supplied parameters, and 500 indicates an error on the server-side.

Status Code Description
200 - OK The request was successful and the value (if there is any) was returned.
400 - Bad Request A required attribute of the request is missing or has an invalid value.
401 - Unauthorized No valid token was provided.
403 - Forbidden The request is not allowed, e.g. an attendee participant is not allowed to delete a conference.
404 - Not Found The requested resource doesn't exist.
415 - Unsupported Media Type Unsupported media type was specified in the `Content-Type` HTTP request header.
500 - Server Error Something went wrong on the server-side.

WebSockets

Mind API uses WebSockets to notify applications of all changes in conferences. To start receiving notifications related to a confernce, the server-side of your application should open a WebSocket using the following URI:

wss://api.mind.com/<applicationId>/<conferenceId>

WebSocket opening request requires an application token. Every WebSocket connection is tied to only one conference. In order to receive notifications for multiple conferences, your application has to open multiple WebSockets — one for every conference. The application cannot open multiple WebSockets for the same conference — opening of a new WebSocket would lead to closing of the old one with 4001 code.

A separate notification is sent for every change in the conference. Notifications are sent only for changed made by participants or Mind API iself (i.e. no notification is sent for a change made by the application itself). Each notification is a JSON with three attributes: type, location and resource. The type attribute can have one of the following values: created, updated and deleted. They correspond to creation of a new resource, modification and deletion of the existent one, respectively. The location attribute contains an URI of the affected resource. The URI is relative to the conference, / URI means the conference itself. The resource attribute stores an initial or a new value of the created or updated resource, respectively. Here is an example of the notification which is sent when a new participant is created:

{
    "type": "created",
    "location": "/participants/24300bf9-d9f2-4bbf-9719-8660d110bc63",
    "resource": {
        "id": "24300bf9-d9f2-4bbf-9719-8660d110bc63",
        "online": false,
        "name": "John Doe",
        "role": "speaker",
        "media": {
            "audio": false,
            "video": false
        },
        "secondaryMedia": {
            "audio": false,
            "video": false
        }
    }
}

Normally the application should close each opened WebSocket on its own before the deletion of the conference, but WebSockets can also be closed at the initiative of the Mind API if the conference duration exceeds 24 hours limit. In such case the WebSocket is closed with 4000 code.

Conference

Create conference

Creates a new conference with the specified parameters. Only an application is permitted to create new conferences.

path Parameters
applicationId
required
string <uuid>
Example: 00e1db72-c57d-478c-88be-3533d43c8b34

The ID of an application

Request Body schema: application/json
name
string
Default: "​"
layout
string
Default: "mosaic"
Enum: "mosaic" "selector" "presenting_mosaic" "presenting_selector"
recordingLayout
string
Deprecated
Enum: "mosaic" "selector" "presenting_mosaic" "presenting_selector"

Responses

200
Response Schema: application/json
id
string <uuid>
name
string
layout
string
Enum: "mosaic" "selector" "presenting_mosaic" "presenting_selector"
recording
object (ConferenceRecording)
endingAt
integer <int64>
post /{applicationId}
https://api.mind.com/{applicationId}

Request samples

Content type
application/json
Copy
Expand all Collapse all
{
  • "name": "Meeting name",
  • "layout": "mosaic"
}

Response samples

Content type
application/json
Copy
Expand all Collapse all
{
  • "id": "1cf69ae4-4c54-47cf-b409-97e88f62fe12",
  • "name": "Meeting name",
  • "layout": "mosaic",
  • "recording":
    {
    },
  • "endingAt": 1663792395
}

Get conference

Returns a conference with the specified ID. If detailed query parameter is set to true then the conference will include a list of all participants and might include a list of all streamings — the latter is included only if the conference is requested by the application. The lists are ordered according to the same rules which apply for listing participants and listing streamings, respectively. If detailed parameter is omitted or explicitly set to false then the conference will contain neither participants nor streamings lists. The conference is permitted to be got either by the application which has created it or by any participant who belongs to the conference.

path Parameters
applicationId
required
string <uuid>
Example: 00e1db72-c57d-478c-88be-3533d43c8b34

The ID of an application

conferenceId
required
string <uuid>
Example: 1cf69ae4-4c54-47cf-b409-97e88f62fe12

The ID of a conference

query Parameters
detailed
boolean
Default: false

Specifies if returned conference should include all the details or not

Responses

200
Response Schema: application/json
id
string <uuid>
name
string
layout
string
Enum: "mosaic" "selector" "presenting_mosaic" "presenting_selector"
recording
object (ConferenceRecording)
endingAt
integer <int64>
participants
Array of objects (Participant) Nullable

Included only if detailed query parameter is true

streamings
Array of objects (Streaming) Nullable

Included only if detailed query parameter is true and if the conference is requested by the application

get /{applicationId}/{conferenceId}
https://api.mind.com/{applicationId}/{conferenceId}

Response samples

Content type
application/json
Copy
Expand all Collapse all
{
  • "id": "1cf69ae4-4c54-47cf-b409-97e88f62fe12",
  • "name": "Meeting name",
  • "layout": "mosaic",
  • "recording":
    {
    },
  • "endingAt": 1663792395,
  • "participants":
    [
    ],
  • "streamings":
    [
    ]
}

Delete conference

Deletes a conference with the specified ID. The deletion assumes expelling of all the participants and deleting all the data tied with the conference. Only the application which has created the conference is permitted to delete it.

path Parameters
applicationId
required
string <uuid>
Example: 00e1db72-c57d-478c-88be-3533d43c8b34

The ID of an application

conferenceId
required
string <uuid>
Example: 1cf69ae4-4c54-47cf-b409-97e88f62fe12

The ID of a conference

Responses

200
delete /{applicationId}/{conferenceId}
https://api.mind.com/{applicationId}/{conferenceId}

Modify conference parameters

Modifies parameters of a conference with the specified ID. All parameters of the conference is permitted to be modified either by the application which has created it or by any moderator who belongs to the conference.

path Parameters
applicationId
required
string <uuid>
Example: 00e1db72-c57d-478c-88be-3533d43c8b34

The ID of an application

conferenceId
required
string <uuid>
Example: 1cf69ae4-4c54-47cf-b409-97e88f62fe12

The ID of a conference

Request Body schema: application/json
name
string Nullable

Responses

200
Response Schema: application/json
id
string <uuid>
name
string
layout
string
Enum: "mosaic" "selector" "presenting_mosaic" "presenting_selector"
recording
object (ConferenceRecording)
endingAt
integer <int64>
patch /{applicationId}/{conferenceId}
https://api.mind.com/{applicationId}/{conferenceId}

Request samples

Content type
application/json
Copy
Expand all Collapse all
{
  • "name": "Modified meeting name"
}

Response samples

Content type
application/json
Copy
Expand all Collapse all
{
  • "id": "1cf69ae4-4c54-47cf-b409-97e88f62fe12",
  • "name": "Meeting name",
  • "layout": "mosaic",
  • "recording":
    {
    },
  • "endingAt": 1663792395
}

Get recording

Returns the recording of a conference with the specified ID. The recording is returned as either MP4 or JPEG file (depending on the value of Accept HTTP request header). The MP4 file contains the entire recording (i.e. audio and video), whereas JPEG file — only one meaningful video frame of the recording (aka a thumbnail). The recording is permitted to be got either by the application which has created the conference or by any moderator who belongs to the conference.

path Parameters
applicationId
required
string <uuid>
Example: 00e1db72-c57d-478c-88be-3533d43c8b34

The ID of an application

conferenceId
required
string <uuid>
Example: 1cf69ae4-4c54-47cf-b409-97e88f62fe12

The ID of a conference

Responses

200
Response Schema:
string <binary>
get /{applicationId}/{conferenceId}/recording
https://api.mind.com/{applicationId}/{conferenceId}/recording

Get recording preview

Returns the preview of the recording. The preview is returned as a WebP file that contains the most meaningful frames of the recording on top of each other. The resolution of each frame is one-sixteenth (by area) of resolution of the recording. The preview is permitted to be got either by the application which has created the conference or by any moderator who belongs to the conference.

path Parameters
applicationId
required
string <uuid>
Example: 00e1db72-c57d-478c-88be-3533d43c8b34

The ID of an application

conferenceId
required
string <uuid>
Example: 1cf69ae4-4c54-47cf-b409-97e88f62fe12

The ID of a conference

Responses

200
Response Schema: image/webp
string <binary>
get /{applicationId}/{conferenceId}/recording/preview
https://api.mind.com/{applicationId}/{conferenceId}/recording/preview

Start recording

Starts or resumes recording of a conference. The recording is permitted to be started or resumed either by the application which has created the conference or by any moderator who belongs to the conference.

path Parameters
applicationId
required
string <uuid>
Example: 00e1db72-c57d-478c-88be-3533d43c8b34

The ID of an application

conferenceId
required
string <uuid>
Example: 1cf69ae4-4c54-47cf-b409-97e88f62fe12

The ID of a conference

Responses

200
post /{applicationId}/{conferenceId}/recording/start
https://api.mind.com/{applicationId}/{conferenceId}/recording/start

Stop recording

Stops or pauses recording of a conference. The recording is permitted to be stopped or paused either by the application which has created the conference or by any moderator who belongs to the conference.

path Parameters
applicationId
required
string <uuid>
Example: 00e1db72-c57d-478c-88be-3533d43c8b34

The ID of an application

conferenceId
required
string <uuid>
Example: 1cf69ae4-4c54-47cf-b409-97e88f62fe12

The ID of a conference

Responses

200
post /{applicationId}/{conferenceId}/recording/stop
https://api.mind.com/{applicationId}/{conferenceId}/recording/stop

Get recording transcription

Returns the transcription of the recording. The transcription is returned as an array of timestamped and authored utterances. The transcription is always a little behind the recording, that is why you can get a partial transcription (with 206 - Partial Content HTTP response code) if the transcription was requested while the recording was still in progress or has been completed recently. If the recording is stopped and transcribing is completed, you will get the full transcription (with 200 - OK HTTP response code). The transcription is permitted to be got either by the application which has created the conference or by any moderator who belongs to the conference.

path Parameters
applicationId
required
string <uuid>
Example: 00e1db72-c57d-478c-88be-3533d43c8b34

The ID of an application

conferenceId
required
string <uuid>
Example: 1cf69ae4-4c54-47cf-b409-97e88f62fe12

The ID of a conference

Responses

200
Response Schema: application/json
Array
timestamp
integer <int64>
participantId
string <uuid>
text
string
206
Response Schema: application/json
Array
timestamp
integer <int64>
participantId
string <uuid>
text
string
get /{applicationId}/{conferenceId}/recording/transcription
https://api.mind.com/{applicationId}/{conferenceId}/recording/transcription

Response samples

Content type
application/json
Copy
Expand all Collapse all
[
  • {
    }
]

Message

Send message

Sends a message to a conference (i.e. to all participant of the conference) or to a specific participant or to the application. A message is permitted to be sent either by the application which has created the conference or by any participant which belongs to the conference.

path Parameters
applicationId
required
string <uuid>
Example: 00e1db72-c57d-478c-88be-3533d43c8b34

The ID of an application

conferenceId
required
string <uuid>
Example: 1cf69ae4-4c54-47cf-b409-97e88f62fe12

The ID of a conference

Request Body schema: application/json
sendTo
required
string <uuid>

The addressee of the message. It can be the ID of a participant or the ID of the application or (if you want to send the message to the application and to all participants at once) the ID of the conference

text
required
string

Responses

200
Response Schema: application/json
id
string <uuid>
sentTo
string <uuid>
sentBy
string <uuid>
sentAt
string <date-time>
text
string
post /{applicationId}/{conferenceId}/messages
https://api.mind.com/{applicationId}/{conferenceId}/messages

Request samples

Content type
application/json
Copy
Expand all Collapse all
{
  • "sendTo": "1cf69ae4-4c54-47cf-b409-97e88f62fe12",
  • "text": "Message text"
}

Response samples

Content type
application/json
Copy
Expand all Collapse all
{
  • "id": "3f09f6e0-3712-4485-9edf-7af1807b3617",
  • "sentTo": "1cf69ae4-4c54-47cf-b409-97e88f62fe12",
  • "sentBy": "24300bf9-d9f2-4bbf-9719-8660d110bc63",
  • "sentAt": 1516883710000,
  • "text": "Message text"
}

Participant

Get all participants

Returns a list of all participants in the conference. The participants are returned in no particular order and there is no guarantee that the order will remain constant over time, but if the list is requested by a participant then it is guaranteed that this participant takes the first place in the list. The list of participants is permitted to be got either by the application which has created the conference or by any participant who belongs to the same conference.

path Parameters
applicationId
required
string <uuid>
Example: 00e1db72-c57d-478c-88be-3533d43c8b34

The ID of an application

conferenceId
required
string <uuid>
Example: 1cf69ae4-4c54-47cf-b409-97e88f62fe12

The ID of a conference

Responses

200
Response Schema: application/json
Array
id
string <uuid>
online
boolean
name
string
priority
number <double>
role
string
Enum: "moderator" "presenter" "speaker" "attendee"
layout
string
Enum: "mosaic" "selector" "presenting_mosaic" "presenting_selector"
media
object (Media)
secondaryMedia
object (Media)
get /{applicationId}/{conferenceId}/participants
https://api.mind.com/{applicationId}/{conferenceId}/participants

Response samples

Content type
application/json
Copy
Expand all Collapse all
[
  • {
    }
]

Create participant

Creates a new participant with the specified parameters. Only the application which has created the conference is permitted to create new participants in it.

path Parameters
applicationId
required
string <uuid>
Example: 00e1db72-c57d-478c-88be-3533d43c8b34

The ID of an application

conferenceId
required
string <uuid>
Example: 1cf69ae4-4c54-47cf-b409-97e88f62fe12

The ID of a conference

Request Body schema: application/json
name
string
Default: "​"
priority
number <double> >= 0
role
string
Default: "speaker"
Enum: "moderator" "presenter" "speaker" "attendee"
layout
string
Deprecated
Default: "Equals to the layout of the conference"
Enum: "mosaic" "selector" "presenting_mosaic" "presenting_selector"

Responses

200
Response Schema: application/json
id
string <uuid>
online
boolean
name
string
priority
number <double>
role
string
Enum: "moderator" "presenter" "speaker" "attendee"
layout
string
Enum: "mosaic" "selector" "presenting_mosaic" "presenting_selector"
media
object (Media)
secondaryMedia
object (Media)
token
string
post /{applicationId}/{conferenceId}/participants
https://api.mind.com/{applicationId}/{conferenceId}/participants

Request samples

Content type
application/json
Copy
Expand all Collapse all
{
  • "name": "John Doe",
  • "priority": 1,
  • "role": "speaker",
  • "layout": "mosaic"
}

Response samples

Content type
application/json
Copy
Expand all Collapse all
{
  • "id": "24300bf9-d9f2-4bbf-9719-8660d110bc63",
  • "token": "MwQU3BU3GohRrPaqYMdbt3Bh9WBtHuKh5mNEohh5CrDDMSQCkonr3mlnMRaFGIZ4wVxk81CMY26CE7EPbX88LpNT7pWZm2fCEc4m",
  • "online": false,
  • "name": "John Doe",
  • "priority": 1,
  • "role": "speaker",
  • "layout": "mosaic",
  • "media":
    {
    },
  • "secondaryMedia":
    {
    }
}

Delete all participants

Deletes all participants in a conference. Only the application which has created the conference is permitted to delete all participants in it.

path Parameters
applicationId
required
string <uuid>
Example: 00e1db72-c57d-478c-88be-3533d43c8b34

The ID of an application

conferenceId
required
string <uuid>
Example: 1cf69ae4-4c54-47cf-b409-97e88f62fe12

The ID of a conference

Responses

200
delete /{applicationId}/{conferenceId}/participants
https://api.mind.com/{applicationId}/{conferenceId}/participants

Get participant

Returns a participant with the specified ID. The participant is permitted to be got either by the application which has created it or by any participant which belongs to the same conference.

path Parameters
applicationId
required
string <uuid>
Example: 00e1db72-c57d-478c-88be-3533d43c8b34

The ID of an application

conferenceId
required
string <uuid>
Example: 1cf69ae4-4c54-47cf-b409-97e88f62fe12

The ID of a conference

participantId
required
string <uuid>
Example: 24300bf9-d9f2-4bbf-9719-8660d110bc63

The ID of a participant

Responses

200
Response Schema: application/json
id
string <uuid>
online
boolean
name
string
priority
number <double>
role
string
Enum: "moderator" "presenter" "speaker" "attendee"
layout
string
Enum: "mosaic" "selector" "presenting_mosaic" "presenting_selector"
media
object (Media)
secondaryMedia
object (Media)
get /{applicationId}/{conferenceId}/participants/{participantId}
https://api.mind.com/{applicationId}/{conferenceId}/participants/{participantId}

Response samples

Content type
application/json
Copy
Expand all Collapse all
{
  • "id": "24300bf9-d9f2-4bbf-9719-8660d110bc63",
  • "online": true,
  • "name": "John Doe",
  • "priority": 1,
  • "role": "speaker",
  • "layout": "mosaic",
  • "media":
    {
    },
  • "secondaryMedia":
    {
    }
}

Initiate incoming participant session

Initiate or reinitiate incoming WebRTC session for a participant. If the session for the participant has been already initiated and the new SDP is compatible with the old one, the session will be reinitiated. Otherwise the new session will be initiated and it will substitute the old one. Any participant (and only the participant itself) despite of its role is permitted to (re)initiate its session.

The session is used for tracking the presence of the participant, for notifying the participant about changes in the conference made by the application and other participant, for sending the primary and the secondary media of the participant, for receiving the primary and the secondary media of other participants and the media of the conference.

Any participant is permitted to send its primary and secondary media, but the primary media would appear in the conference media and the recording only if the role of the participant is either `moderator`, `presenter` or `speaker`, and the secondary would appear in the conference media and the recording only if the role of the participant is either `moderator` or `presenter`.

Any participant is permitted to receive the primary and the secondary media of other participants who belong to the same conference and the media of the conference itself.

path Parameters
applicationId
required
string <uuid>
Example: 00e1db72-c57d-478c-88be-3533d43c8b34

The ID of an application

conferenceId
required
string <uuid>
Example: 1cf69ae4-4c54-47cf-b409-97e88f62fe12

The ID of a conference

participantId
required
string <uuid>
Example: 24300bf9-d9f2-4bbf-9719-8660d110bc63

The ID of a participant

Request Body schema: application/json
sdp
string

Responses

200
Response Schema: application/json
sdp
string
post /{applicationId}/{conferenceId}/participants/{participantId}
https://api.mind.com/{applicationId}/{conferenceId}/participants/{participantId}

Request samples

Content type
application/json
Copy
Expand all Collapse all
{
  • "sdp": "v=0\no=- 435746465422294 1 IN IP4 0.0.0.0\ns=-\nt=0 0\na=group:BUNDLE audio video\na=msid-semantic:WMS 805e4df9-3e77-43c3-ae3c-b241023bd3ee\na=ice-options:trickle\nm=audio 9 UDP/TLS/RTP/SAVPF 111\nc=IN IP4 0.0.0.0\na=mid:audio\na=msid:805e4df9-3e77-43c3-ae3c-b241023bd3ee d1792305-16a4-4558-8b7b-869bdb50c70f\na=rtcp:9 IN IP4 0.0.0.0\na=rtcp-mux\na=sendrecv\na=rtpmap:111 opus/48000/2\na=fmtp:111 minptime=10;useinbandfec=1\na=ssrc:1144085914 cname:Ird0ziC5R1aJNIFbYoWBuw\na=ice-ufrag:XR2q\na=ice-pwd:d0+3J62t/LQw5zKDqoWOPnkX\na=ice-options:trickle\na=fingerprint:sha-256 8B:47:3A:61:FE:78:E3:73:E9:BE:5D:8B:4A:22:15:0B:81:EE:20:18:72:A1:BB:0C:B1:51:7D:40:59:31:0A:A2\na=setup:active\nm=video 9 UDP/TLS/RTP/SAVPF 96 108 124\nc=IN IP4 0.0.0.0\na=mid:video\na=msid:805e4df9-3e77-43c3-ae3c-b241023bd3ee a5615fa7-aae3-4e9f-b4ee-b1d4af40199e\na=rtcp:9 IN IP4 0.0.0.0\na=rtcp-mux\na=rtcp-rsize\na=sendrecv\na=rtpmap:96 VP8/90000\na=rtpmap:108 red/90000\na=rtpmap:124 ulpfec/90000\na=extmap:2 urn:ietf:params:rtp-hdrext:toffset\na=extmap:3 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time\na=rtcp-fb:96 ccm fir\na=rtcp-fb:96 nack\na=rtcp-fb:96 nack pli\na=rtcp-fb:96 goog-remb\na=ssrc:3074292572 cname:Ird0ziC5R1aJNIFbYoWBuw\na=ice-ufrag:XR2q\na=ice-pwd:d0+3J62t/LQw5zKDqoWOPnkX\na=ice-options:trickle\na=fingerprint:sha-256 8B:47:3A:61:FE:78:E3:73:E9:BE:5D:8B:4A:22:15:0B:81:EE:20:18:72:A1:BB:0C:B1:51:7D:40:59:31:0A:A2\na=setup:active\n"
}

Response samples

Content type
application/json
Copy
Expand all Collapse all
{
  • "sdp": "v=0\no=- 435746465422294 1 IN IP4 0.0.0.0\ns=-\nt=0 0\na=group:BUNDLE audio video\na=msid-semantic:WMS 805e4df9-3e77-43c3-ae3c-b241023bd3ee\na=ice-options:trickle\nm=audio 9 UDP/TLS/RTP/SAVPF 111\nc=IN IP4 0.0.0.0\na=mid:audio\na=msid:805e4df9-3e77-43c3-ae3c-b241023bd3ee d1792305-16a4-4558-8b7b-869bdb50c70f\na=rtcp:9 IN IP4 0.0.0.0\na=rtcp-mux\na=sendrecv\na=rtpmap:111 opus/48000/2\na=fmtp:111 minptime=10;useinbandfec=1\na=ssrc:1144085914 cname:Ird0ziC5R1aJNIFbYoWBuw\na=ice-ufrag:XR2q\na=ice-pwd:d0+3J62t/LQw5zKDqoWOPnkX\na=ice-options:trickle\na=fingerprint:sha-256 8B:47:3A:61:FE:78:E3:73:E9:BE:5D:8B:4A:22:15:0B:81:EE:20:18:72:A1:BB:0C:B1:51:7D:40:59:31:0A:A2\na=setup:active\nm=video 9 UDP/TLS/RTP/SAVPF 96 108 124\nc=IN IP4 0.0.0.0\na=mid:video\na=msid:805e4df9-3e77-43c3-ae3c-b241023bd3ee a5615fa7-aae3-4e9f-b4ee-b1d4af40199e\na=rtcp:9 IN IP4 0.0.0.0\na=rtcp-mux\na=rtcp-rsize\na=sendrecv\na=rtpmap:96 VP8/90000\na=rtpmap:108 red/90000\na=rtpmap:124 ulpfec/90000\na=extmap:2 urn:ietf:params:rtp-hdrext:toffset\na=extmap:3 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time\na=rtcp-fb:96 ccm fir\na=rtcp-fb:96 nack\na=rtcp-fb:96 nack pli\na=rtcp-fb:96 goog-remb\na=ssrc:3074292572 cname:Ird0ziC5R1aJNIFbYoWBuw\na=ice-ufrag:XR2q\na=ice-pwd:d0+3J62t/LQw5zKDqoWOPnkX\na=ice-options:trickle\na=fingerprint:sha-256 8B:47:3A:61:FE:78:E3:73:E9:BE:5D:8B:4A:22:15:0B:81:EE:20:18:72:A1:BB:0C:B1:51:7D:40:59:31:0A:A2\na=setup:active\n"
}

Delete participant

Deletes a participant with the specified ID. Only the application which has created the participant is permitted to delete it.

path Parameters
applicationId
required
string <uuid>
Example: 00e1db72-c57d-478c-88be-3533d43c8b34

The ID of an application

conferenceId
required
string <uuid>
Example: 1cf69ae4-4c54-47cf-b409-97e88f62fe12

The ID of a conference

participantId
required
string <uuid>
Example: 24300bf9-d9f2-4bbf-9719-8660d110bc63

The ID of a participant

Responses

200
delete /{applicationId}/{conferenceId}/participants/{participantId}
https://api.mind.com/{applicationId}/{conferenceId}/participants/{participantId}

Modify participant parameters

Modifies parameters of a participant with the specified ID. All parameters of the participant is permitted to be modified either by the application which has created it or by any moderator who belongs to the same conference. All other participants from the same conference can only modify self name and layout.

path Parameters
applicationId
required
string <uuid>
Example: 00e1db72-c57d-478c-88be-3533d43c8b34

The ID of an application

conferenceId
required
string <uuid>
Example: 1cf69ae4-4c54-47cf-b409-97e88f62fe12

The ID of a conference

participantId
required
string <uuid>
Example: 24300bf9-d9f2-4bbf-9719-8660d110bc63

The ID of a participant

Request Body schema: application/json
name
string Nullable
priority
number <double> Nullable
role
string Nullable
Enum: "moderator" "presenter" "speaker" "attendee"
layout
string Nullable
Deprecated
Enum: "mosaic" "selector" "presenting_mosaic" "presenting_selector"

Responses

200
Response Schema: application/json
id
string <uuid>
online
boolean
name
string
priority
number <double>
role
string
Enum: "moderator" "presenter" "speaker" "attendee"
layout
string
Enum: "mosaic" "selector" "presenting_mosaic" "presenting_selector"
media
object (Media)
secondaryMedia
object (Media)
patch /{applicationId}/{conferenceId}/participants/{participantId}
https://api.mind.com/{applicationId}/{conferenceId}/participants/{participantId}

Request samples

Content type
application/json
Copy
Expand all Collapse all
{
  • "name": "John Roe",
  • "priority": 1,
  • "role": "speaker",
  • "layout": "selector"
}

Response samples

Content type
application/json
Copy
Expand all Collapse all
{
  • "id": "24300bf9-d9f2-4bbf-9719-8660d110bc63",
  • "online": true,
  • "name": "John Doe",
  • "priority": 1,
  • "role": "speaker",
  • "layout": "mosaic",
  • "media":
    {
    },
  • "secondaryMedia":
    {
    }
}

Dial out to participant using SIP

Dials out to a participant using specified SIP URI. The dialing out is permitted to be initiated either by the application which has created the participant or by any moderator who belongs to the same conference.

path Parameters
applicationId
required
string <uuid>
Example: 00e1db72-c57d-478c-88be-3533d43c8b34

The ID of an application

conferenceId
required
string <uuid>
Example: 1cf69ae4-4c54-47cf-b409-97e88f62fe12

The ID of a conference

participantId
required
string <uuid>
Example: 24300bf9-d9f2-4bbf-9719-8660d110bc63

The ID of a participant

Request Body schema: application/json
from
required
string

The URI and optionally the display name of the caller

to
required
string

The URI and optionally the display name of the callee

proxy
string

The URI of a SIP-proxy which the call should be routed through

timeout
integer <int32> [ 5 .. 30 ]
Default: 30

The maximum number of seconds to wait for an answer

Responses

200
Response Schema: application/json
status
string
Enum: "answered" "declined" "interrupted" "unavailable" "busy" "timeout" "error"
post /{applicationId}/{conferenceId}/participants/{participantId}/call
https://api.mind.com/{applicationId}/{conferenceId}/participants/{participantId}/call

Request samples

Content type
application/json
Copy
Expand all Collapse all
{
  • "from": "John Doe <sip:johndoe@example.com:5060>",
  • "to": "Jane Doe <sip:janedoe@example.com:5060>",
  • "proxy": "sip:example.com:5060",
  • "timeout": "15"
}

Response samples

Content type
application/json
Copy
Expand all Collapse all
{
  • "status": "answered"
}

Forward SIP call with participant

Forward the current SIP call with a participant to the specified SIP URI. The call is permitted to be forwarded either by the application which has created the participant or by any moderator who belongs to the same conference.

path Parameters
applicationId
required
string <uuid>
Example: 00e1db72-c57d-478c-88be-3533d43c8b34

The ID of an application

conferenceId
required
string <uuid>
Example: 1cf69ae4-4c54-47cf-b409-97e88f62fe12

The ID of a conference

participantId
required
string <uuid>
Example: 24300bf9-d9f2-4bbf-9719-8660d110bc63

The ID of a participant

Request Body schema: application/json
destination
required
string

The SIP URI where the call should be forwarded to

Responses

200
post /{applicationId}/{conferenceId}/participants/{participantId}/forward
https://api.mind.com/{applicationId}/{conferenceId}/participants/{participantId}/forward

Request samples

Content type
application/json
Copy
Expand all Collapse all
{
  • "destination": "sip:example.com:5060"
}

Hang up SIP call with participant

Hangs up the current SIP call with a participant. This operation hangs up the call on any stage, i.e. whether it has been already answered or not. If there is no call with the participant at the moment, the operation does nothing. The call is permitted to be terminated either by the application which has created the participant or by any moderator which belongs to the same conference.

path Parameters
applicationId
required
string <uuid>
Example: 00e1db72-c57d-478c-88be-3533d43c8b34

The ID of an application

conferenceId
required
string <uuid>
Example: 1cf69ae4-4c54-47cf-b409-97e88f62fe12

The ID of a conference

participantId
required
string <uuid>
Example: 24300bf9-d9f2-4bbf-9719-8660d110bc63

The ID of a participant

Responses

200
post /{applicationId}/{conferenceId}/participants/{participantId}/hangup
https://api.mind.com/{applicationId}/{conferenceId}/participants/{participantId}/hangup

Streaming

Get all streamings

Returns a list of all streamings of the conference. The streamings are returned in no particular order and there is no guarantee that the order will remain constant over time. Only the application which has created the conference is permitted to get the list of streamings of it.

path Parameters
applicationId
required
string <uuid>
Example: 00e1db72-c57d-478c-88be-3533d43c8b34

The ID of an application

conferenceId
required
string <uuid>
Example: 1cf69ae4-4c54-47cf-b409-97e88f62fe12

The ID of a conference

Responses

200
Response Schema: application/json
Array
id
string <uuid>

The ID of the streaming

url
string <url>

The destination RTMP(S) URL

alive
boolean

The state of the streaming

get /{applicationId}/{conferenceId}/streamings
https://api.mind.com/{applicationId}/{conferenceId}/streamings

Response samples

Content type
application/json
Copy
Expand all Collapse all
[
  • {
    }
]

Create streaming

Creates a streaming with the specified parameters. Only the application which has created the conference is permitted to create streamings of it.

path Parameters
applicationId
required
string <uuid>
Example: 00e1db72-c57d-478c-88be-3533d43c8b34

The ID of an application

conferenceId
required
string <uuid>
Example: 1cf69ae4-4c54-47cf-b409-97e88f62fe12

The ID of a conference

Request Body schema: application/json
url
required
string <url>

The destination RTMP(S) URL

Responses

200
Response Schema: application/json
id
string <uuid>

The ID of the streaming

url
string <url>

The destination RTMP(S) URL

alive
boolean

The state of the streaming

post /{applicationId}/{conferenceId}/streamings
https://api.mind.com/{applicationId}/{conferenceId}/streamings

Request samples

Content type
application/json
Copy
Expand all Collapse all
{
  • "url": "rtmps://a.rtmps.youtube.com/live2/abcd-efgh-ijkl-mnop-qrst"
}

Response samples

Content type
application/json
Copy
Expand all Collapse all
{
  • "id": "3eb26018-7147-4762-a01c-967c1d2522ab",
  • "url": "rtmps://a.rtmps.youtube.com/live2/abcd-efgh-ijkl-mnop-qrst",
  • "alive": true
}

Delete all streamings

Deletes all streamings of the conference. Only the application which has created the conference is permitted to delete all streamings of it.

path Parameters
applicationId
required
string <uuid>
Example: 00e1db72-c57d-478c-88be-3533d43c8b34

The ID of an application

conferenceId
required
string <uuid>
Example: 1cf69ae4-4c54-47cf-b409-97e88f62fe12

The ID of a conference

Responses

200
delete /{applicationId}/{conferenceId}/streamings
https://api.mind.com/{applicationId}/{conferenceId}/streamings

Get streaming

Returns a streaming with the specified ID. Only the application which has created the conference is permitted to get the streaming of it.

path Parameters
applicationId
required
string <uuid>
Example: 00e1db72-c57d-478c-88be-3533d43c8b34

The ID of an application

conferenceId
required
string <uuid>
Example: 1cf69ae4-4c54-47cf-b409-97e88f62fe12

The ID of a conference

streamingId
required
string <uuid>
Example: 3eb26018-7147-4762-a01c-967c1d2522ab

The ID of a streaming

Responses

200
Response Schema: application/json
id
string <uuid>

The ID of the streaming

url
string <url>

The destination RTMP(S) URL

alive
boolean

The state of the streaming

get /{applicationId}/{conferenceId}/streamings/{streamingId}
https://api.mind.com/{applicationId}/{conferenceId}/streamings/{streamingId}

Response samples

Content type
application/json
Copy
Expand all Collapse all
{
  • "id": "3eb26018-7147-4762-a01c-967c1d2522ab",
  • "url": "rtmps://a.rtmps.youtube.com/live2/abcd-efgh-ijkl-mnop-qrst",
  • "alive": true
}

Delete streaming

Deletes a streaming with the specified ID. Only the application which has created the streaming is permitted to delete it.

path Parameters
applicationId
required
string <uuid>
Example: 00e1db72-c57d-478c-88be-3533d43c8b34

The ID of an application

conferenceId
required
string <uuid>
Example: 1cf69ae4-4c54-47cf-b409-97e88f62fe12

The ID of a conference

streamingId
required
string <uuid>
Example: 3eb26018-7147-4762-a01c-967c1d2522ab

The ID of a streaming

Responses

200
delete /{applicationId}/{conferenceId}/streamings/{streamingId}
https://api.mind.com/{applicationId}/{conferenceId}/streamings/{streamingId}