AssemblyAI
App · Voice AI · 9 actions
Turn recordings into text with AssemblyAI: calls, meetings, voicemails, interviews and podcasts, in 99 languages. Tell the speakers apart, get a summary, the sentiment and the topics, take personal details out as it goes, export captions for a video, and find where a word was said.
Actions
| Action | What it does |
|---|---|
| Delete a transcript | Permanently remove a transcript's words and analysis from AssemblyAI. |
| Find recent transcripts | List the transcripts on your AssemblyAI account, newest first, optionally narrowed to one day or to the ones that are still running or that failed. |
| Find words in a recording | Check whether particular words or phrases were said, how often, and where in the recording. |
| Get a transcript | Fetch a transcript AssemblyAI has already made, by its ID, with everything that was worked out alongside it. |
| Get captions for a video | Export the transcript as a subtitle file, saved and ready for a later step to upload beside a video, attach to an email or store. |
| Get the bleeped recording | Save the copy of the recording with the personal details beeped out, so the audio can be shared, kept or used for training without the private parts in it. |
| Get the paragraphs | The transcript broken into paragraphs, each with where it falls in the recording. |
| Get the sentences | The transcript broken into sentences, each with where it falls in the recording and who said it. |
| Transcribe a recording | Turn an audio or video recording into text and wait for it. |
Delete a transcript
Permanently remove a transcript's words and analysis from AssemblyAI. Use it at the end of a workflow that has already saved what it needs, so nothing sensitive is left sitting on someone else's servers. This cannot be undone.
Inputs
- Transcript
transcript_idtextRequired - The transcript to read, as handed back by 'Transcribe a recording'. Chain it from that step rather than typing it.
Outputs
deletedtrue/false- Always true once the deletion went through.
statustext- The state it was in when it was deleted.
transcript_idtext- The transcript that was deleted.
Example output
{
"deleted": true,
"status": "completed",
"transcript_id": "9ea68fd3-f953-42c1-9742-976c447fb463"
}Find recent transcripts
List the transcripts on your AssemblyAI account, newest first, optionally narrowed to one day or to the ones that are still running or that failed. AssemblyAI keeps the last 90 days.
Inputs
- Only show
statustext - Narrow the list to transcripts in one state.One of:
completed(Finished),processing(Still being transcribed),queued(Waiting to start),error(Failed). - Made on
created_ondate - Only transcripts started on this day. Leave it empty for all of the last 90 days.
- How many
limitnumber - How many to bring back, newest first.From 1 to 200. Default:
20.
Outputs
countnumber- How many came back.
transcriptslist- The transcripts found, newest first.
Example output
{
"count": 1,
"transcripts": [
{
"completed_at": "2026-09-15T10:04:47.918Z",
"created_at": "2026-09-15T10:04:11.423Z",
"error": null,
"recording_url": "https://cdn.assemblyai.com/upload/4f2c1a90-support-call.m4a",
"status": "completed",
"transcript_id": "9ea68fd3-f953-42c1-9742-976c447fb463"
}
]
}Find words in a recording
Check whether particular words or phrases were said, how often, and where in the recording. Use it to flag a competitor's name on a sales call, confirm a required disclosure was read out, or jump to the moment a product was mentioned.
Inputs
- Transcript
transcript_idtextRequired - The transcript to read, as handed back by 'Transcribe a recording'. Chain it from that step rather than typing it.
- Words to find
wordslistRequired - The words or short phrases to look for. Phrases can be up to five words long.
Outputs
matcheslist- One entry per word or phrase searched for.
total_countnumber- How many times anything was heard in all.
transcript_idtext- The transcript that was searched.
Example output
{
"matches": [
{
"count": 3,
"heard_at": [
{
"end_seconds": 6.78,
"start_seconds": 6.24
},
{
"end_seconds": 41.62,
"start_seconds": 41.1
},
{
"end_seconds": 119.4,
"start_seconds": 118.94
}
],
"text": "invoice"
},
{
"count": 0,
"heard_at": [],
"text": "cancel"
}
],
"total_count": 3,
"transcript_id": "9ea68fd3-f953-42c1-9742-976c447fb463"
}Get a transcript
Fetch a transcript AssemblyAI has already made, by its ID, with everything that was worked out alongside it. Use this to pick up a recording that was still processing when an earlier step ended, or to re-read one without paying to transcribe it again.
Inputs
- Transcript
transcript_idtextRequired - The transcript to read, as handed back by 'Transcribe a recording'. Chain it from that step rather than typing it.
Outputs
chapterslist- The recording split into chapters. Only when chapters were asked for.
confidencenumber- How sure AssemblyAI is of the words, from 0 to 1.
duration_secondsnumber- How long the recording is, in seconds.
entitieslist- The people, places, dates and amounts that were mentioned. Only when entities were asked for.
key_phraseslist- The phrases that stood out, most important first. Only when key phrases were asked for.
languagetext- The language that was spoken, detected or set.
overall_sentimenttext- 'positive', 'neutral' or 'negative' for the recording as a whole, from whether positive or negative sentences won out.
recording_urltext- The recording AssemblyAI transcribed.
sensitive_contentlist- Each passage that was flagged, and what for.
sensitive_content_topicslist- The kinds of sensitive content found anywhere in the recording, such as 'profanity'.
sentiment_countsobject- How many sentences were positive, neutral and negative.
sentiment_segmentslist- Every sentence with its own sentiment, in order.
speaker_transcripttext- The same words laid out as 'Speaker A: …' lines. Only when speakers were identified.
speakerslist- The speakers it heard, in the order they first spoke. Only when speakers were identified.
statustext- 'completed' when the words are ready. 'queued' or 'processing' means AssemblyAI is still working on it.
summarytext- The summary. Only when a summary was asked for.
texttext- Everything that was said, as one piece of text.
topicslist- What the recording was about, most relevant first. Only when topics were asked for.
transcript_idtext- AssemblyAI's ID for this transcript. Pass it to any of the other AssemblyAI steps.
utteranceslist- Each turn of the conversation, in order.
word_countnumber- How many words were said.
Example output
{
"chapters": [],
"confidence": 0.9432,
"duration_seconds": 281,
"entities": [
{
"end_seconds": 3.2,
"start_seconds": 2.8,
"text": "Priya",
"type": "person_name"
},
{
"end_seconds": 2.6,
"start_seconds": 1.4,
"text": "Northwind Support",
"type": "organization"
}
],
"key_phrases": [
{
"count": 2,
"rank": 0.08,
"text": "seat count"
},
{
"count": 3,
"rank": 0.07,
"text": "invoice"
}
],
"language": "en_us",
"overall_sentiment": "neutral",
"recording_url": "https://cdn.assemblyai.com/upload/4f2c1a90-support-call.m4a",
"sensitive_content": [],
"sensitive_content_topics": [],
"sentiment_counts": {
"negative": 2,
"neutral": 3,
"positive": 2
},
"sentiment_segments": [
{
"confidence": 0.79,
"end_seconds": 4.1,
"sentiment": "positive",
"speaker": "A",
"start_seconds": 0.52,
"text": "Thanks for calling Northwind Support, this is Priya."
}
],
"speaker_transcript": "A: Thanks for calling Northwind Support, this is Priya.\nB: Hi Priya, our invoice this month came in almost double what we expected and I want to understand what changed before I approve it.\nA: I can see the seat count went from twelve to twenty-one in May, which is what moved the bill. I can credit the difference for this cycle and set it so an admin approves any seat change first.",
"speakers": [
"A",
"B"
],
"status": "completed",
"summary": "- The customer's invoice roughly doubled this month.\n- The increase came from the seat count rising from twelve to twenty-one in May.\n- Support offered a credit for this cycle and an admin approval step for future seat changes.",
"text": "Thanks for calling Northwind Support, this is Priya. Hi Priya, our invoice this month came in almost double what we expected and I want to understand what changed before I approve it. I can see the seat count went from twelve to twenty-one in May, which is what moved the bill. I can credit the difference for this cycle and set it so an admin approves any seat change first.",
"topics": [
{
"relevance": 0.91,
"topic": "Business>BusinessSoftwareAndServices"
},
{
"relevance": 0.42,
"topic": "Business>Sales"
}
],
"transcript_id": "9ea68fd3-f953-42c1-9742-976c447fb463",
"utterances": [
{
"confidence": 0.96,
"end_seconds": 4.1,
"speaker": "A",
"start_seconds": 0.52,
"text": "Thanks for calling Northwind Support, this is Priya."
},
{
"confidence": 0.94,
"end_seconds": 13.88,
"speaker": "B",
"start_seconds": 4.5,
"text": "Hi Priya, our invoice this month came in almost double what we expected and I want to understand what changed before I approve it."
}
],
"word_count": 74
}Get captions for a video
Export the transcript as a subtitle file, saved and ready for a later step to upload beside a video, attach to an email or store. SRT suits YouTube and most editing software; VTT suits the web.
Inputs
- Transcript
transcript_idtextRequired - The transcript to read, as handed back by 'Transcribe a recording'. Chain it from that step rather than typing it.
- Format
caption_formattext - Which subtitle file to produce.One of:
srt(SRT (YouTube, video editors)),vtt(VTT (web video)). Default:srt. - Characters per caption
characters_per_captionnumber - How much text to fit on screen at once. Leave it empty to let AssemblyAI decide; around 32 keeps captions to a single line on a phone.From 10 to 200.
Outputs
caption_countnumber- How many captions are in it.
captionstext- The subtitle file's contents as text, for a step that wants to read or paste them rather than attach the file.
content_typetext- What kind of file it is.
document_reftext- The saved subtitle file. Pass this to a later step that sends, uploads or stores a file.
documentslist- The saved subtitle file, as a one-item list.
filenametext- What the file is called.
formattext- 'srt' or 'vtt'.
size_bytesnumber- How big it is, in bytes.
transcript_idtext- The transcript the captions came from.
urltext- Where to download it from Lodol.
Example output
{
"caption_count": 2,
"captions": "1\n00:00:00,520 --> 00:00:04,100\nThanks for calling Northwind Support, this is Priya.\n\n2\n00:00:04,500 --> 00:00:08,120\nHi Priya, our invoice this month came in almost double.\n",
"content_type": "application/x-subrip",
"document_ref": "doc_7c31f0ab92",
"documents": [
{
"content_type": "application/x-subrip",
"document_ref": "doc_7c31f0ab92",
"filename": "9ea68fd3-f953-42c1-9742-976c447fb463.srt",
"size_bytes": 1482,
"url": "/actions/core/serve-document/doc_7c31f0ab92"
}
],
"filename": "9ea68fd3-f953-42c1-9742-976c447fb463.srt",
"format": "srt",
"size_bytes": 1482,
"transcript_id": "9ea68fd3-f953-42c1-9742-976c447fb463",
"url": "/actions/core/serve-document/doc_7c31f0ab92"
}Get the bleeped recording
Save the copy of the recording with the personal details beeped out, so the audio can be shared, kept or used for training without the private parts in it. Only exists when 'Transcribe a recording' was asked to bleep the audio, and AssemblyAI only keeps it for 24 hours, so fetch it in the same workflow rather than days later.
Inputs
- Transcript
transcript_idtextRequired - The transcript to read, as handed back by 'Transcribe a recording'. Chain it from that step rather than typing it.
Outputs
content_typetext- What kind of file it is.
document_reftext- The saved recording. Pass this to a later step that sends, uploads or stores a file.
documentslist- The saved recording, as a one-item list.
filenametext- What the file is called.
size_bytesnumber- How big it is, in bytes.
statustext- 'redacted_audio_ready' once AssemblyAI has finished making it.
transcript_idtext- The transcript it belongs to.
urltext- Where to download it from Lodol.
Example output
{
"content_type": "audio/mpeg",
"document_ref": "doc_2f80ba4c17",
"documents": [
{
"content_type": "audio/mpeg",
"document_ref": "doc_2f80ba4c17",
"filename": "9ea68fd3-f953-42c1-9742-976c447fb463-bleeped.mp3",
"size_bytes": 2248106,
"url": "/actions/core/serve-document/doc_2f80ba4c17"
}
],
"filename": "9ea68fd3-f953-42c1-9742-976c447fb463-bleeped.mp3",
"size_bytes": 2248106,
"status": "redacted_audio_ready",
"transcript_id": "9ea68fd3-f953-42c1-9742-976c447fb463",
"url": "/actions/core/serve-document/doc_2f80ba4c17"
}Get the paragraphs
The transcript broken into paragraphs, each with where it falls in the recording. Use it when you want the transcript laid out to be read (in a document, an email or a page), rather than as one block.
Inputs
- Transcript
transcript_idtextRequired - The transcript to read, as handed back by 'Transcribe a recording'. Chain it from that step rather than typing it.
Outputs
confidencenumber- How sure AssemblyAI is of the words, from 0 to 1.
countnumber- How many there are.
duration_secondsnumber- How long the recording is, in seconds.
passageslist- The transcript, in order.
split_bytext- 'sentence' or 'paragraph'.
transcript_idtext- The transcript this came from.
Example output
{
"confidence": 0.9432,
"count": 2,
"duration_seconds": 281,
"passages": [
{
"confidence": 0.96,
"end_seconds": 4.1,
"speaker": "A",
"start_seconds": 0.52,
"text": "Thanks for calling Northwind Support, this is Priya."
},
{
"confidence": 0.98,
"end_seconds": 5.36,
"speaker": "A",
"start_seconds": 4.12,
"text": "How can I help today?"
}
],
"split_by": "paragraph",
"transcript_id": "9ea68fd3-f953-42c1-9742-976c447fb463"
}Get the sentences
The transcript broken into sentences, each with where it falls in the recording and who said it. Use it to pull a quote with a timestamp, or to walk the transcript a sentence at a time.
Inputs
- Transcript
transcript_idtextRequired - The transcript to read, as handed back by 'Transcribe a recording'. Chain it from that step rather than typing it.
Outputs
confidencenumber- How sure AssemblyAI is of the words, from 0 to 1.
countnumber- How many there are.
duration_secondsnumber- How long the recording is, in seconds.
passageslist- The transcript, in order.
split_bytext- 'sentence' or 'paragraph'.
transcript_idtext- The transcript this came from.
Example output
{
"confidence": 0.9432,
"count": 2,
"duration_seconds": 281,
"passages": [
{
"confidence": 0.96,
"end_seconds": 4.1,
"speaker": "A",
"start_seconds": 0.52,
"text": "Thanks for calling Northwind Support, this is Priya."
},
{
"confidence": 0.98,
"end_seconds": 5.36,
"speaker": "A",
"start_seconds": 4.12,
"text": "How can I help today?"
}
],
"split_by": "sentence",
"transcript_id": "9ea68fd3-f953-42c1-9742-976c447fb463"
}Transcribe a recording
Turn an audio or video recording into text and wait for it. Point it at a call, a meeting, a voicemail or a podcast (upload the file, use one an earlier step produced, or paste a link) and get back everything that was said, who said it, and, if you ask, a summary, the sentiment, the topics and the names and amounts mentioned. Personal details can be taken out as it goes.
Inputs
- Recording
recordingtextRequired - The audio or video to transcribe: upload a file, pick one an earlier step produced, or paste a link to one.
- Language
languagetext - The language being spoken. Leave it on automatic unless the recording is short or noisy enough that detection might get it wrong.One of:
auto(Detect automatically (recommended)),en(English (global)),en_us(English (US)),en_uk(English (British)),en_au(English (Australian)),es(Spanish),fr(French),de(German),it(Italian),pt(Portuguese), and 93 more. Default:auto. - Tell the speakers apart
identify_speakerstrue/false - Label who is speaking, so the transcript reads as a conversation rather than one block of text. Turn this on for calls, interviews and meetings.Default:
false. - How many people are speaking
expected_speakersnumber - Only if you know. Telling AssemblyAI the number keeps it from splitting one person into two. Needs 'Tell the speakers apart' turned on.From 1 to 10.
- Also work out
analyzelist - What to read out of the recording alongside the words. Each one comes back as its own field. A summary and chapters can't be done in the same pass (pick whichever you need), and either one transcribes with an older, slightly less accurate model, so leave both off when the words themselves matter most.One or more of:
summary(A summary of the whole recording),chapters(Chapters, each with its own headline),key_phrases(The key phrases that came up),sentiment(How positive or negative each sentence was),entities(The names, dates, places and amounts mentioned),topics(What the recording was about),sensitive_content(Warnings about sensitive content). - Summary style
summary_styletext - The shape of the summary. Only applies when you have asked for one above.One of:
bullets(Bullet points),detailed_bullets(Detailed bullet points),paragraph(A paragraph),headline(A one-line headline),one_line(Just a few words). Default:bullets. - Remove personal information
remove_personal_informationlist - What to take out of the transcript. Anything removed is replaced with a label such as [PERSON_NAME], so the transcript still reads. Leave it empty to keep the recording exactly as spoken.One or more of:
everything(Everything personal (recommended)),names(Names of people),ages_and_birthdays(Ages and dates of birth),phone_numbers(Phone numbers),email_addresses(Email addresses),addresses(Street addresses and locations),card_details(Payment card details),bank_details(Bank and account details),social_security_numbers(Social security numbers),id_numbers(Licence, passport and vehicle numbers), and 6 more. - Also bleep the audio
bleep_the_recordingtrue/false - Make a copy of the recording with the removed details beeped out, which 'Get the bleeped recording' can then download. Needs something chosen above.Default:
false. - Words to listen for
words_to_listen_forlist - Names, products or jargon the recording uses that a transcriber would not expect: 'Lodol', 'Skipflow', a drug name, a customer's surname. Short phrases are fine, up to six words each.
Outputs
chapterslist- The recording split into chapters. Only when chapters were asked for.
confidencenumber- How sure AssemblyAI is of the words, from 0 to 1.
duration_secondsnumber- How long the recording is, in seconds.
entitieslist- The people, places, dates and amounts that were mentioned. Only when entities were asked for.
key_phraseslist- The phrases that stood out, most important first. Only when key phrases were asked for.
languagetext- The language that was spoken, detected or set.
overall_sentimenttext- 'positive', 'neutral' or 'negative' for the recording as a whole, from whether positive or negative sentences won out.
recording_urltext- The recording AssemblyAI transcribed.
sensitive_contentlist- Each passage that was flagged, and what for.
sensitive_content_topicslist- The kinds of sensitive content found anywhere in the recording, such as 'profanity'.
sentiment_countsobject- How many sentences were positive, neutral and negative.
sentiment_segmentslist- Every sentence with its own sentiment, in order.
speaker_transcripttext- The same words laid out as 'Speaker A: …' lines. Only when speakers were identified.
speakerslist- The speakers it heard, in the order they first spoke. Only when speakers were identified.
statustext- 'completed' when the words are ready. 'queued' or 'processing' means AssemblyAI is still working on it.
summarytext- The summary. Only when a summary was asked for.
texttext- Everything that was said, as one piece of text.
topicslist- What the recording was about, most relevant first. Only when topics were asked for.
transcript_idtext- AssemblyAI's ID for this transcript. Pass it to any of the other AssemblyAI steps.
utteranceslist- Each turn of the conversation, in order.
word_countnumber- How many words were said.
Example output
{
"chapters": [],
"confidence": 0.9432,
"duration_seconds": 281,
"entities": [
{
"end_seconds": 3.2,
"start_seconds": 2.8,
"text": "Priya",
"type": "person_name"
},
{
"end_seconds": 2.6,
"start_seconds": 1.4,
"text": "Northwind Support",
"type": "organization"
}
],
"key_phrases": [
{
"count": 2,
"rank": 0.08,
"text": "seat count"
},
{
"count": 3,
"rank": 0.07,
"text": "invoice"
}
],
"language": "en_us",
"overall_sentiment": "neutral",
"recording_url": "https://cdn.assemblyai.com/upload/4f2c1a90-support-call.m4a",
"sensitive_content": [],
"sensitive_content_topics": [],
"sentiment_counts": {
"negative": 2,
"neutral": 3,
"positive": 2
},
"sentiment_segments": [
{
"confidence": 0.79,
"end_seconds": 4.1,
"sentiment": "positive",
"speaker": "A",
"start_seconds": 0.52,
"text": "Thanks for calling Northwind Support, this is Priya."
}
],
"speaker_transcript": "A: Thanks for calling Northwind Support, this is Priya.\nB: Hi Priya, our invoice this month came in almost double what we expected and I want to understand what changed before I approve it.\nA: I can see the seat count went from twelve to twenty-one in May, which is what moved the bill. I can credit the difference for this cycle and set it so an admin approves any seat change first.",
"speakers": [
"A",
"B"
],
"status": "completed",
"summary": "- The customer's invoice roughly doubled this month.\n- The increase came from the seat count rising from twelve to twenty-one in May.\n- Support offered a credit for this cycle and an admin approval step for future seat changes.",
"text": "Thanks for calling Northwind Support, this is Priya. Hi Priya, our invoice this month came in almost double what we expected and I want to understand what changed before I approve it. I can see the seat count went from twelve to twenty-one in May, which is what moved the bill. I can credit the difference for this cycle and set it so an admin approves any seat change first.",
"topics": [
{
"relevance": 0.91,
"topic": "Business>BusinessSoftwareAndServices"
},
{
"relevance": 0.42,
"topic": "Business>Sales"
}
],
"transcript_id": "9ea68fd3-f953-42c1-9742-976c447fb463",
"utterances": [
{
"confidence": 0.96,
"end_seconds": 4.1,
"speaker": "A",
"start_seconds": 0.52,
"text": "Thanks for calling Northwind Support, this is Priya."
},
{
"confidence": 0.94,
"end_seconds": 13.88,
"speaker": "B",
"start_seconds": 4.5,
"text": "Hi Priya, our invoice this month came in almost double what we expected and I want to understand what changed before I approve it."
}
],
"word_count": 74
}