Cloudinary CLI

The Cloudinary CLI (Command Line Interface) enables you to interact with Cloudinary through the command line. For example, you can perform Admin and Upload API operations by typing commands into a terminal without having to spend time setting up a formal coding environment. Additional helper commands are provided to help you to try out transformations, optimizations, and other common actions with minimal effort. You can also combine CLI commands in a batch file to automate laborious tasks.

Note
CLI scripts should only be run locally or as part of server applications and never embedded in a client-side app so as not to expose your account API secret.

Requirements

To use the Cloudinary CLI you need:

  • Python 3.6 or later. You can install Python from https://www.python.org. The Python Package Installer (pip) is installed with it.

Installation and configuration

  1. To install the Cloudinary CLI, run:

    Copy to clipboard
    pip3 install cloudinary-cli
  2. To make all your cld commands point to your Cloudinary account, set up your CLOUDINARY_URL environment variable.

    For example, to set a temporary environment variable:

    • On Mac or Linux:

      Copy to clipboard
      export CLOUDINARY_URL=cloudinary://123456789012345:abcdefghijklmnopqrstuvwxyzA@cloud_name

    • On Windows:

      Copy to clipboard
      set CLOUDINARY_URL=cloudinary://123456789012345:abcdefghijklmnopqrstuvwxyzA@cloud_name

    You may prefer to set up a persistent environment variable, but be aware that you could put your API secret at risk by storing it in your shell's startup script.

    Tip
    You can copy and paste your account environment variable from the Account Details section of the Dashboard page in the Cloudinary console.

  3. Check your configuration by running:

    Copy to clipboard
    cld config

    A response of the following form is returned:

    Copy to clipboard
    cloud_name:     <CLOUD_NAME>
    api_key:        <API_KEY>
    api_secret:     ***************<LAST_4_DIGITS>
    private_cdn:    <True|False>

Upgrade

To upgrade your installation of the Cloudinary CLI to the latest version, enter:

Copy to clipboard
pip3 install --upgrade cloudinary-cli

Basic commands

To help you get started, there are some basic commands you can use.

For a list of commands, enter:

Copy to clipboard
cld --help

To see the available admin API methods, enter:

Copy to clipboard
cld admin

To see the available upload API methods, enter:

Copy to clipboard
cld uploader

To show the usage for the search API, enter:

Copy to clipboard
cld search --help

See the Command overview for a listing of all available commands, or the Command reference for syntax details and usage examples of the commands.

Take a look at this video to see the CLI being installed and configured, plus some basic commands in action:


Command overview

All Cloudinary CLI commands start with cld. The general syntax for the commands is as follows:

cld [cli options] [command] [command options] [method] [method parameters]

For example, the following command runs the resources_by_moderation method in the Admin API, limiting information output to the ERROR level. It returns details of up to 40 raw files that have been rejected by the MetaDefender anti-malware plugin, saving the output in a file called 'output.txt'.

Copy to clipboard
cld -v ERROR admin --save output.txt -o max_results 40 -o resource_type raw resources_by_moderation metascan rejected

This command can be broken down as follows:

Syntax Example
cli options -v ERROR
command admin
command options --save output.txt
-o max_results 40
-o resource_type raw
method resources_by_moderation
method parameters metascan
rejected

Optional parameters can either be specified as command options (as in the above example) or using a syntax that assigns values.

  • If specified as command options they can be positioned either before or, more intuitively, after the method.
  • If specified using the assign syntax they must be specified after the method and any required parameters.

The example above can therefore also be entered as:

Copy to clipboard
cld -v ERROR admin --save output.txt resources_by_moderation metascan rejected -o max_results 40 -o resource_type raw

or (using the syntax that assigns values):

Copy to clipboard
cld -v ERROR admin --save output.txt resources_by_moderation metascan rejected max_results=40 resource_type=raw

Note
The methods available to the CLI, and their names, reflect those used in the Python SDK.

CLI options

CLI OPTION DESCRIPTION
-c, --config (env_var_url) Tell the CLI which account to run the command on by specifying an account environment variable. This overrides the default configuration.
-C, --config_saved (name) Tell the CLI which account to run the command on by specifying a saved configuration. See the config command. This overrides the default configuration.
-v, --verbosity (level) Specify the level of information output: CRITICAL, ERROR, WARNING, INFO or DEBUG.
--help Show help.

Commands

API commands

COMMAND DESCRIPTION
admin Run methods from the Admin API.
uploader Run methods from the Upload API.
search Run the search method from the Admin API.

File Management

COMMAND DESCRIPTION
migrate Migrate a list of external media files, referenced as URLs with the same prefix, to Cloudinary.
sync Synchronize between a local folder and a Cloudinary folder.
upload_dir Upload a folder of assets and maintain the folder structure.

Helpers

COMMAND DESCRIPTION
make Return template code for implementing the specified Cloudinary widget.
url Generate a Cloudinary URL.

Configuration

COMMAND DESCRIPTION
config Manage account configurations.

Command reference

admin

The admin command enables you to run any methods that can be called through the admin API.

See the Admin API reference for more details about each of the methods.

Syntax

Command options

OPTION DESCRIPTION
-o, --optional_parameter (param) Pass optional parameters as raw strings.
-O, --optional_parameter_parsed (param) Pass optional parameters as interpreted strings.
-ls, --ls List all available methods in the Admin API.
--save (filename) Save output to a file.
-d, --doc Open the Admin API reference in a browser.
--help Show help.

Methods

Use cld admin to list all of the available admin API methods. Then refer to the Admin API reference to see the parameters applicable to each method.

For example, the method resources_by_tag has a required parameter tag, and various optional parameters. To list up to ten videos (using the optional parameters max_results and resource_type) tagged with "animals", enter:

Copy to clipboard
cld admin resources_by_tag animals -o max_results 10 -o resource_type video

Tip
You can omit admin from the command when calling an admin API method as long as you don't specify any options before the method. So this also works:

Copy to clipboard
cld resources_by_tag animals -o max_results 10 -o resource_type video

Examples

Show all the tags in your account.

Copy to clipboard
cld admin tags

List all the resource types in an account:

Copy to clipboard
cld admin resource_types

Create a named transformation, then use the named transformation in an upload preset.

Copy to clipboard
cld admin create_transformation circle_face "c_thumb,w_250,h_250,g_face,r_max,q_auto"

cld admin create_upload_preset name=circle_face_on_upload transformation=circle_face

uploader

The uploader command enables you to run any methods that can be called through the upload API.

See the Upload API reference for more details about each of the methods.

Syntax

Command options

OPTION DESCRIPTION
-o, --optional_parameter (param) Pass optional parameters as raw strings.
-O, --optional_parameter_parsed (param) Pass optional parameters as interpreted strings.
-ls, --ls List all available methods in the Upload API.
--save (filename) Save output to a file.
-d, --doc Open the Upload API reference in a browser.
--help Show help.

Methods

Use cld uploader to list all of the available upload API methods. Then refer to the Upload API reference to see the parameters applicable to each method.

For example, the method rename has two required parameters, from_public_id and to_public_id, and various optional parameters. To rename photo1 to photo2, making photo2 private and invalidating photo1 on the CDN (using the optional parameters to_type and invalidate), enter:

Copy to clipboard
cld uploader rename photo1 photo2 -o to_type private -o invalidate true

Tip
You can omit uploader from the command when calling an upload API method as long as you don't specify any options before the method. So this also works:

Copy to clipboard
cld rename photo1 photo2 -o to_type private -o invalidate true

Examples

Imagine that you have a bunch of photos that you want to turn into a slide show. You can tag them on upload and then create an animated gif from the images. In the following example, we have a local folder containing images of birds. The bash script below runs from within that folder and uploads each JPG in the local folder to a folder in Cloudinary called "birds", adding the tags "bird", "feathers" and "beak". It then uses the multi method to create an animated gif from all images with the "bird" tag, applying a delay of 1300 ms between each frame.

Note
The tags "feathers" and "beak" are not needed to create the animated image, but are are included as an example of applying more than one tag.

Copy to clipboard
#!/bin/bash

for image in *.jpg
do
   cld uploader upload "$image" folder="birds" tags="bird,feathers,beak"   
done

cld uploader multi bird delay=1300

The result is a slide show of the bird images:

Bird slide show

Here's another example of the multi method in action:

And here are some more upload API methods being used to generate an image sprite from pages of a PDF:


search

The search command runs the admin API search method.

See the Search API reference for more details about the search method.

Syntax

Command options

OPTION DESCRIPTION
-f, --with_field (asset_attribute) Specify which asset attribute to include in the result. You can include more than one of these options, for example, -f tags -f context.
-s, --sort_by (field) (asc,desc) Sort search results by the specified field ascending or descending.
-a, --aggregate (aggr_param) Specify the attribute for which an aggregation count should be calculated and returned.
-n, --max_results (integer) The maximum number of results to return. Default: 10, maximum: 500.
-c, --next_cursor (cursor) Continue a search using an existing cursor.
-A, --auto_paginate Return all results.
-F, --force Skip confirmation when running --auto_paginate.
-ff, --filter_fields (fields) Filter fields to return.
--json (filename) Save JSON output to a file.
--csv (filename) Save CSV output to a file.
-d, --doc Open the Search API documentation page.
--help Show help.

expression

The search expression. For supported expressions, see Expressions.

Example

Find images tagged with "bird", that have been uploaded within the last day, and are larger than 100 kB in size. In the response, show the tags field, sort the results by public_id in ascending order, and limit the returned results to 30 resources:

Note
The expression is encapsulated in double quotes to prevent the > character being interpreted as a redirection command.

Copy to clipboard
cld search -f tags -n 30 -s public_id asc "resource_type:image AND tags=bird AND uploaded_at>1d AND bytes>100k"

Sample output:

Copy to clipboard
{
  "total_count": 4,
  "time": 110,
  "resources": [
    {
      "public_id": "birds/ndnqgfjucvqt0aagrv0d",
      "folder": "birds",
      "filename": "ndnqgfjucvqt0aagrv0d",
      "format": "jpg",
      "version": 1572953308,
      "resource_type": "image",
      "type": "upload",
      "created_at": "2019-11-05T11:28:28+00:00",
      "uploaded_at": "2019-11-05T11:28:28+00:00",
      "bytes": 233593,
      "backup_bytes": 0,
      "width": 1920,
      "height": 1265,
      "aspect_ratio": 1.51779,
      "pixels": 2428800,
      "tags": [
        "bird",
        "feathers",
        "beak"
      ],
      "url": "http://res.cloudinary.com/cloud_name/image/upload/v1572953308/birds/ndnqgfjucvqt0aagrv0d.jpg",
      "secure_url": "https://res.cloudinary.com/cloud_name/image/upload/v1572953308/birds/ndnqgfjucvqt0aagrv0d.jpg",
      "status": "active",
      "access_mode": "public",
      "access_control": null,
      "etag": "c03d613e7e96c317d1db3dab0544ce07"
    },
    {
      "public_id": "birds/pa6o8xvvbg22dceytes0",
      "folder": "birds",
      "filename": "pa6o8xvvbg22dceytes0",
      "format": "jpg",
      "version": 1572953306,
      "resource_type": "image",
      "type": "upload",
      "created_at": "2019-11-05T11:28:26+00:00",
      "uploaded_at": "2019-11-05T11:28:26+00:00",
      "bytes": 420735,
      "backup_bytes": 0,
      "width": 1920,
      "height": 1277,
      "aspect_ratio": 1.50352,
      "pixels": 2451840,
      "tags": [
        "bird",
        "feathers",
        "beak"
      ],
      "url": "http://res.cloudinary.com/cloud_name/image/upload/v1572953306/birds/pa6o8xvvbg22dceytes0.jpg",
      "secure_url": "https://res.cloudinary.com/cloud_name/image/upload/v1572953306/birds/pa6o8xvvbg22dceytes0.jpg",
      "status": "active",
      "access_mode": "public",
      "access_control": null,
      "etag": "c6acb28c097000ddc4674965d2ee30d3"
    },
    {
      "public_id": "birds/rjgx7odwsqj8v6r3hxpr",
      "folder": "birds",
      "filename": "rjgx7odwsqj8v6r3hxpr",
      "format": "jpg",
      "version": 1572953304,
      "resource_type": "image",
      "type": "upload",
      "created_at": "2019-11-05T11:28:24+00:00",
      "uploaded_at": "2019-11-05T11:28:24+00:00",
      "bytes": 420892,
      "backup_bytes": 0,
      "width": 1920,
      "height": 1280,
      "aspect_ratio": 1.5,
      "pixels": 2457600,
      "tags": [
        "bird",
        "feathers",
        "beak"
      ],
      "url": "http://res.cloudinary.com/cloud_name/image/upload/v1572953304/birds/rjgx7odwsqj8v6r3hxpr.jpg",
      "secure_url": "https://res.cloudinary.com/cloud_name/image/upload/v1572953304/birds/rjgx7odwsqj8v6r3hxpr.jpg",
      "status": "active",
      "access_mode": "public",
      "access_control": null,
      "etag": "284e8a1e18f013ab644b00be32003fed"
    },
    {
      "public_id": "birds/tkdkwjlvuj4wwpnjnzww",
      "folder": "birds",
      "filename": "tkdkwjlvuj4wwpnjnzww",
      "format": "jpg",
      "version": 1572953310,
      "resource_type": "image",
      "type": "upload",
      "created_at": "2019-11-05T11:28:30+00:00",
      "uploaded_at": "2019-11-05T11:28:30+00:00",
      "bytes": 365870,
      "backup_bytes": 0,
      "width": 1920,
      "height": 1280,
      "aspect_ratio": 1.5,
      "pixels": 2457600,
      "tags": [
        "beak",
        "bird",
        "feathers"
      ],
      "url": "http://res.cloudinary.com/cloud_name/image/upload/v1572953310/birds/tkdkwjlvuj4wwpnjnzww.jpg",
      "secure_url": "https://res.cloudinary.com/cloud_name/image/upload/v1572953310/birds/tkdkwjlvuj4wwpnjnzww.jpg",
      "status": "active",
      "access_mode": "public",
      "access_control": null,
      "etag": "534b82b763b375a47169bcb5b2cceabc"
    }
  ]
}

migrate

Use the migrate command to migrate a list of external media files to Cloudinary. The URLs of the files to migrate are listed in a separate file and must all have the same prefix.

Syntax

Command options

OPTION DESCRIPTION
-d, --delimiter (string) The separator used between the URLs. If no delimiter is specified, a new line is assumed as the separator.
-v, --verbose Output information for each uploaded file.
--help Show help.

upload_mapping

An auto-upload URL mapping that you have configured in your account settings. Set upload_mapping to the name of the mapped folder.

file

The name of the file containing the URLs that each have the same URL prefix as specified in the auto-upload URL mapping.

Example

You have a file of URLs that point to assets that you want to migrate to your Cloudinary account. In this example, all the assets are prefixed by 'https://upload.wikimedia.org/wikipedia/commons/' and the URLs in the file are delimited by semi-colons.

The file, called url_file.txt, looks like this:

https://upload.wikimedia.org/wikipedia/commons/c/cb/Eden_Gardens_under_floodlights_during_a_match.jpg;https://upload.wikimedia.org/wikipedia/commons/d/dc/Historical_cricket_bat_art.jpg;https://upload.wikimedia.org/wikipedia/commons/a/ae/Olympic_flag.jpg;https://upload.wikimedia.org/wikipedia/commons/3/35/Olympic-flag-Victoria.jpg

First, configure an auto-upload URL mapping in your account settings that maps a Cloudinary folder, for example, 'remote_media', to the URL prefix 'https://upload.wikimedia.org/wikipedia/commons/'. The folder will be created in Cloudinary automatically if it does not already exist.

You can create the upload mapping in the Cloudinary console upload settings, or using the CLI as follows:

Copy to clipboard
cld admin create_upload_mapping "remote_media" template="https://upload.wikimedia.org/wikipedia/commons/"

Then, run this command to migrate all the assests in url_file.txt to the remote_media folder in your Cloudinary account, returning 'verbose' output:

Copy to clipboard
cld migrate -v -d ";" remote_media url_file.txt

Sample verbose output:

Copy to clipboard
Uploaded http://res.cloudinary.com/cloud_name/image/upload/v1/remote_media/c/cb/Eden_Gardens_under_floodlights_during_a_match.jpg
Uploaded http://res.cloudinary.com/cloud_name/image/upload/v1/remote_media/d/dc/Historical_cricket_bat_art.jpg
Uploaded http://res.cloudinary.com/cloud_name/image/upload/v1/remote_media/a/ae/Olympic_flag.jpg
Uploaded http://res.cloudinary.com/cloud_name/image/upload/v1/remote_media/3/35/Olympic-flag-Victoria.jpg

sync

The sync command synchronizes between a local folder and a Cloudinary folder, maintaining the folder structure.

Syntax

Command options

OPTION DESCRIPTION
--push Push changes from your local folder to your Cloudinary folder.
--pull Pull changes from your Cloudinary folder to your local folder.
-w, --concurrent_workers (integer) Specify the number of concurrent network threads.
-F, --force Skip confirmation when deleting files.
--help Show help.

local_folder

Your local folder that you want to synchronize with your Cloudinary folder.

cloudinary_folder

Your Cloudinary folder that you want to synchronize with your local folder. You can specify a path by separating folders with a forward slash.

Example

Push changes from the local folder, my_images, to the Cloudinary folder, my_cld_images/my_images.

Copy to clipboard
cld sync --push my_images my_cld_images/my_images

Sample output:

Copy to clipboard
Found 7 items in local folder 'my_images'
Found 0 items in Cloudinary folder 'my_cld_images/my_images'
Uploading 7 items to Cloudinary folder 'my_cld_images/my_images'
Successfully uploaded /Users/me/my_images/hummingbird.jpg as my_cld_images/my_images/hummingbird
Successfully uploaded /Users/me/my_images/jay.jpg as my_cld_images/my_images/jay
Successfully uploaded /Users/me/my_images/bird.jpg as my_cld_images/my_images/bird
Successfully uploaded /Users/me/my_images/kingfisher.jpg as my_cld_images/my_images/kingfisher
Successfully uploaded /Users/me/my_images/ara.jpg as my_cld_images/my_images/ara
Successfully uploaded /Users/me/my_images/parrot.jpg as my_cld_images/my_images/parrot
Successfully uploaded /Users/me/my_images/swan.jpg as my_cld_images/my_images/swan
Done!

Subsequently, delete two files from the Cloudinary folder. Now pull the changes back down to the local folder with the -F option so as not to be prompted for confirmation to delete files:

Copy to clipboard
cld sync -F --pull my_images my_cld_images/my_images

Sample output:

Copy to clipboard
Found 7 items in local folder 'my_images'
Found 5 items in Cloudinary folder 'my_cld_images/my_images'
Skipping 5 items
Deleting 2 local files...
Deleted '/Users/me/my_images/swan.jpg'
Deleted '/Users/me/my_images/kingfisher.jpg'
Deleting empty folders...
Downloading 0 files from Cloudinary
Done!

upload_dir

Use the upload_dir command to upload a folder of assets, maintaining the folder structure.

Syntax

Command options

OPTION DESCRIPTION
-o, --optional_parameter (param) An optional parameter to pass as a raw string.
-O, --optional_parameter_parsed (param) An optional parameter to pass as an interpreted string.
-t, --transformation (transformation) The transformation to apply on all uploads.
-f, --folder (folder) The Cloudinary folder where you want to upload the assets. You can specify a whole path, for example folder1/folder2/folder3. Any folders that do not exist are automatically created.
-p, --preset (upload_preset) The upload preset to use.
-w, --concurrent_workers (integer) Specify the number of concurrent network threads.
--help Show help.

local_folder

Your local folder that you want to upload to Cloudinary. If this argument is omitted, the contents of the current folder are uploaded.

Examples

Upload the local folder, my_images, and all its contents and sub-folders to the Cloudinary folder my_images_on_cloudinary, overwriting existing files.

Copy to clipboard
cld upload_dir -f my_images_on_cloudinary -o overwrite true my_images

This results in the following folder structure in Cloudinary:

    Home
    +--my_images_on_cloudinary
    |  +-- my_images
    |  |   +-- <all assets and sub-folders of my_images>

This video shows the upload_dir command in action:


make

The make command returns template code for implementing the specified Cloudinary widget.

Syntax

Command options

OPTION DESCRIPTION
--help Show help.

widget

WIDGET DESCRIPTION
media_library_widget Return template HTML for the Media Library Widget.
product_gallery Return template HTML for the Product Gallary.
upload_widget Return template HTML for the Upload Widget.
video_player Return template HTML for the Video Player.

Example

Generate sample code for implementing a basic upload widget in your web page.

Copy to clipboard
cld make upload_widget

Sample output:

Copy to clipboard
<button id="upload_widget" class="cloudinary-button">Upload files</button>

<script src="https://widget.cloudinary.com/v2.0/global/all.js" type="text/javascript"></script>  

<script type="text/javascript">  

    var myWidget = cloudinary.createUploadWidget({
        cloudName: 'cloud_name',
        upload_preset: 'preset1',
        }, (error, result) => { if (result.event == "success") {
            console.log(result.info) // result.info contains data from upload
        } })

        document.getElementById("upload_widget").addEventListener("click", function(){
            myWidget.open();
        }, false);

</script>

url

The url command generates a Cloudinary URL, which you can optionally open in your browser.

Note
Unless the URL is opened, the derived asset is not generated.

Syntax

cld [cli options] url [command options] public_id [transformation]

Command options

OPTION DESCRIPTION
-rt, --resource_type [image, video, raw] The asset type.
-t, --type [upload, private, authenticated, fetch, list, url2png] The delivery type.
-o, --open Generate the derived asset and open it in your browser.
-s, --sign Generate as a signed URL.
--help Show help.

transformation

The transformation that you want to perform on the asset. Use the URL syntax as described in the Image transformation reference and the Video transformation reference.

Examples

Perform the following transformation on the image animals_on_road.jpg, stored in the docs folder of the media library:

  • Resize to width to 400 pixels using the thumb cropping mode with automatic gravity
  • Apply a vectorize effect using 10 colors and a detail of 60%
  • Add a vignette effect with a strength of 40.
Copy to clipboard
cld url -t upload -o docs/animals_on_road.jpg w_400,c_thumb,g_auto,e_vectorize:10:0.6/e_vignette:40

Sample output:

Copy to clipboard
http://res.cloudinary.com/demo/image/upload/w_400,c_thumb,g_auto,e_vectorize:10:0.6/e_vignette:40/docs/animals_on_road.jpg

Transformed animals_on_road

Use the URL2PNG add-on to capture a screenshot of the top part of the Cloudinary home page, apply a grayscale effect to the captured image, and open the transformed image in the browser. As the URL2PNG add-on requires URLs to be signed, the -s option is used.

Copy to clipboard
cld url -t url2png -o -s https://cloudinary.com w_300,h_250,g_north,c_fill,e_grayscale

Sample output:

Copy to clipboard
http://res.cloudinary.com/cloud_name/image/url2png/s--6WjWrdiu--/w_300,h_250,g_north,c_fill,e_grayscale/https://cloudinary.com

Cloudinary screenshot


config

A configuration is a reference to a specified Cloudinary account or cloud name via its environment variable. You set the default configuration during installation and configuration. Using different configurations allows you to access different Cloudinary cloud names, such as sub-accounts of your main Cloudinary account, or any additional Cloudinary accounts you may have.

The config command displays the current configuration and lets you manage additional configurations.

You can specify the environment variable of additional Cloudinary accounts either explicitly (-c option) or as a saved configuration (-C option).

For example, using the -c option:

Copy to clipboard
cld -c cloudinary://123456789012345:abcdefghijklmnopqrstuvwxyzA@cloud_name admin usage

Whereas using the saved configuration "accountx":

Copy to clipboard
cld -C accountx admin usage

You can create, delete and list saved configurations using the config command.

Caution
Creating a saved configuration may put your API secret at risk as it is stored in a local plain text file.

Syntax

cld config [options]

Options

OPTION DESCRIPTION
-n, --new (name env_var_url) Create and name a configuration from a Cloudinary account environment variable.
-ls, --ls List all saved configurations.
-rm, --rm (name) Delete a specified configuration.
-url, --from_url (env_var_url) Create a configuration from a Cloudinary account environment variable. The configuration name is the cloud name.
--help Show help.

Examples

In these examples, we use a made up account environment variable.

Tip
If you copy the examples below, replace the displayed account environment variable with your own. You can copy and paste your account environment variable (excluding the CLOUDINARY_URL part) from the Account Details section of the Dashboard page in the Cloudinary console.

Display the current configuration.

Copy to clipboard
cld config

Create an additional configuration named accountx, show the upload presets that are configured in this account, then delete the configuration.

Copy to clipboard
cld config -n accountx cloudinary://123456789012345:abcdefghijklmnopqrstuvwxyzA@cloud_name

cld -C accountx admin upload_presets

cld config -rm accountx

Create an additional configuration from an account environment variable. The configuration is automatically given the same name as the cloud name, in this case cloud_name. Then upload a picture to the account, applying relevant tags.

Copy to clipboard
cld config -url cloudinary://123456789012345:abcdefghijklmnopqrstuvwxyzA@cloud_name

cld -C cloud_name uploader upload "family.jpg" tags="mum,dad,grandpa,grandma"

List all saved configurations to a file called configs.txt, then delete all the configurations.

Copy to clipboard
cld config -ls > configs.txt

while read in; do cld config -rm "$in"; done < configs.txt

✔️ Feedback sent!