I just tried it myself and answered my own question. Each call is given a distinct Download Token for the ip/time limit restrictions so each successive call generates it's own Download Token that has the attributes you give it.
Also I'm using the Perl sample code from here and it was missing GetOptimalUrls from REST::IMFS.pm so I added it.
sub GetOptimalUrls {
###########Parameters for the Method call###################
my ($sessionToken,$filePath,$expiration,$consumerIP,$ipRestricted,$expected)=@_;
###########Variables handling XML parsing###################
my ($twig,$root);
###########Variables handling to Get Upload Node##############
my ($url,$req,$res,$result);
$url='https://services.nirvanix.com/ws/IMFS/GetOptimalUrls.ashx';
$req=LWP::UserAgent->new();
$res=$req->post($url,[sessionToken=>$sessionToken,
filePath=>$filePath,
expiration=>$expiration,
consumerIP=>$consumerIP,
ipRestricted=>$ipRestricted]);
if ($res->is_success) {
print $res->content;
$twig=XML::Twig->new();
$twig->parse($res->content);
$root=$twig->root;
if($root->first_child_text('ResponseCode')==$expected){
print "GetOptimalUrls passed";
$result=1;
}
else{
print "GetOptimalUrls Failed";
}
}
print $res->content;
return $result;
}
############### End Of GetOptimalUrls ##########################