Cloudinary FAQs | Comparably
Cloudinary Claimed Company
Cloudinary is a cloud-based image management SaaS for web and mobile applications. read more
EMPLOYEE
PARTICIPANTS
12
TOTAL
RATINGS
177

Cloudinary FAQs

Cloudinary's Frequently Asked Questions page is a central hub where its customers can always go to with their most common questions. These are the 356 most popular questions Cloudinary receives.

Frequently Asked Questions About Cloudinary

  • In order to provide Cloudinary with the suitable permissions for storing backups onyour private S3 bucket, pleasefollow the steps below:

    Add full access permissions to the AWS account of ' [email protected] '.Permission assignment can be done using Amazon's AWS S3 console.

    You should select the bucket

    Select the Permissions tab

    Select "Access Control List" from the "Permissions" section.

    Click "+ Add account" under "Access for other AWS accounts" section.

    Enter ' [email protected] ' in the "Grantee" field (In some cases you may need to use our Canonical ID instead: a6cb2907a1f29bc5207045273827a60922bfc149c91d024f39d243aa7d1a4110)

    Check all permission options and click "Save"

    AWS CloudFormation users can create the backup bucket using the attached CloudinaryS3Backup.json

    Go to your Cloudinary account's Upload settings page

    Enable Automatic backup

    Under Backup S3 bucket register your S3 bucket by its name

    Click on 'Initial backup' (link becomes available only after saving changes).

    At the end of the process, all of your existing content willbe backed up on your private S3 bucket, and future uploads will be stored there as well.

    View Article
  • Cloudinary does support payment with credit card (either Mastercard or Visa currently).

    If you wish to upgrade your account please follow the upgrade links in your dashboard accordingly, there you will have the choice of upgrade via PayPal or credit card.

    If you are currently on a paid plan and wish to update the payment method to credit card, please follow this link:

    https://cloudinary.com/users/change_payment_method

    View Article
  • Cloudinary signs the webhook events it sends to your endpoint, allowing you to validate that they were not sent by a third-party.

    Creating a webhook endpoint on your server is no different from creating any page on your website. With PHP for example, you might create a new.phpfile on your server.

    Each Cloudinary webhookincludesX-Cld-Signatureheader which contains the request's signature string andX-Cld-Timestampheader which contains the request timestamp.

    Here's an example POST request sent by Cloudinary:

    POST /my_notification_endpoint HTTP/1.1

    X-Cld-Timestamp: 1368881627

    X-Cld-Signature: 29a383e289bc569310a8ca9899019a3167b4909e

    Content-Type: application/json

    Checking signatures:

    Step 1:Prepare thesigned_payload string

    This is achieved by concatenating:

    The request body

    The timestamp (X-Cld-Timestamp)

    $signed_payload = $upload_response . $headers["X-Cld-Timestamp"];

    Step 2:Determine the expected signature

    Compute a HMAC with the SHA1 hash function, using the API Secret as the key and thesigned_payloadstring as the message.

    Note:

    By default, SHA-1 digest is used to create and verify all Cloudinary signatures. To instead use the SHA-256 digest for all your account signatures, please submit a request.

    sha1($signed_payload . $api_secret)

    Step 3:Compare signatures

    Compare the signature in the header (X-Cld-Signature)to the expected signature. If a signatures match, itmeans that the requestis validated:)

    if (sha1($signed_payload . $api_secret) === $headers['X-Cld-Signature']) { //signatures match} else { //signatures NOT match}

    Step 4: Preventing replay attacks

    A replay attack is when an attacker intercepts a valid payload and its signature and re-transmits them. To mitigate such attacks, Cloudinary includes a timestamp in the X-Cld-Timestampheader. As this timestamp is part of the signed payload, it is also verified by the signature, so an attacker cannot change the timestamp without invalidating the signature. You can decide to reject the payload if the signature is valid but the timestamp is too old.

    To prevent against timing attacks, compare the request timestamp (X-Cld-Timestamp) to current timestamp.

    if ($headers["X-Cld-Timestamp"] <= strtotime('-2 hours')) {

    //Signatures match, but older than 2 hours

    } else {

    //Signatures match, and timestamp

    }

    Full PHP code example:

    <?php

    //Read request body

    $body = file_get_contents('php://input');

    $api_secret = 'replace_with_real_api_secret';

    //Signature validation

    if (validateSignature(getallheaders(), $body, $api_secret)) {

    //Use the response for your needs

    $resposne = json_decode($body);

    $public_id = $resposne->public_id;

    } else {

    die("Validation failed");

    }

    function validateSignature($headers, $upload_response, $api_secret)

    {

    $signed_payload = $upload_response . $headers["X-Cld-Timestamp"];

    //Compute a HMAC with the SHA1 hash function, using the api secret as the key and the signed_payload string as the message

    if (sha1($signed_payload . $api_secret) === $headers['X-Cld-Signature']) {

    //To prevent against timing attacks, we compare the expected signature to each of the received signatures.

    if ($headers["X-Cld-Timestamp"] <= strtotime('-2 hours')) {

    //Signatures match, but older than 2 hours

    return false;

    } else {

    //Signatures match, and timestamp

    return true;

    }

    } else {

    //Signatures NOT match

    return false;

    }

    }

    View Article
  • Cloudinary offers to invalidate several different URL conventions that are used for different purposes. Let's make sure that the URLs being used on your site match those your account is configured to invalidate.

    The three different URL conventions for signed and non-signed URLs are as follows:

    1. (Default) Using no version at all for non-foldered images and including `v1` for foldered images

    Note if using an SDK to generate the URL, `v1` is automatically added to the URL by default for foldered images

    Imagesnotin folders, e.g. https://res.cloudinary.com/demo/image/upload/sample.jpg

    Images in folders, e.g. https://res.cloudinary.com/demo/image/upload/v1/folder1/folder2/sample.jpg.

    2.Include no versions for everything

    Imagesnotin folders, e.g. https://res.cloudinary.com/demo/image/upload/sample.jpg

    Images in folders, e.g. https://res.cloudinary.com/demo/image/upload/folder1/folder2/sample.jpg

    3. Include the full version value `v1515617850` for both foldered and non-foldered.

    Imagesnotinfolders, e.g. https://res.cloudinary.com/demo/image/upload/v1515617850/sample.jpg

    Images infolders, e.g. https://res.cloudinary.com/demo/image/upload/v1525209117/folder1/folder2/sample.jpg

    What do the different options mean

    Note the following applies to all options

    Automatically invalidate the URL convention being used when deleting/replacing an existing image.

    It can take a few minutes (up to an hour) for the invalidation to fully propagate throughout the CDN

    To invalidate the previous version, the parameterinvalidate should be explicitly defined in the API call (as it is not automatically applied to everything).

    By default, when deleting or renaming a resource through the Media Library, it is automatically invalidated based on the settings configured in the account.

    Option 1

    Our SDKs automatically includethe `v1` component for folderedimages.

    No version is included for non-foldered images.

    Option 2

    Exactly the same as option 1 but without the `v1` component for foldered images

    This option is relevant to those who do not use our SDK.

    Option 3

    Referred to as "cache-busting", by including the version in the delivery URL, the CDNs cached version is bypassed and forces an immediate delivery of the newest assets. In this particular case, the invalidation is unnecessary as the full version is being used to bypass the cache.

    Your account can be configured to invalidate the URL conventions mentioned above. Please let us know which URL convention is being used and whether it will be signed or unsigned so that we can make sure your account is invalidating the correct URLs. Open a ticket here.

    View Article
  • Cloudinary provides a library for simplifying the integration even further, along with.Net sample codefor uploading and transforming images.

    You can find sample projects that demonstratecommon Cloudinary's usage in .Net here:

    https://github.com/cloudinary/CloudinaryDotNet/tree/master/samples

    Included two sample projects:

    Basic sample:

    This sample project uploads local and remote images to Cloudinary and generates URLs for applying various image transformations on the uploaded files.

    Photo Album:

    A simple web application that allows you to uploads photos, maintain a database with references to them, list them with their metadata, and display them using various cloud-based transformations.

    More information about Cloudinary's .Net integration can be found in the documentation below: https://cloudinary.com/documentation/dotnet_integration

    View Article
  • 40x errors are cached in an exponential back-off manner. If the transformed image is accessed before the original is loaded, the system returns 40x and this returned 40x error is cached, first for 1 minute, and the cache period doubles every time until settling on a maximum 24-hour cache period. If you upload the original after the transformed image is cached, you need to wait for the cache to expire for the transformed image to appear, or use a different transformation.

    Note that if the error has reached the 24 hours caching period, accessing the transformed image before the original was uploaded would result in the error being cached for another period of 24 hours.

    Other transformed images that were first accessed after the original was uploaded will work as expected. In other words, please make sure the original image is fully uploaded to your Cloudinary account before attempting to access any of its transformed image's URLs.

    View Article
  • All plan limits are 'soft' limits. This means that your account will continue operating properly if you exceed your limits. In our management console you will see the overutilized numbers marked in red. In addition, a notification email will be automatically sent, reminding you to upgrade your account to a more suitable plan.

    For more information on how does Cloudinary calculate your plan quotas, see: http://support.cloudinary.com/hc/en-us/articles/203125631-How-does-Cloudinary-count-my-plan-s-quotas-and-what-does-every-quota-mean-

    View Article
  • The 'Invalid URL' response for uploads usually happens when the content of the file is not properly encoded.We have had reported issues before when the upload method was given a StringIO object that did not have a filename attribute. If this is the case, try to do something like the following (in Python):

    contents_temp = StringIO.StringIO(binary_content)

    contents_temp.name = 'file'

    result = cloudinary.uploader.upload(contents_temp)

    View Article
  • You can use Cloudinary to get image metadata including dimensionsfor every remote image by its URL, even if the image is not yet stored in Cloudinary. To do that use Cloudinary's explicit API with image type fetch, the image URL as the public ID and image_metadataset to true. Cloudinary will fetch the image, extract the metadata and return it in the response.

    You should note that the image will be uploaded to your Cloudinary account in case the request was successful.

    View Article
  • Cloudinary provides several means tohelp you identify similar and/or identical images when it's being uploaded to your account.

    This article suggests a good practice of restrictingidentical duplications on one's account.

    For every uploaded image anetag attribute is returned withinthe upload response, representingthe image's MD5 signature which is utterlyunique.Naming the uploaded resource based on its etagwill ensure that no other identical resources exist on that account (as it would have been overwritten). Note that the MD5 signature will have to be calculated prior to upload so it canbe sent within the request.

    Finally, one may be concerned regarding URLs SEO grading. We got you covered hereas well, usingour SEO feature you will never have to worry about your URLs not being SEO-friendlyand informative. More information aboutthat feature is available in our Blog.

    Contact us if you have any further questions or suggestions on how we can improve this support.

    View Article
  • Using underscores within folder names can sometimes cause ambiguity and lead to broken URLs on your website. The reason is that, for example, a folder named u_2(after the band, of course) can also be parsed as an attempt to "underlay" a resource named "2" over the base image.

    Tobeon the safe side, you should make sure you stick to at least one of the following principles:

    Avoid using underscores "_" within names you give to your folders. You can use dash "-" as a delimiter instead.

    Use at least 4 characters prior to the first underscore occurrence, e.g. abcd_1234.

    Use versions to isolate the public IDfromthe transformation section.

    View Article
  • If you're like most of us, you've probably deleted assets, only to realize days or weeks later that you need them back. Thanks to Cloudinarys extensive backup system, it's easy to retrieve your deleted files.

    This tutorial shows the steps to restore a deleted file using Cloudinary's Management Console. For further information about Cloudinary's ability to restore deleted assets, we recommend reviewing our documentation on the subject.

    ---

    Tutorial Sections

    Watch a Video

    Enabling Backups in your Cloudinary Account

    Finding Your Deleted Assets

    Accessing and Restoring a Deleted Asset

    Accessing and Restoring a Deleted Asset - Alternate Path

    Options for Assets Deleted via 'Bulk Delete'

    Additional Resources

    Watch a Video

    Background music provided by Bad Snacks.

    Icons provided by various artists via Flaticon.com.

    Go back to the top of the tutorial.

    Enabling Backups in your Cloudinary Account

    If you want to restore your deleted assets, you will need to have backups enabled on your account. The feature must be enabled before an asset was deleted, so you can recover it from backup.

    Go back to the top of the tutorial.

    Please review our tutorial on the backup setup process, especially if you have not already enabled backups or if you want to ensure it is set up correctly.

    If you're trying to restore assets that you deleted before enabling backups, you can send us a service request ticket. Our Customer Success team will work with you to determine your options.

    Go back to the top of the tutorial.

    Finding Your Deleted Assets

    To restore an asset, you need to know its public ID. If you don't already know the ID, you can use the Media Library Advanced Search to find it. To do so, follow these steps:

    Log into your Cloudinary Management Console.

    Select the Consoles Media Library tab.

    Navigate to the Media Librarys search bar and select its Advanced Search icon.

    If you don't see this icon, please send us a request to turn on this feature for your account.

    Look for the Type section on the Advanced Search panels left side. From the More types drop-down field, select the Deleted asset option.

    This adds the Deleted asset type to your search criteria and all your deleted content will display in the Media Library pane. Now you can add additional search criteria to find your specific asset.

    Once you find your asset, select it from the search results in the Media Library. Note that previews aren't supported for deleted assets, so it's important to make sure youre selecting the right file. You can do this by double-checking its public ID and file format (e.g. JPG, PNG, PDF, MP4, etc.) from the available assets.

    Go back to the top of the tutorial.

    Accessing and Restoring a Deleted Asset

    The method to restore a deleted asset depends on your accounts settings.

    If clicking on your deleted asset opens the Preview pane on the right side of your screen, follow these steps to restore it.

    However, clicking the asset may open a new screen. If this happens to you, jump down to follow the instructions for the Alternative Restore Method.

    When you select your deleted asset, you'll see a message in the Preview pane stating that the asset was deleted. Below the message is a Restore link.

    When you click it, a Restore from backup pop-up window shows you all the versions of this asset that are stored in Cloudinarys backup.

    To preview a version before restoring it, select its version number. By doing so, the backed up asset will open in a new browser tab.

    Once you are ready to restore the asset, select its Restore link.

    Go back to the top of the tutorial.

    Accessing and Restoring a Deleted Asset - Alternate Path

    If clicking on your deleted asset opens a new screen that resembles the screenshot below, click the View backed up versions button.

    A pop-up window that is labeled Backup versions will appear. All versions stored in Cloudinarys backup will appear in the window.

    To preview a version before restoring it, select its version number. By doing so, the backed up asset will open in a new browser tab.

    Once you are ready to restore the asset, select its Restore link.

    This activates the asset, allowing you to deliver it or perform any action on it. This includes managing and transforming it in the Console.

    Go back to the top of the tutorial.

    Options for Assets Deleted via 'Bulk Delete'

    Whether you are using Cloudinarys Admin API or the Management Console, you can delete all of your assets in bulk.

    Bulk deleting can be very handy when trying to remove a large number of assets with a simple action. However, it is also a very intense action that's complicated to retroactively restore. If you do find that you need to bring back assets that were deleted via our Bulk Delete functionality, send us a support request ticket. From there, our Customer Success team can evaluate your options.

    Go back to the top of the tutorial.

    Additional Resources

    Many of the steps shown in this tutorial are similar to those for retrieving backup revisions. We recommend reviewing our tutorial on that topic to become more well-versed on scenarios with our backup system.

    If you are interested in learning how to restore asset versions via our Admin API, we also have documentation on that feature.

    And of course, feel free to send us a ticket if you have any questions about this process. Were here to help you be successful with your projects.

    View Article
  • After a successful migration of all your images to Cloudinary, you can indeed delete the images from your Magento server. This will only delete the local images and will not affect the ones on yourCloudinaryaccount.That being said, note that the plugin is designed to store resources on both your Magento server and your Cloudinary account. This way, you can Disable the Cloudinary module and continue to use the images directly from your server whenever you require (e.g. maintenance, etc.).

    Note that the above refers to both our Magento 1 and Magento 2 modules.

    View Article
  • If you would like to allow users to first upload and crop an image via the upload widget. Then instead of uploading the same image let them re-edit. You can save the uploaded image as a variable and open it onclick.

    var preWidget = cloudinary.createUploadWidget({ cropping: 'server', upload_preset: upload_preset },function(error, result) { $("#open_pre_widget1").on("click", function() { preWidget.open({file: result[0].secure_url}); });});

    Here is a sample code:

    https://jsfiddle.net/ssnooadv/

    View Article
  • These days videos represent a significant proportion of web and mobile content, which is constantly growing. As video content is extremely heavy, one must make sure to deliver this video content in the most optimized way.

    The challenges developers face with videos on their websites tend to be quite complex. The video files can be huge, which means longer upload & download times and very CPU-intensive transcoding and manipulation. The set of potential devices, resolutions, video formats and video codecs is large and confusing.

    This article will address these challenges and offer easy-to-use and implement solutions:

    1.Scale videos to display size

    The most efficient way to downscale your videos and improve their performance is to resize them so they'll fit your site/app specific design.

    If it suits your use-case, you can also perform the resize before you save the video to your Cloudinary account using incoming transformations, to also save storage space.

    2. AdjustingQuality

    Cloudinary allows you to control the video quality - the higher the quality is, the heavier the resulting video is, and vice versa. Quality is configured on a 0-100 scale.

    For example:

    http://res.cloudinary.com/demo/video/upload/q_60/dog.mp4

    3. Adaptive Bitrate Streaming

    Adaptive bitrate streaming is a video delivery technique that adjusts the quality of a video stream in real time according to detected bandwidth and CPU capacity. This enables videos to start quicker, with fewer buffering interruptions, and at the best possible quality for the current device and network connection, to maximize user experience. For more information - http://cloudinary.com/documentation/video_manipulation_and_delivery#adaptive_bitrate_streaming_hls_and_mpeg_dash.

    4.Automatic video codec

    Thevc_autofeature is mainly geared towards automatically choosing the best codec settings for the video for playing on the web. For more information, http://cloudinary.com/documentation/video_manipulation_and_delivery#video_codec_settings.

    For example:

    http://res.cloudinary.com/demo/video/upload/vc_auto/dog.mp4

    Note: When applying any transformation to a video, Cloudinary automatically set the video codec to automatic for the derived video.

    5.Use incoming/eager transformation

    Using incoming transformations to downscale your videos before they're saved on your Cloudinary account. This can save you some precious storage for large videos when the original video is disposable.Another option is using eager transformations to pre-generate the derived images and pre-warm the cache to save your user the time waiting for your videos to process and load.

    6. Restrict transformations

    You can enable Strict Transformations on your account to prevent transformations from being dynamically applied to yourvideos. This might save you on transformations (quota), bandwidth, and storage.

    View Article
  • You can upload any file type to your Cloudinary account, including audio files.By default, Cloudinary expects uploaded resources to be images, therefore when uploading any other file type Cloudinary returns an 'Invalid image file' error message. In order to upload non-image resources, you should also set theresource_typeparameter tovideo(orraw).

    For uploading an audio file via the Media library, you should first click on the "Videos and Audio" button on the upper-right side of the Media library, and then you should be able to upload it.

    You can even perform transformations on your audios. For example:

    https://res.cloudinary.com/demo/video/upload/so_3,eo_6/dog-audio.mp3

    For more information:

    https://cloudinary.com/documentation/audio_transformations#audio_manipulation_and_streaming

    View Article
  • Yes. We have an open-source iOS SDK for adding Cloudinary support to mobile applications of iPhone, iPad and other iOS devices. The code is in swift and is updated regularly. Here is a sample code.For more information please visit the documentation section - https://cloudinary.com/documentation/ios_integration

    View Article
  • Cloudinary supports delivery of all images both through HTTP andHTTPS (SSL).Cloudinary delivers all images and transformed images through a fast CDN (Akamai, Fastly, and Amazon CloudFront). For HTTP delivery http://res.cloudinary.com is used, for HTTPS the base URL ishttps://res.cloudinary.com.

    For example:

    HTTP:http://res.cloudinary.com/demo/image/upload/sample.jpg

    HTTPS: https://res.cloudinary.com/demo/image/upload/sample.jpg

    If you have an Advanced Cloudinary account with a dedicated CDN distribution, a different domain name might be used for HTTPS.

    If you use one of our client libraries (Ruby, PHP, NodeJS, etc.), the URLs of images are built automatically using the correct domain either by detecting the request's protocol or by specifying :secure => true in calls to methods like cl_image_tag and cloudinary_url.

    For example in NodeJS:cloudinary.url("sample") http://res.cloudinary...cloudinary.url("sample",{secure: true})https://res.cloudinary...

    View Article
  • We're excited about our new DAM release!

    A great way to take make full use of our image analysis capabilities is to have every image and video that is uploaded to Cloudinary automatically analyzed. This is done by creating an Upload Preset that activates the analysis add-ons. The following video tutorial will walk you through the steps required to add anUpload Preset.

    Your browser does not support the video tag.

    View Article
  • In addition to being able to upload from alocal path ora remote URL, Cloudinary also supports uploading your assets(images, videos, documents, etc.) using the Base64 DATA URI scheme as explained here.

    Such an upload callwill look something like this(Rails):

    Cloudinary::Uploader.upload(data:[<MIME-type>][;charset=<encoding>][;base64],<data>);

    For example, the following command:

    Cloudinary::Uploader.upload("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO9TXL0Y4OHwAAAABJRU5ErkJggg==")

    Will result inuploading the following PNGimage: http://support.cloudinary.com/hc/en-us/articles/202519992-How-to-upload-a-Base64-DataURI-string-of-an-image-directly-from-the-browser-

    If one prefers to generate the HTTP request on their own, note that the DATA URI must be first url-escaped, for example (using the same image from above):

    "data%3Aimage%2Fpng%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHElEQVQI12P4%2F%2F8%2Fw38GIAXDIBKE0DHxgljNBAAO9TXL0Y4OHwAAAABJRU5ErkJggg%3D%3D"

    For information regarding client-side BASE64 uploading, please visit the following link:

    UPDATE:Uploading using Base64 representationislimited to file-size of 60MB.

    View Article
  • Cloudinarys image handling APIs do not limit the number of uploads, transformations, and downloads (views). The only limits are the total number of images managed in your Cloudinary account, monthly bandwidth and total storage used that are defined by the plan you're currently signed to.

    Cloudinarys Admin APIs (listing & deleting resources) are limited in default to 500 requests per hour for our Free plan. From our paid plans onward the Admin API calls limit is automatically increased to 2000 calls per hour.

    The limit can be raised to a higher limit for our Premium plan.

    View Article
  • You can assign one or more tags to images while uploading by clicking on More upload options... in the Upload Images panel and fill the Tags input field before uploading an image.

    In addition you can add, modify and remove tags for already uploaded images, by using our API. Here's our PHP API documentation regarding tags management:

    http://cloudinary.com/documentation/php_image_upload#rename_images

    It's on our road-map to support managing tags interactively through the Dashboard.

    UPDATE

    You can now manage your tags interactively through yourDashboard ' Media library '.

    Simply select your image, and click Add tag to specify the desired tag for it.

    Repeat this to add more tags:

    Click on the 'x' to remove a tag:

    View Article
  • Yes. We have an open-source .NET SDK for adding Cloudinary support to your .NET projects. The SDK is also available as a NuGet package.You read can more about it in our documentation section - https://cloudinary.com/documentation/dotnet_integration

    View Article
  • Cloudinary supports SDKs in both jQuery and vanilla JS for easy Javascript integration. See this blog post for more details.The documentation can be found below -

    https://cloudinary.com/documentation/jquery_integration https://cloudinary.com/documentation/javascript_integration

    View Article
  • We generally advise that you upload your hi-res images to Cloudinary and then request a low-res transformation for lower resolution displays.For example, setting thewidthparameter to0.5, (w_0.5in URLs) will take an existing retina resolution image and deliver it at non-retina resolution (half the x & y dimensions). http://res.cloudinary.com/demo/image/upload/w_0.5/sample.jpg

    Notice that you don't have to limit yourself to 2 resolutions (retina + non-retina). You can ask Cloudinary to do on the fly resizing based on the specific device's resolution and get an optimized image for the vast array of different device resolutions out there. Other ideas - if you can determine the user's current bandwidth rate, you can even ask Cloudinary to use lower quality JPGs for low bandwidth users, etc.

    For more information: https://github.com/cloudinary/cloudinary_gem/issues/78#issuecomment-38040400

    View Article
  • UPDATE:Further details about this method can be found in the Advanced URL Delivery Options documentation

    Cloudinary supports listing resources from the client-side by their tags.

    The response is aJSONsnippet containing all resources which correspond tothe specified tag. When delivered, this JSON snippet cached for 1 minuteon the CDN and is automatically updated if the images are updated.

    An HTTP request to fetch a JSON list of images sharing a tag will look something like:

    http://res.cloudinary.com/<your_cloud_name>/<resource_type>/list/<tag>.json

    The URL can also be generated using ourclient-libraries, e.g. (jQuery):

    $.cloudinary.url('logo', {format: 'json', type: 'list'})

    This will create the following URL ('resource_type' defaults to 'image'):

    http://res.cloudinary.com/demo/image/list/logo.json

    Which when sent as an HTTP request, the following JSON will be returned

    { "resources":[{"public_id":"..", ... }, ...], "updated_at":"..."}

    Note, that if one or more of the relevant tagged resources are of type 'authenticated', the list URL should be signed. The signature can be added manually (by following the steps detailed here ), or, when using ourserver-side libraries, by adding the 'sign_url' parameter set to 'true', e.g (Node.js):

    cloudinary.url("logo.json", {type: "list", sign_url: true})

    In addition, note, that by default, theImage listis restricted, so you will need to first enable itin your account's Security settings page.

    For more information: https://cloudinary.com/documentation/advanced_url_delivery_options#client_side_resources

    View Article
  • In default, Cloudinary allows generating random image IDs (URLs) for uploaded photos or setting your own image ID. Since the URL is impossible to guess, it will only be available publicly if the owner of the image can access his image's URL and share it with others. This is a common practice (it's the same way Facebook hosts your images) and is available to all plans.

    In addition, Cloudinary supports more advanced methods of handling image access control: private images, strict transformations and authenticated URLs. This blog post describes the private images methods.

    View Article
  • By default, when using our API for uploading, Cloudinary will set a randomly generated public ID for the uploaded image.

    You can set theuse_filenameparameter totrueto set the uploaded image's public ID to be as the original file's name. However, a random string is appended to the image's public ID to ensure uniqueness. For more information: http://support.cloudinary.com/entries/26977753-Why-does-the-public-ID-include-additional-characters-appended-to-the-original-file-name-

    In addition, Cloudinary allows you to set the image's public ID as the original filename, without appending random characters at the end of it.When setting theuse_filenameparameter totrueyou can also set theunique_filename(which is by default set to true) tofalse. This will tell Cloudinary to not add random characters to the public ID. Here's an example in rails:

    Cloudinary::Uploader.upload("my_image.jpg", :use_filename => true, :unique_filename => false)

    Note that if you already have an image stored in your account that has that exact public ID, it will be overwritten.

    View Article
  • When uploading an image through the Dashboard's 'Media library', or through the API (whenuse_filename is set totrue and no custom public ID is given), Cloudinary automatically append a random short string to the end of the image's name in order to avoid two images sharing the same public ID.

    However, Cloudinary still keeps the original file's name. Therefore, when delivering the images using theattachmentflag (fl_attachmentin URLs), the file will be delivered as an attachment with the original file's name.

    For example, here's an image uploaded to Cloudinary, originally calledsample, Cloudinary automatically generated its public ID to besample_vwstin: http://res.cloudinary.com/demo/image/upload/v1372324995/sample_vwstin.jpg Using the same URL with the attachment flag will deliver the image, using its original name: http://res.cloudinary.com/demo/image/upload/fl_attachment/v1372324995/sample_vwstin.jpg

    This behavior can be changed when using the API. See: http://support.cloudinary.com/hc/en-us/articles/202520762-How-to-upload-images-while-keeping-their-original-filenames-

    UPDATE

    You can now set an upload preset to keep the original file name when uploading images via the Media Library. From the "Storage and Access" tab set 'Use filename or externally defined public ID' On and the option of `Unique Filename` to Off.

    View Article
  • To migrate your existing images to Cloudinary, write a short script that traverses your images and upload them one-by-one using Cloudinary's upload API.

    Cloudinary has client integration libraries for all major development languages which will simplify the call to our upload API. Find your client library here.

    Are you hosting your existing images on Amazon's S3? notice that you can specify a remote HTTP or S3 URL of images as the file parameter of our upload API instead of sending the actual image data. This allows for a much faster migration process.If you want to specify remote S3 URLs, the S3 bucket should be whitelisted for your account. In order to set it up, please send us the name of the S3 bucket and the name of your Cloudinary account.

    If you are using Ruby - Cloudinary'sRuby GEMincludes a Migrator tool for managing the migration process for you: http://cloudinary.com/documentation/rails_additional_topics#migration

    You might want to also look at our powerful Automatic-migration tool.

    View Article
  • Sometimes, on your account reports-page, you may notice the N/A labelunder the "Top Referral Domains" and "Top Referral Pages" sections, indicatingunsegregated information.

    This datais being classified based onthe "referer" request header, which when missing preventsusfromproviding the necessary information.

    Usually, browsers populate this request header automatically. However, in some cases (e.g. with native mobile applications) this header may be missing. Utilizing this header on your end can help us to better distinguish between the requests and give you more useful reportings.

    View Article
  • Most of our image optimization tips require making some adjustments to their deliveryURLs.

    While this can be solved using our API, or by editing your images one-by-one with the provided UI support, there are other more easy and quick ways to achieve similar results.

    Using "search & replace" tools (e.g. " Better Search Replace ") you can locate all Cloudinary URLs on your application and have different transformation components attachedto it, for example, the following will add automatic format conversion which usually causes Bandwidth consumption to drop significantly:

    "https://res.cloudinary.com/demo/image/upload/demo/" =>"https://res.cloudinary.com/demo/image/upload/demo/f_auto,q_auto/"

    Attention: be careful when running these operations to avoid doingdamage to your LIVE production.

    View Article
  • Cloudinary provides a dedicatedserver-side methodtogenerate ahashcontainingall the information that is required to initiate direct-upload from your mobile application.

    The call to this api should include all the upload options which are about to be used(e.g. public-id, incoming-transformation, etc.). Additionally, you will be required to provide the timestamp (which we strongly recommendto acquire onthe server side) and the API_KEY & API_SECRET (which should be stored on your server-side only).

    For example, the following line of code (Rails):

    signedRequest = Cloudinary::Utils.sign_request({:public_id=>"my_image", :timestamp=>Time.now.to_i}, :options=>{:api_key=>API_KEY, :api_secret=>API_SECRET})

    will result with the desiredpayload for initiating the direct-upload:

    => {public_id=>"my_image", :timestamp=>1457274027, :signature=>"fd22da2d5fa317c3c79d2f30da6ae9aebd746fe6", :api_key=>API_KEY}

    This JSON isthen returned to the client-side and is used to for upload as follows (iOS):

    NSDictionary* uploadResponse = [mobileUploader upload:imageData options:signedRequest];

    View Article
  • Auth0 operates a cloud based identity platform for developers. It can also be configured as an IDentity ProviDer (IDP) for Cloudinary. Here's how this federation can be achieved.

    To create a SAML authentication with Auth0 as the IDP, you'll need to follow these 3 steps:

    Create a SAML based application on Auth0

    Create User(s) on Auth0 - if no users have been created yet.

    For each user that needs to login, enable SAML authentication on Cloudinary.

    Here's how you can achieve this.

    Auth0 Application Setup

    For this setup, we will be following the steps explained in the document Auth0 as Identity Provider.

    Go to Auth0 Dashboard > Applications.

    Create a new application, name asCloudinary SAML Integration.

    Choose the Application Type as Regular Web Application. https://support.cloudinary.com/hc/en-us/requests/new

    Click on Settings. Fill in the following values on the settings screen:

    Application Logo: https://res.cloudinary.com/cloudinary/image/upload/c_scale,w_150/v1/logo/for_white_bg/cloudinary_logo_for_white_bg.png

    Application Type: Verify that it is Regular Web Application.

    Token Endpoint Authentication Method: Set this to POST.

    Towards the end, click on Show Advanced Settings.

    Navigate to the Endpointstab.

    Look for the SAML section. From this, copy the SAML Metadata URL. Keep this handy as we'll require it later.

    Click on the button SAVE CHANGES to save this application.

    Next, click on Addons tab. On this tab, enable the SAML2 Web App

    On the pop-up screen, enter the Application Callback URL field to be https://cloudinary.com/saml/consume. This is the end-point that will consume the SAML response.

    Next we need to set the fields that Cloudinary will receive in the SAML response. We only need the email address. So uncomment the following lines:

    nameIdentifierFormat

    nameIdentifierProbes

    The field for email "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress".

    Finally, the closing ], so that the JSON is valid.

    Basically, this is the JSON we need:

    {

    "nameIdentifierFormat": "urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified",

    "nameIdentifierProbes": [

    "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress"

    ]

    }

    Towards the end of the pop-up screen, click on the Enable button.

    Once again, come back to the end of the screen and click on Save button.

    Finally, click on the Usage tab. Copy the Identity Provider Login URL. This will be the URL you can use to test the SAML authentication. This completes the setup on Auth0.

    Auth0 User Setup

    This step applies if you are just setting up Auth0.

    We need to create new users who will be using Auth0 for authentication purpose. This should ideally be done by the account adiminstrators on your organization. We are showing the very basic steps to get the integration working.

    Navigate to _Users & Roles_.

    Click on Users.

    Click the Create User button.

    Fill in the user information and hit Create.

    Cloudinary Setup

    Login to Cloudinary.

    Navigate to Settings (gear icon) -> Users.

    If your account is configured to support SAML, there should be a SAML section (if not open a support ticket at). Populate the following:

    Metadata retrieval method: Set this to URL

    SAML metadata URL: Fill the URL that was saved in step 7 above.

    Enforce SAML login: Set to Yes.

    Save the settings and logout.

    Testing

    Use the Identity Provider Login URL saved in step 14. If everything is correct, it should authenticate you to Auth0 and redirect to Cloudinary logged in page.

    Gotchas

    On Auth0, the SAML application is associated with 2 types of authentication by default:

    user-password

    Google OAuth2

    If you are using any other scheme for authentication, it should be enabled.

    View Article
  • For every POST request Cloudinary returns a JSON response, containing all the relevant data, to the client side.

    In order to use this response, extract essential information and store it your database or present it your end-users, you must bind to the `cloudinarydone` event.

    For example, if your uploader code looks like this:

    <input name="file" type="file" class="cloudinary-fileupload" data-cloudinary-field="image_id" data-form-data=" --- Data-JSON --- "></input>

    Then the following code will printthe upload-response:

    $('.cloudinary-fileupload').bind('cloudinarydone', function(e, data) {console.log(data); return true;});

    Other use-cases can include, database maintenance, upload thumbnails display, logging, etc.

    View Article
  • Disclaimer: these requirements maychange from time to timedue to different design requirements.

    Cloud name:

    Length: between 2 and 128 characters

    Allowed characters: a-z, A-Z, 0-9, -

    Must begin with a letter

    Must notend with -cld unlessusing a private S3 bucket

    Public ID:

    Length: between 1 and 255characters

    Allowed characters: any language character (including non-english) and in addition dot '.' and dash '-', as well as any HTML escaped characters (E.g. %26 as opposed to &)While '?&#%<>+' are utterly forbidden, other special characters will be replaced with underscores '_' and preceding/trailing occurrenceswill be trimmed off

    Should not begin nor end with whitespace or forward-slash (those will be omitted as well)

    You cannot use 'v' followed by numeric characters as the name of a folder.

    View Article
  • UPDATE: We support both Magento 1 and Magento 2. These instructions refer to Magento 1. A full user guide of our module for Magento 2 can be found on the Magento marketplace, here

    The following are the steps to install and set-up the Cloudinary moduleonyour Magento 1 site.

    Download and Install the Module

    In the Magento Marketplace, download and install the Cloudinary module for Magento 1.

    For more information, see the help pages for the Magento Marketplace.

    After installing the Cloudinary module, a new Cloudinary menu is available in the Magento Admin Panel.

    Configure the Cloudinary Module

    In the Admin Panel, select Cloudinary > Configuration.

    In the Cloudinary Setup section:

    In Cloudinary Account Credentials, enter your CLOUDINARY_URL environment variable, as shown in the Dashboard of your Cloudinary console (including the "CLOUDINARY_URL=" part of the code). For example: CLOUDINARY_URL=cloudinary://1234567890123:aBc1deF2gHi-M@mycloudname

    Set Enable Cloudinary to Yes.

    If needed, adjust the default Cloudinary Configuration settings. For more details on the auto-mapping option, see "Migrate on Demand with Auto-Mapping (Recommended)" below.

    The Default Image Transformations section enables you to define the default transformations that will be applied to every asset you deliver via Cloudinary. In addition to setting your preferences for the specific transformation options in this section, you can add additional global custom transformations that will be applied to every image asset. For details on transformations you can use for global custom transformations, see Cloudinary's image transformation guide and reference.Click the Preview custom transformation button to make sure you are satisfied with your transformation settings.

    When finished, click the Save config button at the top of the page.

    Migrate on Demand with Auto-Mapping (Recommended)

    Auto upload mapping eliminates the need for manual migration. This option automatically fetches individual images from your Magento environment when they are first requested and uploads them to Cloudinary. On all subsequent page loads, the images will automatically be served directly from your Cloudinary Media Library.

    To enable auto mapping:

    In the Magento Admin Panel, Cloudinary Configuration form, make sure that the Use auto upload mapping to upload images option is set to Yes (default). For details, see "Configure the Module" above.

    In the Magento Admin Panel, select System > Cache Management.

    Select all required cache types. Then select Refresh from the Actions drop-down above the options grid and click the Submit button.

    Migrate All Images to Cloudinary (Manual Migration Fallback)

    Manual migration is not required if you have enabled auto-mapping as described above. The manual migration option performs a full bulk migration of all images in your Magento environment.

    Make sure you have cron jobs defined on your Magento server.

    In the Magento Admin Panel, select Cloudinary > Manual Migration.

    Click Start Migration.The migration takes place in the background via cron, so you can close the Manual Migration page or keep it open to track its progress. Any errors that prevent migration will be shown on the Manual Migration page. If this happens, click the Stop Migration button, resolve the problem, and then start the migration again.

    When the migration is complete, select System > Cache Management. Select all required cache types. Then select Refresh from the Actions drop-down above the options grid and click the Submit button.

    Note that the initial migration process may take a while, especially if you have many images.

    View Article
  • All images and transformed images are delivered by Cloudinary through a CDN with advanced caching for optimizing performance and improving the experience of your users.Images that were already available in your site, are cached in one or more CDN edges. Therefore, even if you delete the image from your Cloudinary account, cached copies might still be available.In default, all delivered images are cached for 30 days. This means that after that time all cached copies of deleted images would be removed from the CDN too.

    In most cases, these behavior answers the requirements of web sites and mobile applications. Note that any public image might be have been also copied or cached by proxies, search engines, etc. It is in our roadmap to allow forcing immediate invalidation of cached CDN copies of deleted image using the Cloudinary API.

    View Article
  • Sign in with SSO is a feature available for customers onEnterprise / Custom Plans.

    In order to set up your account for Okta SSO, please follow these steps:

    Note: these instructions are for the Classic UI - you can switch to that from the drop-down at the top-right menu of your Okta console.

    Sign in to your Okta admin console (https://<orgname>-admin.okta.com).

    Click 'Add Applications' in the 'Shortcuts' menu on the right side of the page

    Click the 'Create New App' green button

    Choose SAML 2.0 as the type of Application, and click Create

    Fill in the form:

    Choose an app name (e.g. 'Cloudinary').

    Upload a logo from this link.

    Click Next.

    Fill in the form:

    Single sign on URL: https://cloudinary.com/saml/consume

    Audience URI (SP Entity ID):https://cloudinary.com/saml/consume

    Name ID format:

    Application username: Email

    Click Next, and then Finish.

    Obtain your metadata URL. In the screen that appears, under the 'Sign On' tab, there should be a link 'Identity Provider Metadata'. Copy that link (it should look like:https://<orgname>.okta.com/app/<random_string>/sso/saml/metadata)

    *Update* You can now log in to your account and under the Users tab in the Settings page ( https://cloudinary.com/console/settings/users ) you can paste in the metadata URL and save your changes

    Good luck!

    View Article
  • When your images load faster, your website's / mobile app's user experience is enhanced and metrics such as time on site and conversion rate improve as a result. To make your images load fast, you want their size to be as small as possible, and you want good caching and delivery architecture. When you use Cloudinary to deliver your images, they are served using market-leading Akamai CDN, so the caching and delivery part is solved. As for reducing image size, the following list includes the most effective and easy-to-implement tips for optimizing your images.

    Below is a quick video that demonstrates how you can easily optimize your images using Cloudinary, followed by a detailed list of optimizations tips -

    Your browser does not support the video tag. (For more video tutorials see here )

    1. Scale images to display size

    In your website or application, you usually need to display images in specific dimensions, defined by the website's / application's graphic design. Use Cloudinary to smartly resize images to their actual display size, instead of having the client download large images and scale them on the client side. On Web and mobile Web you can automate resizing by taking advantage of Cloudinary's support for responsive design.

    Use one of Cloudinary's multiple crop modes to achieve the exact visual result you are looking for.

    2. Adjust image quality

    Cloudinary allows you to control the image quality - the higher the quality is, the heavier the resulting image is, and vice versa. The best practice is to useCloudinary's automatic quality setting - q_auto - read more here. Quality can also set to a specific number on a 0-100 scale, however, q_auto smartly balances between file size reduction and visual quality.The default quality used by Cloudinary when a quality setting is not provided can be configured in the Cloudinary UI under Settings->Upload.

    Expected images size / bandwidth save - between10%-50% with auto quality (q_auto).

    3. Auto-select file format based on client detection

    While the JPG format is most widely supported, some clients support more advanced and efficient file formats. The Chrome browser and Android devices (and even iOS devices when using Google's libwebp) support the Google WebP format, while the Internet Explorer browser supports Microsoft's JPEG XR format.

    On a website, including mobile web, simply set 'fetch format' to 'auto', and let Cloudinary auto-select the optimal file format for you (note: requires using Cloudinary's built-in Akamai CDN). For further reading see our WebP and JPEG-XR blog posts.

    On native mobile app, set file format explicitly based on client-side logic by setting the 'format' attribute (or simply changing the file extension, e.g. http://res.cloudinary.com/demo/image/upload/sample.webp). Note that WebP is supported natively on Android (version 4 and up for lossy, and version 4.2.1 for lossless and transparency). On iOS it can be supported withlibwebp, however, as WebP is not a native format on iOS decoding is not as efficient and there might be a performance toll, especially on older devices.

    Notethat setting fetch format to 'auto' ('f_auto' on the URL) cannot bepart of a named transformation, as it should explicitly exist on the URL. It can be used together with a named transformation though, for example 't_my_transformation,f_auto'.

    Expected images size / bandwidth save - about 30%.

    4. Convert PNG to JPG

    The PNG format supports transparency while JPG doesn't. But PNG files are also much larger, and in many cases, they areused by mistake in use cases wheretransparency not reallyneeded. In these case, it makes sense to convert themJPG.

    Luckily, Cloudinary can auto-detect if PNG has transparency (alpha channel) and convert it to JPG in case it doesn't. To take advantage of thatuse Cloudinary's 'lossy' flag. On Web use the 'lossy' flag combined with the 'auto' fetch format (on URL this would be 'fl_lossy,f_auto') so that Cloudinary will also automatically convert to more efficient formats, such as WebP, when possible depending on the user browser.

    In addition to auto-detection using the 'lossy' flag, it is also possible to force conversion to JPGby setting the 'format' parameter to 'jpg' when using Cloudinary's client library, or by simply changing the file extension on URL.

    Expected images size/bandwidth save - up to 85%.

    5. Convert Animated GIF to WebM/MP4

    If your website or application use short animated GIF-based video sequences, you can substantially reduce the size of these short video sequences by converting them to WebM/MP4.

    In caseyou are looking to implement an autoplay experience, note that videos cannot be auto-played in iOS 9 and earlier. These restrictions have been lifted as of iOS 10 under certain conditions.

    Expected images size/bandwidth save - up to 95%.

    More optimization - Cloudinary reports and actionable optimization tips

    Cloudinary offers deep reporting and actionable optimization tips based on your specific usage patterns. Visit the Reports page in your Cloudinary web console to getinsights and optimization suggestions.

    Quick tips

    Optimize:

    On Web usef_auto,fl_lossy,q_auto

    In native mobile apps usef_webp,q_auto, and on iOS make sure to include Googles libwebp.

    Scale: Make sure to scale the images to the right size. Use Cloudinary's automatic responsive support on Web.

    Social networks: Use optimized image URL in the 'og:image' tag used forsocial sharing.

    View Article
  • The aspect ratio is the width/height ratio, so if you'd like the height to be 3 times the width, then 3.0 is the ratio value.

    Set thecropping_aspect_ratioto3.0in the URL :-

    https://res.cloudinary.com/demo/image/upload/ar_3.0,c_crop/sample.jpg

    View Article
  • The best wayto change your billing PayPal account is tosimply login to our management console and go to: https://cloudinary.com/users/change_payment_method

    Creating a new PayPal subscription will automatically cancel the previous one and charge only the correct amount based on their current billing cycle.

    As well, you can now subscribe to Cloudinary using Credit Card. In order to update your account to a paid subscription via Credit Card please follow this link: https://cloudinary.com/users/change_payment_method

    View Article
  • When you upload a new image while specifying itspublic_idto be the same as an existing image, your Cloudinary account will be updated with the new image overriding the old one. However, if the original (older) image was already accessed, it might get cached in the CDN. Therefore if you access the exact same URL, you might be still getting a CDN cached version rather than the new updated one.

    We recommend to include the version component as part of the URL in order to bypass CDN cached version and to force the delivery of the newest image. Cloudinary returns the updated value of theversionparameter as the part of every upload response. Theurlparameter is also returned which already includes theversioncomponent with the updated value.

    For more information: https://cloudinary.com/documentation/upload_images#asset_versions

    Alternatively, when using the API, you can set theinvalidateparameter totruewhile uploading in order to invalidate the image through the CDN. Note that it might take up to an hour for the invalidation to fully propagate through the CDN, while theversioncomponent affects immediately. When uploading via the Media-Library the invalidation comesbuilt-in in the request.

    Also, note that in default Cloudinary invalidates URLs which do not include the version component. If you wish to invalidate "versioned" URLs, you should enable 'Invalidate versioned URLs' in your account's Upload settings page.

    For more information: https://cloudinary.com/documentation/upload_images#invalidating_cached_media_assets_on_the_cdn

    Another option you might want to consider is to add a unique suffix to the public ID with every re-upload.

    View Article
  • This tutorial provides steps to properly enable automatic file backups on your Cloudinary account. For further details about Cloudinary's backup capabilities, we recommend reviewing our documentation sections on backups and revisions.

    ---

    Tutorial Sections

    Watch a Video

    Understanding the Purpose of Automatic Backups

    Enabling Automatic Backups via the Cloudinary Management Console

    Using Amazon S3 or Google Cloud Storage for Backups

    Testing Your Enabled Backup Processes

    Additional Resources

    Watch a Video

    Background music provided by Jeremy Blake.

    Icons provided by various artists via Flaticon.com.

    Go back to the top of the tutorial.

    Understanding the Purpose of Automatic Backups

    One very useful feature of Cloudinarys service is its ability to backup your files, such as images and videos. This includes revisions of your existing assets, as well as deleted files that you can restore.

    After enabling automatic backup, deleted files remain backed up for 30 days and are then removed. File revisions remain in your backup for an unlimited amount of time. If you are using a secondary storage location, such as an Amazon S3 bucket or Google Cloud Storage, the deleted files and revisions will always live there, as Cloudinary does not touch those assets and cannot remove them.

    Only original files receive the backup treatment, as derived and transformed files can always be recreated from the original file. Also, Cloudinary does not backup fetched assets.

    Cloudinary handles the backup process by copying each original file to a secondary write-protected location. If you have enabled Automatic Backup without setting a designated Amazon or Google bucket, the storage will count against your Cloudinary storage threshold. This has the potential to double your storage. Keep in mind that if you are approaching the top of your plans available managed storage, adding backups will likely cause you to exceed the allotted amount. Our Customer Success team is always available for consultation and assistance, if you have any questions or concerns before implementing our backup feature. This feature is also available for all service plans.

    If you plan to backup your assets to your own Amazon S3 or Google Cloud Storage buckets instead of Cloudinarys storage, any of our paid service plans offer that as an option.

    In either case, all newly uploaded assets will be automatically backed up after you turn Automatic Backup on for your account.

    Go back to the top of the tutorial.

    Enabling Automatic Backups via the Cloudinary Management Console

    To set up Cloudinarys Automatic Backup feature, take the following steps:

    Log into your Cloudinary Management Console.

    Select the Settings icon, which resembles a gear. Go back to the top of the tutorial.

    Select the Upload tab.

    At this point, you should able to start setting up the account backups. This can be done by clicking the Automatic Backup drop-down field and choosing Enabled. Then, scroll down to the bottom of the screen and click the Save button.

    Directly under the Automatic Backup drop-down field is a new link labeled Perform initial backup. Select it.

    If you have successfully done this, a popup window labeled Initial Backup will appear. Additionally, the email address associated with your account will be added to the windows Notification email field. Verify or change the address, then select the windows OK button.

    Once you do this, the Perform initial backup link will change to a Successfully initiated backup confirmation message.

    Scroll down to the bottom of the screen and select the Save button.

    If you have followed these steps, you should receive an automated email from [email protected]. It will be sent to the address specified in Step #5 of this process.The email will state that the backup has been completed successfully and include details on the total amount of assets that were stored in a specific account.

    Using the example screenshot above, 75 assets were backed up for the account/cloud named sambrace.

    The amount of time for this process to occur will depend on the amount of assets stored in your Cloudinary account, as well as the actual file sizes of those assets. However, you can always send us a support ticket if you do not receive the confirmation email within an hour of taking the proper steps.

    Go back to the top of the tutorial.

    Using Amazon S3 or Google Cloud Storage for Backups

    On top of Cloudinarys own write-protected location for backup storage, you can set a designated bucket or secondary location to keep your files. We support backups through Amazon Simple Storage Service (e.g. Amazon S3) and Google Cloud Storage. However, this service is only available for accounts on any paid plan.

    Amazon S3 Setup

    If you want to backup to your S3 bucket, please proceed with the directions provided by Amazon Web Services.

    It is important to follow the proper naming conventions for your S3 bucket. You can find further details about doing so in our Knowledge Base.

    Once you have confirmed your S3 bucket is set up and working, please follow the steps outlined in these Knowledge Base articles to link it to your Cloudinary account.

    How do I grant Cloudinary with the permissions to backup on my private S3 bucket?

    How do I allow Cloudinary to read from my private S3 bucket?

    Further details on setting bucket and object access permissions in your S3 bucket can be found in Amazon Web Services official documentation.

    Google Cloud Storage Setup

    If you want to backup to your Google Cloud Storage bucket, please proceed with the directions provided by Google.

    It is important that your bucket name matches your Cloudinary cloud name, then ends with -gs-cld. If you do not know your Cloudinary cloud name, you can find it in your Console Dashboard.

    In the screenshot example above, the cloud name is sambrace. Therefore, the Google Cloud Storage bucket should be named sambrace-gs-cld.

    Once you have confirmed your Cloud Storage bucket is set up and working, please follow the steps below to link it to your Cloudinary account.

    Log into your Google Cloud Storage account and select the More Options icon/kebab for your chosen bucket. Then, select the Edit bucket permissions option.

    Add [email protected] as a member with the Storage Object Admin role.

    Follow the steps outlined above to access your Cloudinary Consoles Upload Settings.

    Type the name of your Google Cloud Storage bucket into the Backup S3 bucket field.

    Click the Save button at the bottom of the page to confirm your changes.

    Further details on controlling access to Google Cloud Storage buckets and objects using Identity and Access Management (IAM) permissions can be found in Googles official documentation.

    Go back to the top of the tutorial.

    Testing Your Enabled Backup Processes

    Once you have properly set up your Automatic Backup feature, your selected asset in the Cloudinary Console should have a new View backed up versions button.

    To find this button, follow the steps outlined in our Retrieving Images, Videos and Other Assets from Backup with Cloudinarys Management Console tutorial.

    Go back to the top of this tutorial.

    Additional Resources

    After enabling Automatic Backup, there are several areas you can newly manage with your Cloudinary account. This includes retrieving backed up versions, as well as restoring previously deleted files. We have full tutorials on these subjects that we recommend reviewing:

    How to Restore Deleted Assets with Cloudinarys Management Console

    Retrieving Images, Videos and Other Assets from Backup with Cloudinarys Management Console

    Further details about Cloudinarys backup and revision options, including ways to specify the backup boolean parameter in our Upload API, can be found in our official documentation.

    If you have any questions or comments from this tutorial, you can always send those to us as a support request.

    View Article
  • Cloudinary provides a library for simplifying the integration even further, along withNode.js sample codefor uploading and transforming images.

    You can find sample projects that demonstratecommon Cloudinary's usage in Node.js here:

    https://github.com/cloudinary/cloudinary_npm/tree/master/samples

    Included two sample projects:

    Basic sample:

    This sample project uploads local and remote images to Cloudinary and generates URLs for applying various image transformations on the uploaded files.

    Photo Album:

    A fully working web application that allows you to uploads photos, maintain a database with references to them, list them with their metadata, and display them using various cloud-based transformations. Image uploading is performed both from the server side and directly from the browser using a jQuery plugin.

    View Article
  • Cloudinary supports specifying a folder name while uploading by adding the folderparameter to the upload call. The final public ID is a concatenation of the given folder name and the actual public ID.

    In addition, when setting theuse_filenameparameter totrue, Cloudinary willuse the file name of the uploaded image for the public ID. The file name is normalized and random characters are appended to ensure uniqueness.

    Here's an example (in Ruby) of uploading a file, while keeping its filename, and adding a folder as the public ID's prefix:

    Cloudinary::Uploader.upload("sample.jpg", :use_filename => true, :folder => "folder1/folder2")

    This will create a URL for your file similar to this:

    http://res.cloudinary.com/<cloud_name>/image/upload/v1377681437/folder1/folder2/sample_mzzi4k.jpg

    Here's an example in Ruby for uploading multiple images using cl_image_upload_tag:

    <%= cl_image_upload_tag(:image_id, :html => { :multiple => true }, :use_filename => true, :folder => "folder1/folder2") %>

    Note that you need to update to the latest version of our client library (Rails, PHP, Python, Node, etc.).

    View Article
  • Cloudinary allows you to define a list of domain names that remote image fetching can work against. This means that you can add your site's domain to the list, effectively limiting Cloudinary's fetch only to images from your website. This option is available in the settings section of our management console.

    View Article
  • When adding overlays, there are the following options:

    Specifying the overlay size in absolute pixels. For example, 100px height:

    http://res.cloudinary.com/demo/image/upload/h_200/l_badge,h_100/sheep.jpg

    http://res.cloudinary.com/demo/image/upload/h_200/l_badge,h_0.8,fl_relative/sheep.jpg

    Specifying the overlay in percents of the original overlay size. For example, 80% of the original overlay's height:

    http://res.cloudinary.com/demo/image/upload/h_200/l_badge,h_0.8/sheep.jpg

    Specifying the overlay size in percents of the containing image. For example, 80% of the containing images height (200px in this case)

    View Article
  • When utilizing Cloudinary's automatic-backup feature, you can ask for the backed-up resources to be stored on your own private S3 bucket (available for all paid plans).

    While it is arequirementthat the backup-partition isonly managedby Cloudinary's backup mechanism, sometimes it's important for customersto understand the structure of their data storage.

    Below is an example of the general structure of a backed-upcontentpath inside the S3 bucket:

    <S3-prefix>/<cloud-name>/<resource_type>/<type>/<public_id>/<version>.<format>

    Some additional info andhighlights:

    For the sake of redundancy the public-ID is used as another folder level, and the version as the actual filename.

    It's veryimportant that the backed-up content remains untouched where it was storedby the automatic back-up mechanism. Any change to this storage may break the internal consistency with our databases and result indata corruption.

    The aforementioned convention is subject to change at any time andis given for information purposes only.

    View Article
  • When implementing chunked upload you must comply with the following restrictions:

    You must include the X-Unique-Upload-Idheader and make sure it'sidentical (and unique) for all parts.

    Every part must contain Content-Range header which is applicable to the location of the chunk in the overall file (Format: 'bytes #start-#end/#total', e.g. 'bytes 0-5999999/22744222').

    Each chunk must be larger than 5mb except the last one.

    Here's how it's implemented within our Ruby libraries: https://github.com/cloudinary/cloudinary_gem/blob/master/lib/cloudinary/uploader.rb#L82https://github.com/cloudinary/cloudinary_gem/blob/d529213d93780d990048edab76fbe203838b153a/lib/cloudinary/uploader.rb#L109

    View Article

Curious about Cloudinary?

Anonymously Ask Cloudinary Any Question

Ask Anonymous Question

×
Rate your company