RingCentral Audio API
Conversational AI audio processing APIs
Conversational AI audio processing APIs
openapi: 3.0.3
info:
title: RingCentral Adaptive Cards Audio API
description: RingCentral API specification
version: 1.0.58-20240529-47eda8bd
contact:
name: RingCentral Developers Support
url: https://developers.ringcentral.com/support
termsOfService: https://www.ringcentral.com/legal/apilitos.html
license:
name: RingCentral API License Agreement
url: https://www.ringcentral.com/legal/apilitos.html
servers:
- url: https://platform.ringcentral.com
description: Production API entry point
- url: https://media.ringcentral.com
description: Production Media entry point
- url: https://platform.devtest.ringcentral.com
description: Developer sandbox API entry point
- url: https://platform.devtest.ringcentral.com
description: Developer sandbox Media entry point
security:
- OAuth2: []
tags:
- name: Audio
description: Conversational AI audio processing APIs
paths:
/ai/audio/v1/enrollments:
get:
tags:
- Audio
summary: List Enrolled Speakers
description: Returns the List of Enrolled Speakers
operationId: caiEnrollmentsList
parameters:
- name: partial
in: query
description: Indicates if partially enrolled speakers should be returned
required: true
style: form
explode: true
schema:
type: boolean
- name: perPage
in: query
description: Number of enrollments to be returned per page
required: true
style: form
explode: true
schema:
type: integer
format: int32
- name: page
in: query
description: Page number to be returned
required: true
style: form
explode: true
schema:
type: integer
format: int32
responses:
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/CaiErrorResponse'
'200':
description: List of enrolled speakers
content:
application/json:
schema:
$ref: '#/components/schemas/ListEnrolledSpeakers'
x-throttling-group: Heavy
x-app-permission: AI
post:
tags:
- Audio
summary: Create Speaker Enrollment
description: Creates Enrollment for the provided Speaker.
operationId: caiEnrollmentsCreate
requestBody:
$ref: '#/components/requestBodies/EnrollmentRequest'
responses:
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/CaiErrorResponse'
'409':
description: The {speakerId} already exists
content:
application/json:
schema:
$ref: '#/components/schemas/CaiErrorResponse'
'201':
description: Enrollments Request Created
content:
application/json:
schema:
$ref: '#/components/schemas/EnrollmentStatus'
x-throttling-group: Heavy
x-app-permission: AI
/ai/audio/v1/enrollments/{speakerId}:
get:
tags:
- Audio
summary: Get Speaker Enrollment Status
description: Get The Status of Enrollment for the provided Speaker.
operationId: caiEnrollmentsGet
parameters:
- $ref: '#/components/parameters/SpeakerId'
responses:
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/CaiErrorResponse'
'404':
description: The {speakerId} doesn't exist
content:
application/json:
schema:
$ref: '#/components/schemas/CaiErrorResponse'
'200':
description: Fetch enrollment status for speaker {speakerId}
content:
application/json:
schema:
$ref: '#/components/schemas/EnrollmentStatus'
x-throttling-group: Heavy
x-app-permission: AI
delete:
tags:
- Audio
summary: Delete Speaker Enrollment
description: Delete The Enrollment for the provided Speaker.
operationId: caiEnrollmentsDelete
parameters:
- $ref: '#/components/parameters/SpeakerId'
responses:
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/CaiErrorResponse'
'404':
description: The speakerId wasn't enrolled
content:
application/json:
schema:
$ref: '#/components/schemas/CaiErrorResponse'
'410':
description: The speakerId doesn't exist, already deleted
content:
application/json:
schema:
$ref: '#/components/schemas/CaiErrorResponse'
'204':
description: Enrollment deleted successfully
x-throttling-group: Heavy
x-app-permission: AI
patch:
tags:
- Audio
summary: Update Speaker Enrollment
description: Add newer audio data to improve an existing speaker enrollment
operationId: caiEnrollmentsUpdate
parameters:
- $ref: '#/components/parameters/SpeakerId'
requestBody:
$ref: '#/components/requestBodies/EnrollmentPatchRequest'
responses:
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/CaiErrorResponse'
'404':
description: The {speakerId} doesn't exist
content:
application/json:
schema:
$ref: '#/components/schemas/CaiErrorResponse'
'201':
description: Enrollments Request Created
content:
application/json:
schema:
$ref: '#/components/schemas/EnrollmentStatus'
x-throttling-group: Heavy
x-app-permission: AI
/ai/audio/v1/async/speech-to-text:
post:
tags:
- Audio
summary: Speech to Text Conversion
description: Returns Speech to Text Conversion to the provided webhook URI.
operationId: caiSpeechToText
parameters:
- $ref: '#/components/parameters/Webhook'
requestBody:
$ref: '#/components/requestBodies/AsrRequest'
responses:
'202':
description: Task accepted for processing.
content:
application/json:
schema:
$ref: '#/components/schemas/CaiAsyncApiResponse'
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/CaiErrorResponse'
callbacks:
requestProcessed:
'{$request.query.webhook}':
post:
parameters:
- $ref: '#/components/parameters/CallbackRequestId'
requestBody:
$ref: '#/components/requestBodies/SpeechToTextCallbackRequest'
responses:
'200':
description: Callback successfully accepted
x-throttling-group: Heavy
x-app-permission: AI
/ai/audio/v1/async/speaker-diarize:
post:
tags:
- Audio
summary: Speaker Diarization
description: 'Identifies who said what. Speaker diarization will identify the speaker for each segment
so you can tell who spoke the sentence, paragraph, or phrase.
'
operationId: caiSpeakerDiarize
parameters:
- $ref: '#/components/parameters/Webhook'
requestBody:
$ref: '#/components/requestBodies/DiarizeRequest'
responses:
'202':
description: Task accepted for processing.
content:
application/json:
schema:
$ref: '#/components/schemas/CaiAsyncApiResponse'
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/CaiErrorResponse'
callbacks:
requestProcessed:
'{$request.query.webhook}':
post:
parameters:
- $ref: '#/components/parameters/CallbackRequestId'
requestBody:
$ref: '#/components/requestBodies/DiarizeCallbackRequest'
responses:
'200':
description: Callback successfully accepted
x-throttling-group: Heavy
x-app-permission: AI
/ai/audio/v1/async/speaker-identify:
post:
tags:
- Audio
summary: Speaker Identification
description: Returns Speaker Identification to the provided webhook URI.
operationId: caiSpeakerIdentify
parameters:
- $ref: '#/components/parameters/Webhook'
requestBody:
$ref: '#/components/requestBodies/IdentifyRequest'
responses:
'202':
description: Task accepted for processing.
content:
application/json:
schema:
$ref: '#/components/schemas/CaiAsyncApiResponse'
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/CaiErrorResponse'
callbacks:
requestProcessed:
'{$request.query.webhook}':
post:
parameters:
- $ref: '#/components/parameters/CallbackRequestId'
requestBody:
$ref: '#/components/requestBodies/SpeakerIdentifyCallbackRequest'
responses:
'200':
description: Callback successfully accepted
x-throttling-group: Heavy
x-app-permission: AI
components:
parameters:
SpeakerId:
name: speakerId
in: path
description: Speaker identifier of enrolled speaker
required: true
style: simple
explode: false
schema:
type: string
example: JohnDoe
CallbackRequestId:
name: RCRequestId
deprecated: true
in: header
description: 'Input RequestId corresponding to this response.\
DEPRECATED. "jobId" body attribute should be used for tracking.
'
required: true
style: simple
explode: false
schema:
type: string
Webhook:
name: webhook
in: query
description: The webhook URI to which the job response will be returned
required: true
style: form
explode: true
schema:
type: string
format: uri
schemas:
TranscribedObject:
required:
- transcript
- words
type: object
properties:
speakerCount:
type: integer
description: The number of speakers detected. Field is set only when enableSpeakerDiarization is true.
format: int32
example: 2
utterances:
type: array
description: Speaker wise utterances. Field is set only when enableSpeakerDiarization is true.
items:
$ref: '#/components/schemas/UtteranceObject'
words:
type: array
items:
$ref: '#/components/schemas/WordSegment'
confidence:
type: number
description: Overall transcription confidence.
format: float
transcript:
type: string
description: The entire transcript with/without punctuations according to the input.
WordSegment:
required:
- end
- start
- word
type: object
properties:
speakerId:
type: string
example: JohnDoe
start:
type: number
format: float
example: 0.3
end:
type: number
format: float
example: 5.1
confidence:
type: number
format: float
example: 0.97
word:
type: string
example: hello
CaiErrorCodeResponse:
required:
- errorCode
- message
type: object
properties:
errorCode:
type: string
enum:
- CAI-101
- CAI-102
- CAI-103
- CAI-104
- CAI-105
- CAI-106
- CAI-107
- CAI-108
- CAI-109
- CAI-110
message:
type: string
description: Helpful description of the errorCode
parameterName:
type: string
description: Name of parameter if specified in the message
PagingSchema:
required:
- page
- perPage
- totalPages
type: object
properties:
page:
type: integer
format: int32
example: 2
totalPages:
type: integer
format: int32
example: 10
perPage:
type: integer
format: int32
example: 5
CaiAsyncApiResponse:
type: object
properties:
jobId:
type: string
ContentInput:
type: object
properties:
contentUri:
type: string
description: Publicly facing uri
format: uri
DiarizedObject:
required:
- speakerCount
- utterances
type: object
properties:
speakerCount:
type: integer
format: int32
example: 2
utterances:
type: array
items:
$ref: '#/components/schemas/DiarizeSegment'
DiarizeInput:
allOf:
- $ref: '#/components/schemas/AudioInput'
- type: object
properties:
separateSpeakerPerChannel:
type: boolean
description: Set to True if the input audio is multi-channel and each channel has a separate speaker.
example: false
speakerCount:
type: integer
description: Number of speakers in the file, omit parameter if unknown
format: int32
example: 2
speakerIds:
type: array
description: Optional set of speakers to be identified from the call.
example:
- speakerId1
- speakerId2
items:
type: string
enableVoiceActivityDetection:
type: boolean
description: Apply voice activity detection.
SpeechContextPhrasesInput:
required:
- phrases
type: object
minItems: 1
maxItems: 50
properties:
phrases:
type: array
description: Words or Phrases to boost
example:
- Mohit
- Sushant
- RingCentral
items:
type: string
CaiErrorResponse:
type: object
properties:
errors:
type: array
items:
$ref: '#/components/schemas/CaiErrorCodeResponse'
WordTimingsUnit:
type: object
properties:
start:
type: number
format: float
example: 0.3
end:
type: number
format: float
example: 5.1
word:
type: string
example: Hello
SpeakerIdentificationObject:
required:
- utterances
type: object
properties:
utterances:
type: array
items:
$ref: '#/components/schemas/DiarizeSegment'
EnrollmentPatchInput:
required:
- content
- encoding
type: object
properties:
encoding:
type: string
description: The encoding of the original audio
example: Wav
enum:
- Mpeg
- Mp4
- Wav
- Webm
- Webp
- Aac
- Avi
- Ogg
languageCode:
type: string
description: Language spoken in the audio file.
example: en-US
content:
type: string
description: Base64-encoded audio file data.
example: base64EncodedAudioInput
IdentifyInput:
required:
- speakerIds
allOf:
- $ref: '#/components/schemas/AudioInput'
- type: object
properties:
speakerIds:
type: array
description: Set of enrolled speakers to be identified from the media.
example:
- speakerId1
- speakerId2
items:
type: string
enableVoiceActivityDetection:
type: boolean
description: Apply voice activity detection.
DiarizeApiResponse:
type: object
properties:
status:
type: string
enum:
- Success
- Fail
response:
oneOf:
- $ref: '#/components/schemas/DiarizedObject'
- $ref: '#/components/schemas/CaiErrorResponse'
AsrApiResponse:
type: object
properties:
status:
type: string
enum:
- Success
- Fail
response:
oneOf:
- $ref: '#/components/schemas/TranscribedObject'
- $ref: '#/components/schemas/CaiErrorResponse'
UtteranceObject:
required:
- end
- start
- text
type: object
properties:
start:
type: number
format: float
example: 0.3
end:
type: number
format: float
example: 5.1
text:
type: string
example: Hello! This is John.
confidence:
type: number
format: float
example: 0.97
speakerId:
type: string
example: JohnDoe
wordTimings:
type: array
items:
$ref: '#/components/schemas/WordTimingsUnit'
EnrollmentInput:
required:
- content
- encoding
- speakerId
allOf:
- $ref: '#/components/schemas/EnrollmentPatchInput'
- type: object
properties:
speakerId:
type: string
description: The enrollment ID to be registered. Acceptable format [a-zA-Z0-9_]+
example: JohnDoe
ListEnrolledSpeakers:
required:
- paging
- records
type: object
properties:
paging:
$ref: '#/components/schemas/PagingSchema'
records:
type: array
items:
$ref: '#/components/schemas/EnrollmentStatus'
AudioInput:
required:
- encoding
- languageCode
allOf:
- $ref: '#/components/schemas/ContentInput'
- type: object
properties:
encoding:
type: string
description: The encoding of the original audio
example: Wav
enum:
- Mpeg
- Mp4
- Wav
- Webm
- Webp
- Aac
- Avi
- Ogg
languageCode:
type: string
description: Language spoken in the audio file.
example: en-US
source:
type: string
description: 'Source of the audio file eg: Phone, RingCentral, GoogleMeet, Zoom etc'
example: RingCentral
audioType:
type: string
description: Type of the audio
example: CallCenter
enum:
- CallCenter
- Meeting
- EarningsCalls
- Interview
- PressConference
- Voicemail
DiarizeSegment:
required:
- end
- speakerId
- start
type: object
properties:
speakerId:
type: string
example: JohnDoe
start:
type: number
format: float
example: 0.3
end:
type: number
format: float
example: 5.1
confidence:
type: number
format: float
example: 0.97
AsrInput:
allOf:
- $ref: '#/components/schemas/DiarizeInput'
- type: object
properties:
enablePunctuation:
type: boolean
description: Enables Smart Punctuation API.
enableSpeakerDiarization:
type: boolean
description: Tags each word corresponding to the speaker.
default: false
separateSpeakerPerChannel:
type: boolean
description: Indicates that the input audio is multi-channel and each channel has a separate speaker.
default: false
speechContexts:
type: array
description: Indicates the words/phrases that will be used for boosting the transcript. This can help to boost accuracy for cases like Person Names, Company names etc.
items:
$ref: '#/components/schemas/SpeechContextPhrasesInput'
EnrollmentStatus:
required:
- enrollmentComplete
- speakerId
- totalSpeechDuration
type: object
properties:
enrollmentQuality:
type: string
description: Quality of the enrollment.
example: Average
enum:
- Poor
- Average
- Good
- High
enrollmentComplete:
type: boolean
description: Status of the enrollment.
example: true
speakerId:
type: string
example: JohnDoe
totalEnrollDuration:
type: number
description: Total speech duration of the enrollment in seconds.
format: float
example: 20.1
totalSpeechDuration:
type: number
description: Total duration of the enrollment in seconds.
format: float
example: 30.5
SpeakerIdentifyApiResponse:
type: object
properties:
status:
type: string
enum:
- Success
- Fail
response:
oneOf:
- $ref: '#/components/schemas/SpeakerIdentificationObject'
- $ref: '#/components/schemas/CaiErrorResponse'
requestBodies:
AsrRequest:
description: Speech to Text API Input Format
content:
application/json:
schema:
$ref: '#/components/schemas/AsrInput'
required: true
SpeechToTextCallbackRequest:
description: Speech to Text API Callback Output
content:
application/json:
schema:
allOf:
- type: object
properties:
jobId:
type: string
creationTime:
type: string
format: date-time
completionTime:
type: string
format: date-time
expirationTime:
type: string
format: date-time
- $ref: '#/components/schemas/AsrApiResponse'
required: true
EnrollmentPatchRequest:
description: Patch Speaker Enrollment API Input Format
content:
application/json:
schema:
$ref: '#/components/schemas/EnrollmentPatchInput'
required: true
DiarizeRequest:
description: Speaker Diarization API Input Format
content:
application/json:
schema:
$ref: '#/components/schemas/DiarizeInput'
required: true
EnrollmentRequest:
description: Speaker Enrollment API Input Format
content:
application/json:
schema:
$ref: '#/components/schemas/EnrollmentInput'
required: true
IdentifyRequest:
description: Speaker Identification API Input Format
content:
application/json:
schema:
$ref: '#/components/schemas/IdentifyInput'
required: true
SpeakerIdentifyCallbackRequest:
description: Speaker Identification API Callback Output
content:
application/json:
schema:
allOf:
- type: object
properties:
jobId:
type: string
creationTime:
type: string
format: date-time
completionTime:
type: string
format: date-time
expirationTime:
type: string
format: date-time
- $ref: '#/components/schemas/SpeakerIdentifyApiResponse'
required: true
DiarizeCallbackRequest:
description: Speaker Diarization API Callback Output
content:
application/json:
schema:
allOf:
- type: object
properties:
jobId:
type: string
creationTime:
type: string
format: date-time
completionTime:
type: string
format: date-time
expirationTime:
type: string
format: date-time
- $ref: '#/components/schemas/DiarizeApiResponse'
required: true
securitySchemes:
OAuth2:
type: oauth2
flows:
authorizationCode:
authorizationUrl: https://platform.ringcentral.com/restapi/oauth/authorize
tokenUrl: https://platform.ringcentral.com/restapi/oauth/token
refreshUrl: https://platform.ringcentral.com/restapi/oauth/token
scopes: {}
x-tagGroups:
- name: Voice
popular: true
tags:
- Business Hours
- Call Blocking
- Call Control
- Call Forwarding
- Call Handling Rules
- Interaction Rules
- State-based Rules
- Call Flip
- Call Log
- Call History
- Call Log Export
- Call Monitoring Groups
- Call Queues
- Call Recordings
- Call Recording Settings
- Device SIP Registration
- Greetings
- IVR
- RingOut
- Verification Calls
- name: SMS and Fax
popular: true
tags:
- Fax
- Message Exports
- Message Store
- Pager Messages
- SMS
- High Volume SMS
- SMS Log Export
- SMS Templates
- Voicemail Broadcasting
- name: Social Messaging
popular: true
tags:
- Identities
- Contents
- name: Team Messaging
popular: true
tags:
- Adaptive Cards
- Bots
- Calendar Events
- Chats
- Conversations
- Compliance Exports
- Contacts
- Incoming Webhooks
- Notes
- Posts
- Profile
- Tasks
- Teams
- name: Video
popular: true
tags:
- Bridge Management
- Delegation Management
- Meetings History
- Meeting Recordings
- RCM Meetings (Legacy)
- RCM Webinars (Legacy)
- name: Webinar
popular: true
tags:
- Webinars and Sessions
- Invitees
- Historical Webinars
- Historical Recordings
- Registration Management
- Registrants
- Webinar Analytics
- Webinar Subscriptions
- name: Analytics
popular: true
tags:
- Business Analytics
- name: Artificial Intelligence
popular: true
tags:
- Insights
- Audio
- Text
- Status
- name: Authentication
tags:
- OAuth 2.0 / OpenID Connect
- Interoperability
- name: Account
tags:
- Company
- Custom Fields
- Features
- Licenses
- Tax Locations
- Cost Centers
- Multi-Site
- Phone Numbers
- Presence
- Regional Settings
- User Permissions
- User Settings
- Audit Trail
- Calling Rates
- Appearance Customization
- Account Integrations
- name: Provisioning
tags:
- Automatic Location Updates
- Devices
- Extensions
- Paging Only Groups
- Park Locations
- Phone Lines
- SCIM
- Shared Lines
- Group Call Pickup
- Delegated Lines Groups
- Directed Call Pickup
- IVR Apps
- Video Configuration
- Number Porting
- SMB
- Account Federation
- Integrations
- Enterprise Portal API
- Push to Talk Provisioning
- BYOC
- name: Address Book
tags:
- External Contacts
- Internal Contacts
- Hybrid Directory Contacts
- Overlay Contacts
- External Shared Directory
- name: Roles and Permissions
tags:
- Permissions
- Role Management
- Site Administration
- User Groups
- name: Events & Notifications
tags:
- Subscriptions
- name: User Integrations
tags:
- Token Management
- Calendar Management
- Calendar Event Management
- Calendar Presence Link
- Cloud Personal Contacts
- Cloud Shared Contacts
- Cloud Directory
- Deprecated Calendar API
- name: Rooms
tags:
- Rooms Client API
- Rooms Management API
- name: App Management
tags:
- App Gallery
- App Rating Review
- Bot Provisioning
- name: Workflow Builder
tags:
- Flows
- Flow Editor
- Flow Log
- Flow Templates
- name: Utilities
tags:
- API Info
- Application Settings
- Async Tasks
- User Notifications
- Client Versions
- End-to-End Encryption