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

# Transcripts

> Read full transcript text, timed segments and search across calls.

Transcripts need the `transcripts:read` permission. An owner or admin accepts a short data disclosure when creating a key with it, because transcripts contain what customers said.

## Full text

`GET /calls/{call_id}/transcript` returns the transcript in pages of text. Each page holds up to `limit` chunks of 4,000 characters (`limit` is 1 to 10, default 1).

```json theme={null}
{
  "data": {
    "call_id": "6f1c…",
    "revision": "9b2e…",
    "source": "native",
    "has_timestamps": true,
    "transcription_version": "v4",
    "text": "Hi, I'm Jordan with Heritage Windows…",
    "offset": 0,
    "total_characters": 18342
  },
  "has_more": true,
  "next_cursor": "eyJ…"
}
```

Follow `next_cursor` until `has_more` is `false`, then join every `text` in order. `offset` and `total_characters` count Unicode characters, so you can check that nothing is missing.

> [!NOTE]
>
> If a transcript changes while you are paging (for example, it was reprocessed), the next page returns `409 stale_cursor`. Start again from the first page. The `revision` value changes whenever the text does, so you can also skip re-downloading a transcript whose revision you already have.

Speaker labels and timestamps appear in the text only where the transcription recorded them. Parlay does not guess who said what.

## Timed segments

`GET /calls/{call_id}/transcript/segments` returns the transcript as timed pieces, for building a player or aligning with your own audio.

```json theme={null}
{
  "data": [
    { "index": 0, "text": "Hi, I'm Jordan", "start_seconds": 0.42, "end_seconds": 1.37, "speaker_id": "0" },
    { "index": 1, "text": "with Heritage Windows.", "start_seconds": 1.37, "end_seconds": 2.6, "speaker_id": "0" }
  ],
  "call_id": "6f1c…",
  "revision": "9b2e…",
  "source": "native",
  "granularity": "word",
  "structured_available": true,
  "total_segments": 3120,
  "has_more": true,
  "next_cursor": "eyJ…"
}
```

When `structured_available` is `false`, this call has no timing data. Use the full-text endpoint instead. Missing times are never filled in with zeros.

## Search

`GET /transcripts/search?q=…` finds calls whose transcript matches a keyword or phrase, and returns a short excerpt of each.

```bash theme={null}
curl "https://app.goparlay.io/api/v1/transcripts/search?q=%22financing%20options%22&limit=25" \
  -H "Authorization: Bearer $PARLAY_KEY"
```

```json theme={null}
{
  "data": [
    { "call_id": "6f1c…", "excerpt": "…we do have financing options if the monthly number is what's holding you back…" }
  ],
  "has_more": false,
  "next_cursor": null
}
```

| Parameter | Notes |
| - | - |
| `q` | 1 to 500 characters. Use quotes for an exact phrase. |
| `rep_id` | Only this rep's calls. |
| `limit` | 1 to 25, default 5. |

Search returns excerpts, not whole transcripts. Fetch the transcript of any call you want in full.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.