RingCX Transcript Extraction API
The RingCX Transcript Extraction API allows developers and administrators to programmatically retrieve text-based transcripts for both voice and digital interactions. This API enables the automated flow of conversational data into downstream systems like CRMs, quality management tools, or custom analytics engines, solving the problem of manual review and data entry.
Strategic Overview
Extracting transcripts programmatically provides significant business value by enabling automated compliance auditing, agent performance coaching, and deep sentiment analysis.
Key Use Cases
- Automated QA Scoring: Feed transcripts into AI models to automatically score interactions based on custom rubrics.
- CRM Enrichment: Automatically attach full conversation text to customer records for better historical context.
- Compliance Archival: Maintain long-term, searchable text records of all customer interactions for regulatory verification.
Real-Time vs. Latency Expectations
This API is designed for post-interaction retrieval. Transcripts are generated after a segment is finalized.
- Data Availability: Transcripts are typically available 5 minutes after a call or chat segment ends.
- Retention Policy: Transcript availability matches your account's configured data retention policy.
Required Permissions & Scopes
1. Configure OAuth Scopes
To authenticate, your application must be configured with the following permission in the Developer Portal:
ReadAccounts: Required to validate the account context and access interaction metadata.
Warning
ReadAccounts is the only Oauth Scope permission with any effect on RingCx APIs. Platform permissions are managed through the RingCx Admin portal.
2. Enable Platform Permissions
To use AI-generated transcripts, ensure the feature is active within the RingCX Admin portal:
- Log in to RingCX Admin.
- Navigate to Routing > Voice/Digital Queues & Skills.
- Select the target queue and navigate to the AI Tools section.
- Check the "Enable AI Summaries" box to activate transcription.
Common Authorization Errors
If the user lacks the necessary platform permissions, the API will return:
{ "errorCode": "access.denied.exception", "generalMessage": "You do not have permission to access this resource", "timestamp": 1611847650696 }
API Discovery: Finding Dialog and Segment IDs
To retrieve a transcript, you must first obtain the unique dialogId and segmentId using the interaction metadata endpoint.
POST https://ringcx.ringcentral.com/voice/api/cx/integration/v1/accounts/{rcAccountId}/sub-accounts/{subAccountId}/interaction-metadata
Prerequisites & Constraints
- Account Context: You must provide both the
rcAccountIdand thesubAccountIdin the path. - Time Windows: The
timeIntervalfor metadata retrieval cannot exceed 3600 seconds (1 hour).
Main Endpoint: Get Transcript
GET https://ringcx.ringcentral.com/voice/api/cx/integration/v1/accounts/{rcAccountId}/sub-accounts/{subAccountId}/transcripts/dialogs/{dialogId}/segments/{segmentId}
Request Body / Parameters
| Parameter | Type | Requirement | Description |
|---|---|---|---|
rcAccountId |
String | Required | The unique identifier for the main RingCentral account. |
subAccountId |
String | Required | The unique identifier for the RingCX sub-account. |
dialogId |
String | Required | The unique ID connecting different segments of an interaction. |
segmentId |
String | Required | The unique identifier for the specific part of the call or chat. |
Example Response:
{
"channelClass": "VOICE",
"transcript": [
{
"participantId": "449438",
"participantName": "Agent Smith",
"timestamp": "1721651880000",
"message": "Hello, how can I help you today?"
},
{
"participantId": "cust_123",
"participantName": "Customer",
"timestamp": "1721651885000",
"message": "I'm having trouble with my recent order."
}
]
}
Implementation Strategy
Recommended Pattern
We recommend a "Sliding Window" polling strategy to account for the generation delay and ensure no data is missed.
- Poll for Metadata: Query for metadata in 15-minute intervals with a 5-minute offset to allow for AI processing.
- Filter Results: Only call the transcript endpoint for segments where the metadata indicates
hasTranscript: true. - Handle Latency: If you receive a 404 error, implement an exponential backoff strategy for subsequent retry attempts.
Rate Limiting & Stability
- Limit: Standard platform rate limiting is 120 requests per minute.
- Strategy: Implement exponential backoff when hitting 429 "Too Many Requests" errors.
Sample Implementation (Python)
import requests
# Configuration
BASE_URL = "https://ringcx.ringcentral.com/voice/api"
RC_ACCOUNT_ID = "980634004"
SUB_ACCOUNT_ID = "99999999"
def get_transcript(dialog_id, segment_id, token):
"""Retrieves the transcript for a specific interaction segment."""
endpoint = f"/cx/integration/v1/accounts/{RC_ACCOUNT_ID}/sub-accounts/{SUB_ACCOUNT_ID}/transcripts/dialogs/{dialog_id}/segments/{segment_id}"
url = f"{BASE_URL}{endpoint}"
headers = {
'Authorization': f'Bearer {token}',
'Accept': 'application/json'
}
response = requests.get(url, headers=headers)
if response.status_code == 200:
return response.json().get('transcript')
else:
print(f"Error fetching transcript: {response.status_code}")
return None
Appendix: Supported Elements
View System Dispositions
| Element | Description |
|---|---|
ANSWER |
Call was successfully answered. |
ABANDON |
Interaction was abandoned by the contact. |
BUSY |
The line returned a busy signal. |
MACHINE |
Answering machine was detected. |