External Storage FAQs

A list of FAQs related to external storage


  1. What is the expiration time on a pre-signed URL?
    Any signed URL, whether it's a read or write request expires after at most 4 hours, however, we do cache URLs on our backend so our API can sometimes return cached URLs making the expiration time lower.

  2. Is V7labs doing some automatic renewal at your side to keep the urls valid?
    The renewal is not automatic, however, and requires the user to call the API again in order to renew the signature so that the URL can be accessible again. So in this case, it would require some intervention from the user if they'd like the URL to be accessed after the expiration.

  3. When users register the images to V7labs to see them on the platform to annotate them (not direct upload to V7 S3, but a workaround using the pre-signed urls), do the users see the images and have the possibility to annotate them for as long as they want until they delete them and not just for 4 hours?
    Each time a URL expires, the refresh is invoked by a user to create a new signature through our backend services. Our UI uses the APIs invoked by the user pretty much on each page load. So when entering the workview, for example, our backend sends the browser a fresh signature that works for 4 hours. On the next page load, the user would receive another set of freshly signed URLs. With that in mind, there shouldn't be any issue for any team members to access files inside the platform that are registered via external storage.


  1. In Azure, there are containers within the storage account, so should permissions be applied on a storage or container level?
    It is best to apply permissions on the main storage account itself as it allows the container/blob to inherit these and be more authoritative.
  2. When registering files from my Azure storage, where do I specify the container name in the registration script as there isn't a specific field related to this?
    In Azure, the container name, in addition to any folder name which the items/files are located within, need to be specified within the 'storage_key' field in the payload.