Duplicates multiple Roblox instances in batch with shared parent and offset options. All duplicates can be created with the same positioning offset and moved to the same new parent.
Endpoint
Parameters
Array of paths to instances to duplicate.
Optional path to a different parent for all duplicated objects. If not provided, each clone will have the same parent as its original.
Optional position offset as an array of three numbers [x, y, z]. Applied to all duplicated objects that have a Position or CFrame property.
Response
Array of results, one for each path in the input. Each result contains: Returns true if this specific duplication was successful.
The full path to the duplicated object.
The name of the duplicated object.
The original path that was duplicated.
Error message if this specific operation failed.
Examples
Duplicate Multiple Parts
{
"paths" : [
"game.Workspace.Part1" ,
"game.Workspace.Part2" ,
"game.Workspace.Part3"
]
}
Response:
{
"results" : [
{
"ok" : true ,
"path" : "Workspace.Part1" ,
"name" : "Part1" ,
"sourcePath" : "game.Workspace.Part1"
},
{
"ok" : true ,
"path" : "Workspace.Part2" ,
"name" : "Part2" ,
"sourcePath" : "game.Workspace.Part2"
},
{
"ok" : true ,
"path" : "Workspace.Part3" ,
"name" : "Part3" ,
"sourcePath" : "game.Workspace.Part3"
}
]
}
Duplicate with Shared Offset
{
"paths" : [
"game.Workspace.Tree1" ,
"game.Workspace.Tree2" ,
"game.Workspace.Tree3"
],
"offset" : [ 50 , 0 , 0 ]
}
Response:
{
"results" : [
{
"ok" : true ,
"path" : "Workspace.Tree1" ,
"name" : "Tree1" ,
"sourcePath" : "game.Workspace.Tree1"
},
{
"ok" : true ,
"path" : "Workspace.Tree2" ,
"name" : "Tree2" ,
"sourcePath" : "game.Workspace.Tree2"
},
{
"ok" : true ,
"path" : "Workspace.Tree3" ,
"name" : "Tree3" ,
"sourcePath" : "game.Workspace.Tree3"
}
]
}
Duplicate to New Parent
{
"paths" : [
"game.ReplicatedStorage.Template.Part1" ,
"game.ReplicatedStorage.Template.Part2"
],
"newParent" : "game.Workspace.Level1"
}
Response:
{
"results" : [
{
"ok" : true ,
"path" : "Workspace.Level1.Part1" ,
"name" : "Part1" ,
"sourcePath" : "game.ReplicatedStorage.Template.Part1"
},
{
"ok" : true ,
"path" : "Workspace.Level1.Part2" ,
"name" : "Part2" ,
"sourcePath" : "game.ReplicatedStorage.Template.Part2"
}
]
}
Duplicate with Parent and Offset
{
"paths" : [
"game.Workspace.Checkpoint1" ,
"game.Workspace.Checkpoint2"
],
"newParent" : "game.Workspace.Checkpoints" ,
"offset" : [ 0 , 5 , 0 ]
}
Response:
{
"results" : [
{
"ok" : true ,
"path" : "Workspace.Checkpoints.Checkpoint1" ,
"name" : "Checkpoint1" ,
"sourcePath" : "game.Workspace.Checkpoint1"
},
{
"ok" : true ,
"path" : "Workspace.Checkpoints.Checkpoint2" ,
"name" : "Checkpoint2" ,
"sourcePath" : "game.Workspace.Checkpoint2"
}
]
}
Handling Partial Failures
{
"paths" : [
"game.Workspace.ValidPart" ,
"game.Workspace.NonExistent" ,
"game.Workspace.AnotherValidPart"
],
"offset" : [ 10 , 0 , 0 ]
}
Response:
{
"results" : [
{
"ok" : true ,
"path" : "Workspace.ValidPart" ,
"name" : "ValidPart" ,
"sourcePath" : "game.Workspace.ValidPart"
},
{
"error" : "Invalid path: game.Workspace.NonExistent" ,
"sourcePath" : "game.Workspace.NonExistent"
},
{
"ok" : true ,
"path" : "Workspace.AnotherValidPart" ,
"name" : "AnotherValidPart" ,
"sourcePath" : "game.Workspace.AnotherValidPart"
}
]
}
Create Multiple Copies from Template
{
"paths" : [
"game.ReplicatedStorage.NPCTemplate" ,
"game.ReplicatedStorage.NPCTemplate" ,
"game.ReplicatedStorage.NPCTemplate"
],
"newParent" : "game.Workspace.NPCs"
}
Response:
{
"results" : [
{
"ok" : true ,
"path" : "Workspace.NPCs.NPCTemplate" ,
"name" : "NPCTemplate" ,
"sourcePath" : "game.ReplicatedStorage.NPCTemplate"
},
{
"ok" : true ,
"path" : "Workspace.NPCs.NPCTemplate" ,
"name" : "NPCTemplate" ,
"sourcePath" : "game.ReplicatedStorage.NPCTemplate"
},
{
"ok" : true ,
"path" : "Workspace.NPCs.NPCTemplate" ,
"name" : "NPCTemplate" ,
"sourcePath" : "game.ReplicatedStorage.NPCTemplate"
}
]
}
Notes
Each object is duplicated independently; one failure does not stop others
Results are returned in the same order as the input paths
All duplicates share the same newParent and offset options
The sourcePath field in the response helps track which original path each result corresponds to
You can duplicate the same path multiple times to create multiple copies
For more control over individual duplicates, use smart_duplicate multiple times
More efficient than calling smart_duplicate individually for each path