> ## Documentation Index
> Fetch the complete documentation index at: https://docs.waterr.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Meetings

> Create a live AI meeting room from a scenario.

A meeting is a live AI conversation session. Creating one spins up a Daily.co video room with your AI persona ready to talk and returns the join URL.

<Tip>
  Every account is auto-seeded with two ready-to-use scenarios — **Plus One** and **Requirement Gathering**. List them with [`GET /scenarios`](/api-reference/scenarios) and look for the `default_kind` field. No need to build a scenario before your first meeting.
</Tip>

## Create a meeting

The minimum you need is a `scenario_id` and a `person_name`.

```bash theme={null}
curl -X POST https://api.waterr.ai/v1/meetings \
  -H "Authorization: Bearer wai_<your_key>" \
  -H "Content-Type: application/json" \
  -d '{
    "person_name": "John Doe",
    "scenario_id": "scenario-uuid"
  }'
```

<ParamField body="person_name" type="string" required>
  Name of the participant joining the session.
</ParamField>

<ParamField body="scenario_id" type="string" required>
  UUID of the scenario this meeting runs.
</ParamField>

<ParamField body="voice_id" type="string">
  Override the persona's default voice for this session. See [Voices](/api-reference/voices).
</ParamField>

<ParamField body="meeting_type" type="string">
  `regular` (default) or `instant`.
</ParamField>

<ParamField body="note_context" type="string">
  Session-specific context injected into the AI's prompt without changing the scenario. Use this to personalize: "Candidate has 8 years at Google, focus on ML infrastructure."
</ParamField>

### Response

```json theme={null}
{
  "success": true,
  "data": {
    "id": "meeting-uuid",
    "daily_meeting_url": "https://waterr-xx.daily.co/abc123",
    "room_token": "eyJhbGciOiJIUzI1NiIs...",
    "meeting_url": "https://waterr.ai/meeting/meeting-uuid",
    "status": "created"
  },
  "session_minutes_info": {
    "estimatedMinutes": 25,
    "remainingMinutes": 75
  }
}
```

| Field               | Use                                                                 |
| ------------------- | ------------------------------------------------------------------- |
| `meeting_url`       | WaterrAI-hosted page — easiest way to drop a user in.               |
| `daily_meeting_url` | Raw Daily.co room URL — for embeds or SDK joins.                    |
| `room_token`        | Auth token for SDK joins.                                           |
| `id`                | Use this to fetch [post-meeting data](/api-reference/post-meeting). |

## Joining the meeting

**Hosted page** — redirect the participant to `meeting_url`.

**Iframe embed:**

```html theme={null}
<iframe
  src="DAILY_MEETING_URL?t=ROOM_TOKEN"
  allow="camera; microphone; autoplay; display-capture"
  style="width: 100%; height: 600px; border: none;"
></iframe>
```

**Daily.co SDK** for full UI control:

```javascript theme={null}
import DailyIframe from '@daily-co/daily-js';
const call = DailyIframe.createCallObject();
await call.join({ url: data.daily_meeting_url, token: data.room_token });
```

## End-user meetings (no JWT)

For public or embedded scenarios, you can create a meeting without an API key — session minutes are billed to the **scenario creator's** account.

```bash theme={null}
curl -X POST https://api.waterr.ai/v1/meetings/end-user \
  -H "Content-Type: application/json" \
  -d '{
    "person_name": "Jane Smith",
    "scenario_id": "scenario-uuid",
    "end_user_id": "end-user-uuid"
  }'
```

## After the meeting ends

`GET /meetings/{id}` returns the meeting along with its transcript, summary, and goal scores. See [Post-Meeting Data](/api-reference/post-meeting).

## All meeting endpoints

| Method   | Endpoint                                                                   | Use                                      |
| -------- | -------------------------------------------------------------------------- | ---------------------------------------- |
| `POST`   | [`/meetings`](/api-reference/endpoint/post-meetings)                       | Create                                   |
| `GET`    | [`/meetings/{id}`](/api-reference/endpoint/get-meetings-id)                | Get one — includes transcript + analysis |
| `GET`    | [`/meetings`](/api-reference/endpoint/get-meetings)                        | List                                     |
| `PUT`    | [`/meetings/{id}/end`](/api-reference/endpoint/put-meetings-meetingid-end) | End a live meeting                       |
| `PUT`    | [`/meetings/{id}`](/api-reference/endpoint/put-meetings-meetingid)         | Update                                   |
| `DELETE` | [`/meetings/{id}`](/api-reference/endpoint/delete-meetings-meetingid)      | Delete                                   |
