More Products

PowerFlow block reference

Last updated: Mar-21-2025

As explained in Building a Flow, flows are composed of a set of blocks that you connect, creating step-by-step actions to execute. Each block performs a specific function. Blocks are grouped into different categories to make them more accessible.

Triggers

Flows in MediaFlows start with Trigger Blocks, which define how and when a flow is initiated. Triggers can be event-driven (e.g., a webhook call, an asset upload) or time-based (e.g., a scheduled task). Each flow must begin with a trigger block.


Cloudinary Upload

Triggers a flow whenever an asset is uploaded to Cloudinary.

Configuration hints

  • Click Set Webhook to register the trigger in Cloudinary.

Example use case

  • When an image is uploaded by a third party, automatically check if it contains a watermark.

DAM App

Allows you to trigger flows manually from within the Cloudinary Media Library via the MediaFlows DAM App.

Configuration hints

  • Enable/disable Output as array:
    • Enable the setting to execute the block once, regardless of how many assets are selected, and return the response for each asset in an array. This is often followed by an Apply on Each block.
    • Disable the setting to execute the block for every selected asset.
  • Set DAM App Parameters. These are the names of parameters that you can set when you run the app. Subsequent blocks can access them as custom variables.

Run the app

  1. Enable the MediaFlows DAM App in Cloudinary's DAM App Marketplace.

    DAM App block

  2. Select an asset in Cloudinary’s Media Library and click Run MediaFlows from the menu.

    DAM

  3. Choose the flow to execute.

    DAM flows

Example use case

  • A user manually selects some images in the Cloudinary Media Library and triggers a flow. In a prompt parameter they ask a question about the image and the app sets the answer in the assets' metadata.

Note
Only MediaFlows users can run DAM Apps (Master Admins and Admins).

Periodic Search Media

Triggers a flow on a predefined schedule by searching for assets that match specific criteria.

Configuration hints

  • Set up a recurring schedule (e.g., every Monday at 8:00 AM UTC).
  • Define a search expression to filter relevant assets.

Example use case

  • Each day, apply a transformation to all assets uploaded in the last 24 hours.

Example cron expressions

Scenario AWS cron expression
Run every day at 10:00 AM UTC 0 10 * * ? *
Run every Monday at 2:00 PM UTC 0 14 ? * MON *
Run once per hour 0 * * * ? *

Tip
Refer to the cron expression reference for more cron syntax.

Example search expressions

Use case Search expression
Find all assets in "products" with the tag "spring_collection" folder="products" AND tags="spring_collection"
Find all assets that are of type "video" resource_type="video"

Tip
Learn more about writing search expressions.

Scheduler

Executes flows at predefined time intervals, similar to a cron job.

Configuration hints

  • Define a cron expression for the schedule.

Example use case

  • Send a daily report on your account usage.

Example cron expressions

Scenario AWS cron expression
Run every day at 10:00 AM UTC 0 10 * * ? *
Run every Monday at 2:00 PM UTC 0 14 ? * MON *
Run once per hour 0 * * * ? *

Tip
Refer to the cron expression reference for more cron syntax.

Note
Uses UTC timezone.

Catch Webhook

Initiates a flow when an HTTP request is received at a specific webhook URL. This allows external applications to trigger flows in MediaFlows.

Configuration hints

  • Copy the generated webhook URL.
  • Paste the webhook URL into an external application’s webhook settings.

Example use case

  • A Shopify store sends order details via webhook, triggering a flow that updates metadata in Cloudinary.

Additional features

  • Dynamic parameters: Extract values from the request and use them in subsequent blocks.
  • Security considerations: Verify the source of incoming requests, use authentication if required, and test in a controlled environment.

Cloudinary Notification

Triggers a flow based on one or more Cloudinary webhook notifications. It's useful for notifications that don't have dedicated trigger blocks already defined, or if you want to set up one trigger for multiple notifications.

Configuration hints

  • Choose the types of notifications to listen for.
  • Click Set Webhook to register the trigger(s) in Cloudinary.

Example use case

  • A flow starts when a user moves an asset to a folder or uploads an asset to a folder.

Notes
  • Some notifications may not be available for product environments using the legacy fixed folder mode.
  • The structure of each notification is different so you need to take multiple structures into consideration.


Cloudinary Folder Changed

Triggers a flow when a user moves an asset between folders in Cloudinary.

Configuration hints

  • Click Set Webhook to register the trigger in Cloudinary.

Example use case

  • Moving an image into an "Approved" folder triggers a transformation process.

Notes
  • Not supported for product environments using the legacy fixed folder mode.
  • In legacy mode, moving an asset changes its public_id, triggering a rename notification instead.


Cloudinary Structured Metadata Changed

Triggers a flow when an asset’s structured metadata is modified.

Configuration hints

  • Click Set Webhook to register the trigger in Cloudinary.

Example use case

  • When an asset's "status" metadata changes to "archived," move it to a designated folder.

Cloudinary Tags

Triggers a flow when a tag is added to or removed from an asset in Cloudinary.

Configuration hints

  • Click Set Webhook to register the trigger in Cloudinary.

Example use case

  • When an asset is tagged "featured," automatically generate social media versions.

Flow Logic

These blocks can be used by any flow to implement logical flow functionality.

Apply On Each

Use this block to run the next connected block on each item in a list. In each of the next connected blocks, you can refer to the relevant item and index using dynamic values.

You also have the option to add custom parameters that will be available in the following connected blocks. In the block's configuration sidebar, you can add any values that will then also be made available as dynamic values to all blocks connected after this block in the flow.

For example, you could split a string and add all items as tags to an asset.

Example of using the apply on each block

Complex Condition

Evaluate JSON data against JSONLogic conditional expressions to determine which blocks will be executed. See the JSONLogic documentation for more information.

This block has two paths (two blue dots).

  • If true, then the block linked to the upper blue dot will be executed.
  • If false, then the block linked to the lower blue dot will be executed.

Condition

Use this block to determine which blocks will be executed based on a comparison between two variables using a specified operator.

This block has two paths (two blue dots).

  • If true, then the block connected to the upper blue dot will execute.
  • If false, then the block connected to the lower blue dot will be executed.

For example, the filter could test if the asset is an image, and if it is, add a text overlay, otherwise send an email:

Example of using the filter block

Wait For All

Use this block to wait for all other blocks that are connected to this block to complete before continuing the flow.

This block is especially useful after using an Apply On Each block in your flow.

Developer Tools

Add To Logs

Use this block to display a message in the Execution logs. It's good practice to use this block when creating flows for debug purposes, and for displaying messages in MediaFlows logs.

Add to logs

Delay

Use this block to delay the execution of the next block by a set number of seconds.

Join Strings

Use this block to concatenate two strings with an optional separator.

JQ Processor

Get the result of a JQ expression on the JSON data. Use the JQ Cheatsheet and Playground to learn and experiment with JQ syntax.

JSON to Array

Use this block to convert a JSON object into an array, adding a specified key to each item in the array.

JSONPath Query

Use this block to select parts of a JSON response using JSONPath expressions. See the JSONPath documentation for more information.

Search and Replace

Use this block to replace all occurrences of a specified string or regular expression with a specified replacement string.

Send HTTP Request

Use this block to communicate with other services and APIs. For example, send the media output to a marketing automation system.

Split String

Use this block to split a string using a predefined separator.


Cloudinary APIs

These blocks interact with Cloudinary's APIs to manage, transform, and retrieve media assets.


Account Usage

Retrieves usage statistics for your Cloudinary account.

Configuration hints

  • No configuration needed; the block automatically fetches account usage details.

Example use case

  • Schedule a daily report summarizing storage and bandwidth usage.

Tip
Refer to the Admin API usage method for more details.

Apply Actions

Executes transformations or updates on a Cloudinary asset.

Configuration hints

  • To specify the asset to apply the actions to, select a previous block that references it, or click Custom to specify a public ID, delivery type and resource type.
  • Define transformations using Cloudinary’s URL syntax to eagerly apply to the asset.
  • Specify any optional parameters of the explicit method in JSON format.

Example use case

  • Convert an uploaded video to multiple formats before publishing.

Example optional parameters

Apply tags to the asset, update the contextual metadata and request quality analysis on the asset.

JSON
{
  "tags": ["summer", "sale"],
  "context": {
    "caption": "A summer sale banner",
    "photographer": "John Doe"
  },
  "quality_analysis": true
}

Tip
Refer to the Upload API explicit method for more details.

Change Display Name

Modifies the display name of an asset in Cloudinary.

Configuration hints

  • To specify the asset to change the display name of, select a previous block that references it, or click Custom to specify a public ID, delivery type and resource type.
  • Enter the new Display Name.

Example use case

  • Standardize asset names in your Cloudinary Media Library.

Note


Change Public ID

Renames an asset or moves it to a different folder.

Important
For product environments using the legacy fixed folder mode, changing the Public ID also changes the delivery URL, and if not done carefully, risks breaking production content.

Configuration hints

  • To specify the asset to change the public ID of, select a previous block that references it, or click Custom to specify a public ID, delivery type and resource type.
  • Enter the new Public ID.
  • Specify any optional parameters of the rename method in JSON format.

Example use case

  • Organize assets by moving large files to a dedicated folder.

Example optional parameters

Specify that a rename should overwrite existing assets with the same public ID, invalidate CDN cached copies of the asset together with all its transformed versions, and change the type to authenticated.

JSON
{
  "overwrite": true,
  "invalidate": true,
  "to_type": "authenticated"
}

Tip
Refer to the Upload API rename method for more details.

Create Asset URL

Creates a delivery URL for an asset, optionally including a transformation.

Configuration hints

  • To specify the asset to create the delivery URL for, select a previous block that references it, or click Custom to specify a public ID, delivery type and resource type.
  • Optionally enter a transformation string in URL syntax, e.g. c_limit,w_1000/e_enhance to limit the dimensions and enhance an image.

Example use case

  • Prepare a delivery URL for use in a PIM system.

Tip
Refer to the Cloudinary URL helper method for more details.

Create Structured Metadata

Creates a structured metadata field for assets.

Configuration hints

  • Provide a Label and an External ID.
  • Define the metadata Type (e.g., string, integer, enum).
  • Specify any additional options in JSON format.

Example use case

  • Set up structured metadata for product categorization.

Example additional options

Make this metadata field mandatory, and give it a default value of "new".

JSON
{
  "mandatory": true,
  "default_vaue": "new"
}

Tip
Refer to the Admin API add_metadata_field method for more details.

Delete Media

Deletes an asset from Cloudinary.

Configuration hints

  • To specify the asset to delete, select a previous block that references it, or click Custom to specify a public ID, delivery type and resource type.
  • Select Invalidate to invalidate cached copies of the asset on the CDN and all its transformed versions (learn more).

Example use case

  • Remove outdated product images from your Cloudinary account.

Tip
Refer to the Upload API destroy method for more details.

Duplicate Media

Duplicates an asset by calling the upload method of the Upload API to create a copy with a new public ID in the root of the Media Library. Metadata and tags aren't copied.

Configuration hints

  • To specify the asset to duplicate, select a previous block that references it, or click Custom to specify a public ID, delivery type and resource type.

Example use case

  • Preserve the original version of an image while applying edits to the duplicate.

Get Asset Information

Fetches details about an asset, such as dimensions and secure URL.

Configuration hints

  • To specify the asset to get information about, select a previous block that references it, or click Custom to specify a public ID, delivery type and resource type.

Example use case

  • Retrieve asset dimensions before applying transformations.

Tip
Refer to the sample response of the Upload API explicit method for more details.

Get Contextual Metadata

Retrieves a specific contextual metadata field.

Configuration hints

  • To specify the asset to get the metadata from, select a previous block that references it, or click Custom to specify a public ID, delivery type and resource type.
  • Specify the Key of a contextual metadata field to retrieve its value.

Example use case

  • Fetch a product's SKU stored as contextual metadata.

Tip
Refer to the Admin API resources method for more details.

Get Structured Metadata

Retrieves a specific structured metadata field.

Configuration hints

  • To specify the asset to get the metadata from, select a previous block that references it, or click Custom to specify a public ID, delivery type and resource type.
  • Specify the External ID of a structured metadata field in the Key field to retrieve its value.

Note

The External ID is usually different than the name of the structured metadata field. You can find it on the Manage Structured Metadata page when selecting a field.

Find the external ID of a structured metadata field

Example use case

  • Retrieve asset licensing details stored in structured metadata.

Tip
Refer to the Admin API resources method for more details.

Get Tags

Retrieves the tags assigned to an asset.

Configuration hints

  • To specify the asset to get the tags from, select a previous block that references it, or click Custom to specify a public ID, delivery type and resource type.

Example use case

  • Check if an asset has a specific tag before processing it.

Tip
Refer to the Admin API resources method for more details.

Manual Moderation

Sends an asset to manual moderation. You can later review it in the Console to approve or reject it.

Configuration hints

  • To specify the asset to moderate manually, select a previous block that references it, or click Custom to specify a public ID, delivery type and resource type.

Example use case

  • Manually review flagged images before you publish them.

Tip
Learn about moderating assets manually.

Move to Folder

Moves an asset to a different folder.

Important
For product environments using the legacy fixed folder mode, changing the folder also changes the delivery URL, and if not done carefully, risks breaking production content.

Configuration hints

  • To specify the asset to move, select a previous block that references it, or click Custom to specify a public ID, delivery type and resource type.
  • Specify the destination folder or a file path with forward slashes. The process creates any folder that doesn't exist.

Example use case

  • Move approved images to a specific folder.

Tip
Refer to the Upload API explicit method for more details.

Search Media

Finds assets based on search criteria. The block returns a maximum of 50 results in an array, which you can iterate over using the Apply On Each block.

Configuration hints

Example use case

  • Find all assets that require syncing to a PIM.

Example search expressions

Use case Search expression
Find all assets in "products" with the tag "spring_collection" folder="products" AND tags="spring_collection"
Find all assets that are of type "video" resource_type="video"

Tip
Refer to the Admin API search method for more details.

Set Access Control

Controls access permissions for an asset. You can either make it publicly accessible, completely restricted, or set up access control based on the access_control parameter of the upload or update methods.

Configuration hints

  • To specify the asset to control access to, select a previous block that references it, or click Custom to specify a public ID, delivery type and resource type.
  • Define access control settings by selecting one of the options. Use custom JSON for more advanced access control.

Example use case

  • Restrict access to confidential media assets.

Example custom JSON

Restrict an asset to require token based access except for the period from 15th December 2022 until 20th January 2024 when it will be publicly available:

JSON
{
  "access_control": [
    {
      "access_type": "token"
    },
    {
      "access_type": "anonymous",
      "start": "2022-12-15T12:00Z",
      "end": "2023-01-20T12:00Z"
    }
  ]
}

Tip
Refer to the Admin API update method for more details.

Universal API

Calls any Cloudinary API method dynamically. Use this block to call any of the supported Cloudinary API methods when there isn't a dedicated block in MediaFlows that addresses your use case.

Configuration hints

  • Check the Upload and Admin API references to set the API Namespace to the correct value for the method you want to call. The options are utils, api, uploader and search.
  • Provide the API method name and parameters in JSON format in the Method & Arguments field (see some examples).
  • Specify any Custom Dynamic Parameters that you want to be available in subsequent blocks. For example, if the method you're calling returns many results, you may want to access the next_cursor value in a subsequent block, so type next_cursor and click the + button.

    In subsequent blocks you can use this variable with this syntax: {{$.Universal_API.result.next_cursor}}, or select the Universal API Next cursor lozenge when you insert a variable:

    Accessing custom variables in subsequent blocks

Example use case

  • Perform batch operations when no dedicated block exists.

Example Method & Arguments

Tip
Refer to the Upload and Admin API references for more details.

Update Contextual Metadata

Updates the contextual metadata of an asset.

Configuration hints

  • To specify the asset to update the metadata of, select a previous block that references it, or click Custom to specify a public ID, delivery type and resource type.
  • If adding or updating metadata, provide the Metadata Key and Metadata Value.
  • If removing metadata, provide only the Metadata Key.
  • If removing all metadata, there's no need to provide the key or value.

Example use case

  • Update an asset's category field for better organization.

Tip
Refer to the Upload API context method for more details.

Update Structured Metadata

Updates structured metadata values for an asset.

Configuration hints

  • To specify the asset to update the metadata of, select a previous block that references it, or click Custom to specify a public ID, delivery type and resource type.
  • Provide the External ID in the Metadata Key, and set the new Metadata Value.

Note

The External ID is usually different than the name of the structured metadata field. You can find it on the Manage Structured Metadata page when selecting a field.

Find the external ID of a structured metadata field

Example use case

  • Store the expiry date of an image in structured metadata.

Example metadata values

Metadata type Example Explanation
Text hello world The text, "hello world".
Number 3 The number three.
Date 2025-03-25 The date, 25th March 2025.
Single-selection list ext_id_one Sets the value corresponding to the external ID of ext_id_one.
Multiple-selection list ["ext_one", "ext_two"] Sets two values corresponding to the external IDs of ext_one and ext_two.
Note: this currently works only if you use a variable, for example, {{$.Get_Structured_Metadata.result}}.

Tip
Refer to the Upload API metadata method for more details.

Update Tags

Adds or removes tags from an asset.

Configuration hints

  • To specify the asset to update the tags of, select a previous block that references it, or click Custom to specify a public ID, delivery type and resource type.
  • Specify either one tag, or a list of tags separated by commas, e.g., tag_one,tag_two,tag_three, to add or remove.
  • If removing all tags, there's no need to provide the name of any tags.

Example use case

  • Tag assets for seasonal campaigns.

Tip
Refer to the Upload API tags method for more details.

Upload from HTTP

Sends an HTTP request to a target URL, and then automatically uploads the response's media binary to your Cloudinary product environment.

Configuration hints

  • Specify the Target URL that'll return the image, e.g. https://api.giphy.com/v1/gifs/search?api_key=YOUR_GIPHY_API_KEY&q=funny+cats&limit=1
  • Select the Request Method, e.g. GET.
  • Specify any Request Headers as JSON, e.g.

    JSON
      { 
        "Content-Type": "application/json"
      }
  • Specify any data to send in the Request Message Body, e.g.

    JSON
      {
        "q": "funny cats",
        "limit": 1,
        "rating": "pg"
      }

Example use case

  • Retrieve and store images from a third-party API.

Upload Media

Uploads an asset from an FTP, HTTP, or HTTPS URL to Cloudinary.

Configuration hints

  • Provide the source URL and type of media (use Auto to let Cloudinary detect the type).
  • If you want to transform the media on upload, specify a transformation in URL syntax, e.g. c_limit,w_1000/e_enhance to limit the dimensions and enhance an image.
  • Specify any optional upload parameters of the Upload API upload method in JSON format.

Example use case

  • Automatically upload new images from an S3 bucket.

Example optional parameters

Apply tags and contextual metadata to the asset, and request quality analysis on the asset.

JSON
{
  "tags": ["summer", "sale"],
  "context": {
    "caption": "A summer sale banner",
    "photographer": "John Doe"
  },
  "quality_analysis": true
}

Tip
Refer to the Upload API upload method for more details.

Cloudinary add-ons

Note
Before using a block that’s associated with a Cloudinary add-on, make sure you're registered for the add-on.

AI Content Analysis Get Tags

Use this block to analyze media and automatically add tags to a video with the Cloudinary AI Content Analysis add-on. See the model documentation for details on the capabilities and strengths of each model.

AI Vision Analyze by Prompts

Use this block to analyze an image through open ended questions or instructions. You can make up to ten enquiries about the image at a time and receive a detailed response for each (within one JSON structure). If you specifically want a yes/no answer, use the AI Vision Moderate By Prompts block.

This block uses the Cloudinary AI Vision add-on. Make sure you're registered to this add-on in order to use this block.

Learn more about this mode of the add-on.

AI Vision Moderate By Prompts

Use this block to analyze an image by asking questions to which you expect a yes/no answer. You can ask up to ten questions at a time and receive a "yes", "no" or "unknown" response for each (within one JSON structure).

This block uses the Cloudinary AI Vision add-on. Make sure you're registered to this add-on in order to use this block.

Learn more about this mode of the add-on.

AI Vision Tag By Prompts

Use this block to return tags based on the truth of a statement or an affirmative answer to a question. In the Tag Definitions field enter the tag and the prompt separated by a pipe. For example "face|The image contains a face", or "cat|Does the image contain a cat?".

This block uses the Cloudinary AI Vision add-on. Make sure you're registered to this add-on in order to use this block.

Learn more about this mode of the add-on.

Note that this block doesn't add the tags to the image. To add the tags, connect an Apply On Each block, then an Update Tags block.

AI Vision Image Tagging example

  • Set the Input List field in Apply On Each to {{$.AI_Vision_Tag_By_Prompts.result.tags}}.
  • Set the Tag field in Update Tags to {{$.Apply_On_Each.result.item.name}}.

Amazon Image Moderation

Use this block to automatically and accurately moderate your images.

This block uses the Amazon Rekognition AI Moderation add-on. Make sure you're registered to this add-on in order to use this block.

Cloudinary Background Removal

Use this block to automatically and accurately remove the background of an image.

This block uses the Cloudinary AI Background Removal add-on. Make sure you're registered to this add-on in order to use this block.

Cloudinary Image Captioning

Use this block to automatically generate a descriptive caption for an image file in Cloudinary.

This block uses the Cloudinary AI Content Analysis add-on. Make sure you're registered to this add-on in order to use this block.

Google Image Tagging

Use this block to automatically add tags to an image.

This block uses the Google Auto Tagging add-on. Make sure you're registered to this add-on in order to use this block.

Google Video Tagging

Use this block to automatically add tags to a video.

This block uses the Google Automatic Video Tagging add-on. Make sure you're registered to this add-on in order to use this block.

For example, when the flow is executed using the DAM App, if the selected asset is an image, automatically add tags to the image using the Google Image Tagging block. If the selected asset is a video, automatically add tags to the video using the Google Video Tagging block.

Google Image Tagging example

Integrations

MediaFlows has a number of useful blocks for specific integrations to Cloudinary. If there is an integration that you think should be added then please let us know.

Tip
The Send HTTP Request block can be useful for any other general integrations.

Akeneo

Note
The Akeneo blocks can be used only with Akeneo versions that support the Akeneo Asset Manager.

The Akeneo blocks are used to communicate with Akeneo's API, and can be used to create an asset, delete an asset, or get product information from Akeneo.

Important
You must use a Get Tokens From Akeneo block before you can use one of the other Akeneo blocks that requires a valid token. The token returned from the block is valid for any and all Akeneo blocks that follow, so you only need to use the Get Tokens block once for the entire flow that follows.

Get Tokens From Akeneo

Use this block to retrieve Akeneo tokens. The retrieved tokens can later be used by other Akeneo-related blocks to communicate with Akeneo's API. Make sure you're registered to Akeneo in order to use this block.

The connection information required can be copied from the Akeneo Connections page. We recommend that you create a new connection, and use the new credentials to configure this block.

Create An Asset In Akeneo

Important
To allow this block to communicate with Akeneo's API, you must include a Get Tokens From Akeneo block at some point in the flow before this block.

Use this block to create an asset in Akeneo's Asset Manager.

Make sure to fill in all the required fields for creating the asset in Akeneo. You can also link this image to a specific product in Akeneo. Make sure that you have also configured the Asset Family Product link rules to link the image to the product.

You can also add any additional values as key/values in the Asset Values box. See the Akeneo documentation for more information and examples of passing these values. Note that you only pass the attributes as given in the values key.

Delete An Asset In Akeneo

Important
To allow this block to communicate with Akeneo's API, you must include a Get Tokens From Akeneo block at some point in the flow before this block.

Use this block to delete an asset from Akeneo's Asset Manager.

Get Product Information From Akeneo

Important
To allow this block to communicate with Akeneo's API, you must include a Get Tokens From Akeneo block at some point in the flow before this block.

Use this block to get information about a specific product from Akeneo's Asset Manager.

Upload to AWS S3

Use this block to upload a file to an AWS S3 bucket via a URL.

Specify the following information in the block:

  1. The assets you want to upload (Public ID, Delivery Type, and Resource Type). If the file is an asset in Cloudinary, then you can specify a dynamic value in the Public ID field, for example, {{$.Cloudinary_Upload.result.public_id}} for a file uploaded to Cloudinary earlier in the flow.
  2. The name of the AWS S3 bucket (AWS Bucket) and the bucket region (if different from the default eu-west-1).
  3. The base directory in the S3 bucket (Root Path).
  4. The directory to save the file (Prefix Path).
  5. The new name for the uploaded file, including the file extension (New Asset Name).

In order to enable uploading to your bucket, your S3 storage bucket must be whitelisted. This requires the following steps:

  1. Grant full access permissions to Cloudinary's AWS account, using one of the following methods:

    • AWS Console: Set up the bucket policy using this JSON code. Make sure to replace <your_bucket_name> with your bucket's actual value:
    {
     "Version": "2012-10-17",
     "Id": "CloudinaryOriginPolicyId",
     "Statement": [
       {
         "Effect": "Allow",
         "Principal": {
           "AWS": "arn:aws:iam::747360636676:role/s3-lambda-exec"
         },
         "Action": [
           "s3:ListBucket",
           "s3:GetObject",
           "s3:PutObject",
           "s3:PutObjectAcl",
           "s3:DeleteObject"
         ],
         "Resource": [
           "arn:aws:s3:::<your_bucket_name>",
           "arn:aws:s3:::<your_bucket_name>/*"
         ]
       }
     ]
    }
    • AWS CloudFormation: Use the following JSON within AWS CloudFormation to create the backup bucket. Make sure to replace YourBucketName with your bucket's actual value:
    AWSTemplateFormatVersion: '2010-09-09'
    Description: CloudFormation template to create an S3 bucket with a specified policy for cloudinary mediaflows.
    
    Parameters:
      BucketName:
        Description: Name of the S3 bucket.
        Type: String
    
    Resources:
      S3Bucket:
        Type: AWS::S3::Bucket
        Properties:
          BucketName: !Ref YourBucketName
    
      BucketPolicy:
        Type: AWS::S3::BucketPolicy
        Properties:
          Bucket: !Ref S3Bucket
          PolicyDocument:
            Version: "2012-10-17"
            Id: "CloudinaryOriginPolicyId"
            Statement:
              - Effect: "Allow"
                Principal:
                  AWS: "arn:aws:iam::747360636676:role/s3-lambda-exec"
                Action:
                  - "s3:ListBucket"
                  - "s3:GetObject"
                  - "s3:PutObject"
                  - "s3:PutObjectAcl"
                  - "s3:DeleteObject"
                Resource:
                  - !Sub "arn:aws:s3:::${YourBucketName}"
                  - !Sub "arn:aws:s3:::${YourBucketName}/*"
  2. Add an empty file to your bucket with your cloud name as the filename, under the following folder structure: .wellknown/cloudinary/<your_cloud_name>

    • By adding this file, you indicate that you have access to this bucket and that you permit Cloudinary to access and modify this bucket's contents.
    • The file needs to be located in the Root Path as defined in the block.
    • If you want this bucket to be whitelisted for more than one Cloudinary product environment, you can add an appropriately named file for each cloud name.

Note
If at a later point you need to update permissions on an existing S3 bucket, changes may take some time to propagate, and you may not see the changes taking effect right away.

Dolby io

Use this block to improve the quality of your media with the Dolby.io Media Enhance API.

Fill in the required fields with your API key, API secret (available on the Dolby.io Applications Dashboard), and specify the URL locations of the Input and Output files.

You also have the option to specify a category for the type of Content in the input file, which helps determine the processing settings most suitable for improving the quality.

Note
You need to register to Dolby.io in order to use this block.

Upload to Dropbox

Use this block to upload a file to Dropbox via a URL. If the file is an asset in Cloudinary, then you can specify a dynamic value in the URL field, for example, {{$.Cloudinary_Upload.result.secure_url}} for the URL of a file uploaded to Cloudinary earlier in the flow.

You can choose the path to upload to in your Dropbox, and what happens if a file already exists at the specified path with the same name.

Use this Dropbox OAuth Guide to set up a Dropbox app, then configure the Upload to Dropbox block with the values for your Dropbox app. The main steps are as follows:

Create a Dropbox app:

  1. Head to the App Console and create an app.
  2. Configure the app settings.
  3. Configure the permissions. Ensure you allow read and write access to your files and folders, including the content and metadata.
  4. Submit your configuration.

Authorize access to the app, generating an access code:

  1. Navigate to https://www.dropbox.com/oauth2/authorize?client_id=<APP KEY>&response_type=code&token_access_type=offline (replacing <APP KEY> with the App key from the app's settings page).
  2. Copy the access code that's generated.

Generate a refresh token:

  1. In a terminal, enter the following command, replacing the placeholders with your information:

    curl -X POST https://api.dropboxapi.com/oauth2/token \
      -d code=<GENERATED ACCESS CODE> \
      -d grant_type=authorization_code \
      -d client_id=<APP KEY> \
      -d client_secret=<APP SECRET>
  2. Copy the refresh_token from the response.

Configure the Upload to Dropbox block:

  1. In the MediaFlows Upload to Dropbox block, set the Dropbox app key and Dropbox app secret with the values from your app settings, and the Dropbox refresh token that you generated.
  2. Test your flow and check that an image is uploaded to your Dropbox.

Mailchimp

Delete An Asset From Mailchimp

Use this block to delete an asset from Mailchimp's File Manager.

Upload An Asset To Mailchimp

Use this block to upload an asset to Mailchimp's File Manager.

Marketo Create A File

Use this block to create a file on Marketo.

Fill in the fields including your Base API URL, Client ID, Client Secret, File URL, Name, and Folder.

Monday Change Column Value

Use this block to change a column value on a Monday board.

OpenAI Analyze Image by Prompt

Analyzes an image using OpenAI and answers a prompt question about it.

Fill in the fields including your OpenAPI API Key, Image URL, and question.

Shopify

Shopify Get Variant by

Use this block to get a Shopify product variant by a Given Identifier.

Update Metafield (Shopify)

Use this block to update a metafield value of a product in Shopify.

Upload Image (Shopify)

Use this block to add an image to a product in Shopify.

You also have the options to specify the Image Position (set to 1 for the main image) and Alt text for the image.

Update Variant (Shopify)

Use this block to create or update a Shopify product variant. To create a new variant, leave the Variant ID empty.

Fill in the values for each variant option (e.g., if the first option of the variant is Size, set the value to Small, Medium, or Large).

Notifications

Scheduled Email Report

Use this block to schedule an email report with the cumulative number of assets processed by the flow in the previous 24 hour period.

Specify the following information in the block:

  1. The assets you want to count in the report (Public ID, Delivery Type, and Resource Type).
  2. A comma-separated list of email addresses to send the email report to (Recipients).
  3. The time to send the report in the format HH:mm according to UTC (Time).
  4. A name for the report and a description to include in the report (Report name, and Description).

Notes
  • If two assets are reported in one block in a single execution, they count as two assets in one email.
  • If two assets are reported in two different blocks in a single execution, they each count as one asset in two different emails.
  • If an asset is reported in one block in two executions, it counts as two assets in one email.
  • If you add more than one of these report blocks in a flow, for example on different conditional branches, the emails only include assets in the flow that's executed.

Send a Message Using Twilio

Use this block to send an SMS or a WhatsApp message using Twilio.

Make sure you're registered to Twilio in order to use this block. The account information required below can be copied from the Twilio console.

Send Email Using SendGrid

Use this block to send an email using SendGrid.

Make sure you're registered to SendGrid and have a Dynamic Template available in order to use this block.

Send Slack Notification

Important
In order to use this block, you first need to generate an incoming webhook in your Slack app and use the resulting URL to configure this block. See the Slack documentaion for details.

Use this block to send messages to Slack using a specified webhook URL.

You can use the interactive Slack Message Builder to see all the options for customizing the message, and the corresponding JSON structure.

Transformations

Apply Background

Use this block to add a background to transparent regions of a Cloudinary image. This block sets the background to either a specified color or an image using the Transformation API.

Crop Media

Use this block to crop a Cloudinary asset and set the region to focus on (gravity). This block crops using the Transformation API.

Drop Shadow

Use this block to add a shadow to the object(s) in a Cloudinary image. This block applies the dropshadow effect using the Transformation API.

Edit Media

Use this block to apply a custom transformation to a Cloudinary asset using the Transformation API. The transformation parameters can be given as either a comma-separated string or in JSON format.

Enhance Image

Use this block to automatically improve the colors, contrast and brightness of a Cloudinary image. This block applies an improve effect using the Transformation API.

Generative Extend

Use this block to extend an image's dimensions, filling in the extra areas with AI generated realistic pixels. The original image, specified by the public ID, is overwritten with the new image. This block applies a generative fill transformation using the Transformation API.

Generative Recolor

Use this block to recolor a specified region of a Cloudinary image while maintaining the relative shading. This block applies a gen_recolor effect using the Transformation API.

Image Overlay

Use this block to add an image overlay to a Cloudinary asset. This block applies an image layer using the Transformation API.

Optimize Media

Use this block to optimize the format and quality of a Cloudinary asset. This block sets the format and quality using the Transformation API.

Resize Media

Use this block to resize a Cloudinary asset. This block resizes using the Transformation API.

Text Overlay

Use this block to add a text overlay to a Cloudinary asset. This block applies adds a text layer using the Transformation API.

✔️ Feedback sent!