---
title: Flavor Assets (Transcoded Renditions)
url: https://docs.kaltura.com/docs/rich-media-cms-apis/content-management/upload-ingestion-flavor-assets-transcoded-renditions
---

## Flavor Assets (Transcoded Renditions)


A "flavor" is a transcoded rendition of the source file (e.g., 360p, 720p, 1080p). Kaltura automatically creates flavors based on the account's conversion profile.

### flavorAsset.list -- List Flavors for an Entry


```
POST /api_v3/service/flavorAsset/action/list
```


| Parameter | Type | Description |
|-----------|------|-------------|
| `filter[entryIdEqual]` | string | The entry ID |

**Response:** List of `KalturaFlavorAsset` objects with `id`, `flavorParamsId`, `width`, `height`, `bitrate` (kbps), `size` (KB), `status`, `isOriginal`.


```bash
curl -X POST "$KALTURA_SERVICE_URL/service/flavorAsset/action/list" \
  -d "ks=$KALTURA_KS" \
  -d "format=1" \
  -d "filter[entryIdEqual]=$KALTURA_ENTRY_ID"
```


### flavorAsset.getFlavorAssetsWithParams


```
POST /api_v3/service/flavorAsset/action/getFlavorAssetsWithParams
```


Returns all flavor assets paired with their flavor params for an entry. Includes params without assets (not yet transcoded) and assets without params (custom uploads).

### flavorAsset.add + flavorAsset.setContent -- Upload a Custom Rendition


```bash
# Create a flavor asset on the entry
curl -X POST "$KALTURA_SERVICE_URL/service/flavorAsset/action/add" \
  -d "ks=$KALTURA_KS" \
  -d "format=1" \
  -d "entryId=$KALTURA_ENTRY_ID" \
  -d "flavorAsset[objectType]=KalturaFlavorAsset" \
  -d "flavorAsset[flavorParamsId]=0"

# Upload content to the flavor
curl -X POST "$KALTURA_SERVICE_URL/service/flavorAsset/action/setContent" \
  -d "ks=$KALTURA_KS" \
  -d "format=1" \
  -d "id=$FLAVOR_ASSET_ID" \
  -d "contentResource[objectType]=KalturaUploadedFileTokenResource" \
  -d "contentResource[token]=$UPLOAD_TOKEN_ID"
```


**Business scenario -- pre-transcoded content:** A broadcaster provides pre-transcoded renditions (already encoded at multiple bitrates). Upload each rendition as a separate flavor asset rather than re-transcoding.

### flavorAsset.convert / flavorAsset.reconvert


```bash
# Trigger conversion for a specific flavor params
curl -X POST "$KALTURA_SERVICE_URL/service/flavorAsset/action/convert" \
  -d "ks=$KALTURA_KS" \
  -d "format=1" \
  -d "entryId=$KALTURA_ENTRY_ID" \
  -d "flavorParamsId=$FLAVOR_PARAMS_ID"

# Re-convert an existing flavor asset
curl -X POST "$KALTURA_SERVICE_URL/service/flavorAsset/action/reconvert" \
  -d "ks=$KALTURA_KS" \
  -d "format=1" \
  -d "id=$FLAVOR_ASSET_ID"
```


### flavorAsset.getUrl -- Get Download URL


```
POST /api_v3/service/flavorAsset/action/getUrl
```


| Parameter | Type | Description |
|-----------|------|-------------|
| `id` | string | Flavor asset ID |
| `storageId` | int | Specific storage profile (optional) |
| `forceProxy` | bool | Route through proxy (optional) |

Returns a direct download URL string for that specific flavor.

### flavorAsset.export -- Export to Remote Storage


```bash
curl -X POST "$KALTURA_SERVICE_URL/service/flavorAsset/action/export" \
  -d "ks=$KALTURA_KS" \
  -d "format=1" \
  -d "assetId=$FLAVOR_ASSET_ID" \
  -d "storageProfileId=$STORAGE_PROFILE_ID"
```


### flavorAsset.setAsSource

Designates a specific flavor as the "original source" for the entry. Useful when you've uploaded a pre-transcoded rendition and want it treated as the source for further conversions.
