Last modified: September 3, 2025
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.

Requirements

Calls to the transcription API must be authenticated with OAuth, 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 engagement, so you may need to use the call engagement API to create and retrieve call engagements while working with the transcripts API.

Create a transcript

To create a transcript, make a POST request to /crm/v3/extensions/calling/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.
{
  "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 * are required.
FieldTypeDescription
engagementId*StringThe ID of the HubSpot call engagement to attach the transcript to.
transcriptCreateUtterances*ArrayA 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. Fields marked with * are required.
FieldTypeDescription
speaker*ObjectContains the following information about the speaker:
  • id*: the speaker’s ID (max 100 characters).
  • name*: the speaker’s name (max 100 characters).
  • email: optionally, the speaker’s email, which will be matched to a contact record in the account. Must be a valid email.
text*StringThe transcribed text.
languageCodeStringThe speaker’s language. Default is en-US.
startTimeMillis*IntegerThe starting time of the utterance, in milliseconds from the start of the call. Should be a positive number.
endTimeMillis*IntegerThe 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.
{
  "id": 5
}

Retrieve a transcript

To retrieve a transcript from HubSpot, make a GET request to /crm/v3/extensions/calling/transcripts/{transcriptId}. The response will include the transcript details along with the ID of the associated call engagement.
{
  "id": 5,
  "engagementId": 21,
  "transcriptSource": "INTEGRATOR_GENERATED",
  "createdAt": "2024-12-05T16:50:00.000Z",
  "transcriptUtterances": [
    {
      "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
    }
  ]
}
FieldTypeDescription
idIntegerThe ID of the transcript.
engagementIdStringThe ID of the HubSpot call engagement attached to the transcript.
transcriptSourceStringThe source of the transcript (will be set to INTEGRATOR_GENERATED).
createdAtStringThe datetime of when the transcript was created in HubSpot.
transcriptUtterancesArrayA list of objects containing the transcribed call dialogue.
speakerObjectContains information about the speaker, including their id, name, and an email address if previously provided.
textStringThe transcribed text.
languageCodeStringThe speaker’s language. Default is en-US.
startTimeMillisIntegerThe starting time of the utterance, in milliseconds from the start of the call.
endTimeMillisIntegerThe 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/v3/extensions/calling/transcripts/{transcriptId}.