{"id":22011,"date":"2020-04-29T15:23:30","date_gmt":"2020-04-29T15:23:30","guid":{"rendered":"http:\/\/commanding_cloudinary_through_the_cli"},"modified":"2024-05-29T17:11:22","modified_gmt":"2024-05-30T00:11:22","slug":"commanding_cloudinary_through_the_cli","status":"publish","type":"post","link":"https:\/\/cloudinary.com\/blog\/commanding_cloudinary_through_the_cli","title":{"rendered":"Commanding Cloudinary Through the CLI"},"content":{"rendered":"<div class=\"wp-block-cloudinary-markdown \"><p><strong><em>\u201cAnything you can do, I can do better,<br>\nI can do anything better than you\u2026\u201d<\/em><\/strong>  (Irving Berlin)<\/p>\n<p>If the <a href=\"https:\/\/cloudinary.com\/documentation\/cloudinary_cli\">Cloudinary CLI<\/a> could sing, this could well be its song.  Virtually anything you can do with the Cloudinary <a href=\"https:\/\/cloudinary.com\/documentation\/image_upload_api_reference\">upload<\/a> and <a href=\"https:\/\/cloudinary.com\/documentation\/admin_api\">admin<\/a> APIs, you can do with the CLI (Command Line Interface), and much of the functionality that\u2019s available through your <a href=\"https:\/\/cloudinary.com\/console\">account console<\/a> is also accessible through the CLI.  As to being \u2018better\u2019, it probably depends on the context, but in many situations it\u2019s certainly quicker and easier, and it provides some bonus functionality that isn\u2019t available through the APIs or console.<\/p>\n<h2>Initiation<\/h2>\n<p>All you need to get started with the Cloudinary CLI is your own Cloudinary account (<a href=\"https:\/\/cloudinary.com\/users\/register\/free\">sign up<\/a> for free if you don\u2019t have one) and <a href=\"https:\/\/www.python.org\">Python 3.6<\/a> or later. You can install the Cloudinary CLI using the Python Package installer (PIP), as follows:<\/p>\n<pre class=\"js-syntax-highlighted\"><code>pip3 install cloudinary-cli\n<\/code><\/pre>\n<p>To make all your <code>cld<\/code> commands point to your Cloudinary account, set up your <code>CLOUDINARY_URL<\/code> environment variable.  For example, to set a temporary environment variable:<\/p>\n<ul>\n<li>\nOn Mac or Linux:\n<pre class=\"js-syntax-highlighted\"><code>export CLOUDINARY_URL=cloudinary:\/\/123456789012345:abcdefghijklmnopqrstuvwxyzA@cloud_name\n<\/code><\/pre>\n<\/li>\n<li>\nOn Windows:\n<pre class=\"js-syntax-highlighted\"><code>set CLOUDINARY_URL=cloudinary:\/\/123456789012345:abcdefghijklmnopqrstuvwxyzA@cloud_name\n<\/code><\/pre>\n<\/li>\n<\/ul>\n<div class='c-callout  c-callout--inline-title c-callout--tip'><strong class='c-callout__title'>Tip:<\/strong> <p>You can copy and paste your account environment variable from the <strong>Account Details<\/strong> section of the <strong>Dashboard<\/strong> page in the <a href=\"https:\/\/cloudinary.com\/users\/login\">Cloudinary console<\/a>.<\/p><\/div>\n<p>You may prefer to set up a persistent environment variable so that you don\u2019t have to add it every time you open a new terminal, but be aware that you could put your API secret at risk if you\u2019re storing it in your shell\u2019s startup script.<\/p>\n<p>Check your configuration by entering the following CLI command:<\/p>\n<pre class=\"js-syntax-highlighted\"><code>cld config\n<\/code><\/pre>\n<p>Here\u2019s the type of response to expect:<\/p>\n<pre class=\"js-syntax-highlighted\"><code>cloud_name:     &lt;CLOUD_NAME&gt;\napi_key:        &lt;API_KEY&gt;\napi_secret:     ***************&lt;LAST_4_DIGITS&gt;\nprivate_cdn:    &lt;True|False&gt;\n<\/code><\/pre>\n<p>Before we jump into the fun stuff, take a look at this video to see how easy it is to get the CLI up and running, plus a few basic commands in action:<\/p>\n<center> \n<div>\n<p><video\ndata-cld-public-id=\"docs\/CLI\/setup_quiet\"\ncontrols\ndata-cld-poster-options='{ \"publicId\": \"docs\/CLI\/setup_quiet\", \"format\":\"jpg\", \"start_offset\": 2, \"resource_type\": \"video\" }' \nwidth=700\nclass=\"cld-video-player cld-fluid\">\n<\/video><\/p>\n<\/div>\n<\/center> \n<p>Now you know the basics, keep reading for some examples of what you can do with the CLI.<\/p>\n<h2>Uploading Assets<\/h2>\n<p>Let\u2019s start with an upload example.  When uploading assets to Cloudinary there are <a href=\"https:\/\/cloudinary.com\/documentation\/image_upload_api_reference#upload_method\">many options<\/a> that you can specify. To make uploading easier you can save a set of options in an <a href=\"https:\/\/cloudinary.com\/documentation\/upload_presets\">upload preset<\/a>.\nWant to know what upload presets you have configured in your account?  No need to log in to your console, just enter:<\/p>\n<pre class=\"js-syntax-highlighted\"><code>cld admin upload_presets\n<\/code><\/pre>\n<p>You\u2019ll get back a listing of all the account upload presets including the upload options defined for each one.<\/p>\n<p>Can\u2019t find one that meets your needs? No worries &#8211; just create a new one with <code>cld admin create_upload_preset<\/code> together with any of the upload parameters documented in the <a href=\"https:\/\/cloudinary.com\/documentation\/admin_api#create_an_upload_preset\">API reference<\/a>:<\/p>\n<pre class=\"js-syntax-highlighted\"><code>cld admin create_upload_preset name=new_preset use_filename=true unique_filename=false\n<\/code><\/pre>\n<p>Next, use the <code>upload<\/code> command to upload a single file using the upload preset (this example assumes you\u2019re running the command from the same folder as video.mp4, otherwise you\u2019d need to specify the file path):<\/p>\n<pre class=\"js-syntax-highlighted\"><code>cld uploader upload video.mp4 upload_preset=new_preset folder=cld_folder\n<\/code><\/pre>\n<p>Or, if you have a whole directory (folder) to upload, you can use the <code>upload_dir<\/code> command.  This command is unique to the CLI &#8211; it\u2019s not part of the upload API &#8211; so has different syntax.  Notice that the upload preset is specified with the -p option this time, and the Cloudinary folder with -f:<\/p>\n<pre class=\"js-syntax-highlighted\"><code>cld upload_dir -f cld_folder -p new_preset local_folder\n<\/code><\/pre>\n<p>The following video shows some of these commands in action.  A folder of images is uploaded to Cloudinary using an upload preset that removes the backgrounds of the images by activating the <a href=\"https:\/\/cloudinary.com\/documentation\/cloudinary_ai_background_removal_addon\">Cloudinary AI Background Removal add-on<\/a>:<\/p>\n<center> \n<div>\n<p><video\ndata-cld-public-id=\"docs\/CLI\/cli_upload_dir_example_quiet\"\ncontrols\ndata-cld-poster-options='{ \"publicId\": \"docs\/CLI\/cli_upload_dir_example_quiet\", \"format\":\"jpg\", \"start_offset\": 48.5, \"resource_type\": \"video\" }' \nwidth=700\nclass=\"cld-video-player cld-fluid\">\n<\/video><\/p>\n<\/div>\n<\/center> \n<br>\n<ul>\n<li>\nHere&#8217;s the `create_upload_preset` command from the video: \n<pre class=\"js-syntax-highlighted\"><code>cld admin create_upload_preset name=remove_background overwrite=false use_filename=true unique_filename=false type=upload access_mode=public background_removal=cloudinary_ai\n<\/code><\/pre>\n<p>The optional parameter, <code>background_removal=cloudinary_ai<\/code>, tells it to use the <a href=\"https:\/\/cloudinary.com\/documentation\/cloudinary_ai_background_removal_addon\">Cloudinary AI Background Removal add-on<\/a>.<\/p>\n<li>\nThe details of the \u2018remove\\_background\u2019 upload preset are shown using the command:\n<pre class=\"js-syntax-highlighted\"><code>cld admin upload_preset remove_background\n<\/code><\/pre>\n<\/li>\n<li>\nThe `upload_dir` command is used to upload the \u2018soft\\_toys\u2019 folder together with its contents and sub-folder to the \u2018new\\_toys\u2019 folder in the Cloudinary account.  Because the &#8216;remove_background&#8217; upload preset is specified, the image backgrounds are removed on upload.  Here&#8217;s the command:\n<pre class=\"js-syntax-highlighted\"><code>cld upload_dir -f new_toys -p remove_background soft_toys\n<\/code><\/pre>\n<\/li>\n<\/ul>\nAnother way to upload assets to your Cloudinary account is to migrate them from an external site using the `migrate` command. If this is something you&#8217;re interested in, be sure to check out the [migrate example](https:\/\/cloudinary.com\/documentation\/cloudinary_cli#example-3) in the docs. \n<h2>Prompt Me!<\/h2>\n<p>The <code>make<\/code> command is very nifty if you want to embed one of Cloudinary\u2019s <a href=\"https:\/\/cloudinary.com\/documentation\/embed_widgets_players\">front-end tools<\/a> into your app.  It returns template code for implementing one of Cloudinary\u2019s widgets or players.  For example, you can get the HTML you need to embed the <a href=\"https:\/\/cloudinary.com\/documentation\/upload_widget\">upload widget<\/a> into your web page by entering:<\/p>\n<pre class=\"js-syntax-highlighted\"><code>cld make upload_widget\n<\/code><\/pre>\n<p>Here\u2019s the sample output:<\/p>\n<pre class=\"js-syntax-highlighted\"><code>&lt;button id=&quot;upload_widget&quot; class=&quot;cloudinary-button&quot;&gt;Upload files&lt;\/button&gt;\n\n&lt;script src=&quot;https:\/\/widget.cloudinary.com\/v2.0\/global\/all.js&quot; type=&quot;text\/javascript&quot;&gt;&lt;\/script&gt;  \n\n&lt;script type=&quot;text\/javascript&quot;&gt;  \n\n    var myWidget = cloudinary.createUploadWidget({\n        cloudName: 'cloud_name',\n        upload_preset: 'preset1',\n        }, (error, result) =&gt; { if (result.event == &quot;success&quot;) {\n            console.log(result.info) \/\/ result.info contains data from upload\n        } })\n\n        document.getElementById(&quot;upload_widget&quot;).addEventListener(&quot;click&quot;, function(){\n            myWidget.open();\n        }, false);\n\n&lt;\/script&gt;\n<\/code><\/pre>\n<h2>In Search of Answers<\/h2>\n<p>The <code>search<\/code> command can be incredibly useful for running queries on your assets.  Want to know which assets have been rejected by one of our moderation services?  Just enter:<\/p>\n<pre class=\"js-syntax-highlighted\"><code>cld search -s public_id asc moderation_status=rejected\n<\/code><\/pre>\n<p>Or, perhaps you want to know which files are eating up your storage space\u2026<\/p>\n<pre class=\"js-syntax-highlighted\"><code>cld search -s public_id asc &quot;bytes&gt;10m&quot;\n<\/code><\/pre>\n<p>The double quotes prevent the <code>&gt;<\/code> character redirecting to a file called <code>10m<\/code>!<\/p>\n<p>Anything you can do with the <a href=\"https:\/\/cloudinary.com\/documentation\/search_api\">Search API<\/a>, you can do with the <code>search<\/code> command, so be sure to take a look at the <a href=\"https:\/\/cloudinary.com\/documentation\/admin_api\">expressions<\/a> and <a href=\"https:\/\/cloudinary.com\/documentation\/search_api#expression_fields\">fields<\/a> that we support, if you\u2019re not already familiar with them.<\/p>\n<h2>Trying Out Transformations<\/h2>\n<p>Had your eye on a particular <a href=\"https:\/\/cloudinary.com\/documentation\/transformation_reference\">transformation<\/a> but not set up a coding environment yet?  If all you want to do is try out some transformation parameters, then you can of course enter a URL into a browser. But that means remembering the structure of the URL.  If you know the public ID of your asset and which transformations you want to try, then the <code>url<\/code> command can be very handy.  For example, say you have a picture of a bear (bear.jpg) in the top level of your Cloudinary account, and you want to try the cartoonify effect on it, enter the following command:<\/p>\n<pre class=\"js-syntax-highlighted\"><code>cld url -o bear.jpg e_cartoonify\n<\/code><\/pre>\n<p>The URL is returned, and also opened in a browser because the -o option was given:<\/p>\n<pre class=\"js-syntax-highlighted\"><code>http:\/\/res.cloudinary.com\/demo\/image\/upload\/e_cartoonify\/bear.jpg\n<\/code><\/pre>\n<p><a class=\"c-image-link\" href=\"https:\/\/res.cloudinary.com\/demo\/image\/upload\/w_300,c_fill,f_auto,q_auto\/v1578323157\/docs\/CLI\/cartoonify_bear.jpg\" target=\"_blank\"><img decoding=\"async\" src=\"https:\/\/res.cloudinary.com\/demo\/image\/upload\/w_300,c_fill,f_auto,q_auto\/v1578323157\/docs\/CLI\/cartoonify_bear.jpg\" alt=\"Cartoonified bear\" loading=\"lazy\" class=\"c-transformed-asset\"  width=\"300\" height=\"200\"\/><\/a><\/p>\n<h2>Sign Here<\/h2>\n<p>Even if you have a great memory, and could rattle off a URL in a browser in no time, when it comes to signed URLs <a href=\"https:\/\/cloudinary.com\/documentation\/advanced_url_delivery_options#generating_delivery_url_signatures\">it\u2019s not that easy<\/a>.  With the CLI it\u2019s as simple as adding the <code>-s<\/code> option to the <code>url<\/code> command.<\/p>\n<p>For example, you may want to try out the <a href=\"https:\/\/cloudinary.com\/documentation\/cloudinary_ai_content_analysis_addon\">Cloudinary Object-Aware Cropping add-on<\/a>, to crop your bear image keeping only the bear.  The add-on requires the URL to be signed by default, so this command does the job:<\/p>\n<pre class=\"js-syntax-highlighted\"><code>cld url -o -s bear.jpg w_300,g_bear,c_thumb\n<\/code><\/pre>\n<p>The returned URL includes the required signature (<code>s--dbEUpIJT--<\/code>):<\/p>\n<pre class=\"js-syntax-highlighted\"><code>http:\/\/res.cloudinary.com\/demo\/image\/upload\/s--dbEUpIJT--\/w_300,g_bear,c_thumb\/bear.jpg\n<\/code><\/pre>\n<p><a class=\"c-image-link\" href=\"https:\/\/res.cloudinary.com\/demo\/image\/upload\/w_300,c_fill,f_auto,q_auto\/v1578323118\/docs\/CLI\/g_bear.jpg\" target=\"_blank\"><img decoding=\"async\" src=\"https:\/\/res.cloudinary.com\/demo\/image\/upload\/w_300,c_fill,f_auto,q_auto\/v1578323118\/docs\/CLI\/g_bear.jpg\" alt=\"Cropped bear\" loading=\"lazy\" class=\"c-transformed-asset\"  width=\"300\" height=\"200\"\/><\/a><\/p>\n<h2>Scripted Solutions<\/h2>\n<p>The beauty of working with any CLI is that you can call commands from a script, making repetitive or periodic tasks a breeze.<\/p>\n<p>The <a href=\"https:\/\/cloudinary.com\/documentation\/image_upload_api_reference#multi_method\">multi<\/a> method in the upload API can be used to create an animation from images that have the same tag.  The following video shows how you can use a script to upload the same image multiple times with the same tag but different public IDs, adjusting the color saturation each time. The <code>multi<\/code> method is used at the end to create the animation.<\/p>\n<p>Take a look:<\/p>\n<center> \n<div>\n<p><video\ndata-cld-public-id=\"docs\/CLI\/cli_script_example_quiet\"\ncontrols\ndata-cld-poster-options='{ \"publicId\": \"docs\/CLI\/cli_script_example_quiet\", \"format\":\"jpg\", \"start_offset\": 14, \"resource_type\": \"video\" }' \nwidth=700\nclass=\"cld-video-player cld-fluid\">\n<\/video><\/p>\n<\/div>\n<\/center> \n<p>Here\u2019s the script that\u2019s used in the video (note that you\u2019d need to specify the file path to umbrellas.jpg if you didn\u2019t run the script from the same folder):<\/p>\n<pre class=\"js-syntax-highlighted\"><code>#!\/bin\/bash\n\ninc=10\n\n# Increase the color saturation by 10 for each image\nfor ((sat = -100; sat &lt;= 100; sat += 10))\ndo\n      trans=&quot;transformation='{\\&quot;effect\\&quot;: \\&quot;saturation:$sat\\&quot;}'&quot;\n\n      echo $trans\n\n      # Upload the image with the applied transformation\n      eval cld uploader upload umbrellas.jpg public_id=&quot;umbrellas_$inc&quot; folder=&quot;color&quot; overwrite=true tags=&quot;umbrella&quot; $trans\n  \n      ((inc++))\ndone\n\ncld uploader multi umbrella delay=100\n<\/code><\/pre>\n<p>The last command in the script creates the animated GIF with a delay of 100 milliseconds between frames.<\/p>\n<p>If you\u2019re a fan of scripts, I\u2019m sure you can think of plenty more uses for the CLI, perhaps within a Jenkins or cron job.  For example, you could set up a cron job to run the <code>sync<\/code> command periodically to keep a Cloudinary folder in sync with a local folder, or vice versa (see the <a href=\"https:\/\/cloudinary.com\/documentation\/cloudinary_cli#sync\">sync documentation<\/a> for details).   Or, you could automatically check your credit usage each day using <code>cld admin usage<\/code> to warn you if you\u2019re approaching your limit.<\/p>\n<h2>Explode and Regenerate<\/h2>\n<p>Here\u2019s an example of some more creative commands in action.<\/p>\n<p>Image sprites incorporate multiple images into one and therefore reduce the number of server requests required to download the images, saving bandwidth and reducing page load times.  The following video shows images being extracted from a PDF, then re-combined as an image sprite, so that they can be displayed on a website:<\/p>\n<center> \n<div>\n<p><video\ndata-cld-public-id=\"docs\/CLI\/cli_sprite_example_quiet\"\ncontrols\ndata-cld-poster-options='{ \"publicId\": \"docs\/CLI\/cli_sprite_example_quiet\", \"format\":\"jpg\", \"start_offset\": 133, \"resource_type\": \"video\" }' \nwidth=700\nclass=\"cld-video-player cld-fluid\">\n<\/video><\/p>\n<\/div>\n<\/center> \n<p>First, the PDF is uploaded to Cloudinary, with a public ID of \u2018blue_signs\u2019:<\/p>\n<pre class=\"js-syntax-highlighted\"><code>cld uploader upload blue_signs.pdf public_id=blue_signs\n<\/code><\/pre>\n<p>The <code>explode<\/code> method is called to pre-generate images from each page of the PDF.  Although not strictly necessary in this context, it does help to speed up the subsequent commands that need the derived images.<\/p>\n<pre class=\"js-syntax-highlighted\"><code>cld uploader explode blue_signs page=all\n<\/code><\/pre>\n<p>The derived images are then uploaded to Cloudinary as new original images and assigned the same tag, blue_signs:<\/p>\n<pre class=\"js-syntax-highlighted\"><code>cld uploader upload http:\/\/res.cloudinary.com\/carl\/image\/upload\/pg_1\/blue_signs.png tags=blue_signs\n\ncld uploader upload http:\/\/res.cloudinary.com\/carl\/image\/upload\/pg_2\/blue_signs.png tags=blue_signs\n\ncld uploader upload http:\/\/res.cloudinary.com\/carl\/image\/upload\/pg_3\/blue_signs.png tags=blue_signs\n<\/code><\/pre>\n<p>You\u2019ll see in the video that each of the new images has a random public ID, as no public IDs are specified on upload.  This has implications when the sprite is generated as the images are added in alphabetical order, so if you want to keep them in a specific order, be sure to upload them with appropriate public IDs.<\/p>\n<p>Finally, the <code>generate_sprite<\/code> method is used to create the image sprite along with the CSS required to use each of its images on a website.  Notice that a transformation is applied to each of the images added to the sprite to crop them to a square:<\/p>\n<pre class=\"js-syntax-highlighted\"><code>cld uploader generate_sprite blue_signs transformation=\u2019{\u201cwidth\u201d: 200, \u201cheight\u201d: 200, \u201ccrop\u201d: \u201cfill\u201d, \u201cgravity\u201d: auto}\u2019\n<\/code><\/pre>\n<h2>You\u2019re in Command<\/h2>\n<p>Of course, the CLI is no substitute for real SDK or REST API code when you\u2019re creating your app or website, but it does add another dimension to the way you can interact with Cloudinary.  In addition to giving you access to Cloudinary\u2019s APIs outside of a formal coding environment, it can ease the administrative side of managing your Cloudinary account, provide some extra functionality and give you an efficient way to try out all the great features that Cloudinary has to offer.<\/p>\n<p>For more information and examples, check out the <a href=\"https:\/\/cloudinary.com\/documentation\/cloudinary_cli\">Cloudinary CLI documentation<\/a>.<\/p>\n<p>Go on, give it a go!  That\u2019s a command!<\/p>\n<link href=\"https:\/\/unpkg.com\/cloudinary-video-player@1.3.4\/dist\/cld-video-player.min.css\" rel=\"stylesheet\">\n<script src=\"https:\/\/unpkg.com\/cloudinary-core@2.6.3\/cloudinary-core-shrinkwrap.min.js\" type=\"text\/javascript\"><\/script>\n<script src=\"https:\/\/unpkg.com\/cloudinary-video-player@1.3.4\/dist\/cld-video-player.min.js\" \n    type=\"text\/javascript\"><\/script>\n<script type=\"text\/javascript\">\nvar cld = cloudinary.Cloudinary.new({ cloud_name: 'demo' });\n\nvar players = cld.videoPlayers(\".cld-video-player\", {\n   transformation: { video_codec: 'auto' }\n})\n<\/script>\n<\/div>","protected":false},"excerpt":{"rendered":"","protected":false},"author":41,"featured_media":22671,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"_cloudinary_featured_overwrite":false,"footnotes":""},"categories":[1],"tags":[],"class_list":["post-22011","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-uncategorized"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v25.6 (Yoast SEO v26.9) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Using the Cloudinary CLI (Command Line Interface)<\/title>\n<meta name=\"description\" content=\"Learn how to interact with Cloudinary from the command line and see some creative commands in action.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/cloudinary.com\/blog\/commanding_cloudinary_through_the_cli\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Commanding Cloudinary Through the CLI\" \/>\n<meta property=\"og:description\" content=\"Learn how to interact with Cloudinary from the command line and see some creative commands in action.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/cloudinary.com\/blog\/commanding_cloudinary_through_the_cli\" \/>\n<meta property=\"og:site_name\" content=\"Cloudinary Blog\" \/>\n<meta property=\"article:published_time\" content=\"2020-04-29T15:23:30+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-05-30T00:11:22+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/v1645574426\/website-2021\/blog\/cloudinary_cli1\/cloudinary_cli1-png?_i=AA\" \/>\n\t<meta property=\"og:image:width\" content=\"2000\" \/>\n\t<meta property=\"og:image:height\" content=\"1100\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"NewsArticle\",\"@id\":\"https:\/\/cloudinary.com\/blog\/commanding_cloudinary_through_the_cli#article\",\"isPartOf\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/commanding_cloudinary_through_the_cli\"},\"author\":{\"name\":\"\",\"@id\":\"\"},\"headline\":\"Commanding Cloudinary Through the CLI\",\"datePublished\":\"2020-04-29T15:23:30+00:00\",\"dateModified\":\"2024-05-30T00:11:22+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/commanding_cloudinary_through_the_cli\"},\"wordCount\":5,\"publisher\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/commanding_cloudinary_through_the_cli#primaryimage\"},\"thumbnailUrl\":\"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1645574426\/website-2021\/blog\/cloudinary_cli1\/cloudinary_cli1.png?_i=AA\",\"inLanguage\":\"en-US\",\"copyrightYear\":\"2020\",\"copyrightHolder\":{\"@id\":\"https:\/\/cloudinary.com\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/cloudinary.com\/blog\/commanding_cloudinary_through_the_cli\",\"url\":\"https:\/\/cloudinary.com\/blog\/commanding_cloudinary_through_the_cli\",\"name\":\"Using the Cloudinary CLI (Command Line Interface)\",\"isPartOf\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/commanding_cloudinary_through_the_cli#primaryimage\"},\"image\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/commanding_cloudinary_through_the_cli#primaryimage\"},\"thumbnailUrl\":\"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1645574426\/website-2021\/blog\/cloudinary_cli1\/cloudinary_cli1.png?_i=AA\",\"datePublished\":\"2020-04-29T15:23:30+00:00\",\"dateModified\":\"2024-05-30T00:11:22+00:00\",\"description\":\"Learn how to interact with Cloudinary from the command line and see some creative commands in action.\",\"breadcrumb\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/commanding_cloudinary_through_the_cli#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/cloudinary.com\/blog\/commanding_cloudinary_through_the_cli\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/cloudinary.com\/blog\/commanding_cloudinary_through_the_cli#primaryimage\",\"url\":\"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1645574426\/website-2021\/blog\/cloudinary_cli1\/cloudinary_cli1.png?_i=AA\",\"contentUrl\":\"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1645574426\/website-2021\/blog\/cloudinary_cli1\/cloudinary_cli1.png?_i=AA\",\"width\":2000,\"height\":1100},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/cloudinary.com\/blog\/commanding_cloudinary_through_the_cli#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/cloudinary.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Commanding Cloudinary Through the CLI\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/cloudinary.com\/blog\/#website\",\"url\":\"https:\/\/cloudinary.com\/blog\/\",\"name\":\"Cloudinary Blog\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/cloudinary.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/cloudinary.com\/blog\/#organization\",\"name\":\"Cloudinary Blog\",\"url\":\"https:\/\/cloudinary.com\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/cloudinary.com\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1649718331\/Web_Assets\/blog\/cloudinary_logo_for_white_bg_1937437aa7_19374666c7_193742f877\/cloudinary_logo_for_white_bg_1937437aa7_19374666c7_193742f877.png?_i=AA\",\"contentUrl\":\"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1649718331\/Web_Assets\/blog\/cloudinary_logo_for_white_bg_1937437aa7_19374666c7_193742f877\/cloudinary_logo_for_white_bg_1937437aa7_19374666c7_193742f877.png?_i=AA\",\"width\":312,\"height\":60,\"caption\":\"Cloudinary Blog\"},\"image\":{\"@id\":\"https:\/\/cloudinary.com\/blog\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Using the Cloudinary CLI (Command Line Interface)","description":"Learn how to interact with Cloudinary from the command line and see some creative commands in action.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/cloudinary.com\/blog\/commanding_cloudinary_through_the_cli","og_locale":"en_US","og_type":"article","og_title":"Commanding Cloudinary Through the CLI","og_description":"Learn how to interact with Cloudinary from the command line and see some creative commands in action.","og_url":"https:\/\/cloudinary.com\/blog\/commanding_cloudinary_through_the_cli","og_site_name":"Cloudinary Blog","article_published_time":"2020-04-29T15:23:30+00:00","article_modified_time":"2024-05-30T00:11:22+00:00","og_image":[{"width":2000,"height":1100,"url":"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/v1645574426\/website-2021\/blog\/cloudinary_cli1\/cloudinary_cli1-png?_i=AA","type":"image\/png"}],"twitter_card":"summary_large_image","schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"NewsArticle","@id":"https:\/\/cloudinary.com\/blog\/commanding_cloudinary_through_the_cli#article","isPartOf":{"@id":"https:\/\/cloudinary.com\/blog\/commanding_cloudinary_through_the_cli"},"author":{"name":"","@id":""},"headline":"Commanding Cloudinary Through the CLI","datePublished":"2020-04-29T15:23:30+00:00","dateModified":"2024-05-30T00:11:22+00:00","mainEntityOfPage":{"@id":"https:\/\/cloudinary.com\/blog\/commanding_cloudinary_through_the_cli"},"wordCount":5,"publisher":{"@id":"https:\/\/cloudinary.com\/blog\/#organization"},"image":{"@id":"https:\/\/cloudinary.com\/blog\/commanding_cloudinary_through_the_cli#primaryimage"},"thumbnailUrl":"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1645574426\/website-2021\/blog\/cloudinary_cli1\/cloudinary_cli1.png?_i=AA","inLanguage":"en-US","copyrightYear":"2020","copyrightHolder":{"@id":"https:\/\/cloudinary.com\/#organization"}},{"@type":"WebPage","@id":"https:\/\/cloudinary.com\/blog\/commanding_cloudinary_through_the_cli","url":"https:\/\/cloudinary.com\/blog\/commanding_cloudinary_through_the_cli","name":"Using the Cloudinary CLI (Command Line Interface)","isPartOf":{"@id":"https:\/\/cloudinary.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/cloudinary.com\/blog\/commanding_cloudinary_through_the_cli#primaryimage"},"image":{"@id":"https:\/\/cloudinary.com\/blog\/commanding_cloudinary_through_the_cli#primaryimage"},"thumbnailUrl":"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1645574426\/website-2021\/blog\/cloudinary_cli1\/cloudinary_cli1.png?_i=AA","datePublished":"2020-04-29T15:23:30+00:00","dateModified":"2024-05-30T00:11:22+00:00","description":"Learn how to interact with Cloudinary from the command line and see some creative commands in action.","breadcrumb":{"@id":"https:\/\/cloudinary.com\/blog\/commanding_cloudinary_through_the_cli#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/cloudinary.com\/blog\/commanding_cloudinary_through_the_cli"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/cloudinary.com\/blog\/commanding_cloudinary_through_the_cli#primaryimage","url":"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1645574426\/website-2021\/blog\/cloudinary_cli1\/cloudinary_cli1.png?_i=AA","contentUrl":"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1645574426\/website-2021\/blog\/cloudinary_cli1\/cloudinary_cli1.png?_i=AA","width":2000,"height":1100},{"@type":"BreadcrumbList","@id":"https:\/\/cloudinary.com\/blog\/commanding_cloudinary_through_the_cli#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/cloudinary.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Commanding Cloudinary Through the CLI"}]},{"@type":"WebSite","@id":"https:\/\/cloudinary.com\/blog\/#website","url":"https:\/\/cloudinary.com\/blog\/","name":"Cloudinary Blog","description":"","publisher":{"@id":"https:\/\/cloudinary.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/cloudinary.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/cloudinary.com\/blog\/#organization","name":"Cloudinary Blog","url":"https:\/\/cloudinary.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/cloudinary.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1649718331\/Web_Assets\/blog\/cloudinary_logo_for_white_bg_1937437aa7_19374666c7_193742f877\/cloudinary_logo_for_white_bg_1937437aa7_19374666c7_193742f877.png?_i=AA","contentUrl":"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1649718331\/Web_Assets\/blog\/cloudinary_logo_for_white_bg_1937437aa7_19374666c7_193742f877\/cloudinary_logo_for_white_bg_1937437aa7_19374666c7_193742f877.png?_i=AA","width":312,"height":60,"caption":"Cloudinary Blog"},"image":{"@id":"https:\/\/cloudinary.com\/blog\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":""}]}},"jetpack_featured_media_url":"https:\/\/res.cloudinary.com\/cloudinary-marketing\/images\/f_auto,q_auto\/v1645574426\/website-2021\/blog\/cloudinary_cli1\/cloudinary_cli1.png?_i=AA","_links":{"self":[{"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/posts\/22011","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/users\/41"}],"replies":[{"embeddable":true,"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/comments?post=22011"}],"version-history":[{"count":5,"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/posts\/22011\/revisions"}],"predecessor-version":[{"id":34157,"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/posts\/22011\/revisions\/34157"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/media\/22671"}],"wp:attachment":[{"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/media?parent=22011"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/categories?post=22011"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/cloudinary.com\/blog\/wp-json\/wp\/v2\/tags?post=22011"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}