# Get meeting transcript

`GET /meeting.transcript`

## Description

Retrieve the transcript for a meeting.

Supports content negotiation:
- **JSON** (default): Returns structured transcript with cues containing speaker IDs, text, and timing
- **WebVTT**: Set `Accept: text/vtt` header to receive standard WebVTT format with speaker voice tags

**Access:** Organization and Personal. Personal access tokens restrict to meetings the authenticated user participated in.

**Required scope:** `meetings:read`

**Errors** (see [Responses and Errors](/docs/guides/responses-and-errors)):

| `error` code | Meaning |
|--------------|---------|
| `meeting_not_found` | Unknown or inaccessible meeting |
| `transcript_pending` | Not ready yet — retry later (may include `Retry-After`) |
| `transcript_unavailable` | Meeting was not transcribed — stop retrying |
| `upstream_timeout` | Timed out waiting on an upstream service — retry |

---

**OpenAPI Spec:** [chat-v1.json](https://developer.ro.am/chat-v1.json)

## Authentication

```
Authorization: Bearer YOUR_API_KEY
```

## Parameters

| Name | In | Type | Required | Description |
|------|-----|------|----------|-------------|
| `id` | query | string | Yes | The meeting ID. |

## Responses

### 200 - Transcript retrieved successfully

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `id` | string | Yes | Meeting ID |
| `cues` | object[] | Yes | Transcript cues in chronological order |

**cues** (array item):

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `speakerId` | string | No | Address ID of the speaker |
| `text` | string | Yes | Spoken text |
| `start` | integer | Yes | Start time in milliseconds from meeting start |
| `end` | integer | Yes | End time in milliseconds from meeting start |


#### Example Response

```json
{
  "id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
  "cues": [
    {
      "speakerId": "709b8a57-70bc-427a-b6f0-b16ba5297f8c",
      "text": "Let's start with the sprint review.",
      "start": 0,
      "end": 3200
    },
    {
      "speakerId": "af6663d5-0f37-4105-95df-4fea20ef7c7c",
      "text": "Sure, I'll go first with the API updates.",
      "start": 3500,
      "end": 6100
    }
  ]
}
```

### 400 - Bad request. Missing or invalid `id`.

### 401 - Presented invalid authentication credentials.

### 404 - Meeting or transcript not found.

### 405 - An unsupported method was requested.

### 500 - An internal error occurred.

---

*Machine-readable API documentation.*
*Full documentation: https://developer.ro.am/docs/api/meeting-transcript*
