startMeeting
curl --request POST \
--url https://connvo-dev.convex.cloud/api/run/meetings/lifecycle/startMeeting \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"args": {
"meetingId": "meeting_123example"
}
}
'import requests
url = "https://connvo-dev.convex.cloud/api/run/meetings/lifecycle/startMeeting"
payload = { "args": { "meetingId": "meeting_123example" } }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({args: {meetingId: 'meeting_123example'}})
};
fetch('https://connvo-dev.convex.cloud/api/run/meetings/lifecycle/startMeeting', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://connvo-dev.convex.cloud/api/run/meetings/lifecycle/startMeeting",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'args' => [
'meetingId' => 'meeting_123example'
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://connvo-dev.convex.cloud/api/run/meetings/lifecycle/startMeeting"
payload := strings.NewReader("{\n \"args\": {\n \"meetingId\": \"meeting_123example\"\n }\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://connvo-dev.convex.cloud/api/run/meetings/lifecycle/startMeeting")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"args\": {\n \"meetingId\": \"meeting_123example\"\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://connvo-dev.convex.cloud/api/run/meetings/lifecycle/startMeeting")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"args\": {\n \"meetingId\": \"meeting_123example\"\n }\n}"
response = http.request(request)
puts response.read_body{
"status": "success",
"errorMessage": "",
"errorData": {},
"value": {
"success": true,
"webrtcReady": true,
"videoProvider": "webrtc",
"roomInfo": {
"iceServers": [
{
"urls": "stun:stun.l.google.com:19302"
},
{
"urls": "stun:stun1.l.google.com:19302"
}
]
}
}
}{}{}Meetings
startMeeting
infrastructure. Supports hybrid architecture: WebRTC for free tier (up to 4 participants) and GetStream for paid tier (up to 100 participants with recording). Only the meeting host can start meetings. Provides ICE server configuration for WebRTC or schedules GetStream room creation. Automatically initializes transcription services.
POST
/
api
/
run
/
meetings
/
lifecycle
/
startMeeting
startMeeting
curl --request POST \
--url https://connvo-dev.convex.cloud/api/run/meetings/lifecycle/startMeeting \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"args": {
"meetingId": "meeting_123example"
}
}
'import requests
url = "https://connvo-dev.convex.cloud/api/run/meetings/lifecycle/startMeeting"
payload = { "args": { "meetingId": "meeting_123example" } }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({args: {meetingId: 'meeting_123example'}})
};
fetch('https://connvo-dev.convex.cloud/api/run/meetings/lifecycle/startMeeting', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://connvo-dev.convex.cloud/api/run/meetings/lifecycle/startMeeting",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'args' => [
'meetingId' => 'meeting_123example'
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://connvo-dev.convex.cloud/api/run/meetings/lifecycle/startMeeting"
payload := strings.NewReader("{\n \"args\": {\n \"meetingId\": \"meeting_123example\"\n }\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://connvo-dev.convex.cloud/api/run/meetings/lifecycle/startMeeting")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"args\": {\n \"meetingId\": \"meeting_123example\"\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://connvo-dev.convex.cloud/api/run/meetings/lifecycle/startMeeting")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"args\": {\n \"meetingId\": \"meeting_123example\"\n }\n}"
response = http.request(request)
puts response.read_body{
"status": "success",
"errorMessage": "",
"errorData": {},
"value": {
"success": true,
"webrtcReady": true,
"videoProvider": "webrtc",
"roomInfo": {
"iceServers": [
{
"urls": "stun:stun.l.google.com:19302"
},
{
"urls": "stun:stun1.l.google.com:19302"
}
]
}
}
}{}{}Authorizations
Standard user authentication token issued via WorkOS. Provide as Authorization: Bearer <user-token>.
Body
application/json
Show child attributes
Show child attributes
⌘I