<!--
{
  "availability" : [
    "iOS: 26.1.0 -",
    "iPadOS: 26.1.0 -",
    "macCatalyst: 27.0.0 -",
    "macOS: 27.0.0 -"
  ],
  "documentType" : "symbol",
  "framework" : "PhotoKit",
  "identifier" : "/documentation/Photos/PHAssetResourceUploadJobChangeRequest",
  "metadataVersion" : "0.1.0",
  "role" : "Class",
  "symbol" : {
    "kind" : "Class",
    "modules" : [
      "Photos"
    ],
    "preciseIdentifier" : "c:objc(cs)PHAssetResourceUploadJobChangeRequest"
  },
  "title" : "PHAssetResourceUploadJobChangeRequest"
}
-->

# PHAssetResourceUploadJobChangeRequest

Use within an application’s `com.apple.photos.background-upload` extension to create and change [`PHAssetResourceUploadJob`](/documentation/Photos/PHAssetResourceUploadJob) records.

```
class PHAssetResourceUploadJobChangeRequest
```

## Overview

When the extension’s principal class receives a call to `process` background uploads, it can create new [`PHAssetResourceUploadJob`](/documentation/Photos/PHAssetResourceUploadJob)s through calls to perform changes on a PHPhotoLibrary using [`PHAssetResourceUploadJobChangeRequest`](/documentation/Photos/PHAssetResourceUploadJobChangeRequest) and any in-flight upload jobs can be handled by updating their state to mark them as acknowledged, or to be retried. The maximum number of jobs that can be in flight is limited to the [`jobLimit`](/documentation/Photos/PHAssetResourceUploadJob/jobLimit).

[`PHAssetResourceUploadJobChangeRequest`](/documentation/Photos/PHAssetResourceUploadJobChangeRequest) can only be created or used within a photo library change block. For details on change blocks, see [`PHPhotoLibrary`](/documentation/Photos/PHPhotoLibrary).

## Topics

### Creating a change request

[`convenience init?(for: PHAssetResourceUploadJob)`](/documentation/Photos/PHAssetResourceUploadJobChangeRequest/init(for:))

Creates a request for modifying the specified upload job.

### Creating jobs

[`class func creationRequestForDownloadJob(resource: PHAssetResource) -> Self`](/documentation/Photos/PHAssetResourceUploadJobChangeRequest/creationRequestForDownloadJob(resource:))

Creates a download-only job request for the specified asset resource.

[`class func creationRequestForJob(destination: URLRequest, resource: PHAssetResource) -> Self`](/documentation/Photos/PHAssetResourceUploadJobChangeRequest/creationRequestForJob(destination:resource:))

Creates an asset resource upload job and returns the change request.

### Processing jobs

[`func acknowledge()`](/documentation/Photos/PHAssetResourceUploadJobChangeRequest/acknowledge())

Acknowledges a successful or failed job. Jobs must be acknowledged to free up space for [`jobLimit`](/documentation/Photos/PHAssetResourceUploadJob/jobLimit).

[`func retry(destination: URLRequest?)`](/documentation/Photos/PHAssetResourceUploadJobChangeRequest/retry(destination:))

Retries a job that is failed, unacknowledged, and has not been retried before. Successful retries also free up space for [`jobLimit`](/documentation/Photos/PHAssetResourceUploadJob/jobLimit).

[`func cancel()`](/documentation/Photos/PHAssetResourceUploadJobChangeRequest/cancel())

Cancels an upload job that is registered or pending.

### Accessing details about the job

[`var placeholderForCreatedAssetResourceUploadJob: PHObjectPlaceholder?`](/documentation/Photos/PHAssetResourceUploadJobChangeRequest/placeholderForCreatedAssetResourceUploadJob)

A placeholder for the asset resource upload job created by this request.

### Deprecated

[`class func createJob(destination: URLRequest, resource: PHAssetResource)`](/documentation/Photos/PHAssetResourceUploadJobChangeRequest/createJob(destination:resource:))

Creates an asset resource upload job.

### Initializers

[`convenience init?(forUploadJob: PHAssetResourceUploadJob)`](/documentation/Photos/PHAssetResourceUploadJobChangeRequest/init(forUploadJob:))

## Relationships

### Conforms To

[`Equatable`](/documentation/Swift/Equatable)

[`NSObjectProtocol`](/documentation/ObjectiveC/NSObjectProtocol)

[`Hashable`](/documentation/Swift/Hashable)

[`CustomDebugStringConvertible`](/documentation/Swift/CustomDebugStringConvertible)

[`CVarArg`](/documentation/Swift/CVarArg)

[`CustomStringConvertible`](/documentation/Swift/CustomStringConvertible)

### Inherits From

[`PHChangeRequest`](/documentation/Photos/PHChangeRequest)

---

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)