Access call recordings, transcriptions, and metadata through the GHL MCP server. This tool lets you retrieve audio files from completed calls, pull transcription text, and download transcription data for external processing. It is ideal for building call analytics dashboards, quality assurance workflows, and compliance archives.
Prerequisites
Before accessing call data, confirm the following:
- A GoHighLevel sub-account with call tracking enabled and at least one completed call on record
- A Private Integration Token (PIT) with the
conversationsscope enabled - A message ID for a call record (calls are stored as message objects in GHL)
- Call recording must be enabled in your location’s phone settings
To enable call recording, navigate to Settings > Phone Numbers, select your number, and turn on the Call Recording toggle. Calls made before enabling recording will not have audio available.
Set Up Authentication
Create a PIT from Settings > Integrations > Private Integrations in your sub-account. Click Create New, name it “MCP Call Ops,” and enable the conversations scope. Copy the token and store it in your MCP client’s environment configuration.
Include these headers on every request: Authorization: Bearer YOUR_PIT_TOKEN, Content-Type: application/json, and Version: 2021-07-28. All call operation endpoints share the same authentication requirements.
Make Your First Call
Retrieve a call recording using GET /messages/{id}/recording where {id} is the message ID for the call record. This returns the audio file URL or binary data for the recorded call.
To get the transcription text, call GET /messages/{id}/transcription. This returns the transcribed text of the call, typically generated by GHL’s built-in transcription service. The transcription includes speaker labels and timestamps when available.
To download the transcription in a structured format, use GET /messages/{id}/transcription/download. This endpoint returns the transcription as a downloadable file, which is useful for archiving or feeding into external NLP tools.
To find call message IDs, search conversations using Conversation CRUD and filter for messages with the Call type. Each call in a conversation thread has a unique message ID you can use with these endpoints.
Handle the Response
The recording endpoint returns a URL pointing to the audio file. Store or stream this URL as needed. Audio files are typically in MP3 or WAV format depending on your location’s configuration.
The transcription endpoint returns a JSON object with the text field containing the full transcription. If the call has not been transcribed yet, you may receive an empty response or a status indicating transcription is in progress. Longer calls can take several minutes to transcribe after the call ends.
The download endpoint returns the transcription as a file attachment. Check the Content-Type header to determine the file format (typically plain text or JSON).
If any endpoint returns a 404, the message ID may not correspond to a call, or the recording/transcription may not be available. Calls without recording enabled return no audio data.
Test Your Setup
Validate your integration with a real call record:
- Make a test call to your GHL number (or use an existing call with recording enabled)
- Find the call’s message ID through the conversations search or the GHL inbox
- Call
GET /messages/{id}/recordingand confirm you receive a valid audio URL - Call
GET /messages/{id}/transcriptionand verify the transcribed text matches the call content - Call
GET /messages/{id}/transcription/downloadand confirm the file downloads successfully
See the full Call Operations guide for batch processing patterns and transcription accuracy tips. For managing conversation threads that contain calls, see Conversation CRUD.