Skip to main content
The main configuration object for the Cloudinary storage plugin.

Type Definition

export type CloudinaryStorageOptions = {
  collections: Partial<
    Record<UploadCollectionSlug, Omit<CollectionOptions, "adapter"> | true>
  >;
  config: CloudinaryConfig;
  folder?: string;
  disableLocalStorage?: boolean;
  enabled?: boolean;
  versioning?: CloudinaryVersioningOptions;
  publicID?: PublicIDOptions;
  supportDynamicFolderMode?: boolean;
  customFields?: Field[];
  enablePDFThumbnails?: boolean;
};

Properties

collections
Partial<Record<UploadCollectionSlug, Omit<CollectionOptions, 'adapter'> | true>>
required
Collection options to apply the Cloudinary adapter to.
config
CloudinaryConfig
required
Cloudinary configuration including cloud_name, api_key, and api_secret.
folder
string
default:"'payload-media'"
Folder path in Cloudinary where files will be uploaded.
disableLocalStorage
boolean
default:true
Whether or not to disable local storage.
enabled
boolean
default:true
Whether or not to enable the plugin.
versioning
CloudinaryVersioningOptions
Versioning configuration options. See CloudinaryVersioningOptions for details.
publicID
PublicIDOptions
Public ID configuration options. See PublicIDOptions for details.
supportDynamicFolderMode
boolean
default:true
Support for Dynamic Folder Mode. When true, uses asset_folder parameter in upload to ensure correct folder display in Media Library.
customFields
Field[]
Additional custom fields to add to media collection. These will be merged with the default fields (cloudinary, versions, etc.).
enablePDFThumbnails
boolean
default:true
Enable PDF thumbnails in the admin UI.

Usage Example

import { cloudinaryStorage } from 'payload-cloudinary';

export default buildConfig({
  plugins: [
    cloudinaryStorage({
      collections: {
        media: true,
        images: {
          disablePayloadAccessControl: true,
        },
      },
      config: {
        cloud_name: process.env.CLOUDINARY_CLOUD_NAME,
        api_key: process.env.CLOUDINARY_API_KEY,
        api_secret: process.env.CLOUDINARY_API_SECRET,
      },
      folder: 'my-app/uploads',
      disableLocalStorage: true,
      versioning: {
        enabled: true,
        autoInvalidate: true,
        storeHistory: true,
      },
      publicID: {
        enabled: true,
        useFilename: true,
        uniqueFilename: true,
      },
      supportDynamicFolderMode: true,
      enablePDFThumbnails: true,
    }),
  ],
});

Build docs developers (and LLMs) love