Cloudinary 3rd Party Developer Program

Cloudinary’s Technology Partner Program allows 3rd Party software companies to independently develop integrations with Cloudinary products to further enhance or expand the digital platform offering to customers.

We require a thorough certification process, and the Cloudinary Integration Team is here to assist. Simply follow our “Five Steps to Success” plan and you’ll be on your way in no time:

  1. Learn
  2. Build
  3. Share
  4. Certify
  5. Launch

Other benefits of the program include:

  • Access to an allocated relationship manager
  • Documentation of the integration on the Cloudinary Website
  • Overview and demo training session on Cloudinary’s technology for Partner sales team
  • Technical training session and roadmap overview for Partner technical team
  • Co-marketing collaboration (varies by Partner)
  • Cloudinary will recommend and introduce or co-sell with Partner to relevant companies

Certification Validity: We ask that you communicate any major changes you make to your platform and/or the Cloudinary integration (or if we make any major changes we’ll let you know) so we can re-certify the integration.

Learn

Sign up for a free Cloudinary account, understand our products, and reach out to us for an initial discovery call

Before you get started on any development work, we recommend you sign up for a free Cloudinary demo account to get familiar with the Cloudinary offering. Once your account is set up, you can also access our free training site, Cloudinary Academy as well as our Knowledgebase and Documentation sites.

Ready to go? Great! Request an initial discovery call by sending an email to certifications@cloudinary.com

Cloudinary Product Offerings

This section describes Cloudinary’s products, what value they bring to users, and how they can be incorporated into Cloudinary integrations.

Cloudinary offers various products that your customers may be using:

  • DAM (Digital Asset Management)
  • Programmable Media
  • Media Optimizer

The integration you build should enable only features that are available for the products your customer is using.

DAM

Customers who use Cloudinary’s Digital Asset Management (DAM) solution use Cloudinary’s storage and are able to use Cloudinary’s fully-featured set DAM solution. DAM users do not benefit from Cloudinary’s optimized delivery of assets.

Integrations can make use of our Media Library Widget to embed our DAM capabilities in other platforms and our Upload Widget to allow your customers to upload assets into Cloudinary.

Programmable Media

Customers who use Cloudinary’s Programmable Media (PM) offering benefit from the full feature set of Cloudinary. This includes access to all of Cloudinary’s APIs, transformations, delivery through our CDNs, and basic DAM functionality. These customers utilize and are charged based on their usage of Cloudinary’s storage, bandwidth, and transformation.

Our APIs/SDKs, Media Library Widget, and our Upload Widget might be a good way to integrate to capture these capabilities. You can add common optimization transformations as default (such as ‘f_auto,q_auto’).

Media Optimizer

Customers who use Cloudinary’s Media Optimizer (MO) don’t use Cloudinary’s storage and benefit from optimized delivery of assets to their end-users without the need to modify the asset URLs in their code.

As Cloudinary is not used for storage, MO users are not able to use Cloudinary’s DAM to manage their assets.

MO customers can use optimization-related delivery transformations such as auto quality and format, cropping, sizing, breakpoint behavior, etc. Creative transformations such as effects, overlays, and borders are not available for MO customers.

Cloudinary capabilities

This section highlights the Cloudinary capabilities that your integration can take advantage of to maximize the benefits of using Cloudinary’s service.

Storage

Your integration can allow customers to sync all or part of their assets to Cloudinary.

Cloudinary recommends that the integration, by default, use Cloudinary as the media single-source-of-truth and deliver all assets from Cloudinary’s storage.

Synced assets can be stored in different ways. For example:

  • Only on Cloudinary.
  • On both Cloudinary and natively (identical copies or different versions).

Storing assets only on Cloudinary will free up space in the integrated service.

Storing assets on both services allows fallback mechanisms. For example, if the user chooses to deactivate the integration, assets can quickly be delivered natively.

See how our WordPress integration implements different storage options.

The integration can allow various ways to sync assets to Cloudinary. For example:

  • Auto – Automatically syncs each asset immediately upon native upload.
  • On-the-fly – Syncs assets the first time they are requested.
  • Bulk – Syncs all assets in a single click upon user request.
  • Manual – Syncs selected asset/s upon user request.

See how our WordPress plugin provides auto-sync, bulk sync, and manual sync methods.

Note that your integration may also need to handle restricted assets.

Media optimization and delivery

Assets can be delivered with optimized quality, format, and size, while maintaining a high visual quality experience.

Optimized delivery is achieved using optimization transformations such as f_auto, q_auto, and others. MO customers can use the MO configuration to optimize their media without affecting the asset URLs.

Cloudinary recommends that by default, the integration will allow a single-click automatic quality and format optimization for all delivered assets.

For advanced customers, the integration can allow additional settings to control the media quality and format. For example: Adjusting the aggressiveness of the auto-quality algorithm, or even manually selecting the quality or format for individual assets.

See our documentation for more details on image and video optimization.

Cloudinary’s responsive breakpoints feature is a smart algorithm that determines the ideal image dimensions for a particular end user’s device/browser. The integration can enable responsive breakpoints to all assets. This might not be relevant for integrations that don’t include frontend elements. If relevant, Cloudinary recommends enabling breakpoints by default.

For integrations that include frontend elements, the integration can also offer lazy loading and placeholders.

All assets stored in Cloudinary can be delivered using Cloudinary’s CDN.

See how our WordPress plugin enables responsive breakpoints, and quality and format optimization.

Automatic media transformations

Cloudinary’s transformations offer easy ways to transform, adapting, and optimizing images.

  • Automatically create different variants of every image for different browsers, devices, channels, and campaigns.
  • Crop, resize, transcode, and filter images on the fly to fit your brand’s look and feel.
  • Automatically create all image variants to personalize and deliver the most appropriate version to every end user.

Cloudinary transformations include both optimization transformations such as f_auto and q_auto and creative transformations such as effects and watermarks.

Notice that different transformations may apply to images and videos. The integration can allow separate transformation configurations for images and videos.

Transformations can be applied at multiple levels. For example: In eCommerce systems, asset level, product level, catalog level, and global level are frequently used.

Cloudinary recommends using at least two levels: Asset and global. When multiple levels are allowed, the integration can allow the user to choose if each level overrides or concatenates the level below it.

See how our WordPress plugin implements the transformations hierarchy and examples of how different levels override or concatenate to one another.

Upload widget

Cloudinary’s Upload widget can be used whenever a customer wants to allow their end-users to upload assets from various sources to Cloudinary.

Media Editing widget

Cloudinary’s Media Editing widget can be used whenever a customer wants to allow their end-users to edit and transform an original asset.

Media Library widget

Cloudinary’s Media Library widget can be used whenever a customer wants to allow their end-users to select media from Cloudinary to be used in the platform.

The widget also enables the users to upload, search, manage, and edit assets and can be used whenever a full media library solution is needed.

See how our WordPress plugin makes use of the Media Library widget in different scenarios.

Product Gallery widget

Cloudinary’s Product Gallery widget can be used whenever there is a need to present product assets in a storefront or grouped together.

Video Player

Cloudinary’s Video Player can be used whenever there is a need to play videos on a website using a player that offers look & feel customization options, analytics, hotspots, and the most advanced delivery options.

SEO support

Cloudinary allows the concatenation of meaningful suffixes to asset URLs.

The integration can use this capability to improve the SEO of the user’s website.

Support multiple accounts, sub-accounts, and users

Cloudinary customers may work with more than one Cloudinary account. For example, agencies managing more than a single account, production/staging accounts, different sub-brands, etc.

A Cloudinary account may contain multiple sub-accounts and multiple users.

The integration can allow the user to switch between different accounts, sub-accounts, and users within the logged-in account, allowing easy “refresh” of the media belonging to the used account/sub-account/user.

back to top

Build

Use our guidelines and requirements to build with our APIs or Widgets

Basic Requirements

This section defines integration requirements that must be followed in order to be certified.

Installation & update

  • Users of the integration must be able to install, update, and uninstall it in the same way as other integrations of the integrated platform.
  • Installation instructions and full usage documentation must be clearly presented to the user.
  • Known issues and limitations must be clearly presented to the user.
  • When the integration is uninstalled, it must remove all Cloudinary functionality added by the integration while not affecting any non-Cloudinary related functionality. The uninstall process must not harm the system, and must end with the system in a fully-functional state.

Login & logout

  • The integration must allow the user to use multiple Cloudinary accounts and sub-accounts (clouds). The user must be able to login & logout from multiple accounts and switch between different sub-accounts. Notice that different accounts may have different permission levels.

Contact and support information

  • The integration must present clear contact information for users to send questions and report issues. Common ways are in the integration’s UI or a README file.

Technical guidelines

Best practices:

The following aspects are recommendations to better align your integration with other Cloudinary integrations.

  • For authenticating with Cloudinary, it’s recommended to use OAuth over key and secret.
  • It’s recommended to implement the integration as an open-sourced library hosted on Github.
  • If the integration is open-sourced, make sure to follow industry standards, including providing license information, a README file, installation guide, contribution guidelines, and contact information for reporting problems or requesting support.

Technical Requirements:

The following aspects must be followed in order for the integration to be certified.

  • While we recommend using OAuth as mentioned above, if the integration uses API key and secret to authenticate with Cloudinary (or any other service), make sure never to expose the API secret in client-side code, your github library, or external communications (for example, video tutorials, training sessions, and screen captures).
  • Make sure that the code is clean, organized, readable, and follows a consistent coding style.
  • The code must be thoroughly tested using automated or manual methods (see Testing guidelines).
  • Use the relevant Cloudinary SDK to communicate with Cloudinary’s API.
  • Versioning and releases:
    • Make sure the integration release versions comply with the SemVer specification.
    • Present a clear changelog in each new release.
  • Analytics
    • API calls to Cloudinary must set a user-agent header in the request in the following format:
      Cloudinary/ ( ) /
      For example:
      CloudinaryMagento/2.1.0 (Magento 1.9.2.4) CloudinaryPHP/1.6.2
    • When configuring the Media Library widget, a parameter named ‘integration’ must be added as part of the widget’s configuration options.
    • The integration parameter’s data must be in the following format:
      {
      type: //the integration identifier e.g. "adobe_connector",
      platform: //hosting app name + version e.g. "photoshop 8.6",
      version: //integration version e.g. "1.0",
      environment: //e.g "prod"/"stag"/"dev"
      }

back to top

Share

Prepare your integration for testing and approval and get initial feedback on your integration

Below is a list of common and important scenarios to get you started. Additional test scenarios might be required according to your integration’s definition, scope and implementation.

Storage and delivery:

  • Relevant assets are stored and delivered from Cloudinary
  • Relevant media types are supported (image/video/raw)
  • Various assets types are handled (restricted/private/authenticated)
  • Delivery methods (fetch/upload)
  • Supported sync options
  • Upload presets
  • Breakpoints
  • Upload/delivery of large files (>1GB)

Transformations:

  • Applied as expected
  • Multi-level transformations (see Automatic media transformations section)
  • Named transformations

Widgets:

  • Video player
  • Product gallery
  • Upload widget
  • Media Library Widget

Login/logout:

  • Switching accounts and sub-accounts
  • Integration disabled/enabled

Integration specific

  • Scenarios, features, validations, and limitations specific to the integration product behavior (eg. a maximum of 50 assets presented in the Media Library Widget).
  • Scenarios specific to the integration’s implementation (eg. supported rate limits, max queue sizes, etc.)

During the development and testing, if you have any questions or need any consultant, feel free to reach out to our support team or the Cloudinary Integration Team certifications@cloudinary.com.

back to top

Submit for approval and certification

Development

While planning your integration, please make sure to take into account best practices, requirements, and testing guidelines in the previous sections.

Once you’re done building and testing your integration, please share your integration by contacting us – certifications@cloudinary.com.

Integration Submission Requirements

Upon submission, you will be required to supply the following:

  • Unencrypted source code for review.
  • Clear installation guidelines.
  • Full integration usage documentation.
  • Source code of automated tests used for testing the integration.
  • Description of manual tests if done.
  • List of APIs, 3rd party packages, and services used by the integration.
  • Contact person for continued follow-up.
  • Signed technical partnership agreement for legal, privacy, and security purposes.
  • Video tutorial (preferably) or screen captures of the integration to be posted on our website.
  • A description of the different features/options the integration offers (to be listed in Cloudinary’s website/marketplace) – a separate form will be sent to collect this information.

When ready,submit your integration here: certifications@cloudinary.com.

Follow up

As part of the certification process, the Cloudinary Integration Team will check that the integration follows all the guidelines and requirements mentioned.

In some cases, additional information and clarifications might be requested. In such cases, the Cloudinary Integration Team will reach out to the contact person specified during submission.

The certification process can take up to 6 weeks. When complete, the Cloudinary Integration Team will reach out to the contact person to communicate the results of the certification process.

Certification Validity

Certifications will be evaluated yearly, if you make any substantial changes to your integration during this period, please contact us in order to re-certify the integration and prolong the validity of the certification. If Cloudinary makes any major product changes or any changes to the certification program, the Cloudinary Integration Team will reach out for re-certification.

back to top

Launch

Promote on your site and on Cloudinary’s webpage

Congratulations! You have successfully completed the certification process. Please contact the Cloudinary Integration Team at certifications@cloudinary.com for more information on how you can promote the joint solution.

back to top