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": "xQ0xqhNzFeEdBpFK",
"name": "Generate 360\u00b0 Virtual Try-on Videos for Clothing with Kling API",
"tags": [],
"nodes": [
{
"id": "978b4ac4-0357-4d2b-8a02-7da04e6f3f1f",
"name": "When clicking \u2018Test workflow\u2019",
"type": "n8n-nodes-base.manualTrigger",
"position": [
160,
140
],
"parameters": {},
"typeVersion": 1
},
{
"id": "54d1c23f-3a13-4ec0-9b3b-3806e5faae18",
"name": "Kling Virtual Try-On Task",
"type": "n8n-nodes-base.httpRequest",
"position": [
620,
140
],
"parameters": {
"url": "https://api.piapi.ai/api/v1/task",
"method": "POST",
"options": {},
"jsonBody": "={\n \"model\": \"kling\",\n \"task_type\": \"ai_try_on\",\n \"input\": {\n \"model_input\": \"{{ $json.model_input }}\",\n \"dress_input\": \"{{ $json.dress_input }}\",\n \"upper_input\": \"{{ $json.upper_input }}\",\n \"lower_input\": \"{{ $json.lower_input }}\",\n \"batch_size\": 1\n }\n} ",
"sendBody": true,
"sendHeaders": true,
"specifyBody": "json",
"headerParameters": {
"parameters": [
{
"name": "x-api-key",
"value": "={{ $json['x-api-key'] }}"
}
]
}
},
"typeVersion": 4.2
},
{
"id": "5be9d932-c102-4a7e-b995-09c6bf17026c",
"name": "Switch",
"type": "n8n-nodes-base.switch",
"position": [
960,
200
],
"parameters": {
"rules": {
"values": [
{
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "5f61ee56-4ebe-411f-95e6-b47d9741e7a2",
"operator": {
"type": "string",
"operation": "equals"
},
"leftValue": "={{ $json.data.status }}",
"rightValue": "completed"
}
]
}
}
]
},
"options": {}
},
"typeVersion": 3.2
},
{
"id": "cdda4f40-1580-4a5a-a7f4-f1e4fbf7ceb4",
"name": "Get Kling Video Task",
"type": "n8n-nodes-base.httpRequest",
"position": [
1180,
440
],
"parameters": {
"url": "=https://api.piapi.ai/api/v1/task/{{ $json.data.task_id }}",
"options": {},
"sendHeaders": true,
"headerParameters": {
"parameters": [
{
"name": "x-api-key",
"value": "={{ $('Preset Parameters').item.json['x-api-key'] }}"
}
]
}
},
"typeVersion": 4.2
},
{
"id": "3e794d14-b55f-4936-90af-8237977d6635",
"name": "Generate kling video",
"type": "n8n-nodes-base.httpRequest",
"position": [
1140,
200
],
"parameters": {
"url": "https://api.piapi.ai/api/v1/task",
"method": "POST",
"options": {},
"jsonBody": "={\n \"model\": \"kling\",\n \"task_type\": \"video_generation\",\n \"input\": {\n \"version\": \"1.6\",\n \"image_url\": \"{{ $json.data.output.works[0].image.resource }}\",\n \"prompt\": \"{{ $('Preset Parameters').item.json.generate_video_prompt }}\"\n }\n} ",
"sendBody": true,
"sendHeaders": true,
"specifyBody": "json",
"headerParameters": {
"parameters": [
{
"name": "x-api-key",
"value": "={{ $('Preset Parameters').item.json['x-api-key'] }}"
}
]
}
},
"typeVersion": 4.2
},
{
"id": "3ae849b2-4bd4-454f-a759-e44a9736100d",
"name": "Preset Parameters",
"type": "n8n-nodes-base.set",
"position": [
380,
140
],
"parameters": {
"mode": "raw",
"options": {},
"jsonOutput": "{\n \"x-api-key\":\"\",\n \"model_input\": \"\",\n \"dress_input\": \"\",\n \"upper_input\":\"\",\n \"lower_input\":\"\",\n \"generate_video_prompt\": \"Walk on the catwalk, turn around, and finally stand still and pose\"\n}\n"
},
"typeVersion": 3.4
},
{
"id": "18c606e3-82e2-4c09-a87e-6bbc71363c1c",
"name": "Get Kling Virtual Try-On Task",
"type": "n8n-nodes-base.httpRequest",
"position": [
420,
460
],
"parameters": {
"url": "=https://api.piapi.ai/api/v1/task/{{ $json.data.task_id }}",
"options": {},
"sendHeaders": true,
"headerParameters": {
"parameters": [
{
"name": "x-api-key",
"value": "={{ $('Preset Parameters').item.json['x-api-key'] }}"
}
]
}
},
"typeVersion": 4.2
},
{
"id": "becf3d7b-d468-4b4a-b22f-d6d747e52664",
"name": "Check Data Status",
"type": "n8n-nodes-base.if",
"position": [
640,
460
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "or",
"conditions": [
{
"id": "e97a02cc-8d1d-4500-bce5-0a296c792b76",
"operator": {
"name": "filter.operator.equals",
"type": "string",
"operation": "equals"
},
"leftValue": "={{ $json.data.status }}",
"rightValue": "completed"
},
{
"id": "50b63a7a-52b5-4766-a859-96ac1ff949ec",
"operator": {
"name": "filter.operator.equals",
"type": "string",
"operation": "equals"
},
"leftValue": "={{ $json.data.status }}",
"rightValue": "failed"
}
]
}
},
"typeVersion": 2.2
},
{
"id": "d8ec251d-d47c-4341-909d-abdea385c1f9",
"name": "Wait for Image Generation",
"type": "n8n-nodes-base.wait",
"position": [
160,
460
],
"parameters": {},
"typeVersion": 1.1
},
{
"id": "88e3067f-0b1f-472a-937b-926c6d208453",
"name": "Wait for Video Generation",
"type": "n8n-nodes-base.wait",
"position": [
920,
440
],
"parameters": {},
"typeVersion": 1.1
},
{
"id": "36d75678-918f-42c5-97a7-7a13d1eacbd4",
"name": "Check Video Data Status",
"type": "n8n-nodes-base.switch",
"position": [
1560,
180
],
"parameters": {
"rules": {
"values": [
{
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "5f61ee56-4ebe-411f-95e6-b47d9741e7a2",
"operator": {
"type": "string",
"operation": "equals"
},
"leftValue": "={{ $json.data.status }}",
"rightValue": "completed"
}
]
}
}
]
},
"options": {}
},
"typeVersion": 3.2
},
{
"id": "7356d963-83c0-47a1-a728-9191f66d2f57",
"name": "Get Video Data Status",
"type": "n8n-nodes-base.if",
"position": [
1400,
440
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "or",
"conditions": [
{
"id": "e97a02cc-8d1d-4500-bce5-0a296c792b76",
"operator": {
"name": "filter.operator.equals",
"type": "string",
"operation": "equals"
},
"leftValue": "={{ $json.data.status }}",
"rightValue": "completed"
},
{
"id": "50b63a7a-52b5-4766-a859-96ac1ff949ec",
"operator": {
"name": "filter.operator.equals",
"type": "string",
"operation": "equals"
},
"leftValue": "={{ $json.data.status }}",
"rightValue": "failed"
}
]
}
},
"typeVersion": 2.2
},
{
"id": "9ef52637-ccc9-4817-8c14-5c54fa0af178",
"name": "Get Final Video URL",
"type": "n8n-nodes-base.set",
"position": [
1760,
180
],
"parameters": {
"mode": "raw",
"options": {},
"jsonOutput": "={\n \"video_url\": \"{{ $json.data.output.video_url }}\"\n}\n "
},
"typeVersion": 3.4
},
{
"id": "9a0194bd-59a5-45b1-a6e2-db0605eb4d7a",
"name": "Sticky Note",
"type": "n8n-nodes-base.stickyNote",
"position": [
140,
-120
],
"parameters": {
"width": 460,
"height": 220,
"content": "## Generate 360\u00b0 Virtual Try-on Videos for Clothing with Kling API (unofficial)\nThis tool is designed for e-commerce platforms, fashion brands, content creators, and content influencers. By uploading model and clothing images and linking your PiAPI account, you can swiftly generate a realistic video of the model sporting the outfit with a 360\u00b0 turn, offering an immersive viewing experience."
},
"typeVersion": 1
},
{
"id": "629697ae-cd49-4e8e-953d-a2f091ed9202",
"name": "Sticky Note1",
"type": "n8n-nodes-base.stickyNote",
"position": [
120,
700
],
"parameters": {
"width": 340,
"height": 200,
"content": "## Generate Virtual Try-on Image\nUpload model url, users have two solutions to upload clothing url: \n1. Upload `dress_input`\n2. Upload 'upper_input` and 'lower_input`"
},
"typeVersion": 1
},
{
"id": "710bd0f0-8b5a-469a-8b31-b6f738dc7f79",
"name": "Sticky Note2",
"type": "n8n-nodes-base.stickyNote",
"position": [
1640,
460
],
"parameters": {
"width": 340,
"content": "## Generate Final Video \nWait for generation and get the output url in the final node."
},
"typeVersion": 1
}
],
"active": false,
"settings": {
"executionOrder": "v1"
},
"versionId": "97ee31dd-b8be-4b37-bbed-363ac35d5268",
"connections": {
"Switch": {
"main": [
[
{
"node": "Generate kling video",
"type": "main",
"index": 0
}
]
]
},
"Check Data Status": {
"main": [
[
{
"node": "Switch",
"type": "main",
"index": 0
}
],
[
{
"node": "Wait for Image Generation",
"type": "main",
"index": 0
}
]
]
},
"Preset Parameters": {
"main": [
[
{
"node": "Kling Virtual Try-On Task",
"type": "main",
"index": 0
}
]
]
},
"Generate kling video": {
"main": [
[
{
"node": "Wait for Video Generation",
"type": "main",
"index": 0
}
]
]
},
"Get Kling Video Task": {
"main": [
[
{
"node": "Get Video Data Status",
"type": "main",
"index": 0
}
]
]
},
"Get Video Data Status": {
"main": [
[
{
"node": "Check Video Data Status",
"type": "main",
"index": 0
}
],
[
{
"node": "Wait for Video Generation",
"type": "main",
"index": 0
}
]
]
},
"Check Video Data Status": {
"main": [
[
{
"node": "Get Final Video URL",
"type": "main",
"index": 0
}
]
]
},
"Kling Virtual Try-On Task": {
"main": [
[
{
"node": "Wait for Image Generation",
"type": "main",
"index": 0
}
]
]
},
"Wait for Image Generation": {
"main": [
[
{
"node": "Get Kling Virtual Try-On Task",
"type": "main",
"index": 0
}
]
]
},
"Wait for Video Generation": {
"main": [
[
{
"node": "Get Kling Video Task",
"type": "main",
"index": 0
}
]
]
},
"Get Kling Virtual Try-On Task": {
"main": [
[
{
"node": "Check Data Status",
"type": "main",
"index": 0
}
]
]
},
"When clicking \u2018Test workflow\u2019": {
"main": [
[
{
"node": "Preset Parameters",
"type": "main",
"index": 0
}
]
]
}
}
}
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
How this works
Create engaging 360° virtual try-on videos for clothing items effortlessly, allowing customers to visualise products from all angles without physical photoshoots. This saves e-commerce businesses time and costs while boosting conversion rates through immersive shopping experiences. Ideal for fashion retailers or online stores using the Kling API via HTTP requests, the key step involves submitting garment images and generating the video task to produce seamless rotations.
Use this workflow when launching new clothing lines or updating product pages with dynamic visuals, especially for small teams lacking video production resources. Avoid it for non-apparel items or if you need real-time rendering, as it relies on API processing times. Common variations include integrating with Shopify to automate video uploads or adding email notifications upon completion.
About this workflow
Generate 360° Virtual Try-on Videos for Clothing with Kling API. Uses manualTrigger, httpRequest, stickyNote. Event-driven trigger; 16 nodes.
Source: https://github.com/Zie619/n8n-workflows — 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.
Create Animated Stories using GPT-4o-mini, Midjourney, Kling and Creatomate API. Uses httpRequest, stickyNote, manualTrigger. Event-driven trigger; 51 nodes.
Generate Leads with Google Maps - AlexK1919. Uses manualTrigger, scheduleTrigger, executeWorkflowTrigger, stopAndError. Event-driven trigger; 42 nodes.
Limit Code. Uses microsoftOutlookTrigger, httpRequest, limit, noOp. Event-driven trigger; 41 nodes.
AutoQoutesV2_template. Uses manualTrigger, httpRequest, stickyNote, googleSheets. Event-driven trigger; 28 nodes.
Turn YouTube Videos into Summaries, Transcripts, and Visual Insights. Uses manualTrigger, stickyNote, httpRequest. Event-driven trigger; 26 nodes.