In this article we’re going to cover:
- The Problem: Why manual audio-to-video uploads waste hours
- The Solution: Introducing
n8n-nodes-songs2vid - Step-by-Step Setup
- 3.1 Install the Community Node
- 3.2 Credentials & Node Inputs
- Example Workflows
- 4.1 Create a render (single audio upload)
- 4.2 Multiple audios upload
- All Endpoints
- Example Workflows (JSON)
- Feedback & Roadmap
Songs2VID turns MP3/WAV + artwork into a YouTube-ready MP4 and can upload it to your connected channel. The n8n node maps every public /api/v1 endpoint - upload, create render, poll status, playlists, API keys - so you can wire it into Drive/Dropbox/S3 triggers without babysitting FFmpeg.
At the end you’ll find ready-to-import workflow JSON for a single track and a batch flow.
Links
- npm: https://www.npmjs.com/package/n8n-nodes-songs2vid
- Docs: n8n integration | Songs2VID
- API reference: Endpoints | Songs2VID
- Workflow template JSON: https://docs.songs2vid.com/docs/n8n/workflow-template.json
1. The Problem
If you release music, beats, or podcast episodes regularly, the manual loop is painful:
- Export audio
- Open a video editor or “audio → video” tool
- Add cover art
- Export MP4
- Open YouTube Studio and upload metadata
That doesn’t scale for catalogs, label drops, or “new file in Drive → live on YouTube” automation.
You want something headless: trigger → upload → render → publish → notify Slack/Discord.
2. The Solution: n8n-nodes-songs2vid
Package name: n8n-nodes-songs2vid
What it does: wraps the Songs2VID REST API as native n8n nodes.
Typical flow:
Trigger (Drive / Dropbox / Webhook)
→ Upload cover (image)
→ Upload audio
→ Create Render
→ Webhook OR poll until complete
→ Notify / update Notion / etc.
Important: renders are async. A single HTTP call can take minutes. Use a webhook (recommended) or poll Get Render Status - don’t block one HTTP node waiting for FFmpeg.
Plans (cloud)
| Plan | REST API |
|---|---|
| Free / Independent Producer (€7) | Web UI only - API returns 403 |
| Developer & Automation (€15) | Full REST + webhooks |
| Self-hosted OSS | API always on at your own origin |
You also need YouTube connected on the Songs2VID dashboard (Google OAuth with YouTube scopes).
3. Step-by-step setup
3.1 Install the community node
Via n8n UI (recommended)
- Settings → Community nodes
- Install
- Enter exactly:
n8n-nodes-songs2vid
- On the canvas, search Songs2VID
Self-hosted n8n: ensure community packages are enabled:
N8N_COMMUNITY_PACKAGES_ENABLED=true
Manual install
cd ~/.n8n
npm install n8n-nodes-songs2vid
# restart n8n
3.2 Credentials & first node
Create an API key
-
Sign in at Songs2VID Dashboard
-
Settings → API access
-
Create your key
-
Copy (
s2yt_live_...)
Important Note: Requires Developer & Automation on cloud
Add credential in n8n
- Open any Songs2VID node → Create new credential
- API Key:
s2yt_live_...(with or withoutBearer)
- Base URL:
https://songs2vid.com(no trailing slash), or your self-hosted URL
Auth is always:
Authorization: Bearer s2yt_live_…
4. Example Workflow
4.1 Create a render
Try yourself:
Create Render returns:
{
"jobId": "clxxxxxxxx",
"status": "PENDING",
"statusUrl": "/api/v1/jobs/clxxxxxxxx"
}
Webhook payload example
event |
Meaning |
|---|---|
job.item.completed |
One track done |
job.item.failed |
One track failed |
job.completed |
All items succeeded |
job.failed |
All failed |
job.partial |
Mixed results |
4.2 Multiple audios upload
Two patterns:
A) One job, multiple items (recommended)
One cover + many audio files in a single Create Render - pass multiple items in Additional Fields → Items JSON (or use the node’s multi-track UI).
B) Loop per file
Try yourself:
For large catalogs, upload files first (POST /api/v1/upload per file), then one render job with all paths - see the batch docs.
5. All endpoints (node ↔ API)
| Resource | Operation | Method | Path |
|---|---|---|---|
| Discovery | Get API Catalog | GET | /api/v1 |
| File | Upload | POST | /api/v1/upload |
| Render | Create Render | POST | /api/v1/render |
| Render | Create Job (alias) | POST | /api/v1/jobs |
| Render | Create Batch | POST | /api/v1/jobs/batch |
| Render | Get Render Status | GET | /api/v1/jobs/:id |
| Render | List Renders | GET | /api/v1/jobs |
| Playlist | List | GET | /api/v1/playlists |
| Playlist | Create | POST | /api/v1/playlists |
| API Key | List / Create / Delete | GET/POST/DELETE | /api/v1/user/api-keys |
Upload types: image | audio | logo | font
Resolutions: 1920x1080, 1280x720, 854x480, 720x720, 640x360, 426x240
Layout templates (Pro): COVER_LEFT_TEXT_RIGHT, COVER_TOP_TEXT_BOTTOM, etc.
Optional on Create Render: webhook URL, watermark, playlist, per-track cover, art-track layout — all under Additional Fields.
There is no Delete Render endpoint — finished videos live on YouTube.
Full field reference: Endpoints | Songs2VID
6. Example workflow JSON
Import via ⋯ → Import from File / URL:
Official template (HTTP + Webhook - works even before installing the node):
https://docs.songs2vid.com/docs/n8n/workflow-template.json
After installing n8n-nodes-songs2vid, swap HTTP Request nodes for native Songs2VID nodes and keep the same webhook branch.
Before running:
- Create Header Auth or Songs2VID credential (
Bearer s2yt_live_...) - Set
SONGS2VID_WEBHOOK_URLto your Webhook node’s Production URL - Provide binary fields
coverandaudioon the trigger item
7. Troubleshooting
| Symptom | Fix |
|---|---|
| Package not found | Name must be exactly n8n-nodes-songs2vid |
403 Developer plan |
Upgrade to Developer & Automation |
403 YouTube not connected |
Reconnect Google + YouTube on dashboard |
| Webhook never fires | Use Production URL, workflow Active, HTTPS reachable |
| HTTP timeout | Don’t wait on Create Render - use webhook or poll |
429 |
60 req/min per key - honor Retry-After |
8. Feedback & roadmap
This is v1.0 - I’d love input from the n8n community:
- More workflow templates (Spotify/Dropbox/S3 triggers)?
- Built-in Wait-until-complete helper node?
- Make.com / Zapier parity?
Drop a reply with your use case (label, podcaster, beat maker, agency) and what you’d automate next.














