<!--
{
  "documentType" : "article",
  "framework" : "PhotoKit",
  "identifier" : "/documentation/PhotoKit/editing-asset-content",
  "metadataVersion" : "0.1.0",
  "role" : "article",
  "title" : "Editing Asset Content"
}
-->

# Editing Asset Content

Make a request to modify and save a photo or video asset.

## Discussion

For each photo asset, Photos keeps a previous and a current version of its image data, as well as a [`PHAdjustmentData`](/documentation/Photos/PHAdjustmentData) object that describes the last edit the user made to each asset’s content. Your app uses this information to support *resumable editing*.

When you begin editing an asset, Photos first asks whether your app can interpret the adjustment data from the most recent edit. If so, Photos provides the previous version of the asset as input for your editing session. After you read the adjustment data and reconstruct the edit it describes, your app might let the user alter or revert the last edit or make further changes. For example, adjustment data may describe filters applied to a photo. Your app reapplies those filters and allows the user to change filter parameters, add new filters, or remove filters.

If your app doesn’t support an asset’s adjustment data, Photos provides the current version of the asset as input to your editing session. The current version contains the rendered output of all past edits, so your app can further edit the asset but cannot alter or revert most recent edit.

To support continuity of editing between different apps and extensions, Photos keeps the current and previous versions of each asset, along with a [`PHAdjustmentData`](/documentation/Photos/PHAdjustmentData) object that describes the last edit. If your app supports the adjustment data from a previous edit, you can allow the user to revert or alter the edit.

> Note:
> For video assets, Photos doesn’t store a previous version. If your app cannot read a video asset’s adjustment data, you must work with the current version of the video. Future versions won’t be able to make use of your app’s adjustment data.

### Request a Content Editing Input

Call the asset’s [`requestContentEditingInput(with:completionHandler:)`](/documentation/Photos/PHAsset/requestContentEditingInput(with:completionHandler:)) method. The [`PHContentEditingInputRequestOptions`](/documentation/Photos/PHContentEditingInputRequestOptions) object you provide for the `options` parameter controls whether your app can handle the asset’s adjustment data. Photos calls your `completionHandler` block, providing a [`PHContentEditingInput`](/documentation/Photos/PHContentEditingInput) object you can use for retrieving the image or video data to be edited.

### Apply Your Edits Through a Content Editing Output

Apply your edits to the asset. To allow a user to continue working with your edits later, create a new [`PHAdjustmentData`](/documentation/Photos/PHAdjustmentData) object describing the changes.

### Create a Content Editing Output

Initialize a [`PHContentEditingOutput`](/documentation/Photos/PHContentEditingOutput) object. For photo- or video-only assets, use the editing output’s properties to provide edited asset data. For Live Photo assets, create a [`PHLivePhotoEditingContext`](/documentation/Photos/PHLivePhotoEditingContext) object to edit the Live Photo content.

### Commit Your Completed Edits

Commit your edits to the photo library by posting a change block to the shared [`PHPhotoLibrary`](/documentation/Photos/PHPhotoLibrary) object. In the block, create a [`PHAssetChangeRequest`](/documentation/Photos/PHAssetChangeRequest) object and set its [`contentEditingOutput`](/documentation/Photos/PHAssetChangeRequest/contentEditingOutput) property to the editing output that you created.

Each [`PHPhotoLibrary`](/documentation/Photos/PHPhotoLibrary) `performChanges` call prompts the user for permission to edit the contents of the photo library. To edit multiple assets in one batch, create multiple [`PHAssetChangeRequest`](/documentation/Photos/PHAssetChangeRequest) objects within the same change block, each with its own corresponding [`PHContentEditingOutput`](/documentation/Photos/PHContentEditingOutput) object.

---

Copyright &copy; 2026 Apple Inc. All rights reserved. | [Terms of Use](https://www.apple.com/legal/internet-services/terms/site.html) | [Privacy Policy](https://www.apple.com/privacy/privacy-policy)