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

# Third-party transcripts

> Enable HubSpot to use transcripts from a third-party platform as a part of its Conversation Intelligence feature.

If you use a third-party solution for transcribing calls, you can sync those transcriptions to HubSpot using the transcription API. This may be a good alternative to [using HubSpot to transcribe third-party calls](https://developers.hubspot.com/docs/api-reference/latest/crm/extensions/calling-extensions/recordings-and-transcriptions.md).

## Requirements

Calls to the transcription API must be authenticated with [OAuth](https://developers.hubspot.com/docs/api-reference/latest/authentication/manage-oauth-tokens.md), and your public app must include the following scopes:

* `crm.extensions_calling_transcripts.read`
* `crm.extensions_calling_transcripts.write`

Transcript data is made available to HubSpot by attaching the transcript to a [call activity](https://developers.hubspot.com/docs/api-reference/latest/crm/activities/calls/guide.md), so you may need to use the call engagement API to [create](https://developers.hubspot.com/docs/api-reference/latest/crm/activities/calls/create-call.md) and [retrieve](https://developers.hubspot.com/docs/api-reference/latest/crm/activities/calls/get-calls.md) calls while working with the transcripts API.

## Create a transcript

To create a transcript, make a `POST` request to `/crm/extensions/calling/2026-09/transcripts`. The request body will need to include the ID of the call engagement in HubSpot to attach the transcript to, along with a `transcriptCreateUtterances` array containing the transcript data.

```json theme={null}
{
  "engagementId": 21,
  "transcriptCreateUtterances": [
    {
      "speaker": {
        "id": "11",
        "name": "Speaker_NAME1"
      },
      "text": "Hello. How are you?",
      "languageCode": "en-US",
      "startTimeMillis": 1980,
      "endTimeMillis": 2090
    },
    {
      "speaker": {
        "id": "12",
        "name": "Speaker_NAME2",
        "email": "speakerName2@gmail.com"
      },
      "text": "Good, and you?",
      "startTimeMillis": 2090,
      "endTimeMillis": 3450
    }
  ]
}
```

### Transcript details

The table below lists the top-level transcript fields. Fields marked with required are required.

| Field | Type | Description |
| - | - | - |
| `engagementId` required | String | The ID of the HubSpot [call engagement](https://developers.hubspot.com/docs/api-reference/latest/crm/activities/calls/guide.md) to attach the transcript to. |
| `transcriptCreateUtterances` required | Array | A list of objects containing the transcribed call dialogue. The available fields are listed in the table below. |

### Transcript utterances

The table below outlines all available fields you can provide for the `transcriptCreateUtterances` array.

| Field | Type | Description |
| - | - | - |
| `speaker` required | Object | Contains the following information about the speaker: <ul><li>`id` required: the speaker's ID (max 100 characters).</li><li>`name` required: the speaker's name (max 100 characters).</li><li>`email`: optionally, the speaker's email, which will be matched to a contact record in the account. Must be a valid email.</li></ul> |
| `text` required | String | The transcribed text. |
| `languageCode` | String | The speaker's language. Default is `en-US`. |
| `startTimeMillis` required | Integer | The starting time of the utterance, in milliseconds from the start of the call. Should be a positive number. |
| `endTimeMillis` required | Integer | The end time of the utterance, in milliseconds from the start of the call. Should be greater than `startTimeMillis`. |

A successful response will return the `id` of the transcript, as generated by HubSpot.

```json theme={null}
{
  "id": "5"
}
```

## Retrieve a transcript

To retrieve a transcript from HubSpot, make a `GET` request to `/crm/extensions/calling/2026-09/transcripts/{transcriptId}`.

The response will include the transcript details along with the ID of the associated call engagement.

```json theme={null}
{
  "id": "5",
  "engagementId": 21,
  "transcriptSource": "INTEGRATOR_GENERATED",
  "createdAt": "2024-12-05T16:50:00.000Z",
  "updatedAt": "2024-12-05T16:50:00.000Z",
  "transcriptUtterances": [
    {
      "id": "1",
      "speaker": {
        "id": "11",
        "name": "Speaker_NAME1"
      },
      "text": "Hello. How are you?",
      "languageCode": "en-US",
      "startTimeMillis": 1980,
      "endTimeMillis": 2090
    },
    {
      "id": "2",
      "speaker": {
        "id": "12",
        "name": "Speaker_NAME2",
        "email": "speakerName2@gmail.com"
      },
      "text": "Good, and you?",
      "startTimeMillis": 2090,
      "endTimeMillis": 3450
    }
  ]
}
```

| Field | Type | Description |
| - | - | - |
| `id` | String | The ID of the transcript. |
| `engagementId` | Integer | The ID of the HubSpot [call engagement](https://developers.hubspot.com/docs/api-reference/latest/crm/activities/calls/guide.md) attached to the transcript. |
| `transcriptSource` | String | The source of the transcript (will be set to `INTEGRATOR_GENERATED`). |
| `createdAt` | String | The datetime of when the transcript was created in HubSpot. |
| `updatedAt` | String | The datetime of when the transcript was last updated in HubSpot. |
| `transcriptUtterances` | Array | A list of objects containing the transcribed call dialogue. |
| `speaker` | Object | Contains information about the speaker, including their `id`, `name`, and an email address if previously provided. |
| `text` | String | The transcribed text. |
| `languageCode` | String | The speaker's language. Default is `en-US`. |
| `startTimeMillis` | Integer | The starting time of the utterance, in milliseconds from the start of the call. |
| `endTimeMillis` | Integer | The end time of the utterance, in milliseconds from the start of the call. |

## Delete a transcript

To delete a transcript from HubSpot, make a `DELETE` request to `/crm/extensions/calling/2026-09/transcripts/{transcriptId}`.
