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

# Retrieve Appointment Transcript — Shilo API

> Retrieve the sanitized transcript for an appointment recording with AI-resolved speaker names. Returns 403 for Follow Up Boss accounts, 409 if speaker resolution is still in progress.

Use this endpoint to retrieve the full transcript for an appointment recording. Shilo sanitizes the raw transcript and resolves speaker labels using AI — replacing generic labels like "Speaker 1" with the actual names of the rep and client. Because speaker resolution depends on completed analysis, you should wait until the appointment's `analysis.progress` field reaches `100` before requesting the transcript, or be prepared to handle a `409` response and retry.

<Warning>
  Accounts integrated with **Follow Up Boss** CRM are not supported for transcript retrieval and will receive a `403 Forbidden` response.
</Warning>

## Endpoint

```
GET https://api.shilo.ai/api/v1/appointments/{identifier}/transcript
```

## Authentication

All requests require your API key in the `x-api-key` header.

## Path Parameters

<ParamField path="identifier" type="string" required>
  The unique identifier for the appointment recording. Two formats are accepted:

  * `{uuid}` — The Shilo recording UUID (e.g., `ee6f2136-b94a-4438-9335-3acf5b2a0d31`)
  * `external_recording_id:{string}` — The external recording ID your integration provided (e.g., `external_recording_id:ext-789`)
</ParamField>

## Response

A successful request returns HTTP `200` with a transcript object. The exact shape of the transcript object varies by integration, but will include speaker-attributed text segments with timing information.

<Note>
  The transcript response shape may vary depending on your CRM integration. The example below shows a representative structure. Always treat the transcript as a free-form JSON object (`additionalProperties: true` in the OpenAPI spec).
</Note>

<Note>
  Fetch the transcript only after `analysis.progress` equals `100`. If speaker resolution is still in progress, the API returns `409 Conflict` — wait and retry.
</Note>

### Error Responses

| Status            | Description                                                                                                                            |
| ----------------- | -------------------------------------------------------------------------------------------------------------------------------------- |
| `400 Bad Request` | The `identifier` path parameter is malformed or uses an unsupported format.                                                            |
| `403 Forbidden`   | Your account is integrated with Follow Up Boss CRM, which does not support transcript retrieval.                                       |
| `404 Not Found`   | No appointment recording was found matching the provided identifier.                                                                   |
| `409 Conflict`    | The transcript is not yet ready. Analysis and speaker resolution are still in progress. Retry after `analysis.progress` reaches `100`. |

## Example Request

```bash theme={null}
curl --request GET \
  --url "https://api.shilo.ai/api/v1/appointments/ee6f2136-b94a-4438-9335-3acf5b2a0d31/transcript" \
  --header "x-api-key: YOUR_API_KEY"
```

## Example Response

```json theme={null}
{
  "segments": [
    {
      "speaker": "Jordan Smith",
      "text": "Hi Alex, thanks for making time today. I wanted to walk you through what an upgrade to our enterprise plan would look like for your team.",
      "start": 0.0,
      "end": 8.4
    },
    {
      "speaker": "Alex Rivera",
      "text": "Of course, happy to chat. I did want to bring up the pricing — it seemed a bit higher than what we budgeted for.",
      "start": 8.7,
      "end": 15.2
    },
    {
      "speaker": "Jordan Smith",
      "text": "Totally understand. Let me show you how the ROI typically breaks down for teams your size — I think it'll make the number feel a lot more reasonable.",
      "start": 15.5,
      "end": 23.1
    }
  ]
}
```
