- Home
- Resources
- Integrations
- Cloudinary
Cloudinary n8n integrationAutomate Cloudinary with n8n.
Every image and video in a workflow can leave Cloudinary already resized, optimized and ready to embed. The Cloudinary n8n integration wraps 23 operations across 6 resources: upload assets, build delivery URLs, search the media library, and keep tags and structured metadata in order.
Community node This node is not shipped with n8n: it is a community package (n8n-nodes-cloudinary) you install from Settings › Community nodes on a self-hosted instance. npm
Verified Trustpilot reviews · AI, automation & growth agency
What does the Cloudinary n8n integration do?
The node wraps the Cloudinary media library so a workflow can push files in, read what is already stored, and write delivery URLs back out. Six resources cover uploads, transformations, assets, the video player widget, library lookups, and a legacy asset resource kept for older workflows. Nothing runs in the browser: every step happens inside n8n, and the result is a plain JSON field you can map into the next node.
Take an online shop that receives supplier photos as links. A Schedule Trigger reads the new rows, upload.uploadUrl pulls each image into a folder, and transform.resizeImage returns a secure_url sized for the product grid. The URL goes straight back into Airtable next to the reference, so the catalog never stores a heavy original.
Video works the same way, with one extra step. transform.videoThumbnail grabs a still frame, widget.videoPlayer produces an embed URL and a player config, and the two land in a Slack message so the marketing team can approve the cut before it goes live. Files coming from Google Drive can feed upload.uploadFile in the same run.
Library upkeep is the third habit. asset.search runs a Cloudinary search expression, asset.updateTags relabels what comes back, and asset.deleteAssets clears the derived versions you no longer deliver. Because search accepts expressions like tags=cat AND uploaded_at>1d, the same workflow can run weekly without a hand-written list of public IDs.
When an endpoint is not in the node, the HTTP Request node calls it directly and reuses the same credential through predefined authentication. That covers anything the 23 operations leave out, and it keeps one credential for the whole workflow instead of two.
Two limits are worth knowing before you build. There is no Cloudinary trigger node, so a workflow always starts somewhere else: a Schedule Trigger on a fixed interval, an n8n Webhook called by another service, or the trigger of another tool. And the Transform operations do not sign URLs, so assets stored as Private or Authenticated will not load from the URLs they return. If you are still weighing the platform itself, the n8n review goes into that.
How do you connect Cloudinary to n8n?
- 01
Install the community package
Cloudinary is not shipped with n8n. It is the npm package
n8n-nodes-cloudinary, version 0.2.3, installed from Settings then Community nodes on a self-hosted instance. n8n Cloud only accepts verified community nodes, so check that before planning the build. Once the package is installed, the node shows up in the node panel like any other one, and there is no extra cost on the n8n side. - 02
Create the credential once
A credential is created once from the Credentials menu in n8n and reused across every workflow that touches the media library. The node then offers it in its own dropdown, so you pick it instead of pasting keys into each step. Keep it in one place: if the account values change later, the workflows that share the credential all follow without being reopened one by one.
- 03
Pick a resource, then an operation
Drop the node on the canvas and choose the resource first, Upload, Transform, Asset, Widget or Library, then the operation inside it. Required fields are marked as such and stop the node from running when they are empty. Values coming from an earlier node are written as expressions, for example
{{ $json.public_id }}, which tells n8n to read that field on the incoming item rather than a fixed value.
What can the Cloudinary node do?
The Cloudinary node exposes 23 operations across 6 resources. For each one: the node as you configure it in n8n, the required fields, and our field notes.
| Resource | Compose: Combine Transformations | Image: Convert Format | Image: Crop | Video: Crop | Compose: Custom Transformation String | Delete Assets | Get Asset | Get Metadata Fields | Get Tags | Image: Optimize | Video: Optimize | Image: Resize | Video: Resize | Search Assets | Video: Trim | Update Asset Structured Metadata | Update Asset Tags | Upload File | Upload From URL | Video Player | Video: Thumbnail |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Upload | ✓ | ✓ | |||||||||||||||||||
| Transform | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ||||||||||
| Asset | ✓ | ✓ | ✓ | ✓ | ✓ | ||||||||||||||||
| Widget | ✓ | ||||||||||||||||||||
| Library | ✓ | ✓ | |||||||||||||||||||
| Asset (Legacy, by Public ID) | ✓ | ✓ |
Operations index
Upload
2 operationsUpload an asset from file data
upload.uploadFileWhat you see in n8n
Notes & use cases
Sends binary file data from a previous node into the media library and returns the stored asset.
Key parameters
- File: the file to upload, required, usually the output of the node that fetched or generated it.
- Resource Type:
image,videoorraw, so a PDF or a ZIP is not treated as a picture. - Additional Fields: Folder, Public ID, Tags, Structured Metadata as JSON, and Upload Preset if your account already defines one.
Upload an asset from URL
upload.uploadUrlWhat you see in n8n
Notes & use cases
Cloudinary fetches the file itself from an address you pass in, so nothing has to be downloaded into the workflow first.
Key parameters
- URL: address of the image to upload, required, often
{{ $json.url }}from the row or record being processed. - Resource Type: pick
videowhen the link points at a clip, otherwiseimage. - Additional Fields: set Public ID to keep a stable name, Folder to sort, Tags to group.
Transform
11 operationsCompose: Combine Transformations
transform.combineTransformationsWhat you see in n8n
Notes & use cases
Chains several transformation steps in order and returns one delivery URL plus a reusable transformation string.
Key parameters
- Public ID: required, the asset path without the file extension, for example
folder/sample. - Steps: each step picks an Action, Resize, Crop, Convert Format, Optimize, Trim or Raw Component, and they are applied in the order shown.
- Resource Type:
imageorvideo, which decides the URL path and the optimize output.
Compose: Custom Transformation String
transform.customTransformationWhat you see in n8n
Notes & use cases
For teams that already know Cloudinary syntax, this builds the URL from a raw string used verbatim.
Key parameters
- Public ID: required, folder path included, extension left off.
- Transformation: required, the raw string where components are separated by a slash and qualifiers by commas, such as
c_fill,g_auto,w_400,h_300/f_auto/q_auto. - Format: an optional delivery extension without the leading dot.
Image: Convert Format
transform.convertImageWhat you see in n8n
Notes & use cases
Returns a delivery URL that serves the same picture in another file format.
Key parameters
- Public ID: required, identifies the asset to convert.
- Target Format:
avif,webp,jpg,pngorgif. - Continue From Transformation: paste the
transformationoutput of a previous Transform step to compound both into a single URL rather than starting fresh.
Image: Crop
transform.cropImageWhat you see in n8n
Notes & use cases
Cuts a picture down to fixed dimensions or to a ratio, and hands back the URL and the transformation string.
Key parameters
- Crop By: Dimensions for an exact Width and Height, or Aspect Ratio for a value like
16:9. - Focus: Auto detects the important region, Face centers on a detected face, Center keeps the middle.
- Generative Fill: extends the image instead of cutting it, costs extra transformation credits and may render asynchronously on first request.
Image: Optimize
transform.optimizeImageWhat you see in n8n
Notes & use cases
Auto format and auto quality in one step, which is the cheapest weight saving on any image you deliver.
Key parameters
- Public ID: required, the asset to optimize.
- Quality: Auto is the recommended setting, Best keeps more detail, Eco and Low trade quality for smaller files.
- Continue From Transformation: chain this after a Resize or Crop step, since neither of those adds optimization on its own.
Image: Resize
transform.resizeImageWhat you see in n8n
Notes & use cases
Produces a delivery URL at the width and height you ask for, with a choice of how the picture fits the box.
Key parameters
- Width and Height: leave one at 0 to size by the other only.
- Fit: Limit never upscales, Fit may enlarge, the Pad modes keep the whole picture and fill the rest.
- Pad Background: Black by default, or Auto, Blurred, or a Background Color given as a name or a hex value.
Video: Crop
transform.cropVideoWhat you see in n8n
Notes & use cases
Same framing logic as the image version, applied to a clip so it fits a different placement.
Key parameters
- Public ID: required, the video path without its extension.
- Crop By: Dimensions with Width and Height, or Aspect Ratio with a value such as
9:16. - Focus: Auto, Face or Center decides what stays in frame once the edges are cut.
Video: Optimize
transform.optimizeVideoWhat you see in n8n
Notes & use cases
Lets Cloudinary choose the format, the codec and the quality for the browser that asks for the file.
Key parameters
- Quality: Auto for the balanced default, Good for a middle ground, Eco or Low when bandwidth matters more than detail.
- Continue From Transformation: wire the
transformationfield from a Trim or Resize step so the two compound into one URL.
Video: Resize
transform.resizeVideoWhat you see in n8n
Notes & use cases
Scales a clip to a target size and returns the URL to deliver it from.
Key parameters
- Width and Height: 0 on one side sizes by the other.
- Fit: Scale forces exact dimensions and may distort when both are set, the Pad modes letterbox instead.
- Pad Background: Auto samples a color from the clip, Blurred uses an enlarged copy, Solid Color takes the value you set.
Video: Thumbnail
transform.videoThumbnailWhat you see in n8n
Notes & use cases
Pulls one still frame out of a video and delivers it as an image.
Key parameters
- Frame: Auto lets Cloudinary pick a representative moment, Specific Time uses the Timestamp in seconds.
- Image Format:
jpg,png,webporgiffor the generated still. - Public ID: required, the source clip.
Video: Trim
transform.trimVideoWhat you see in n8n
Notes & use cases
Shortens a clip through the delivery URL, leaving the stored file untouched.
Key parameters
- Start Offset and End Offset: times in seconds, and any combination of start, end and duration is accepted.
- Duration: clip length in seconds when you prefer to say how long rather than where to stop.
- Continue From Transformation: keeps an earlier crop or resize in front of the trim.
Asset
5 operationsDelete assets
asset.deleteAssetsWhat you see in n8n
Notes & use cases
Removes one or several assets from the library, by public ID.
Key parameters
- Public ID(s): required, a single value, several separated by commas, or an expression returning an array.
- Type: required storage type, Upload, Private, Authenticated or Fetch.
- Delete Options: Keep Original deletes only the derived versions, Invalidate CDN clears cached copies, Transformations narrows the deletion to listed derived assets.
Get an asset
asset.getAssetWhat you see in n8n
Notes & use cases
Reads the full record of a single asset so the rest of the workflow can branch on what it finds.
Key parameters
- Asset ID: required, the immutable
asset_id, not the public ID. - Options: Colors returns the predominant colors, Faces the detected face coordinates, Image Metadata the IPTC, XMP and EXIF values, Pages the page count of multi page files.
Search assets
asset.searchWhat you see in n8n
Notes & use cases
Queries the library with a Cloudinary search expression and returns the matching assets.
Key parameters
- Expression: for example
folder:products/*, and an empty value matches everything. - Resource Types: Cloudinary searches images only by default, so tick Video or Raw to widen it.
- Return All: enabled, n8n pages through every match; disabled, Max Results caps the answer between 1 and 500.
- With Field: add Tags or Context to avoid a second lookup downstream.
Update asset structured metadata
asset.updateMetadataWhat you see in n8n
Notes & use cases
Writes structured metadata onto an asset identified by its asset ID.
Key parameters
- Asset ID: required, the immutable identifier returned by the library.
- Structured Metadata: required JSON, shaped like
{"field1": "value1"}, matching the fields your account defines. - Invalidate CDN: clears cached copies once the values change.
Update asset tags
asset.updateTagsWhat you see in n8n
Notes & use cases
Sets or extends the tag list on one or more assets.
Key parameters
- Asset ID and Public ID(s): both required, because the tag append endpoint is keyed on public ID and does not accept an asset ID.
- Tags: required, a comma separated list of names.
- Mode: Set replaces the whole list, Append keeps what is already there.
- Type: must match the asset, since public IDs are scoped by resource type and type.
Widget
1 operationGenerate a video player
widget.videoPlayerWhat you see in n8n
Notes & use cases
Builds the embed code and the configuration for the Cloudinary Video Player, returned as an embed URL and a player config string.
Key parameters
- Public ID: required, the clip to play.
- Source Types: fallback order, and HLS or MPEG-DASH cannot be combined with a Transformation that pins a format.
- Poster: the still shown before playback, ideally the secure URL of a Video: Thumbnail step.
- Playback: Muted, Loop, Autoplay Mode, and Generate Captions for AI captions in the spoken language.
Library
2 operationsGet metadata fields definitions
admin.getMetadataFieldsWhat you see in n8n
Notes & use cases
Lists the structured metadata fields defined on the account, with no parameter to fill in.
Get tags for a resource type
admin.getTagsWhat you see in n8n
Notes & use cases
Returns the tags in use for one kind of asset, which is how you check a label before applying it.
Key parameters
- Resource Type: required,
image,videoorraw. - Prefix: keeps only the tags starting with the characters you give.
- Max Results: caps the list between 1 and 500.
Asset (Legacy, by Public ID)
2 operationsUpdate asset structured metadata
updateAsset.updateMetadataWhat you see in n8n
Notes & use cases
The legacy route to the same result, kept for workflows built before the Asset resource existed. It is deprecated, and new work belongs on the Asset resource.
Key parameters
- Public ID: required, the asset to update, since this resource works by public ID rather than asset ID.
- Type: required storage type, Upload, Private, Authenticated or Fetch.
- Structured Metadata: required JSON of field keys and values.
Update asset tags
updateAsset.updateTagsWhat you see in n8n
Notes & use cases
Tagging through the deprecated public ID resource, useful only while an existing workflow has not been migrated.
Key parameters
- Public ID and Type: both required, they locate the asset in the older addressing scheme.
- Public ID(s): required, the assets to tag, single value or comma separated.
- Tags: required, comma separated names, applied with Mode set to Set or Append.
Need help automating Cloudinary with n8n?
A person reads every message.



