Unlock the full potential of AssemblyAI and n8n’s automation platform by connecting AssemblyAI’s speech-to-text and speech understanding capabilities with over 1,000 apps, data sources, services, and n8n’s built-in AI features.
The AssemblyAI n8n integration is built and maintained by AssemblyAI (verified by n8n).
Overview
This comprehensive tutorial walks you through building a complete AssemblyAI workflow within n8n Cloud that:
- Watches for changes to a Google Drive folder
- Once an audio file is added, submits a transcription request to AssemblyAI with the audio
- Polls for the transcription process to complete
- Once complete, processes the transcript into a text file with just the transcript text and speaker labels
- Saves the processed transcript
.txtfile output to a Google Drive folder - Deletes the transcript from AssemblyAI’s servers
The Google Drive n8n integration is used in this example for file storage and triggering, but you can adapt the workflow to use other services like Dropbox, Amazon S3, FTP/SFTP, or webhooks based on your needs. For all available integrations, see the n8n integrations page.
Prerequisites
Before you begin, you’ll need:
-
- Signing up for an AssemblyAI account is free! An account on the free tier can transcribe up to $50 in transcription and will be able to process up to five files concurrently. If you upgrade your account before using $50 in transcription any unused amount will be retained on your account.
An n8n account, either via n8n Cloud (recommended) or a self-hosted instance.
A Google Cloud account for Google Drive API access
- A folder in Google Drive to monitor for new audio files (
/audio_files) - A folder in Google Drive to save the formatted
.txttranscript output (/transcripts)
- A folder in Google Drive to monitor for new audio files (
Credentials
Before building your workflow, you’ll need to configure credentials for both Google Drive and AssemblyAI in n8n.
Google Drive OAuth Credentials
- Go to your n8n credentials page
- Click Add Credential and search for “Google Drive OAuth2 API”
- Follow the setup process to connect your Google Drive account with Google Cloud Console:
- Save the credential
AssemblyAI Credentials
- Go to your n8n credentials page
- Click Add Credential and search for “AssemblyAI API”
- Enter your AssemblyAI API key
- Save the credential
Once both credentials are configured, you can use them throughout your workflow.
Instructions
Step 1: Set Up Your Workflow and Trigger
Create a New Workflow on n8n
- Log in to your n8n account (either n8n Cloud or your self-hosted instance)
- Click the + icon or New Workflow to create a new workflow
- Give your workflow a descriptive name (e.g., “AssemblyAI Transcription Pipeline”)
- Install the AssemblyAI node:
- Click the + icon to open the nodes panel
- Search for “AssemblyAI”
- Click the Install button next to the AssemblyAI node
Choose Your Trigger
The first step is to decide how n8n will know when your audio file is ready to transcribe. This is your workflow trigger. For this example, we’ll use Google Drive to automatically trigger the workflow when a new audio file is added to a folder.
- Link your Google Drive account with the credentials you created in the Credentials step.
- Add a Google Drive trigger node to your workflow
- Select the trigger event:
On changes involving a specific folder - Configure the trigger parameters:
- Credential to connect with: Select your Google Drive credentials
- Poll Times: Set Mode to Every Minute
- Trigger On: Changes Involving a Specific Folder
- Folder: From list + Select the folder in Google Drive to monitor
- Watch For: File Created
When a new audio file is added to the specified Google Drive folder, the workflow will run.
To test the workflow, you can manually trigger it at any time by clicking the orange Execute Workflow button in the n8n editor to populate the nodes with sample data.
For the Google Drive trigger to work as intended, you will need to deploy this workflow (to n8n cloud) and then add a new audio file to the monitored folder in Google Drive (/audio_files).
Step 2: Upload Audio File (Optional)
After the Google Drive trigger fires, you have the file’s webContentLink available at {{ $json.webContentLink }}.
For files under 100MB
You can skip this step and use the public Google Drive link directly in Step 3 without uploading. AssemblyAI accepts all Google Drive files below 100MB.
For files over 100MB
Use the AssemblyAI Upload node:
- Add a Google Drive “Download File” node and configure it to download the file by ID (you can get the file ID from the trigger response)
- Add an AssemblyAI “Upload a file” node
- Configure the credential with your AssemblyAI API key
- The upload will return an
upload_urlto use in the next step
Step 3: Submit Transcription Request
Now submit the transcription request with your desired features enabled.
Add the Transcription (Create) Node
Using the + sign linked to the Google Drive trigger, add an AssemblyAI Create a transcription node.
Configure the Node Parameters
- Credential to connect with: Select your AssemblyAI Account credential (if you haven’t set this up yet, see Credentials)
- Resource: Transcript
- Operation: Create
- Audio URL:
{{ $json.webContentLink }}
Enable Features
In Additional Fields, enable the following features for this tutorial:
- Speaker Labels:
true - Language Detection:
true
The response will contain a transcript_id that you’ll use to poll for completion.
Step 4: Poll for Transcription Completion
Since transcription is asynchronous, the transcription request returns immediately. You need to poll the API until the transcript is ready.
Add a Wait Node
Add a Wait node and configure the wait parameters:
- Resume: After Time Interval
- Wait Amount: 3.00
- Wait Unit: Seconds
This will wait 3 seconds before checking the transcript’s status.
Add the Transcription (Get) Node
Add an AssemblyAI Get a transcription node after the Wait node and configure the node parameters:
- Credential to connect with: Select your AssemblyAI Account credential (see Credentials)
- Resource: Transcript
- Operation: Get
- Transcript ID:
{{ $json.id }}
Add a Switch Node
Add a Switch node after the Get a transcription node and configure the switch to check the transcript’s status:
Add 4 routing rules, each with:
- Value 1:
{{ $json.status }} - Condition: “is equal to”
- Value 2: Set one of these for each rule:
queuedprocessingerrorcompleted
Handle Switch Outputs
Handle each switch node output based on the transcript status:
- Output 0 (queued): Connect back to the Wait node to continue polling
- Output 1 (processing): Connect back to the Wait node to continue polling
- Output 2 (error): Add a Stop and Error node to halt the workflow
- Output 3 (completed): Continue to the next step to process the completed transcript
Step 5: Process Transcript Output into a Human-Readable Transcript
Once you have the completed transcript, we want to manipulate the data into a more usable format.
Add a Code Node (Python)
Add a Code node (Python) to your workflow.
Use this Code to Format Utterances
Use this code to format utterances into a readable transcript:
transcript = _('Get a transcription').first().json
formatted_text = ''
if 'utterances' in transcript and transcript['utterances']:
# Format with speaker labels
for utterance in transcript['utterances']:
formatted_text += f"Speaker {utterance['speaker']}: {utterance['text']}\n\n"
else:
# Use plain text if no speaker labels
formatted_text = transcript['text']
return {'formattedText': formatted_text}
Step 6: Save to Google Drive
To save the formatted transcript back to Google Drive:
Add a Convert to File Node
Add a Convert to File node and configure it:
- Operation: Convert to Text File
- Text Input Field: formattedText
- Put Output File in Field: data
Add a Google Drive Upload File Node
Add a Google Drive Upload file node and configure it:
- Credential to connect with: Select your Google Drive credential
- Resource: File
- Operation: Upload
- Input Data Field Name: data
- File Name:
{{ $('Get a transcription').item.json.id }} - Parent Drive: From list > My Drive
- Parent Folder: From list > transcripts
Step 7: Delete Transcript (Optional)
Once you’re done processing the transcript, as it is now saved in Google Drive, you can optionally delete it from AssemblyAI’s servers.
Add the Transcription (Delete) Node
Add an AssemblyAI Delete a transcription node at the end of your workflow.
Configure the Node
Configure the node parameters:
- Credential to connect with: Select your AssemblyAI Account credential
- Resource: Transcript
- Operation: Delete
- Transcript ID:
{{ $('Get a transcription').item.json.id }}
The transcript will be permanently deleted from AssemblyAI’s servers.
Step 8: Deploy
Once the transcript has been deleted, the workflow is complete! At this point, it should look like this:
Now you can deploy the workflow to n8n Cloud by navigating back to the n8n Cloud Overview page, locating your workflow, and moving the slider icon to the Active position.
And we’re done! Add a file to /audio_files in Google Drive, and within a few seconds to a few minutes (depending on the Poll Times set for the Google Drive trigger and the duration of the audio file), you should see the transcript appear in the /transcripts Google Drive folder.
Conclusion
In this tutorial, you built a complete AssemblyAI transcription workflow in n8n that automatically processes audio files from Google Drive, submits them to AssemblyAI for transcription, polls for completion, formats the transcript with speaker labels, saves the output back to Google Drive as a .txt file, and finally deletes the transcript from AssemblyAI’s servers.
This is just one simple idea, but the possibilities are endless! You can customize this workflow further by adding additional AssemblyAI features and products like sentiment analysis, entity detection, and LLM Gateway (see the “What can you do with AssemblyAI?” section of this page for all available actions), or by integrating with other services like Slack, OpenAI, Supabase, and the hundreds of other official n8n integrations.