Skip to main content

Overview

Meetings are active conversation sessions created from scenarios. Creating a meeting returns a meeting room URL and token that can be used to join the conversation.

Looking for meeting analysis?

Analysis endpoints are documented separately.

Create Meeting from Scenario

Create a new meeting using a scenario. This returns a meeting room URL and token that can be used to join the conversation.

Required Parameters

person_name
string
required
Name of the person joining the meeting
scenario_id
integer
required
ID of the scenario to create the meeting from

Optional Parameters

meeting_type
string
Type of meeting. Options: regular, end-user (default: regular)
voice_id
string
Voice ID for the AI persona (e.g., ElevenLabs voice ID like 6MoEUz34rbRrmmyxgRm4)
voice_vendor
string
Voice provider. Options: elevenlabs, azure, cartesia (default: azure)
end_user_id
integer
End user ID (for end-user meetings)
language
string
Language for the meeting session (default: English)
welcome_message
string
Custom welcome message for the AI to use at the start of the meeting

Meeting Controls

These settings control the meeting behavior and participant permissions:
allow_recording
boolean
Enable/disable meeting recording (default: true)
allow_transcription
boolean
Enable/disable live transcription (default: false)
allow_chat
boolean
Enable/disable chat functionality (default: false)
allow_screen_share
boolean
Enable/disable screen sharing (default: false)
allow_participant_video
boolean
Enable/disable participant video (default: false)
allow_participant_audio
boolean
Enable/disable participant audio (default: true)
max_participants
integer
Maximum number of participants allowed (default: null - unlimited)
waiting_room_enabled
boolean
Enable/disable waiting room (default: false)
auto_admit
boolean
Automatically admit participants (default: false)
meeting_duration_minutes
integer
Maximum meeting duration in minutes (default: scenario’s call_duration or 30)

AI Configuration

deep_think
boolean
Enable deep thinking mode for more thoughtful AI responses (default: false)
is_live_llm_service
boolean
Enable live LLM vision service for real-time visual understanding (default: false)
use_gpt_vision
boolean
Use GPT vision capabilities (default: false)
Allow AI to perform web searches during the meeting (default: false)
use_own_keys
boolean
Use your own API keys for AI services (default: false)
curl -X POST https://api.waterrai.com/meetings \
  -H "Authorization: Bearer YOUR_API_SECRET_OR_JWT_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "person_name": "John Doe",
    "scenario_id": 456,
    "meeting_type": "regular",
    "language": "English",
    "meeting_duration_minutes": 35,
    "allow_recording": true,
    "allow_transcription": false,
    "allow_chat": false,
    "allow_screen_share": false,
    "allow_participant_video": false,
    "allow_participant_audio": true,
    "deep_think": false
  }'
{
  "success": true,
  "data": {
    "id": 789,
    "room_url": "https://waterrai.daily.co/abc123",
    "room_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
    "person_name": "John Doe",
    "scenario_id": 456,
    "status": "created",
    "meeting_type": "regular",
    "created_at": "2024-01-15T10:40:00Z"
  },
  "session_minutes_info": {
    "estimatedMinutes": 35,
    "remainingMinutes": 265
  }
}
Use the room_url and room_token to join the meeting. The meeting will be automatically tracked and analyzed after completion.

Create Dynamic Meeting

Create a meeting with dynamic end-user creation. This endpoint creates an end-user on the fly from the payload (if they don’t already exist), creates the meeting, and returns URLs with user ID query parameters. This is ideal for scenarios where you want to programmatically create meetings for users without requiring them to register first.

Required Parameters

scenario_id
integer
required
ID of the scenario to create the meeting from

User Information

person_name
string
Name of the person joining the meeting. If not provided, will be constructed from first_name and last_name.
email
string
Email of the end user. If provided and the user already exists, their existing account will be used. If not provided, an anonymous user is created.
first_name
string
First name of the end user
last_name
string
Last name of the end user

Voice Configuration

voice_id
string
Voice ID for the AI persona (e.g., ElevenLabs voice ID like 6MoEUz34rbRrmmyxgRm4)
voice_vendor
string
Voice provider. Options: elevenlabs, azure, cartesia (default: azure)

Session Settings

language
string
Language for the meeting session (default: English)
welcome_message
string
Custom welcome message for the AI to use at the start of the meeting
user_metadata
object
Optional metadata object to pass to the meeting session. This can include custom data like company info, role, or any contextual information.

Meeting Controls

allow_recording
boolean
Enable/disable meeting recording (default: true)
allow_transcription
boolean
Enable/disable live transcription (default: false)
allow_chat
boolean
Enable/disable chat functionality (default: false)
allow_screen_share
boolean
Enable/disable screen sharing (default: false)
allow_participant_video
boolean
Enable/disable participant video (default: false)
allow_participant_audio
boolean
Enable/disable participant audio (default: true)
max_participants
integer
Maximum number of participants allowed (default: null - unlimited)
waiting_room_enabled
boolean
Enable/disable waiting room (default: false)
auto_admit
boolean
Automatically admit participants (default: false)
meeting_duration_minutes
integer
Maximum meeting duration in minutes (default: scenario’s call_duration or 30)

AI Configuration

deep_think
boolean
Enable deep thinking mode for more thoughtful AI responses (default: false)
is_live_llm_service
boolean
Enable live LLM vision service for real-time visual understanding (default: false)
use_gpt_vision
boolean
Use GPT vision capabilities (default: false)
allow_web_search
boolean
Allow AI to perform web searches during the meeting (default: false)
use_own_keys
boolean
Use your own API keys for AI services (default: false)
curl -X POST https://api.waterrai.com/meetings/create-dynamic-meeting \
  -H "Authorization: Bearer YOUR_API_SECRET_OR_JWT_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "scenario_id": 456,
    "person_name": "Jane Smith",
    "email": "[email protected]",
    "first_name": "Jane",
    "last_name": "Smith",
    "language": "English",
    "meeting_duration_minutes": 35,
    "allow_recording": true,
    "allow_transcription": false,
    "allow_chat": false,
    "allow_screen_share": false,
    "allow_participant_video": false,
    "allow_participant_audio": true,
    "deep_think": false,
    "welcome_message": "Hello! I am ready to help you practice today.",
    "user_metadata": {
      "company": "Acme Inc",
      "role": "Sales Manager"
    }
  }'
{
  "success": true,
  "data": {
    "id": 790,
    "room_url": "https://waterrai.daily.co/xyz789",
    "room_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
    "person_name": "Jane Smith",
    "scenario_id": 456,
    "status": "created",
    "meeting_type": "end-user",
    "scenario": {
      "id": 456,
      "name": "Enterprise Software Objection Handling",
      "type": "roleplay",
      "description": "Overcoming pricing and implementation hurdles with procurement.",
      "scenario_link": "sales-training-101"
    },
    "end_user": {
      "id": 123,
      "first_name": "Jane",
      "last_name": "Smith",
      "email": "[email protected]",
      "membership_id": 456
    }
  },
  "meeting_url": "https://waterrai.daily.co/xyz789?end_user_id=123&membership_id=456",
  "scenario_url": "https://app.waterrai.com/s/sales-training-101?end_user_id=123&membership_id=456",
  "session_minutes_info": {
    "estimatedMinutes": 35,
    "remainingMinutes": 265
  }
}
Key Features:
  • Automatic User Creation: If the email doesn’t exist, a new end-user is created automatically
  • Existing User Lookup: If the email exists, the existing user account is reused
  • Anonymous Users: If no email is provided, an anonymous end-user is created
  • URL with Query Params: Both meeting_url and scenario_url include end_user_id and membership_id as query parameters
Use Cases:
  • Embed scenarios in your app and create meetings for your users without requiring Water AI registration
  • Track individual user sessions with their email for analytics
  • Create anonymous practice sessions when user identity isn’t needed

Get Meeting by ID

Retrieve details of a specific meeting.
id
integer
required
The meeting ID
curl -X GET https://api.waterrai.com/meetings/789 \
  -H "Authorization: Bearer YOUR_API_SECRET_OR_JWT_TOKEN"
{
  "status": "success",
  "data": {
    "id": 789,
    "room_url": "https://waterrai.daily.co/abc123",
    "room_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
    "person_name": "John Doe",
    "scenario_id": 456,
    "meeting_type": "regular",
    "status": "ended",
    "created_at": "2024-01-15T10:40:00Z",
    "updated_at": "2024-01-15T11:10:00Z"
  }
}
Need analysis results? See the separate Analysis API.