This workflow corresponds to n8n.io template #13826 — we link there as the canonical source.
This workflow follows the Google Drive → Google Sheets recipe pattern — see all workflows that pair these two integrations.
The workflow JSON
Copy or download the full n8n JSON below. Paste it into a new n8n workflow, add your credentials, activate. Full import guide →
{
"id": "tERdsAbhelx64Fx0",
"meta": {
"templateCredsSetupCompleted": true
},
"name": "n8n Suno Music Automation: Generate Custom AI Songs from Text Prompts",
"tags": [],
"nodes": [
{
"id": "7ce6840b-f4d2-48b1-957c-72ef2cc6c76d",
"name": "Overview & Instructions",
"type": "n8n-nodes-base.stickyNote",
"position": [
-256,
-144
],
"parameters": {
"width": 1140,
"height": 956,
"content": "## \ud83c\udfb5 n8n Suno Music Automation\n### Generate Custom AI Songs from Text Prompts\n\nBuild a fully automated music generation workflow in n8n using Suno to create and store AI-generated songs.\n\n### What's the Goal?\nAutomate end-to-end AI music creation \u2014 from a simple text prompt to a fully generated, stored, and shareable song \u2014 using Suno's API inside n8n with zero manual effort.\n\n### Why Does It Matter?\nAI music generation is powerful but manual. This workflow lets you batch-generate songs, integrate music into apps or content pipelines, and store outputs automatically \u2014 saving hours of repetitive work.\n\n### How It Works\n1. Webhook or Schedule triggers the flow with a text prompt\n2. Prompt is enriched/formatted for best Suno results\n3. Suno API call initiates song generation\n4. Workflow polls until song is ready (async wait loop)\n5. Song metadata & audio URL retrieved\n6. File downloaded and saved to cloud storage (Google Drive / S3)\n7. Metadata logged to Google Sheets / Airtable\n8. Notification sent via Slack / Email\n\n### Configuration Requirements\n- Suno API key (via RapidAPI or official Suno API access)\n- Cloud storage credentials (Google Drive / AWS S3)\n- Google Sheets or Airtable credentials (for logging)\n- Slack Bot Token or SMTP (for notifications)\n- Optional: OpenAI API key (for prompt enrichment)\n\n### Setup Guide\n1. Import workflow into n8n\n2. Connect credentials (Suno/RapidAPI, Google Drive, Sheets, Slack)\n3. Configure Set node: default genre, mood, duration, style tags\n4. Test with a manual trigger and a sample prompt\n5. Activate webhook \u2192 send prompts to trigger URL\n6. Monitor generation status and tune polling interval\n7. Check storage & logs for generated songs\n\n"
},
"typeVersion": 1
},
{
"id": "6f8087b3-7fc1-457d-85f7-f3b9413791f0",
"name": "1. Trigger",
"type": "n8n-nodes-base.stickyNote",
"position": [
960,
-36
],
"parameters": {
"color": 3,
"width": 432,
"height": 740,
"content": "## 1. Trigger & Prompt Input\nWebhook or schedule \u2192 receive and prepare the music prompt"
},
"typeVersion": 1
},
{
"id": "55521757-9241-4014-a9c5-f0a502a5f96a",
"name": "2. Enrichment Phase",
"type": "n8n-nodes-base.stickyNote",
"position": [
1424,
-16
],
"parameters": {
"color": 5,
"width": 200,
"height": 720,
"content": "## 2. Prompt Enrichment\nUse AI to enhance prompt with genre, mood & style tags for best Suno output"
},
"typeVersion": 1
},
{
"id": "102f7f37-dc19-4330-a8ca-43401780d440",
"name": "3. Suno Phase",
"type": "n8n-nodes-base.stickyNote",
"position": [
1664,
0
],
"parameters": {
"color": 4,
"width": 1104,
"height": 700,
"content": "## 3. Suno Generation & Polling\nSubmit to Suno API \u2192 poll until song is ready"
},
"typeVersion": 1
},
{
"id": "0c909a7e-4f80-4466-8bfc-a7da4053ddec",
"name": "4. Storage & Output",
"type": "n8n-nodes-base.stickyNote",
"position": [
2816,
0
],
"parameters": {
"color": 3,
"width": 680,
"height": 696,
"content": "## 4. Store, Log & Notify\nDownload audio \u2192 Cloud Storage \u2192 Log \u2192 Slack alert"
},
"typeVersion": 1
},
{
"id": "442802db-9904-40a0-b1a6-4daa1e8f50e0",
"name": "Webhook: Receive Prompt",
"type": "n8n-nodes-base.webhook",
"position": [
1040,
352
],
"parameters": {
"path": "suno-generate-song",
"options": {},
"httpMethod": "POST"
},
"typeVersion": 2
},
{
"id": "aae08c5c-0e38-41ed-baac-0a5dd6128b70",
"name": "Daily Batch (fallback)",
"type": "n8n-nodes-base.scheduleTrigger",
"position": [
1040,
544
],
"parameters": {
"rule": {
"interval": [
{
"field": "hours",
"hoursInterval": 24
}
]
}
},
"typeVersion": 1.3
},
{
"id": "f5080e4a-10bc-4b0a-b5d0-becc41126dd2",
"name": "Set Music Config",
"type": "n8n-nodes-base.set",
"position": [
1264,
448
],
"parameters": {
"values": {
"string": [
{
"name": "default_prompt",
"value": "An uplifting electronic pop song about chasing your dreams"
},
{
"name": "genre",
"value": "pop"
},
{
"name": "mood",
"value": "uplifting"
},
{
"name": "style_tags",
"value": "electronic, energetic, modern"
},
{
"name": "duration_seconds",
"value": "60"
},
{
"name": "storage_folder",
"value": "AI-Generated-Songs"
},
{
"name": "log_sheet_id",
"value": "your-google-sheet-id-here"
}
]
},
"options": {}
},
"typeVersion": 2
},
{
"id": "ccaf90de-c02c-468b-b2a4-57a057b11d39",
"name": "Suno: Submit Generation Job",
"type": "n8n-nodes-base.httpRequest",
"position": [
1712,
448
],
"parameters": {
"url": "https://suno-api.p.rapidapi.com/generate",
"options": {},
"sendBody": true,
"sendHeaders": true,
"bodyParameters": {
"parameters": [
{
"name": "prompt",
"value": "={{ $json.message.content }}"
},
{
"name": "tags",
"value": "={{ $('Set Music Config').item.json.style_tags }}"
},
{
"name": "make_instrumental",
"value": "false"
},
{
"name": "wait_audio",
"value": "false"
}
]
},
"headerParameters": {
"parameters": [
{
"name": "x-rapidapi-host",
"value": "suno-api.p.rapidapi.com"
},
{
"name": "x-rapidapi-key",
"value": "={{ $credentials.rapidApiKey }}"
},
{
"name": "Content-Type",
"value": "application/json"
}
]
}
},
"typeVersion": 4.2
},
{
"id": "1949fb9d-c581-4e8c-9b81-11454fbac54c",
"name": "Wait 30s (Polling Delay)",
"type": "n8n-nodes-base.wait",
"position": [
1936,
448
],
"parameters": {},
"typeVersion": 1.1
},
{
"id": "125ffb37-c45b-49f9-8bd6-1b8200b9707b",
"name": "Suno: Poll Song Status",
"type": "n8n-nodes-base.httpRequest",
"position": [
2160,
448
],
"parameters": {
"url": "=https://suno-api.p.rapidapi.com/get?ids={{ $('Suno: Submit Generation Job').item.json[0].id }}",
"options": {},
"sendHeaders": true,
"headerParameters": {
"parameters": [
{
"name": "x-rapidapi-host",
"value": "suno-api.p.rapidapi.com"
},
{
"name": "x-rapidapi-key",
"value": "={{ $credentials.rapidApiKey }}"
}
]
}
},
"typeVersion": 4.2
},
{
"id": "8a5ad676-94a1-47a4-bd05-53ffc8d2e971",
"name": "Song Ready?",
"type": "n8n-nodes-base.if",
"position": [
2384,
448
],
"parameters": {
"conditions": {
"string": [
{
"value1": "={{ $json[0].status }}",
"value2": "complete"
}
]
}
},
"typeVersion": 1
},
{
"id": "21ce21ad-68af-44f2-8124-141aecc3ec11",
"name": "Download Audio File",
"type": "n8n-nodes-base.httpRequest",
"position": [
2608,
352
],
"parameters": {
"url": "={{ $json[0].audio_url }}",
"options": {
"response": {
"response": {
"responseFormat": "file"
}
}
}
},
"typeVersion": 4.2
},
{
"id": "a6bf6e4c-963d-491e-8cd4-33cf922ffdfb",
"name": "Google Drive: Save Song",
"type": "n8n-nodes-base.googleDrive",
"position": [
2832,
352
],
"parameters": {
"name": "={{ $('Suno: Poll Song Status').item.json[0].title || 'ai-song-' + $now.toFormat('yyyyMMdd-HHmmss') }}.mp3",
"options": {},
"folderId": {
"mode": "string",
"value": "={{ $('Set Music Config').item.json.storage_folder }}"
}
},
"credentials": {
"googleDriveOAuth2Api": {
"name": "<your credential>"
}
},
"typeVersion": 3
},
{
"id": "b298b099-4b19-4124-aada-9b2b6b005f69",
"name": "Google Sheets: Log Song",
"type": "n8n-nodes-base.googleSheets",
"position": [
3056,
352
],
"parameters": {
"columns": {
"value": {
"Title": "={{ $('Suno: Poll Song Status').item.json[0].title }}",
"Prompt": "={{ $('OpenAI: Enrich Prompt').item.json.message.content }}",
"Song ID": "={{ $('Suno: Poll Song Status').item.json[0].id }}",
"Duration": "={{ $('Suno: Poll Song Status').item.json[0].duration }}",
"Audio URL": "={{ $('Suno: Poll Song Status').item.json[0].audio_url }}",
"Image URL": "={{ $('Suno: Poll Song Status').item.json[0].image_url }}",
"Generated At": "={{ $now.toISO() }}",
"Drive File ID": "={{ $json.id }}"
},
"mappingMode": "defineBelow"
},
"options": {},
"operation": "append",
"sheetName": {
"mode": "string",
"value": "Song Log"
},
"documentId": {
"mode": "string",
"value": "={{ $('Set Music Config').item.json.log_sheet_id }}"
}
},
"credentials": {
"googleSheetsOAuth2Api": {
"name": "<your credential>"
}
},
"typeVersion": 4.4
},
{
"id": "d061b43c-3efc-4b95-8c45-8e0fd5abb8cc",
"name": "Notify Slack",
"type": "n8n-nodes-base.slack",
"position": [
3280,
352
],
"parameters": {
"text": "={{ '\ud83c\udfb5 New AI Song Generated!\\n\\n*Title:* ' + $('Suno: Poll Song Status').item.json[0].title + '\\n*Prompt:* ' + $('OpenAI: Enrich Prompt').item.json.message.content + '\\n*Listen:* ' + $('Suno: Poll Song Status').item.json[0].audio_url + '\\n*Saved to Drive \u2705*' }}",
"channel": "music-generation",
"attachments": [],
"otherOptions": {}
},
"credentials": {
"slackApi": {
"name": "<your credential>"
}
},
"typeVersion": 1
},
{
"id": "cfcc044e-1acd-4d89-a9cc-831cdddb718e",
"name": "Notify Failure",
"type": "n8n-nodes-base.slack",
"position": [
2608,
544
],
"parameters": {
"text": "={{ '\u274c Song Generation Failed\\n\\n*Job ID:* ' + $('Suno: Submit Generation Job').item.json[0].id + '\\n*Status:* ' + $json[0].status + '\\n*Error:* ' + ($json[0].error_message || 'Unknown error') }}",
"channel": "music-generation",
"attachments": [],
"otherOptions": {}
},
"credentials": {
"slackApi": {
"name": "<your credential>"
}
},
"typeVersion": 1
},
{
"id": "fca14269-5014-4cba-b5c1-6d5a66398e9a",
"name": "OpenAI: Enrich Prompt",
"type": "@n8n/n8n-nodes-langchain.openAi",
"position": [
1488,
448
],
"parameters": {
"options": {},
"messages": {
"values": [
{}
]
},
"resource": "conversation"
},
"credentials": {
"openAiApi": {
"name": "<your credential>"
}
},
"typeVersion": 2.1
}
],
"active": false,
"settings": {
"executionOrder": "v1"
},
"versionId": "289d6e55-2375-4e8f-969a-ef225cc814a7",
"connections": {
"Song Ready?": {
"main": [
[
{
"node": "Download Audio File",
"type": "main",
"index": 0
}
],
[
{
"node": "Notify Failure",
"type": "main",
"index": 0
}
]
]
},
"Set Music Config": {
"main": [
[
{
"node": "OpenAI: Enrich Prompt",
"type": "main",
"index": 0
}
]
]
},
"Download Audio File": {
"main": [
[
{
"node": "Google Drive: Save Song",
"type": "main",
"index": 0
}
]
]
},
"OpenAI: Enrich Prompt": {
"main": [
[
{
"node": "Suno: Submit Generation Job",
"type": "main",
"index": 0
}
]
]
},
"Daily Batch (fallback)": {
"main": [
[
{
"node": "Set Music Config",
"type": "main",
"index": 0
}
]
]
},
"Suno: Poll Song Status": {
"main": [
[
{
"node": "Song Ready?",
"type": "main",
"index": 0
}
]
]
},
"Google Drive: Save Song": {
"main": [
[
{
"node": "Google Sheets: Log Song",
"type": "main",
"index": 0
}
]
]
},
"Google Sheets: Log Song": {
"main": [
[
{
"node": "Notify Slack",
"type": "main",
"index": 0
}
]
]
},
"Webhook: Receive Prompt": {
"main": [
[
{
"node": "Set Music Config",
"type": "main",
"index": 0
}
]
]
},
"Wait 30s (Polling Delay)": {
"main": [
[
{
"node": "Suno: Poll Song Status",
"type": "main",
"index": 0
}
]
]
},
"Suno: Submit Generation Job": {
"main": [
[
{
"node": "Wait 30s (Polling Delay)",
"type": "main",
"index": 0
}
]
]
}
}
}
Credentials you'll need
Each integration node will prompt for credentials when you import. We strip credential IDs before publishing — you'll add your own.
googleDriveOAuth2ApigoogleSheetsOAuth2ApiopenAiApislackApi
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
About this workflow
Build a fully automated music generation workflow in n8n using Suno to create and store AI-generated songs.
Source: https://n8n.io/workflows/13826/ — original creator credit. Request a take-down →
Related workflows
Workflows that share integrations, category, or trigger type with this one. All free to copy and import.
This system meticulously guides each lead through a fully automated journey, from initial contact to a personalized follow-up and CRM integration.
A smart, fully automated coding pipeline built inside n8n that leverages Cursor AI to write, refactor, review, and optimize code projects — triggered by a webhook, schedule, or manual prompt. Every ou
This workflow captures new leads via webhook, enriches and scores them with Apollo and Google Gemini, logs everything in Google Sheets, and automates outreach, reply handling, follow-ups, meeting prep
Overview
Transform your webinar registrations from basic form submissions into a verified, personalized, and premium attendee experience.