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

# Join with a Meeting URL

> Create a meeting session with the REST API and send the bot to a Google Meet, Zoom, Teams, or Webex call.

Create a meeting session by pointing the bot at a meeting URL. The bot joins as a visible participant and starts capturing audio. You can join now, schedule the join for a future time, or use [calendar auto-join](/docs/meeting/join-meeting/calendar-auto-join) to have the bot join your meetings automatically.

## Create a Meeting Session

```bash theme={null}
curl -X POST https://api.telnyx.com/v2/meeting_sessions \
  -H "Authorization: Bearer $TELNYX_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "meeting_url": "https://meet.google.com/abc-defg-hij",
    "bot_name": "Notetaker",
    "summarize_on_end": true
  }'
```

Returns `201 Created`:

```json theme={null}
{
  "data": {
    "id": "mtgsess_9b2f...",
    "status": "joining",
    "platform": "google_meet",
    "recording": false
  }
}
```

If you send the same `idempotency_key` again, the request is replayed and you get `200 OK` with the original session instead of a duplicate.

The full request schema -- every field, constraint, and default -- lives on [Create a meeting session](/api-reference/meeting-sessions/create-a-meeting-session) in the API Reference.

### Platform Detection

The platform is detected automatically from the meeting URL:

| URL pattern               | Platform      |
| ------------------------- | ------------- |
| `meet.google.com/...`     | `google_meet` |
| `*.zoom.us/...`           | `zoom`        |
| `teams.microsoft.com/...` | `teams`       |
| `teams.live.com/...`      | `teams`       |
| `*.webex.com/...`         | `webex`       |

<Note>
  During the beta, creating a session with a `teams.microsoft.com` URL can fail with a gateway `502` while Teams support rolls out; `teams.live.com` URLs, Google Meet, Zoom, and Webex URLs create sessions normally.
</Note>

## Session Statuses

A session moves from `joining` to `waiting_for_admission` when the bot reaches the lobby, and to `active` once it enters the room -- `active`, and a non-null `joined_at`, are the positive evidence that the bot got in. It finishes as `ended`, `failed`, or `admission_denied`. `admission_denied` is reserved for an explicit denial by the host; a session that was cancelled or timed out without being admitted ends as `ended` with `joined_at: null`, so ending alone does not prove attendance. Scheduled sessions wait in `scheduled` until `join_at`. Every status and its meaning is documented on [Retrieve a meeting session](/api-reference/meeting-sessions/retrieve-a-meeting-session).

## Schedule a Join

Set `join_at` to a future timestamp. The bot joins when the meeting starts:

```bash theme={null}
curl -X POST https://api.telnyx.com/v2/meeting_sessions \
  -H "Authorization: Bearer $TELNYX_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "meeting_url": "https://meet.google.com/abc-defg-hij",
    "join_at": "2026-08-05T16:00:00Z"
  }'
```

While a session is `scheduled`, update it with `PATCH`:

```bash theme={null}
curl -X PATCH https://api.telnyx.com/v2/meeting_sessions/mtgsess_9b2f... \
  -H "Authorization: Bearer $TELNYX_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "join_at": "2026-08-05T17:00:00Z" }'
```

Only `join_at` and `bot_name` can be updated, and only while the session is `scheduled`.

## Leave or Cancel a Session

`DELETE` ends the bot's participation. It does not delete the session history, transcript, or artifacts:

```bash theme={null}
curl -X DELETE https://api.telnyx.com/v2/meeting_sessions/mtgsess_9b2f... \
  -H "Authorization: Bearer $TELNYX_API_KEY"
```

## Errors

Failures return a non-2xx status with an error envelope:

```json theme={null}
{
  "error": {
    "code": "not_found",
    "message": "meeting session not found"
  }
}
```

## Related

* [Calendar Auto-join](/docs/meeting/join-meeting/calendar-auto-join) -- the bot joins your meetings automatically
* [Live Transcript](/docs/meeting/live-transcript) -- follow the transcript stream in real time
* [Meeting Presence](/docs/meeting/interact) -- control how the bot appears and acts in the meeting
* [Collect Results](/docs/meeting/collect-results) -- read the finalized transcript and summary
