Create a new meeting
curl --request POST \
--url https://api.waterr.ai/v1/meetings \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"person_name": "<string>",
"scenario_id": "<string>",
"voice_id": "<string>",
"note_context": "<string>",
"end_user_id": "<string>"
}
'import requests
url = "https://api.waterr.ai/v1/meetings"
payload = {
"person_name": "<string>",
"scenario_id": "<string>",
"voice_id": "<string>",
"note_context": "<string>",
"end_user_id": "<string>"
}
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({
person_name: '<string>',
scenario_id: '<string>',
voice_id: '<string>',
note_context: '<string>',
end_user_id: '<string>'
})
};
fetch('https://api.waterr.ai/v1/meetings', 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://api.waterr.ai/v1/meetings",
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([
'person_name' => '<string>',
'scenario_id' => '<string>',
'voice_id' => '<string>',
'note_context' => '<string>',
'end_user_id' => '<string>'
]),
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://api.waterr.ai/v1/meetings"
payload := strings.NewReader("{\n \"person_name\": \"<string>\",\n \"scenario_id\": \"<string>\",\n \"voice_id\": \"<string>\",\n \"note_context\": \"<string>\",\n \"end_user_id\": \"<string>\"\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://api.waterr.ai/v1/meetings")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"person_name\": \"<string>\",\n \"scenario_id\": \"<string>\",\n \"voice_id\": \"<string>\",\n \"note_context\": \"<string>\",\n \"end_user_id\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.waterr.ai/v1/meetings")
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 \"person_name\": \"<string>\",\n \"scenario_id\": \"<string>\",\n \"voice_id\": \"<string>\",\n \"note_context\": \"<string>\",\n \"end_user_id\": \"<string>\"\n}"
response = http.request(request)
puts response.read_bodyMeetings
Create a new meeting
POST
/
meetings
Create a new meeting
curl --request POST \
--url https://api.waterr.ai/v1/meetings \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"person_name": "<string>",
"scenario_id": "<string>",
"voice_id": "<string>",
"note_context": "<string>",
"end_user_id": "<string>"
}
'import requests
url = "https://api.waterr.ai/v1/meetings"
payload = {
"person_name": "<string>",
"scenario_id": "<string>",
"voice_id": "<string>",
"note_context": "<string>",
"end_user_id": "<string>"
}
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({
person_name: '<string>',
scenario_id: '<string>',
voice_id: '<string>',
note_context: '<string>',
end_user_id: '<string>'
})
};
fetch('https://api.waterr.ai/v1/meetings', 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://api.waterr.ai/v1/meetings",
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([
'person_name' => '<string>',
'scenario_id' => '<string>',
'voice_id' => '<string>',
'note_context' => '<string>',
'end_user_id' => '<string>'
]),
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://api.waterr.ai/v1/meetings"
payload := strings.NewReader("{\n \"person_name\": \"<string>\",\n \"scenario_id\": \"<string>\",\n \"voice_id\": \"<string>\",\n \"note_context\": \"<string>\",\n \"end_user_id\": \"<string>\"\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://api.waterr.ai/v1/meetings")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"person_name\": \"<string>\",\n \"scenario_id\": \"<string>\",\n \"voice_id\": \"<string>\",\n \"note_context\": \"<string>\",\n \"end_user_id\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.waterr.ai/v1/meetings")
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 \"person_name\": \"<string>\",\n \"scenario_id\": \"<string>\",\n \"voice_id\": \"<string>\",\n \"note_context\": \"<string>\",\n \"end_user_id\": \"<string>\"\n}"
response = http.request(request)
puts response.read_bodyAuthorizations
API key from waterr.ai/settings?tab=api-keys. Send as Authorization: Bearer wai_<your_key>.
Body
application/json
Name of the participant joining the session.
UUID of the scenario to use. The scenario must exist or the request is rejected with 404.
Optional override for the persona's voice.
Defaults to "regular".
Available options:
regular, instant Session-specific context injected into the AI prompt without modifying the scenario.
For end-user sessions; pairs the meeting with an existing end_user membership.
Response
Meeting created successfully
⌘I

