Last updated: Apr-30-2023
Before you dive into the details of Cloudinary's many asset management features and begin adding Cloudinary Programmable Media capabilities to your application, we recommend that you review this page to gain a high-level understanding about the service architecture, asset storage, security, and other details about how the Cloudinary service works.
Cloudinary's media asset management service includes:
- High performance servers behind Elastic Load Balancers that support fast upload and download rates.
- Highly available storage that promises that your assets are always available and safe.
- High performance media processing servers for generating your requested images and videos.
By default, assets are stored in Amazon S3 buckets that are privately accessed for writing. These can be shared buckets, dedicated buckets or private buckets.
The asset delivery lifecycle consists of 5 stages: Upload, Storage, Administration, Transformation, and Delivery.
Once the original file has been uploaded to Cloudinary, you can manage the asset via secured APIs or the Cloudinary Console, and embed dynamic asset URLs in your web page to deliver various versions of the original asset. The dynamic URLs include instructions on how to transform the asset before delivery.
The first time a transformed asset is requested via a dynamic delivery URL:
- The asset is requested by the user's browser.
- The asset request reaches the closest CDN edge server.
- The CDN edge servers checks if the asset is cached - it is not.
- The CDN edge server requests the asset from Cloudinary.
- Cloudinary generates the transformed asset as per the dynamic URL instructions.
- Cloudinary returns the asset to the CDN edge server.
- The CDN edge server caches the image and then returns the image to the user's browser.
Subsequent requests for the transformed asset via the same dynamic delivery URL:
- The asset is requested by the user's browser.
- The asset request reaches the closest CDN edge server.
- The CDN edge servers checks if the asset is cached - it is.
- The CDN edge server returns the image to the user's browser.
For a complete reference of possible transformations see the Transformation URL API Reference.
Cloudinary's architecture was built from the ground up to support high load and handle a practically unlimited amount of assets and usage. Cloudinary's service includes a multitude of powerful cloud-based upload and transformation servers, with each server optimized to handle a very high rate of uploads, downloads, and complex image transformations. Cloudinary's servers also automatically scale to easily manage large traffic peaks with advanced load balancers that are used to distribute the load between all our servers. Finally, an enterprise-grade content delivery network delivers assets quickly and efficiently through thousands of global delivery servers.
Cloudinary's secure and safe cloud-based solution is accessible via secure and authenticated HTTPS APIs, with flexible access key provisioning. Cloudinary's security features include:
- Automatic backup of assets to a secondary protected location.
- Complete asset access control.
- Restricted access to assets based on specific transformations, file types and referral sites via the Security page of the Console Settings.
- Authenticated image access with signed URLs.
- Access control with multiple user roles and permissions, leveraging two-factor authentication (2FA), 3rd-party service provider logins (such as Google or Github), or SSO. You can set these preferences via the Users page of the Cloudinary Console Settings.
Assets uploaded to Cloudinary and all generated assets are safely stored and managed by Cloudinary on high-performance servers that support fast upload and download rates.
By default, Amazon's Simple Storage Service (S3) is leveraged for asset management and assets are stored in S3 buckets that are privately accessed for writing. These can be shared buckets, dedicated buckets or private buckets.
Google Cloud Storage is also available for primary and/or backup storage. This is a premium feature that requires a special setup. For more information, contact customer support.
Cloudinary offers several Programmable Media APIs:
- Upload API - methods for uploading assets, creating new assets such as text images, ZIP files and sprites, and transforming existing assets.
- Admin API - A secure API with methods for browsing, deleting, and restoring existing assets, and for managing upload presets, upload mappings, and transformations. This API also includes the Search API and Metadata API.
- Provisioning API - A secure API that enables account administrators to create and manage their account, product environments, users and user groups programmatically.
- URL API - a URL-based API for delivering assets. Includes dynamic asset transformations, fetching remote assets, and optimizing delivery of the assets. Asset URLs are dynamically mapped to CDN distributions that forward the requests to Cloudinary servers which generate the transformed asset on-demand and deliver them optimized to users.
URLs and endpoints
The URLs for accessing Cloudinary are based on your
cloud name, and you can access your public web assets using dynamic URLs. The full URLs of the images or videos you deliver include various parts including the name of the asset, its version and transformation settings. However, all your delivery URLs use the same base URLs. You can view your base URLs and some sample URLs in the Product Environment Credentials section in the Cloudinary Console.
The base URL will also include your cloud name. For example, if your cloud name is 'demo', the base URLs will be:
- 'api.cloudinary.com/v1_1/demo/' - the base URL for accessing Cloudinary's secure API.
- 'https://res.cloudinary.com/demo/' - the base URL for Cloudinary's shared CDN Distribution (all Plans).
- 'https://demo-res.cloudinary.com/' - the base URL for a private CDN Distribution (Advanced plans and higher only).
Building full URLs for accessing your assets is done automatically if you are using our SDKs. However, you can also build these URLs manually. For example, if your cloud name is 'demo' and you want to deliver the uploaded 'sample.jpg' file, simply point to:
This means that in your HTML code you can simply add the following tag:
For more information and details on constructing dynamic URLs see Delivering images using dynamic URLs.
Granular access key permissions for Upload and Admin APIs
You may want to allow certain developers to run specific endpoints in the Admin and Upload APIs and their equivalent SDK methods, and deny them from running others. You can coordinate with a Cloudinary solutions engineer to customize multiple access keys (API key/secret pairs) for your product environment, with each pair allowing access to different endpoints or groups of endpoints. You can then assign each customized access key pair to different developers to control who can perform which programmatic actions in your product environment.
For example, you might want to allow certain developers to:
- Use only GET methods, i.e., read-only permissions.
- Use only the
streaming_profilesendpoints, with both read and write capabilities.
- Use all endpoints except DELETE methods.
If a user makes a call to an endpoint that's restricted by the API key, an error message stating that the provided API key doesn't have permission to run the API call is returned.
To set up granular permissions for your API keys:
Create all the API keys you want to customize from the Access Keys page of the Cloudinary Console Settings.
The API key and secret of the first access key in your product environment are displayed in the Product Environment Credentials section on the Dashboard page.
Make a request to Cloudinary support to configure your permissions. When making your request, specify the API keys to update and the list of Upload API and Admin API endpoints you want to restrict for each one. For example, "Please restrict the
: GET /streaming_profilesand
POST /transformations/:nameendpoints for the API key named:
You can use the the web-based Cloudinary Console to administer your Cloudinary account and product environments.
What's a product environment?
A product environment (previously known as a sub-account) is an entity within your account that includes an asset repository, some product environment-specific settings, and other elements that are stored in your product environment and help you manage it, such as upload presets, named transformations, and more.
A product environment can represent a production or staging environment, different organizations, products, or geographic sites that you want to manage separately within a single Cloudinary account.
You can manage the elements related to a product environment via the Cloudinary Console or programmatically using the Admin API.
This section describes the options available for the Programmable Media product. For details on working with Digital Asset Management, see the Digital Asset Management Overview.
The following options are available from the Console Options sidebar, located at the far left of the Console:
|Add-ons||Manage your add-ons and upgrade add-on plans. Cloudinary add-ons provide additional functionality such as auto-tagging, automated asset moderation, anti-malware protection, AI, deep-learning and other analysis algorithms, face detection or recognition, and a variety of special transformation capabilities.
Nearly all add-ons offer a free tier that you can try regardless of your plan. For details on all available add-ons, see Cloudinary Add-ons.
|Add new user||Add new users to your account.|
|Help||Access a variety of resources to learn more about working with Cloudinary including documentation, support request form, training courses and more.|
|Settings||Manage your personal profile, account-level settings, and product environment-level settings. These settings allow you to control and tweak almost every aspect of your asset pipeline behavior.|
|Profile||Update your personal information and preferences.|
Programmable Media navigation options
When the Programmable Media product is selected, the following options are available from the Product Navigation menu:
|Getting Started||Provides developer onboarding content including quick code snippets to help you configure SDKs, upload assets, deliver transformations, as well as introductory information about other Cloudinary features and resources.|
|Dashboard||View details about your account, product environment, and plan as well as usage status of assets, transformations, storage, bandwidth and add-ons.|
|Media Library||A UI for easily browsing and searching through your existing assets, drag & drop upload, and much more. For details, see the DAM user guide.|
|Transformations||Provides various options to learn about, generate and manage transformations, including the Transformations Gallery, named transformation management, and the transformation builder. For details, see Named transformations|
|Reports||Get insight on your assets with usage reports, in-depth analytics and advice.|
|Product environment switcher||Enables you to switch between product environments or create a new one.
Note: Free accounts support only one product environment.
Your account's monthly pricing plan is in part dependent on the total number of transformations performed during a 30-day cycle. Transformation counts are impacted by each processing of an asset. For details, see How are transformations counted?.