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
Overview
Transform your webinar registrations from basic form submissions into a verified, personalized, and premium attendee experience.
This workflow automates the initial screening process for new job applications, freeing up your recruitment team to focus on qualified candidates. It receives applications from a webhook, uses OpenAI