Fear not for I found a workaround.
I made a clip of the entire timeline and then duplicated it and resetting the start & end points for each clip
char = cmds.character(name='char_')
fullMin, fullMax = setAndReturnMinMax()
fullClip = cmds.clip(char, sc=1, name='clipFull',startTime=fullMin, endTime=fullMax)
fullClipName = fullClip[0]+'Source'
for clipName in propClipData:
# Extract all the info we need
timeRange = propClipData[clipName]['key_range']
minKey = int(timeRange.split(':')[0])
maxKey = int(timeRange.split(':')[1])
# Duplicate the clip
dupeClip = cmds.clip(char, name=fullClipName, d=1, sc=1, newName=clipName)
cmds.setAttr(dupeClip+'.startFrame', minKey)
cmds.setAttr(dupeClip+'.sourceStart', minKey)
cmds.setAttr(dupeClip+'.sourceEnd', maxKey)
cmds.clip(char, name=dupeClip+'Source', newName=clipName)
cmds.clip(char, rm=1, name=fullClipName) # remove the full clip leaving only our proper clips