---
title: "Create a clip from a `renditions` VOD media"
method: PUT
path: "/v2/sites/{site_id}/media/{media_id}/clip/"
tags: ["media"]
---

# Create a clip from a \`renditions\` VOD media

`PUT /v2/sites/{site_id}/media/{media_id}/clip/`

## Request

- Base URL: `https://api.jwplayer.com`
- URL: `https://api.jwplayer.com/v2/sites/{site_id}/media/{media_id}/clip/`
- Auth: API key in header `Authorization`

Creates a new `renditions` (CMAF VOD) media by clipping an existing `renditions` VOD source. Clip in/out points are optional; if omitted, the full source media is captured. The new media inherits DRM settings from the source unless overridden in `metadata`. The DRM setting on the new media can also be updated at any time using the [update media endpoint](https://docs.jwplayer.com/platform/reference/patch_v2-sites-site-id-media-media-id).

## Path parameters

- `site_id` string, required: Unique identifier for a resource
- `media_id` string, required: Unique identifier for a resource

## Request body

- object
  - `clip_in_point` string: Clip start time. Accepts either an offset in `HH:MM:SS.mmm` format (e.g. `"00:01:30.500"`) or an ISO-8601 absolute datetime (e.g. `"2024-01-02T03:04:05.000Z"`). When both `clip_in_point` and `clip_out_point` are supplied they must use the same format, and if both are ISO-8601 they must both include or both omit a timezone.
  - `clip_out_point` string: Clip end time. Accepts either an offset in `HH:MM:SS.mmm` format (e.g. `"00:05:00.000"`) or an ISO-8601 absolute datetime (e.g. `"2024-01-02T03:04:10.000Z"`). When both `clip_in_point` and `clip_out_point` are supplied they must use the same format, and if both are ISO-8601 they must both include or both omit a timezone.
  - `metadata` MediaResourceMetadata
    - `title` string: Title of the media <br /><br /> A maximum of 5000 characters is permitted.
    - `description` string: Short explanation of the video content <br /><br /> A maximum of 25000 characters is permitted.
    - `author` string: Name of the author <br /><br /> A maximum of 256 characters is permitted.
    - `drm` boolean: Indicates whether DRM is enabled for a media item in a DRM-enabled site
    - `permalink` string: URL of the page where this media is published A maximum of 2048 characters is permitted.
    - `category` 'Automotive' | 'Books and Literature' | 'Business and Finance' | 'Careers' | 'Education' | 'Events and Attractions' | 'Family and Relationships' | 'Fine Art' | 'Food & Drink' | 'Healthy Living' | 'Hobbies & Interests' | 'Home & Garden' | 'Medical Health' | 'Movies' | 'Music and Audio' | 'News and Politics' | 'Personal Finance' | 'Pets' | 'Pop Culture' | 'Real Estate' | 'Religion & Spirituality' | 'Science' | 'Shopping' | 'Sports' | 'Style & Fashion' | 'Technology & Computing' | 'Television' | 'Travel' | 'Video Gaming': IAB category
    - `publish_start_date` string, date-time: Start date and time in ISO 8601 format when media is available for streaming
    - `publish_end_date` string, date-time: End date and time in ISO 8601 format when media is no longer available for streaming
    - `tags` string[]: User-generated labels used to classify a video Tags are case sensitive, and trailing whitespace is removed. When defining `tags`, include all the `tags` that should be associated with the target resource. When updating existing `tags`, include those already in use. Any `tags` not included within the updated `tags` in the request body will be deleted.
    - `language` 'aa' | 'ab' | 'ae' | 'af' | 'ak' | 'am' | 'an' | 'ar' | 'as' | 'av' | 'ay' | 'az' | 'ba' | 'be' | 'bg' | 'bh' | 'bi' | 'bm' | 'bn' | 'bo' | 'br' | 'bs' | 'ca' | 'ce' | 'ch' | 'co' | 'cr' | 'cs' | 'cu' | 'cv' | 'cy' | 'da' | 'de' | 'dv' | 'dz' | 'ee' | 'el' | 'en' | 'eo' | 'es' | 'et' | 'eu' | 'fa' | 'ff' | 'fi' | 'fj' | 'fo' | 'fr' | 'fy' | 'ga' | 'gd' | 'gl' | 'gn' | 'gu' | 'gv' | 'ha' | 'he' | 'hi' | 'ho' | 'hr' | 'ht' | 'hu' | 'hy' | 'hz' | 'ia' | 'id' | 'ie' | 'ig' | 'ii' | 'ik' | 'io' | 'is' | 'it' | 'iu' | 'ja' | 'jv' | 'ka' | 'kg' | 'ki' | 'kj' | 'kk' | 'kl' | 'km' | 'kn' | 'ko' | 'kr' | 'ks' | 'ku' | 'kv' | 'kw' | 'ky' | 'la' | 'lb' | 'lg' | 'li' | 'ln' | 'lo' | 'lt' | 'lu' | 'lv' | 'mg' | 'mh' | 'mi' | 'mk' | 'ml' | 'mn' | 'mr' | 'ms' | 'mt' | 'my' | 'na' | 'nb' | 'nd' | 'ne' | 'ng' | 'nl' | 'nn' | 'no' | 'nr' | 'nv' | 'ny' | 'oc' | 'oj' | 'om' | 'or' | 'os' | 'pa' | 'pi' | 'pl' | 'ps' | 'pt' | 'qu' | 'rm' | 'rn' | 'ro' | 'ru' | 'rw' | 'sa' | 'sc' | 'sd' | 'se' | 'sg' | 'si' | 'sk' | 'sl' | 'sm' | 'sn' | 'so' | 'sq' | 'sr' | 'ss' | 'st' | 'su' | 'sv' | 'sw' | 'ta' | 'te' | 'tg' | 'th' | 'ti' | 'tk' | 'tl' | 'tn' | 'to' | 'tr' | 'ts' | 'tt' | 'tw' | 'ty' | 'ug' | 'uk' | 'ur' | 'uz' | 've' | 'vi' | 'vo' | 'wa' | 'wo' | 'xh' | 'yi' | 'yo' | 'za' | 'zh' | 'zu': List of language codes to define a language. Uses ISO-639-1 language codes.
    - `custom_params` CustomParamSchema: User-generated key-value pairs When defining `custom_params`, include all custom parameters that should be associated with the target resource. When updating existing `custom_params`, include all `custom_params` keys with their updated values. Any `custom_params` key-value pair not included within the updated `custom_params` in the request body is [deleted](doc:stream-faq-how-can-i-delete-a-custom-parameter). **NOTE**: To assign a content type to a media item, set the `contentType` custom parameter to the name of a content type configured for the property. When updating an existing media item, do not send `contentType` alone. Include all existing `custom_params` key-value pairs in the PATCH request; any omitted pairs are deleted.

## Response `201`

Clipped media successfully created

- MediaResourceRead
  - `schema` string
  - `id` string: Unique identifier for a resource
  - `created` string: Date and time at which the resource was created
  - `last_modified` string: Date and time at which the resource was most recently modified
  - `type` string: Name of the type of resource.
  - `relationships` object: Ancilliary resources associated to the primary resource being read
    - `protection_rule` RelationshipRead
      - `id` string: Unique identifier for a resource
      - `type` string: Resource type
  - `metadata` MediaResourceReadMetadata
    - `title` string: Title of the media <br /><br /> A maximum of 5000 characters is permitted.
    - `description` string: Short explanation of the video content <br /><br /> A maximum of 25000 characters is permitted.
    - `author` string: Name of the author <br /><br /> A maximum of 256 characters is permitted.
    - `drm` boolean: Indicates whether DRM is enabled for a media item in a DRM-enabled site
    - `permalink` string: URL of the page where this media is published A maximum of 2048 characters is permitted.
    - `category` 'Automotive' | 'Books and Literature' | 'Business and Finance' | 'Careers' | 'Education' | 'Events and Attractions' | 'Family and Relationships' | 'Fine Art' | 'Food & Drink' | 'Healthy Living' | 'Hobbies & Interests' | 'Home & Garden' | 'Medical Health' | 'Movies' | 'Music and Audio' | 'News and Politics' | 'Personal Finance' | 'Pets' | 'Pop Culture' | 'Real Estate' | 'Religion & Spirituality' | 'Science' | 'Shopping' | 'Sports' | 'Style & Fashion' | 'Technology & Computing' | 'Television' | 'Travel' | 'Video Gaming': IAB category
    - `publish_start_date` string, date-time: Start date and time in ISO 8601 format when media is available for streaming
    - `publish_end_date` string, date-time: End date and time in ISO 8601 format when media is no longer available for streaming
    - `tags` string[]: User-generated labels used to classify a video Tags are case sensitive, and trailing whitespace is removed. When defining `tags`, include all the `tags` that should be associated with the target resource. When updating existing `tags`, include those already in use. Any `tags` not included within the updated `tags` in the request body will be deleted.
    - `language` 'aa' | 'ab' | 'ae' | 'af' | 'ak' | 'am' | 'an' | 'ar' | 'as' | 'av' | 'ay' | 'az' | 'ba' | 'be' | 'bg' | 'bh' | 'bi' | 'bm' | 'bn' | 'bo' | 'br' | 'bs' | 'ca' | 'ce' | 'ch' | 'co' | 'cr' | 'cs' | 'cu' | 'cv' | 'cy' | 'da' | 'de' | 'dv' | 'dz' | 'ee' | 'el' | 'en' | 'eo' | 'es' | 'et' | 'eu' | 'fa' | 'ff' | 'fi' | 'fj' | 'fo' | 'fr' | 'fy' | 'ga' | 'gd' | 'gl' | 'gn' | 'gu' | 'gv' | 'ha' | 'he' | 'hi' | 'ho' | 'hr' | 'ht' | 'hu' | 'hy' | 'hz' | 'ia' | 'id' | 'ie' | 'ig' | 'ii' | 'ik' | 'io' | 'is' | 'it' | 'iu' | 'ja' | 'jv' | 'ka' | 'kg' | 'ki' | 'kj' | 'kk' | 'kl' | 'km' | 'kn' | 'ko' | 'kr' | 'ks' | 'ku' | 'kv' | 'kw' | 'ky' | 'la' | 'lb' | 'lg' | 'li' | 'ln' | 'lo' | 'lt' | 'lu' | 'lv' | 'mg' | 'mh' | 'mi' | 'mk' | 'ml' | 'mn' | 'mr' | 'ms' | 'mt' | 'my' | 'na' | 'nb' | 'nd' | 'ne' | 'ng' | 'nl' | 'nn' | 'no' | 'nr' | 'nv' | 'ny' | 'oc' | 'oj' | 'om' | 'or' | 'os' | 'pa' | 'pi' | 'pl' | 'ps' | 'pt' | 'qu' | 'rm' | 'rn' | 'ro' | 'ru' | 'rw' | 'sa' | 'sc' | 'sd' | 'se' | 'sg' | 'si' | 'sk' | 'sl' | 'sm' | 'sn' | 'so' | 'sq' | 'sr' | 'ss' | 'st' | 'su' | 'sv' | 'sw' | 'ta' | 'te' | 'tg' | 'th' | 'ti' | 'tk' | 'tl' | 'tn' | 'to' | 'tr' | 'ts' | 'tt' | 'tw' | 'ty' | 'ug' | 'uk' | 'ur' | 'uz' | 've' | 'vi' | 'vo' | 'wa' | 'wo' | 'xh' | 'yi' | 'yo' | 'za' | 'zh' | 'zu': List of language codes to define a language. Uses ISO-639-1 language codes.
    - `custom_params` CustomParamSchema: User-generated key-value pairs When defining `custom_params`, include all custom parameters that should be associated with the target resource. When updating existing `custom_params`, include all `custom_params` keys with their updated values. Any `custom_params` key-value pair not included within the updated `custom_params` in the request body is [deleted](doc:stream-faq-how-can-i-delete-a-custom-parameter). **NOTE**: To assign a content type to a media item, set the `contentType` custom parameter to the name of a content type configured for the property. When updating an existing media item, do not send `contentType` alone. Include all existing `custom_params` key-value pairs in the PATCH request; any omitted pairs are deleted.
    - `external_id` string: Non-JWX ID for the media
  - `status` 'created' | 'processing' | 'ready' | 'updating' | 'failed': Media upload status
  - `media_type` 'audio' | 'video'
  - `hosting_type` 'external' | 'hosted' | 'renditions': Indicates whether JW Platform hosts and transcodes the media or not. Possible values: - `external`: The media is transcoded and hosted by a third-party - `hosted`: The media is transcoded and hosted by JW Platform - `renditions`: The media is transcoded by a third party but hosted on JW Platform
  - `mime_type` 'video/mp4' | 'video/webm' | 'video/flv' | 'audio/aac' | 'audio/mpeg' | 'audio/ogg' | 'application/vnd.apple.mpegurl' | 'application/smil+xml' | 'application/dash+xml' | 'video/flash'
  - `error_message` string: Message describing an issue uploading or processing the media
  - `external_id` string: Non-JWX ID for the media A maximum of 64 characters is permitted.
  - `duration` number: Length of the media in seconds
  - `trim_in_point` string: Starting point to trim the video
  - `trim_out_point` string: Ending point to trim the video
  - `source_url` string, nullable: URL of the source asset for externally hosted media Read-only. Set only for media with a `hosting_type` of `external`; `null` for all other hosting types.
  - `md5` string, nullable: MD5 hash of the media asset, as a 32-character hexadecimal string Read-only. `null` until JW Platform has processed the source asset, and for media whose source asset JW Platform does not process.

## Other responses

- `400`: Invalid JSON request body
- `404`: Resource with ID supplied does not exist in account and object namespace
- `422`: Unprocessable Entity

## Changes

- **2026-11-03** `9fad6bd5872e`: 1 breaking, 15 warning, 6 info
  - the `allOf[subschema #2]/metadata` response's property type changed from `object` to no type for status `201`
  - removed the request property `metadata/content_type`
  - removed the request property `metadata/duration`
  - removed the optional property `allOf[subschema #2]/metadata/author` from the response with the `201` status
  - …18 more

[Operation history](https://skmtc.dev/jwplayer/apis/management-api-v2/changes/v2/sites/:site_id/media/:media_id/clip/put.md)

---

[API](https://skmtc.dev/jwplayer/apis/management-api-v2.md) - [All operations](https://skmtc.dev/jwplayer/apis/management-api-v2/llms.txt) - [OpenAPI document](https://skmtc.dev/jwplayer/apis/management-api-v2/revisions/9fad6bd5872e?raw)
