> ## Documentation Index
> This page is part of the Image and Video APIs product. Fetch the complete documentation index for Image and Video APIs at: https://cloudinary.com/documentation/llms-image-and-video-apis.txt?referrer=docpage and then use it to discover all relevant pages before exploring further.
> If your task extends beyond this product, fetch the top-level index covering all Cloudinary products and topics at: https://cloudinary.com/documentation/llms.txt?referrer=docpage

# Cloudinary Image & Video Release Notes: August 31, 2026



## Cloudinary Image

### Refer to existing images in your image generation prompts

A text prompt alone can't guarantee that a generated image features *your* product, *your* character, or *your* brand look. The [Image Generation API](image_generation_api_reference) now accepts one or more existing images alongside your prompt, so what you generate stays true to the source. 

Use this new `image_to_image` endpoint for use cases such as restyling, on-brand variants, character consistency, virtual try-on, and edit/extend. Reference images can be passed by URL or by the `asset_id` of an existing Cloudinary asset from your account, and are referenced positionally in the prompt as `[1]`, `[2]`, and so on.

**Example: Place a product from a reference image onto a new background**

```curl
curl -X POST https://api.cloudinary.com/v2/generate/<CLOUD_NAME>/image_to_image \
  -u "<API_KEY>:<API_SECRET>" \
  -H "Content-Type: application/json" \
  -d '{
    "prompt": "Place the product from [1] on a marble kitchen counter, soft morning light",
    "reference_images": [
      {
        "source_type": "url",
        "url": "https://res.cloudinary.com/demo/image/upload/v1784151459/docs/teapot-product.jpg"
      }
    ],
    "model": {
      "family": "nano-banana",
      "tier": "premium"
    },
    "target": {
      "target_type": "managed_asset",
      "public_id": "teapot-product/kitchen-counter"
    }
  }'
```

The generated image (from this reference image):

![A teapot product on a kitchen counter](https://res.cloudinary.com/demo/image/upload/v1784151641/teapot-product/kitchen-counter.png "with_code:false, thumb:c_scale,w_500/f_auto/q_auto")

[Learn more](image_generation_addon#generate_an_image_from_reference_images)

## Cloudinary Video

### Turn still images into video, now available on all accounts

Animate a product shot or a hero image without booking a shoot or opening an editing timeline. The [Image to Video Add-on](image_to_video_addon) (Beta), which uses AI to generate videos from your images, is now available to all accounts, in all geo regions.

You can subscribe on a self-service basis from the [Add-on Marketplace](cloudinary_add_ons) and generate videos from the **Image to Video** app in the [Cloudinary Console](https://console.cloudinary.com), or programmatically via the [Image to Video API](image_to_video_reference). Every account also receives a one-time allocation of free trial credits, so you can try the add-on before subscribing to an add-on plan. The size of the allocation depends on your Cloudinary plan.

![Image to Video app](https://cloudinary-res.cloudinary.com/image/upload/f_auto/q_auto/bo_1px_solid_grey/v1784575188/docs/video_player_studio/image-to-video-home.png "thumb: c_scale,w_700/dpr_2.0, width: 700, popup:true")

Learn more: [Image to Video add-on](image_to_video_addon) | [Image to Video API reference](image_to_video_reference)

### Make your video content searchable with AI Video Analysis

Your videos are invisible to screen readers, search engines, and tagging pipelines unless something describes what's actually on screen. The AI Video Analysis API (Beta) generates a visual transcription: timestamped, natural-language descriptions of what appears in each part of the video. Use it to describe video content for accessibility, and to make your media easier to reach through tagging and content-understanding workflows.

Submit a stored video asset, optionally guide the analysis with a prompt, and poll the asynchronous job until the generated `.visual.transcript` file is ready.

**Example: Generate a visual transcription for a stored video asset**

```curl
curl \
  -X POST \
  -H "Content-Type: application/json" \
  -d '{ \
    "video_asset_id": "<VIDEO_ASSET_ID>", \
    "visual_transcription_prompt": "focus on describing colors" \
  }' \
  https://<API_KEY>:<API_SECRET>@api.cloudinary.com/v2/video/<cloud_name>/ai_video_analysis
```

When the job completes, the generated `.visual.transcript` file contains timestamped descriptions of the video's visual content:

```json
[
  {
    "transcript": "A sea turtle with a dark brown shell and patterned flippers swims through the deep blue water, moving towards the camera.",
    "start_time": 0,
    "end_time": 4
  }
]
```

[Learn more](ai_video_analysis)

### Build video transformations visually with Video Canvas

Composing a multi-step video transformation usually means hand-writing a long URL or SDK command and reloading/rebuilding to see whether you got it right. Video Canvas (Beta) is a new visual, node-based editor for building video transformation pipelines in the Console. Drag blocks onto a canvas, connect them from input to output, and preview the result live, with no transformation URLs to write by hand. Save a pipeline as a reusable **applet** backed by a named transformation, then deliver it anywhere named transformations are supported. You can also create and manage applets programmatically with the [Video Canvas API](video_canvas_reference).

![A Video Canvas flow connecting a video input, transformation blocks, and a video output with a live preview](https://cloudinary-res.cloudinary.com/image/upload/f_auto/q_auto/bo_1px_solid_grey/v1784130121/docs/video_canvas/video_canvas_editor.png "thumb: w_540,dpr_2, width: 540, with_code:false, with_url:false")

[Learn more](video_canvas)

## Asset management and upload

### Let users upload from Box, OneDrive, and SharePoint

The Upload Widget now supports **Box**, **Microsoft OneDrive**, and **SharePoint** as new cloud storage sources, allowing your users to upload assets directly from their cloud storage without leaving your application.

Configure the new sources in your Upload Widget instance:

```javascript
cloudinary.openUploadWidget({
  cloudName: "your-cloud-name",
  sources: ["local", "url", "camera", "dropbox", "google_drive", "box", "onedrive", "sharepoint"],
  // ... other options
}, (error, result) => {
  if (!error && result && result.event === "success") {
    console.log("Upload successful:", result.info);
  }
});
```

The account administrator can also configure which sources are available in the Console via the [Media Library Preferences](dam_admin_media_library_options#upload).

[Learn more](upload_widget_reference)

### Track where remote uploads came from

Knowing where an asset originally came from matters for attribution, deduplication, and debugging. Uploads fetched from a remote URL now expose that URL to the pre-upload `eval` script as `resource_info.source_url` (e.g., when specifying a remote URL in an upload call or using a remote Upload widget source such as `url`, `google_drive`, or `dropbox`). 

**Example: Capture the originating URL into context**

```js
upload_options["context"] = "orig=" + resource_info.source_url;
```

[Learn more](upload_parameters#eval_method_syntax)

### Control metadata field visibility

Not every metadata field belongs in front of every Media Library user, and not every field should be searchable. You can now hide fields from the Media Library and exclude fields from all searches. 

The `restrictions` parameter for [metadata fields](admin_api#metadata_field_structure) now supports two more boolean options alongside the existing `readonly_ui`: 

* `hidden_ui`: Hides metadata fields in the Media Library only.
* `excluded_from_search`: Excludes the field from searches in both the Media Library and APIs.
 
Set either (or both, optionally with `readonly_ui`) when creating or updating a metadata field to control how it behaves.

**Example: Hide a field from the Media Library UI and exclude it from Media Library and API searches**

```curl
curl -X PUT \
  -H "Content-Type: application/json" \
  -d '{
    "restrictions": {
      "hidden_ui": true,
      "excluded_from_search": true
    }
  }' \
  https://<API_KEY>:<API_SECRET>@api.cloudinary.com/v1_1/<CLOUD_NAME>/metadata_fields/in_stock
```

[Learn more](admin_api#metadata_field_structure)

### Manage People Search programmatically with the new API

Until now, organizing the people detected in your assets was possible only in the Console. The new [People Search API](admin_api#people) lets you retrieve and manage that people-related data, detected through Cloudinary's facial recognition features, from your own code. Work with clusters of identified individuals and their associated images to organize, label, and refine your collections programmatically.

**Example: Get all people whose name starts with "john"**

```bash
curl -X GET \
  "https://api.cloudinary.com/v1_1/<CLOUD_NAME>/people?name_prefix=john" \
  -u "<API_KEY>:<API_SECRET>"
```

> **NOTE**: The People Search feature is a premium offering for Assets Enterprise, with availability depending on your account setup. If your account includes Assets Enterprise and People Search isn't yet enabled for your account, contact your Customer Success Manager.

[Learn more](admin_api#people)

## Account management

### Create an API key and assign its roles in one step

You can now handle everything related to API key creation in a single, simple UI. Clicking **Generate New API Key** opens a **Create API Key** dialog box where you name the key and assign the roles available to that API key before the key is created. Role choices are simplified to **Master Admin** and **Media Library User**, plus any available custom roles (Enterprise only), and you can mark whether the key is for standard development or an AI agent.

![The Create API Key dialog in the Console, showing the key name, roles, and key usage fields](https://cloudinary-res.cloudinary.com/image/upload/f_auto/q_auto/bo_1px_solid_grey/v1784918535/docs/api_keys/create_api_key_dialog.png "thumb: w_550,dpr_2, width:550, with_code:false, with_url:false")

[Learn more](product_environment_settings#managing_api_keys)

### Install the CLI your way

You can now install the CLI in whichever way fits your setup, including isolated installs with `pipx` or `uv`, or a Docker image that doesn't require a local Python installation.

Configuring the CLI is simpler too. Run `cld login` to authenticate through your browser with OAuth, so there's no need to copy API keys and secrets, and the CLI keeps your session refreshed automatically.

The latest version of the CLI also includes a new `cld agent signup` command that lets AI agents provision a Free-plan account on a human's behalf. You can then use other CLI commands to continue building with Cloudinary.

Learn more: [New CLI installation options](cloudinary_cli#installation_and_configuration) | [CLI agent signup](cloudinary_cli#agent_signup)

### Let AI agents build first. Claim the account later

AI agents can now provision a Claimable Cloud on a user's behalf with a single command, using the new [Claimable Cloud CLI and provisioning API](claimable_cloud_provisioning). The command provisions a working Claimable Cloud, saves the credentials, claim URL, and expiry time to the project's `.env` file, and prints the claim URL, with no signup and no authentication:

**Example: Provision a Claimable Cloud with a single command**

```bash
npx @cloudinary/cloud
```

The agent can start using the credentials right away. However, until the cloud is claimed by a human, media delivery is restricted to the IP addresses specified at provisioning (by default, the address the command runs from). The user claims the cloud as a permanent account by entering their email at the claim URL and confirming it from a verification email: this removes the delivery restriction and keeps the same credentials. The Claimable Cloud expires automatically if unclaimed. 

[Learn more](claimable_cloud_provisioning)

## Docs and demo apps

### Ship a working Next.js and Cloudinary app in one command

Get started with Next.js and Cloudinary faster than ever with the new Next.js Starter Kit. This ready-to-use, fully functional Next.js app comes with Cloudinary upload and delivery features out of the box, plus agentic tools to help you implement features using natural language in your IDE while following Cloudinary Next.js SDK best practices.

```
npx create-cloudinary-next
```

This CLI guides you through setup, configuring your Cloudinary credentials, and optionally installing AI assistant configuration files for tools like Cursor, GitHub Copilot, and Claude. Use it as an AI-assisted playground to explore the Next.js SDK and components, or as a starting point for your next project.

![The Next.js Starter Kit](https://cloudinary-res.cloudinary.com/image/upload/l_docs:my-cloudinary-next-app/fl_layer_apply,x_800,y_800/l_docs:nextjs-starter-kit-html/c_scale,w_1300/fl_layer_apply,x_1300,y_-300/f_auto/q_auto/docs/nextjs-starter-kit-cli-start.png "thumb: c_scale,w_700/dpr_2.0, width: 700")

[Learn more](nextjs_starter_kit)

### Search supported fonts for text overlays

The text layer fonts documentation now includes a searchable, sortable list of all fonts supported for text overlays, so you can quickly check whether a font is available and how to reference it. See the supported fonts for [images](image_text_layer_fonts#supported_fonts) and [videos](video_text_layer_fonts#supported_fonts).

### Set up Cloudinary in your project with a single prompt

The new [AI Power Start](ai_powerstart) page helps you get started with Cloudinary using an AI coding assistant, featuring the **Get Started** prompt. 

Paste the Get Started prompt in your IDE's AI coding assistant to run five stages in sequence: install Cloudinary MCP servers and skills, detect your stack, install the right Cloudinary SDK, help you configure your credentials in your `.env`, and validate uploads and delivery. Your agent pauses for confirmation at each step, so nothing runs without your approval.

After setup, your agent suggests next steps to help you continue building your project.

The AI Power Start page also explains the AI tools installed during setup and introduces the VS Code extension, which brings the Cloudinary Media Library into your IDE so you can manage assets without context switching. It also includes a variety of [more detailed prompts](ai_powerstart#keep_prompting) for building common Cloudinary use cases.

[Learn more](ai_powerstart)

## Announcements

### Save your seat for the Shopify integration webinar

Join Aaron Smedley and guests live on September 17, 2026 for a practical session on getting your Shopify media ready for your busiest weeks of the year.

[Save my seat](https://lp.cloudinary.com/wnr.lp.nap.get-holiday-season-ready.html)

### Dynamic video overlays deprecation

The `track_person` gravity value (`g_track_person`) and the dynamic video overlays feature built on it are deprecated and no longer function as of **August 29, 2026**. Be sure to remove these features from any production code.

> **TIP**: To keep an overlay on a video, position it with a [fixed gravity value](video_layer_placement#positioning_layers_with_gravity) instead. If you need viewers to interact with items in a video, use the video player's [interaction areas](video_player_interactive_videos#adding_interaction_areas).

[Learn more](transformation_reference#g_track_person)
