The Async Audio API allows you to process an additional audio file to the previous conversation, append the transcription and get conversational insights for updated conversation.

It can be useful in any use case where you have access to multiple audio files of any type of conversation, and you want to extract the insightful items supported by the Conversation API.


PUT https://api.symbl.ai/v1/process/audio/:conversationId

Example API call#

# Wave file
curl --location --request PUT 'https://api.symbl.ai/v1/process/audio/:conversationId?webhookUrl=<your_webhook_url>&entities= [{"customType": "Custom_Entity_Type", "text": "Custom Entity to be searched in transcript"}]' \
--header 'Content-Type: audio/wav' \
--header 'x-api-key: <generated_valid_token>' \
--data-binary '@/file/location/audio.wav'
# MP3 File
curl --location --request PUT 'https://api.symbl.ai/v1/process/audio/:conversationId?webhookUrl=<your_webhook_url>&entities= [{"customType": "Custom_Entity_Type", "text": "Custom Entity to be searched in transcript"}]' \
--header 'Content-Type: audio/mpeg' \
--header 'x-api-key: <generated_valid_token>' \
--data-binary '@/file/location/audio.mp3'

Request Headers#


Content-Type: This field is optional.

If you're not sure about audio format, you can omit it since the API will automatically detect the content type. But when it's mentioned, audio format is validated.

Header NameRequiredValue
Content-TypeNoDescribes the format and codec of the provided audio data. Accepted values are audio/wav, audio/mpeg, audio/mp3 and audio/wave.

Path Params#

conversationIdconversationId which is provided by the first request submitted using POST async audio API

Query Params#

nameNoYour meeting name. Default name set to conversationId.
webhookUrlNoWebhook url on which job updates to be sent. This should be post API.
customVocabularyNoContains a list of words and phrases that provide hints to the speech recognition task.
detectPhrasesNoAccepted values are true & false. It shows Actionable Phrases in each sentence of conversation. These sentences can be found in the Conversation's Messages API.
entitiesNoInput custom entities which can be detected in your conversation using Entities' API. For example, check the sample code on right.
enableSeparateRecognitionPerChannelNoEnables Speaker Separated Channel audio processing. Accepts true or false.
channelMetadataNoThis object parameter contains two variables speaker and channel to specific which speaker corresponds to which channel. This object only works when enableSeparateRecognitionPerChannel query param is set to true.
languageCodeNoWe accept different languages. Please check language Code as per your requirement.

Webhook Payload#

webhookUrl will be used to send the status of job created for uploaded audio. Every time the status of the job changes it will be notified on the WebhookUrl.

jobIdID to be used with Job API.
statusCurrent status of the job. (Valid statuses - [ scheduled, in_progress, completed, failed ])

channelMetadata Object#

"channelMetadata": [
"channel": 1,
"speaker": {
"name": "Robert Bartheon",
"email": "robertbartheon@gmail.com"
"channel": 2,
"speaker": {
"name": "Arya Stark",
"email": "aryastark@gmail.com"

channelMetadata object has following members:

channelThis denotes the channel number in the audio file. Each channel will contain independent speaker's voice data.
speakerThis is the wrapper object which defines the speaker for this channel.

speaker has the following members:

nameName of the speaker.
emailEmail address of the speaker.

Billing for a speaker separated channel audio file happens according to the number of channels present in the audio files. The duration for billing will be calculated according to the below formula:

totalDuration = duration_of_the_audio_file * total_number_of_channels

So if you send a 120-second file with 3 speaker separated channels, the total duration for billing would be 360 seconds or 6 minutes.


"conversationId": "5815170693595136",
"jobId": "9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d"

Response Object#

conversationIdID to be used with Conversation API.
jobIdID to be used with Job API.