Flows consist of a set of functional blocks that you connect together, enabling you to create step-by-step actions for execution. Each block performs a specific function. By combining different blocks, you can develop a customized application to address your media use case effectively.
Blocks are grouped into different categories such as Triggers, Flow Logic, and Developer Tools, to make them more accessible. For more in-depth information on each block, please refer to the Block reference.
The canvas is your visual development environment. It allows you to view, edit, test, debug, and deploy your application.
The canvas has 4 available sidebars: Flow Description, Execution, Add Blocks, and Execution Logs.
All sidebars are accessible via the 4 buttons in the Navigation Bar on the left.
From the Navigation bar on the left, open the Add Blocks sidebar.
From the Add Blocks sidebar, select the block you want to use and drag it to the canvas.
Drag the blue and red dots to connect blocks.
Use the blue dots to connect the next block in the happy path.
Use the red dots to connect the next block in the error path.
In the example below, if the Manual Moderation block executes successfully, the Rename Media block will be executed next. If the Manual Moderation block experiences any issues, the Send Email Using SendGrid block will be executed next to send the error to a specific recipient.
A block can be connected to multiple blocks. In the example below, once the Manual Moderation block executes successfully, both the Rename Media and Send Email Using SendGrid blocks are executed in parallel.
Click a block name to open its configuration sidebar. On this page, you can configure all the input fields for this block instance.
Tip To make your flows easier to understand, you can change the display name of a block to provide clarity as to what it is being used for.
A block's input field can be set using a hard-coded value or an output value of a previous block in the flow.
In the example below, the New Public ID field is hard coded while the Current Public ID is dynamically calculated from the output of the Cloudinary Upload trigger block.
To use the Dynamic Parameters:
Click the <>
button in the upper right corner to view the list of available dynamic parameters.
Select the parameter you want to use. Once you click the parameter name, it will be copied to your clipboard.
Paste the copied string to the input field where you want to use this parameter.
Flows can be triggered programmatically based on their trigger block.
Additionally, you can manually trigger these flows directly from within the canvas.
This is extremely helpful while building or debugging a flow.
To manually trigger the flow:
From the Navigation bar on the left, open the Executor sidebar.
At the bottom, select the Action profile you want to trigger.
Configure the action as needed.
Click the Execute button.
Once a flow is executed, you can view the logs of the execution in the Execution sidebar.
From the Navigation bar on the left, open the Execution Logs sidebar.
All executions will appear in the sidebar, including their execution time and status.
Click an execution to see the blocks that were executed.
Click any block to see the output of the block in that execution.
Tip A red dot will appear next to the Execution Logs button on the Navigation bar to indicate that a flow was executed while the sidebar was closed. Click the button to open the sidebar and see the new execution.
Disclaimer
MediaFlows is currently in Beta. Changes in implementation details may occur prior to General Availability.
We appreciate any feedback and suggestions. Feel free to reach out via the Intercom button on our website.
As a Beta product, Cloudinary users who use MediaFlows should be aware that:
Their current Cloudinary support plan does not apply to MediaFlows.
The response time for MediaFlows-related issues will be up to one business day.
MediaFlows allows developers to build flexible and scalable media applications with the help of a visual and intuitive drag-and-drop interface.
MediaFlows has the capability to connect Cloudinary APIs and other third-party services, providing you with the power to design, deploy, test, and scale media applications in minutes, not days.
To start building your next media application, go to mediaflows.cloudinary.com.
Each flow is composed of a set of functional blocks that you connect together, creating step-by-step actions to execute. Blocks can be used for a variety of actions, from interacting with media in Cloudinary, to sending notification emails. You can trigger flows using webhooks, or schedule them to run at predefined times.
To use MediaFlows, please make sure you have the following:
An active Cloudinary account. If you don’t have one, sign up here for free.
Master admin permissions in your Cloudinary account.
Sign up to MediaFlows using your Gmail or GitHub account.
You can access the account settings by clicking your Profile image at the top right of the screen, then clicking Settings.
In your account settings, you can delete your account. Deletion is final once approved.
A project is a space where you can host multiple flows. Each project is connected to a specific Cloudinary product environment. The flows hosted in a project can interact only with the product environment of the project. You can create multiple projects and connect them to different product environments.
Tip You can connect one project to your Cloudinary staging environment and a second project to your Cloudinary production environment.
To create a new project:
From the MediaFlows home page, click the Create New Project button.
Provide a name for the project and click the Create button.
Once the project is created, you will be automatically directed to the project's page.
To create flows in a project, you must connect the project to a Cloudinary environment.
To connect the project to a Cloudinary environment:
Click Connect to Cloudinary to be transferred to Cloudinary's login page.
On the OAuth Application Login Page, log in to Cloudinary.
Important This login is for Cloudinary. Please use the login method and credentials you use to log into Cloudinary.
On the An application requests access to your data page, choose the product environment you want to link with this project and click Accept Access.
Note Once a project is linked to a Cloudinary product environment, MediaFlows will be able to upload, manage, transform, and deliver assets on your behalf in the selected product environment.
From within a project, you can access the project settings by clicking Project Settings at the top right of the screen.
The settings page allows you to:
Change the project name.
Delete the project.
Reconnect the Cloudinary product environment.
Set environment variables that can later be accessed in all flows hosted in the project. These variables can later be accessed in the Dynamic Parameters menu.
After you created and connected your project, you can proceed to create a new flow.
Inside the project page, click Create New Flow.
In the new flow page, click Start from scratch.
Feel free to explore the out-of-the-box templates. They can serve as an inspiration and help you discover the various use cases that MediaFlows can solve. Choose any template and personalize it according to your specific requirements.
After selecting a template, you will be redirected to the canvas to view and build your flow.
If you feel experimental, feel free to use the FlowAI feature.
Describe the flow you wish to build and click the Generate button.
Once the flow is generated, you will be redirected to the canvas to view and build your flow.
Tip Providing detailed flow descriptions significantly increases the likelihood of generating the exact flow you have in mind.
You can share flows between different users and projects. Share a flow and import it to another project in your account if you want to connect it to a different product environment. Share a flow with a colleague to allow them to reuse or extend your application in their own account.
Changes made to the imported flow do not impact the originally shared flow.
To share a flow, in the canvas, open the options menu at the upper right corner and click the Share option.
The shareable URL is copied to your clipboard, ready for you to send to a colleague.
To import a flow, enter the shared URL in your browser, select the project to which you want to import this flow, and click the Try This Flow button.
As explained in Learn about blocks, 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 are special blocks that are used to start the flow execution. For example, use the Catch Webhook block to trigger the flow when a specific event occurs or use the Scheduler block to trigger the flow on a predefined schedule.
Tip Every flow must start with a trigger block.
Webhooks are a simple way for applications to send messages to one another. This is how, for example, your Shopify store can send a message to Slack to notify you of a new order.
Use this block to trigger a flow from any application.
The block is configured with a specific web address (also known as a webhook URL). When the block receives an HTTP request at the webhook URL, it triggers the flow. The triggered flow can then perform a series of actions, such as uploading an image, updating metadata, or calling an API.
To configure any application to trigger the flow:
Click the block to open its configuration sidebar.
Click the copy button to copy the block's webhook URL.
Navigate to the desired application, locate the webhook settings (the steps may vary depending on the application), and paste the block's webhook URL.
Parameters included in the HTTP request are available to all blocks in the flow using Dynamic Parameters. In the block's configuration sidebar, add the parameters sent to this flow. This will allow you to access them easily in the Dynamic Parameters menu in all blocks in the flow.
Important The webhook is not automatically verified. Please take all possible precautions to ensure your data remains secure and protected. This includes verifying the source of the webhook whenever possible, testing the flow in a development or staging environment, and monitoring its activity closely.
In the example below, every message the flow receives is automatically sent using SendGrid.
Use this block to trigger a flow whenever an asset is uploaded to Cloudinary.
This block is similar to the Catch Webhook block, but the Dynamic Parameters of Cloudinary upload
webhooks are already pre-populated.
To configure Cloudinary to trigger the flow when an upload occurs:
Click the block to open its configuration sidebar.
Click the copy button to copy the block's webhook URL.
Navigate to Cloudinary's Webhook Notifications page, add a new notification to be sent to the copied webhook URL, and set the notification type to upload
.
Use this block to trigger a flow whenever a tag is added or removed in an asset in Cloudinary.
This block is similar to the Catch Webhook block, but the Dynamic Parameters of Cloudinary resource tags changed
webhooks are already pre-populated.
To configure Cloudinary to trigger the flow when a tag is added/removed:
Click the block to open its configuration sidebar.
Click the copy button to copy the block's webhook URL.
Navigate to Cloudinary's Webhook Notifications page, add a new notification to be sent to the copied webhook URL, and set the notification type to resource tags changed
.
Use this block to trigger recurring flows. Trigger an action every day of the month, every day of the week, or every single day. This is similar to a crontab, cronjob, or cron.
Tip Head to crontab.guru to easily create a cron schedule expression.
Notes
The timezone used is UTC.
The minimum scheduling interval is one hour.
Use this block to trigger a flow from your Cloudinary Media Library. This is done using Cloudinary's Apps for DAM. Click the block to configure its appearance and behavior.
To use the MediaFlows DAM App, make sure the app is enabled in your DAM App Marketplace.
To execute the flow, follow the following steps:
Head to Cloudinary's media library.
Select the media on which you want to execute the flow, and select Run MediaFlows from the menu.
In the MediaFlows DAM App, click the flow you want to trigger.
These blocks can be used by any flow to implement logical flow functionality.
Use this block to determine how to proceed based on a condition.
This is the only block that has two happy paths (two blue dots).
The block connected to the upper happy path is executed if the condition is met (returns true).
The block connected to the lower happy path is executed if the condition is not met (returns false).
For example, the filter could test if the asset is an image, and if it is, process the image, otherwise send an email:
Note In the Condition block settings, you must set the Key field to a Dynamic Parameter.
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 the Dynamic Parameters menu.
For example, you could split a string and add all items as tags to an asset.
These blocks interact with Cloudinary APIs.
Use the block to get information about your account usage. This block calls the usage method of the Admin API.
For example, you could schedule a daily email to be sent if a specific quota is exceeded in your usage:
Use this block to rename an asset in Cloudinary or move it to a different folder. This block calls the rename method of the Upload API.
For example, when a media is uploaded to Cloudinary, if its size is larger than 3MB, move the asset to the_/large_files_ folder:
Use this block to upload files from any source to Cloudinary.
Use the optional upload parameters in the Optional Parameters (Advanced) field to fine-tune your upload.
For example, when media is uploaded to an S3 bucket, upload it to Cloudinary and add the tag from_s3, so it will be searchable in your Media Library:
Use this block to apply actions on assets in Cloudinary. For example, to convert a video to multiple formats up front, so the different formats of the video will not need to be generated on the fly when first accessed by users. This block calls the explicit method of the Upload API.
Read the documentation on the explicit method to get ideas on what you can achieve with this block. You can include optional parameters in the Optional Parameters (Advanced) section using.
For example, when media is uploaded to Cloudinary, if the media is a video, apply video optimizations. Otherwise, apply image optimizations:
Use this block to get information on a media in Cloudinary such as the width, height, version, secure URL, and more. This block calls the explicit method of the Upload API.
For example, when a tag is added to an asset in Cloudinary, get the secure URL of the asset and send it via email to your co-worker.
Use this block to send media to a manual moderation process. The assets can then be moderated using the Admin API or the Cloudinary Console. Rejected assets are automatically invalidated on the CDN within approximately ten minutes.
Use this block to find media in Cloudinary that meet a given criteria. This block calls the search method of the Search API. The block returns a maximum of 50 results in each search.
Use this block to get the tags of a media asset in Cloudinary. This block calls the resources method of the Admin API.
Use this block to update tags on a media asset in Cloudinary. This block calls the tags method of the Upload API.
Use this block to get the value of a contextual metadata field of a media asset in Cloudinary. This block calls the resource method of the Admin API.
Use this block to update contextual metadata on a media asset in Cloudinary. This block calls the context method of the Upload API.
Use this block to get the value of a structured metadata field of a media asset in Cloudinary. This block calls the resource method of the Admin API.
Use this block to update structured metadata on a media asset in Cloudinary. This block calls the metadata method of the Upload API.
Use this block to create a new structured metadata on a media asset in Cloudinary. This block calls the metadata_fields method of the Admin API.
Note Before using a block that’s associated with a Cloudinary add-on, make sure you're registered for the add-on.
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 before using this block.
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 before using this block.
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 before using this block.
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 before using 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.
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 for this block can be copied from the Akeneo Connections page.
Use this block to create an asset in Akeneo's Asset Manager.
To allow this block to communicate with Akeneo's API, use the tokens retrieved by the Get Tokens From Akeneo block.
Use Akeneo’s Product Link Rule to automatically link the created Akeneo asset to a product.
This block can be used only with Akeneo versions that support the Akeneo Asset Manager.
Use this block to delete an asset from Akeneo's Asset Manager.
To allow this block to communicate with Akeneo's API, use the tokens retrieved by the Get Tokens From Akeneo block.
This block can be used only with Akeneo versions that support the Akeneo Asset Manager.
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 copy the Twilio console.
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.
Use this block to communicate with other services and APIs. For example, send the media output to a marketing automation system.
Use this block to replace all occurrences of a specified string or regular expression with a specified replacement string.
Use this block to concatenate two strings with an optional separator.
Use this block to split a string using a predefined separator.
Use this block to display a message in the Execution logs. It's a good practice to use this block when creating flows for debug purposes, and for displaying messages in MediaFlows logs.