> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.meetstream.ai/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.meetstream.ai/_mcp/server.

# Participants & Speaker Timeline

> Identify meeting participants uniquely and reconstruct who spoke when with the MeetStream API: get_participants fields, stable per-platform IDs, and the byte-level speaker timeline.

Two endpoints turn a recording into attributable data: `get_participants` (who was there) and `get_speaker_timeline` (who spoke when, down to byte ranges of the audio file).

## List participants

```bash
curl "https://api.meetstream.ai/api/v1/bots/<BOT_ID>/get_participants" \
  -H "Authorization: Token <YOUR_API_KEY>"
```

Each participant entry carries:

| Field                         | What it is                                                                                                                                                 |
| ----------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `deviceId`                    | The platform's stable identifier for this participant in this meeting (e.g. `spaces/.../devices/185` on Meet) — your key for joining data across endpoints |
| `displayName` / `fullName`    | Names as shown in the meeting                                                                                                                              |
| `profilePicture`              | Avatar URL when the platform exposes one                                                                                                                   |
| `status` / `humanized_status` | Current state (e.g. `in_meeting`, `not_in_meeting`)                                                                                                        |
| `streamIds`                   | The participant's media stream IDs — matches per-participant stream artifacts                                                                              |

## Identify participants uniquely

Display names collide ("John" twice) and change mid-meeting. Use the IDs instead:

* **`deviceId`** is unique per participant per meeting and consistent across `get_participants`, the speaker timeline (`speakerId`), and live audio frames (`speaker_id`).
* **`streamIds`** link a participant to their [per-participant audio/video files](/guides/transcription-recordings/per-participant-audio).
* Speaker labels in [transcripts](/guides/transcription-recordings/post-call-transcription) carry per-word `speaker` attribution you can map back by name.

## The speaker timeline

```bash
curl "https://api.meetstream.ai/api/v1/bots/<BOT_ID>/get_speaker_timeline" \
  -H "Authorization: Token <YOUR_API_KEY>"
```

The response is a list of `chunks`, each mapping a slice of the recorded audio to a speaker:

```json
{
  "chunks": [
    { "chunkIndex": 0, "timestamp": "115360815932", "sampleRate": 48000,
      "speakerId": "spaces/iWI9CBO8PnYB/devices/242", "speakerName": "Maddy Singh",
      "startByte": 0, "endByte": 98300 }
  ],
  "lastUpdated": "2026-03-20T04:54:51.493Z"
}
```

Because chunks reference **byte ranges of the audio file** at a known sample rate, you can compute exact timestamps (`seconds = startByte / 2 / sampleRate` for PCM16 mono), cut per-speaker clips, or build talk-time analytics without running diarization yourself.

## Use cases this unlocks

* **Talk-time ratios** for sales coaching (rep vs prospect seconds, straight from chunk math)
* **Speaker-accurate clip extraction** ("play me everything the customer said")
* **Cross-referencing**: join timeline speakers to transcript words to per-participant files via the shared IDs

CLI: `meetstream bot participants <id>` and `meetstream bot timeline <id>`.