Assets Delivery API (2025.02-experimental)

Download OpenAPI specification:Download

Assets

APIs for working with asset binaries

Returns web-optimized binary representation of the asset in the requested output format

The seo-name doesn't have a functional impact on the image, but is provided to allow for adding SEO value to asset URLs. The assetId is an opaque string defined by the content repository that can be used to target the asset resource.

In the URL construction, an SEO name and an output image format must be provided. Additionally, following transforms can optionally be specified as query parameters:

  • rotate
  • crop
  • flip
  • height
  • width
  • quality
  • smartcrop
  • blur
  • dpr
  • layers
  • sharpen

These are applied the order mentioned above, irrespective of where they appear in the URL. Syntax and examples for supported parameters is captured elsewhere in this document.

SecurityNone or Bearer
Request
path Parameters
assetId
required
string (AssetId) non-empty

ID of the asset

Example: urn:aaid:aem:1a034bee-ebda-4787-bad3-f924d0772b75
seoName
required
string([%.\w-]+)

any url-encoded or alphanumeric, non-whitespace set of characters. may contain hyphens and dots

Examples:
banner
format
required
string

output format

Enum: "gif" "png" "jpg" "jpeg" "webp"
Example: jpg
query Parameters
object or integer

Rotates the image or a specific layer by a fixed angle in clockwise direction. The rotation is performed around the center point of the image or layer.
Rotation angle must be a multiple of 90 degrees and can be either of '90', '180', or '270' degrees clockwise.
Examples without layer:

  • rotate=90 - Rotate final output image 90 degrees clockwise
  • rotate=180 - Rotate final output image 180 degrees
  • rotate=270 - Rotate final output image 270 degrees clockwise
Examples with layerName:
  • rotate[layerName]=90 - Rotate specific layer 90 degrees clockwise
  • rotate[layerName]=180 - Rotate specific layer 180 degrees
  • rotate[layerName]=270 - Rotate specific layer 270 degrees clockwise

Only one of `rotate` or `rotate[layerName]` should be used at a time.
object or Array of strings

Crop is specified by four comma-separated values, each a number with up to two digits after the decimal point, followed by p.
First two specify the origin (top, left) of the desired cropped region as percentages of width and height of the original image, respectively.
Last two specify the size of the cropped region relative to original dimensions of the asset.
A valid crop region MUST meet both of the following constraints:

  • <x-origin> + <crop-region-width> <= 100
  • <y-origin> + <crop-region-height> <=100
    Requests which don't meet aforementioned constraints will fail.
    Examples:
    • crop=10p,10p,50p,50p - Crop the final output image starting at 10% from top and left, taking 50% of width and height of the final output image
    • crop[layerName]=10p,10p,50p,50p - Crop a specific layer starting at 10% from top and left, taking 50% of width and height of the final output image

object or string

Flips (mirrors) the image or a specific layer horizontally, vertically, or both. This operation is useful for adjusting the orientation of content within layers.
Supported values:

  • h - Horizontal flip (left-to-right mirror)
  • v - Vertical flip (top-to-bottom mirror)
  • hv - Both horizontal and vertical flip

Examples without layer:
  • flip=h - Flip the final output image horizontally
  • flip=v - Flip the final output image vertically
  • flip=hv - Flip the final output image both horizontally and vertically
Examples with layerName:
  • flip[layerName]=h - Flip a specific layer horizontally
  • flip[layerName]=v - Flip a specific layer vertically
  • flip[layerName]=hv - Flip a specific layer both horizontally and vertically

Only one of `flip` or `flip[layerName]` should be used at a time.
object or integer

Specifies the width of the output image in pixels. This parameter allows you to control the horizontal dimension of either the final output image or a specific layer. The width must be a positive integer (minimum value: 1).
When used in combination with the height parameter, the aspect ratio of the original image is preserved. This means the actual output width may be smaller than the requested value to preserve aspect ratio.
Examples without layer:

  • width=200 - Set width of final output image to 200 pixels
Examples with layerName:
  • width[layerName]=200 - Set width of specific layer to 200 pixels

Only one of `width` or `width[layerName]` should be used at a time.
object or integer

Specifies the height of the image or a specific layer in pixels. When applied to the final output image or a layer, the image is scaled to match the specified height while maintaining the aspect ratio.
The value must be a positive integer (minimum: 1 pixel).
Examples without layer:

  • height=200 - Set height of final output image to 200 pixels
Examples with layerName:
  • height[layerName]=200 - Set height of specific layer to 200 pixels

Only one of `height` or `height[layerName]` should be used at a time.
object or integer

Specifies the compression quality for the image or a specific layer. Quality value ranges from 1 to 100, where 100 is the highest quality (least compression) and 1 is the lowest quality (highest compression).
A higher quality value results in better image quality but larger file size, while a lower value reduces file size at the cost of image quality.
Examples without layer:

  • quality=85 - Set quality of final output image to 85%
Examples with layerName:
  • quality[layerName]=85 - Set quality of specific layer to 85%

Only one of `quality` or `quality[layerName]` should be used at a time.
object or string

Applies intelligent cropping to automatically identify and preserve visually most important areas of the image for a given crop-region. This operation uses AI-powered content-aware cropping to ensure that key elements like faces, text, or focal points are retained in the output.
The smartcrop parameter expects that named-smartcrop-profiles exist and have been applied to the asset. Those predefined profile names - specifying the target dimensions and aspect ratio of the cropped image - can be supplied as values of this parameter. The cropping can be applied either to a specific layer or to the final output image.
Examples without layer:

  • smartcrop=QHD - Apply a smartcrop profile named QHD to final output image
Examples with layerName:
  • smartcrop[layerName]=QHD - Apply a smartcrop profile named QHD to a specific layer

Only one of `smartcrop` or `smartcrop[layerName]` should be used at a time. Specifying an unresolvable smartcrop profile-name (the one that hasn't been defined, or hasn't been applied to the asset being requested) will lead to an error response.
object or boolean

Applies a sharpening filter to enhance the edges and details in the image. The sharpening is applied either to a specific layer or to the final output image after all scaling operations are complete.
When enabled, this operation increases the contrast between adjacent pixels to make the image appear more crisp and detailed.
Examples without layerName:

  • sharpen=true - Apply sharpening to the final output image
Examples with layerName:
  • sharpen[layerName]=true - Apply sharpening to a specific layer

Only one of `sharpen` or `sharpen[layerName]` should be used at a time.
object or integer

Applies a blur filter to soften the image. The blur can be applied either to a specific layer (when layerName is provided) or to the final output image (when no layerName is specified). The radius parameter determines the strength of the blur effect in pixels relative to the final output image, with a value between 0 and 100 pixels.
Examples without layerName:

  • blur=5 - Apply a blur filter to the final output image with a radius of 5 pixels
Examples with layerName:
  • blur[layerName]=5 - Apply a blur filter to a specific layer with a radius of 5 pixels
object or number

Device Pixel Ratio (DPR) (also known as CSS pixel ratio) is the relation between a device's physical pixels and logical pixels.
Enabling Device Pixel Ratio optimization with HTML5 Responsive Imaging techniques renders the image at the native resolution of the screen which makes it sharp. For more information about DPR and how it affects image resolution, see: https://developer.mozilla.org/en-US/docs/Web/API/Window/devicePixelRatio
Examples without layerName:

  • dpr=2 - Renders the final output image at twice the requested dimensions to support high-DPI displays
Examples with layerName:
  • dpr[layerName]=2 - Renders a specific layer at twice the requested dimensions to support high-DPI displays

layers
string

The layers to be included in the response, separated by the | character. The layer name is case-sensitive.
layer names can have any alphanumeric characters (a-z, A-Z, 0-9). base is reserved for the base layer. The base layer will always be the lowermost layer (even if specified in the layers parameter at any other position) and will always be included (even if omitted from the layers parameter)
i.e., layers=base|mid|top, layers=mid|top and layers=mid|base|top are all equivalent, and the recommendation is to follow either the first or the second pattern.
Nested layers are not supported, and the layers parameter can not applied to any other layer. e.g., layers=top&layers[top]=top1|top2 is invalid.

Examples:
a request for a final output image composed of two layers.
layers=top
a request for a final output image composed of three layers.
layers=base|mid|top
a request for a final output image composed of three layers, but the base layer is omitted.
layers=mid|top
attachment
string

use content-disposition header to force download prompt, if true

Enum: "true" "1" "false" "0"
Example: attachment=true
header Parameters
If-None-Match
string

The If-None-Match header field makes the request method conditional on a recipient cache or origin server either not having any current representation of the target resource, when the field value is "*", or having a selected representation with an entity tag that does not match any of those listed in the field value.

For more details, please head over to RFC9110.

Responses
200

Web-optimized version of the asset

400

Bad Request. The Problem Details object will provide more information about the exact cause.

401

Unauthorized

403

Forbidden

404

Not Found

get/{assetId}/as/{seoName}.{format}
Request samples
Response samples
application/problem+json
{}

Returns a web-optimized binary representation of the asset

This is a convenience API for /adobe/assets/{assetId}/as/{seoname}.{format}?... that applies following defaults:

  • format => jpeg/webp (auto-determined via server-driven-content-negotiation, based on agent-declared capabilities)
  • quality => 65
  • width => 1024
SecurityNone or Bearer
Request
path Parameters
assetId
required
string (AssetId) non-empty

ID of the asset

Example: urn:aaid:aem:1a034bee-ebda-4787-bad3-f924d0772b75
header Parameters
If-None-Match
string

The If-None-Match header field makes the request method conditional on a recipient cache or origin server either not having any current representation of the target resource, when the field value is "*", or having a selected representation with an entity tag that does not match any of those listed in the field value.

For more details, please head over to RFC9110.

Responses
200

Web-optimized version of the asset

304

Not Modified

400

Bad Request. The Problem Details object will provide more information about the exact cause.

401

Unauthorized

403

Forbidden

404

Not Found

get/{assetId}
Request samples
Response samples
application/problem+json
{}

Returns the originally uploaded binary for the asset

The Original Asset Delivery API accepts an asset ID corresponding to the asset and delivers the bitstream as-is (as it was uploaded). This is a convenience API for /adobe/assets/{assetId}/renditions/{renditionName}/as/{seoname} with renditionName defaulting to original.

SecurityNone or Bearer
Request
path Parameters
assetId
required
string (AssetId) non-empty

ID of the asset

Example: urn:aaid:aem:1a034bee-ebda-4787-bad3-f924d0772b75
seoName
required
string([%.\w-]+)

any url-encoded or alphanumeric, non-whitespace set of characters. may contain hyphens and dots

Examples:
banner
header Parameters
If-None-Match
string

The If-None-Match header field makes the request method conditional on a recipient cache or origin server either not having any current representation of the target resource, when the field value is "*", or having a selected representation with an entity tag that does not match any of those listed in the field value.

For more details, please head over to RFC9110.

Responses
200

Original binary of the asset

304

Not Modified

400

Bad Request. The Problem Details object will provide more information about the exact cause.

401

Unauthorized

403

Forbidden

404

Not Found

get/{assetId}/original/as/{seoName}
Request samples
Response samples
application/problem+json
{}

Returns a pre-generated (on AEM Assets authoring environment) rendition of the asset

The Asset Rendition Delivery API accepts an asset ID corresponding to the asset and the rendition name, and delivers the selected asset's specified rendition's bitstream as-is (as present on AEM Assets authoring environment).

SecurityNone or Bearer
Request
path Parameters
assetId
required
string (AssetId) non-empty

ID of the asset

Example: urn:aaid:aem:1a034bee-ebda-4787-bad3-f924d0772b75
renditionName
required
string([%.\w-]+)

any url-encoded or alphanumeric, non-whitespace set of characters that need to match one of the renditions uploaded/created for the specified asset. may contain hyphens and dots

Examples:
banner
seoName
required
string([%.\w-]+)

any url-encoded or alphanumeric, non-whitespace set of characters. may contain hyphens and dots

Examples:
banner
query Parameters
attachment
string

use content-disposition header to force download prompt, if true

Enum: "true" "1" "false" "0"
Example: attachment=true
header Parameters
If-None-Match
string

The If-None-Match header field makes the request method conditional on a recipient cache or origin server either not having any current representation of the target resource, when the field value is "*", or having a selected representation with an entity tag that does not match any of those listed in the field value.

For more details, please head over to RFC9110.

Responses
200

Binary of the specified rendition for the selected asset

304

Not Modified

400

Bad Request. The Problem Details object will provide more information about the exact cause.

401

Unauthorized

403

Forbidden

404

Not Found

get/{assetId}/renditions/{renditionName}/as/{seoName}
Request samples
Response samples
application/problem+json
{}

Returns a list of static renditions of an asset

The List Renditions API accepts an asset ID and returns the static renditions associated with the asset. A success response includes list of available renditions and their attributes.

SecurityBearer
Request
path Parameters
assetId
required
string (AssetId) non-empty

ID of the asset

Example: urn:aaid:aem:1a034bee-ebda-4787-bad3-f924d0772b75
header Parameters
If-None-Match
string

The If-None-Match header field makes the request method conditional on a recipient cache or origin server either not having any current representation of the target resource, when the field value is "*", or having a selected representation with an entity tag that does not match any of those listed in the field value.

For more details, please head over to RFC9110.

Responses
200

List of available renditions

304

Not Modified

400

Bad Request. The Problem Details object will provide more information about the exact cause.

401

Unauthorized

403

Forbidden

404

Not Found

get/{assetId}/renditions
Request samples
Response samples
application/json
{
  • "assetId": "urn:aaid:aem:1a034bee-ebda-4787-bad3-f924d0772b75",
  • "repo:name": "string",
  • "items": [
    ]
}

Head request for list of static renditions of an asset

Returns headers, including an ETag for the specified asset, which can be a lighter method of checking for the change in list of static renditions, without sending a full GET request.

SecurityBearer
Request
path Parameters
assetId
required
string (AssetId) non-empty

ID of the asset

Example: urn:aaid:aem:1a034bee-ebda-4787-bad3-f924d0772b75
Responses
200

OK

400

Bad Request. The Problem Details object will provide more information about the exact cause.

401

Unauthorized

403

Forbidden

404

Not Found

head/{assetId}/renditions
Request samples
Response samples
application/problem+json
{}

Returns a list of smart crops of an asset

The List Smart Crop API accepts an asset ID and retrieves the associated smart crops for the specified asset. A successful response returns a list of smart crops along with their attributes, providing details such as dimensions.

NOTE: This API is used by Adobe's Content Hub application. Using this API directly isn’t covered in Adobe Support agreements.

SecurityBearer
Request
path Parameters
assetId
required
string (AssetId) non-empty

ID of the asset

Example: urn:aaid:aem:1a034bee-ebda-4787-bad3-f924d0772b75
query Parameters
limit
integer <int32> (Limit) [ 1 .. 50 ]

For a paginated request, this parameter defines the maximum number of items to retrieve.

cursor
string (Cursor) non-empty

A cursor is an opaque string that can be used in API calls which support paginating the response. A non-existent cursor signifies that the returned list does not have more elements.

header Parameters
If-None-Match
string

The If-None-Match header field makes the request method conditional on a recipient cache or origin server either not having any current representation of the target resource, when the field value is "*", or having a selected representation with an entity tag that does not match any of those listed in the field value.

For more details, please head over to RFC9110.

Responses
200

List of smart crops

304

Not Modified

400

Bad Request. The Problem Details object will provide more information about the exact cause.

401

Unauthorized

403

Forbidden

404

Not Found

get/{assetId}/smartCrops
Request samples
Response samples
application/json
{
  • "assetId": "urn:aaid:aem:1a034bee-ebda-4787-bad3-f924d0772b75",
  • "repo:name": "string",
  • "items": [
    ],
  • "cursor": "string"
}

Head request for list of smart crops of an asset

Returns headers, including an ETag for the specified asset, which can be a lighter method of checking for the change in list of smart crops, without sending a full GET request.

NOTE: This API is used by Adobe's Content Hub application. Using this API directly isn’t covered in Adobe Support agreements.

SecurityBearer
Request
path Parameters
assetId
required
string (AssetId) non-empty

ID of the asset

Example: urn:aaid:aem:1a034bee-ebda-4787-bad3-f924d0772b75
Responses
200

OK

400

Bad Request. The Problem Details object will provide more information about the exact cause.

401

Unauthorized

403

Forbidden

404

Not Found

head/{assetId}/smartCrops
Request samples
Response samples
application/problem+json
{}

Returns the originally uploaded binary for the asset.Deprecated

The Original Asset Delivery API accepts an asset ID corresponding to the asset and delivers the bitstream as-is (as it was uploaded).

This API is deprecated, please use /adobe/assets/{assetId}/original/as/{seo-name}

SecurityNone or Bearer
Request
path Parameters
assetId
required
string (AssetId) non-empty

ID of the asset

Example: urn:aaid:aem:1a034bee-ebda-4787-bad3-f924d0772b75
seoName
required
string([%.\w-]+)

any url-encoded or alphanumeric, non-whitespace set of characters. may contain hyphens and dots

Examples:
banner
header Parameters
If-None-Match
string

The If-None-Match header field makes the request method conditional on a recipient cache or origin server either not having any current representation of the target resource, when the field value is "*", or having a selected representation with an entity tag that does not match any of those listed in the field value.

For more details, please head over to RFC9110.

Responses
200

Original binary of the asset

304

Not Modified

400

Bad Request. The Problem Details object will provide more information about the exact cause.

401

Unauthorized

403

Forbidden

404

Not Found

get/deliver/{assetId}/{seoName}
Request samples
Response samples
application/problem+json
{}

Search for activated assets based on specified criteria

Search Activated Assets

SecurityBearer and ApiKeyAuth
Request
Request Body schema: application/json
required
required
Array of OrQuery (object) or AndQuery (object) or NotQuery (object) or MatchQuery (object) or TermQuery (object) or RangeQuery (object) (CompositeQuery) [ 1 .. 5 ] items

List of Composite query. CompositeQueries in this list are AND'd.

orderBy
string (OrderBy) non-empty

The value of an orderBy parameter contains a comma-separated list of expressions used to sort the items.

The expression may include the suffix asc for ascending or desc for descending, separated from the property name by one or more spaces. If asc or desc is not specified, the service will order by the specified property in ascending order.

Items will be sorted by the result values of the first expression; items with the same value for the first expression are sorted by the result value of the second expression and so on. The sort order is the inherent order for the type of the property.

limit
integer <int32> (Limit) [ 1 .. 50 ]

For a paginated request, this parameter defines the maximum number of items to retrieve.

cursor
string (Cursor) non-empty

A cursor is an opaque string that can be used in API calls which support paginating the response. A non-existent cursor signifies that the returned list does not have more elements.

Responses
200

Asset Search Response

400

Bad Request. The Problem Details object will provide more information about the exact cause.

401

Unauthorized

403

Forbidden

500

The server encountered an unexpected error. Retrying the request after a certain time could help.

post/search
Request samples
application/json
{
  • "query": [
    ],
  • "orderBy": "metadata.repositoryMetadata.repo:size desc,metadata.repositoryMetadata.repo:createDate asc",
  • "limit": 50
}
Response samples
application/json
{
  • "hits": {
    },
  • "cursor": "[\"45600323\",1478539971]",
  • "search_metadata": {
    }
}

Create a token for asset search, analytics, and settings.

Create short-lived token with access restrictions for searching assets and performing operations on specified indexes.

SecurityBearer
Request
header Parameters
X-Adobe-Accept-Experimental
required
integer
Value: 1
Request Body schema: application/json
required
indexes
required
Array of strings

Specify indexes to grant access to.

Items Enum: "assets" "collections" "linkshares" "querysuggestions"
operationType
required
string

Specifiy the type of operation.

Enum: "search" "analytics" "settings"
Responses
200

The API returns a token along with its validity.

400

Bad Request. The Problem Details object will provide more information about the exact cause.

401

Unauthorized

403

Forbidden

500

The server encountered an unexpected error. Retrying the request after a certain time could help.

post/search/token
Request samples
application/json
{
  • "indexes": [
    ],
  • "operationType": "search"
}
Response samples
application/json
{
  • "token": "YTgyMzMwOTkzMjA2Mzk5OWUxNjhjYmIwMGZkNGFmMzk2NDU3ZjMyYTg1NThiZjgx",
  • "expiryTime": "2024-02-28T21:39:02.417-0800",
  • "appId": "5HEOA9BAT1"
}

Metadata

APIs for working with asset metadata

Head request for asset metadata

Returns headers, including an ETag for the specified asset metadata, which can be a lighter method of checking for the existence of, or validating a cached version of an asset's metadata without sending a full GET request.

SecurityNone or Bearer
Request
path Parameters
assetId
required
string non-empty

ID of the asset to access

Examples:
urn:aaid:aem:1a034bee-ebda-4787-bad3-f924d0772b75
Responses
200

OK

400

Bad Request. The Problem Details object will provide more information about the exact cause.

401

Unauthorized

403

Forbidden

404

Not Found

head/{assetId}/metadata
Request samples
Response samples
application/problem+json
{}

Delivers the specified asset's metadata

Asset metadata contains those metadata values that have been extracted from the asset, configured by the user, or derived from the asset during asset processing. Repository metadata contains metadata properties that are set and maintained by the repository during system operations.

SecurityNone or Bearer
Request
path Parameters
assetId
required
string non-empty

ID of the asset to access

Examples:
urn:aaid:aem:1a034bee-ebda-4787-bad3-f924d0772b75
header Parameters
If-None-Match
string

The If-None-Match header field makes the request method conditional on a recipient cache or origin server either not having any current representation of the target resource, when the field value is "*", or having a selected representation with an entity tag that does not match any of those listed in the field value.

For more details, please head over to RFC9110.

Responses
200

Metadata for the specified asset

304

Not Modified

400

Bad Request. The Problem Details object will provide more information about the exact cause.

401

Unauthorized

403

Forbidden

404

Not Found

get/{assetId}/metadata
Request samples
Response samples
application/json
{
  • "value": {
    }
}

Videos

APIs for working with videos

Delivers the Player container for specified Video asset.

The Delivery API accepts an assetId, and if the ID corresponds to a video asset, delivers Player for video streaming. The asset ID is an opaque string defined by the content repository. The entity composing the Delivery URLs must know them apriori.

SecurityNone or Bearer
Request
path Parameters
assetId
required
string (AssetId) non-empty

ID of the asset

Example: urn:aaid:aem:1a034bee-ebda-4787-bad3-f924d0772b75
Responses
200

Response Video in Player.

400

Bad Request. The Problem Details object will provide more information about the exact cause.

401

Unauthorized

403

Forbidden

404

Not Found

get/{assetId}/play
Request samples
Response samples
application/problem+json
{}

Delivers the playback manifests for specified Video asset in the selected output format.

The Delivery API accepts an asset ID, and if the ID corresponds to a video asset, delivers the playback manifest in the requested protocol. The asset ID is an opaque string defined by the content repository. The entity composing the Delivery URLs must know them apriori. If the asset is not a video asset, client gets a 404 response.

SecurityNone or Bearer
Request
path Parameters
assetId
required
string (AssetId) non-empty

ID of the asset

Example: urn:aaid:aem:1a034bee-ebda-4787-bad3-f924d0772b75
format
required
string (VideoManifestFormatParam)

Desired Playback manifest format

Enum: "m3u8" "mpd"
Example: m3u8
Responses
200

Response Video Manifests in selected format

304

Not Modified

400

Bad Request. The Problem Details object will provide more information about the exact cause.

401

Unauthorized

403

Forbidden

404

Not Found

get/{assetId}/manifest.{format}
Request samples
Response samples
application/problem+json
{}

Image Presets

APIs for working with image presets

Returns a list of image presets

The List Image Presets API returns the image presets configured for the given tenant. A successful response includes a list of available image presets and their attributes.

NOTE: This API is used by Adobe's Content Hub application. Using this API directly isn’t covered in Adobe Support agreements.

SecurityBearer
Request
query Parameters
limit
integer <int32> (Limit) [ 1 .. 50 ]

For a paginated request, this parameter defines the maximum number of items to retrieve.

cursor
string (Cursor) non-empty

A cursor is an opaque string that can be used in API calls which support paginating the response. A non-existent cursor signifies that the returned list does not have more elements.

header Parameters
If-None-Match
string

The If-None-Match header field makes the request method conditional on a recipient cache or origin server either not having any current representation of the target resource, when the field value is "*", or having a selected representation with an entity tag that does not match any of those listed in the field value.

For more details, please head over to RFC9110.

Responses
200

List of available image presets

304

Not Modified

401

Unauthorized

403

Forbidden

get/imagePresets
Request samples
Response samples
application/json
{
  • "cursor": "123",
  • "items": [
    ]
}

Collections

APIs for working with asset collections

Create a collection

Creates a collection that represents a group of Asset(s) and/or Collection(s).

NOTE: This API is used by Adobe's Content Hub application. Using this API directly isn’t covered in Adobe Support agreements.

SecurityBearer
Request
Request Body schema: application/json
required
title
required
string non-empty

Title of the Collection

description
string

A short description of the Collection

required
Array of objects

The items in the Collection

Responses
201

Returns information on the recently created collection, including its metadata.

202

Accepted

400

Bad Request. The Problem Details object will provide more information about the exact cause.

401

Unauthorized

403

Forbidden

post/collections
Request samples
application/json
{
  • "title": "Product Images",
  • "description": "Images approved for use in the product catalog",
  • "items": [
    ]
}
Response samples
application/json
{
  • "id": "urn:cid:aem:1a034bee-ebda-4787-bad3-f924d0772b75",
  • "repositoryMetadata": {
    },
  • "collectionMetadata": {
    }
}

List all Collections

Retrieves all the Collections available in the repository.

NOTE: This API is used by Adobe's Content Hub application. Using this API directly isn’t covered in Adobe Support agreements.

SecurityBearer
Request
query Parameters
limit
integer <int32> (Limit) [ 1 .. 50 ]

For a paginated request, this parameter defines the maximum number of items to retrieve.

cursor
string (Cursor) non-empty

A cursor is an opaque string that can be used in API calls which support paginating the response. A non-existent cursor signifies that the returned list does not have more elements.

Responses
200

Collections retrieved successfully

400

Bad Request. The Problem Details object will provide more information about the exact cause.

401

Unauthorized

403

Forbidden

get/collections
Request samples
Response samples
application/json
{
  • "cursor": "string",
  • "items": [
    ]
}

Retrieve a Collection's Metadata

Retrieves collection metadata for a given collection id along with Etag representing the current state of the collection.

NOTE: This API is used by Adobe's Content Hub application. Using this API directly isn’t covered in Adobe Support agreements.

SecurityBearer
Request
path Parameters
collectionId
required
string (CollectionId) non-empty

ID of the collection

Example: urn:cid:aem:1a034bee-ebda-4787-bad3-f924d0772b75
header Parameters
If-None-Match
string

The If-None-Match header field makes the request method conditional on a recipient cache or origin server either not having any current representation of the target resource, when the field value is "*", or having a selected representation with an entity tag that does not match any of those listed in the field value.

For more details, please head over to RFC9110.

X-Adobe-Accept-Experimental
required
integer
Value: 1
Responses
200

Collection Metadata Retrieved successfully

304

Not Modified

400

Bad Request. The Problem Details object will provide more information about the exact cause.

401

Unauthorized

403

Forbidden

404

Not Found

get/collections/{collectionId}
Request samples
Response samples
application/json
{
  • "id": "urn:cid:aem:1a034bee-ebda-4787-bad3-f924d0772b75",
  • "repositoryMetadata": {
    },
  • "collectionMetadata": {
    }
}

Head request for a collection metadata

Returns headers, including an ETag for the specified collection, which can be a lighter method of checking for the existence of, or validating a cached version of an collection without sending a full GET request.

NOTE: This API is used by Adobe's Content Hub application. Using this API directly isn’t covered in Adobe Support agreements.

SecurityNone or Bearer
Request
path Parameters
collectionId
required
string (CollectionId) non-empty

ID of the collection

Example: urn:cid:aem:1a034bee-ebda-4787-bad3-f924d0772b75
Responses
200

OK

400

Bad Request. The Problem Details object will provide more information about the exact cause.

401

Unauthorized

403

Forbidden

404

Not Found

head/collections/{collectionId}
Request samples
Response samples
application/problem+json
{}

Delete a Collection

Deletes a collection for a given collection id. If the delete operation requires more than a few seconds to complete, a status link with the jobId is returned in the response header that can be used to check the status.

NOTE: This API is used by Adobe's Content Hub application. Using this API directly isn’t covered in Adobe Support agreements.

SecurityBearer
Request
path Parameters
collectionId
required
string (CollectionId) non-empty

ID of the collection

Example: urn:cid:aem:1a034bee-ebda-4787-bad3-f924d0772b75
header Parameters
If-Match
required
string

The If-Match header field makes the request method conditional on the recipient origin server either having at least one current representation of the target resource, when the field value is "*", or having a current representation of the target resource that has an entity tag matching a member of the list of entity tags provided in the field value.

For more details, please head over to RFC9110.

Responses
202

Accepted

204

Collection deleted successfully.

400

Bad Request. The Problem Details object will provide more information about the exact cause.

401

Unauthorized

403

Forbidden

404

Not Found

412

Precondition Failed

428

Precondition Required

delete/collections/{collectionId}
Request samples
Response samples
application/problem+json
{}

Update a collection's metadata

Updates the metadata for a given collection id.

NOTE: This API is used by Adobe's Content Hub application. Using this API directly isn’t covered in Adobe Support agreements.

SecurityBearer
Request
path Parameters
collectionId
required
string (CollectionId) non-empty

ID of the Collection

Example: urn:cid:aem:1a034bee-ebda-4787-bad3-f924d0772b75
header Parameters
If-Match
required
string

The If-Match header field makes the request method conditional on the recipient origin server either having at least one current representation of the target resource, when the field value is "*", or having a current representation of the target resource that has an entity tag matching a member of the list of entity tags provided in the field value.

For more details, please head over to RFC9110.

Request Body schema: application/json-patch+json
title
string non-empty

Title of the Collection

description
string

A short description of the Collection

Responses
204

No Content

400

Bad Request. The Problem Details object will provide more information about the exact cause.

401

Unauthorized

403

Forbidden

404

Not Found

412

Precondition Failed

428

Precondition Required

post/collections/{collectionId}
Request samples
application/json-patch+json
{
  • "title": "New Title",
  • "description": "New Description"
}
Response samples
application/problem+json
{}

Get collection items

Retrieve a paginated list of the items in the specified collection.

NOTE: This API is used by Adobe's Content Hub application. Using this API directly isn’t covered in Adobe Support agreements.

SecurityBearer
Request
path Parameters
collectionId
required
string (CollectionId) non-empty

ID of the collection

Example: urn:cid:aem:1a034bee-ebda-4787-bad3-f924d0772b75
query Parameters
limit
integer <int32> (Limit) [ 1 .. 50 ]

For a paginated request, this parameter defines the maximum number of items to retrieve.

cursor
string (Cursor) non-empty

A cursor is an opaque string that can be used in API calls which support paginating the response. A non-existent cursor signifies that the returned list does not have more elements.

header Parameters
If-None-Match
string

The If-None-Match header field makes the request method conditional on a recipient cache or origin server either not having any current representation of the target resource, when the field value is "*", or having a selected representation with an entity tag that does not match any of those listed in the field value.

For more details, please head over to RFC9110.

X-Adobe-Accept-Experimental
required
integer
Value: 1
Responses
200

Collection Retrieved successfully

304

Not Modified

400

Bad Request. The Problem Details object will provide more information about the exact cause.

401

Unauthorized

403

Forbidden

404

Not Found

get/collections/{collectionId}/items
Request samples
Response samples
application/json
{
  • "cursor": "string",
  • "self": [
    ],
  • "items": [
    ]
}

Head request for collection items

Returns headers, including an ETag for the specified assets collection, which can be a lighter method of checking for the existence of, or validating a cached version of an collection without sending a full GET request.

NOTE: This API is used by Adobe's Content Hub application. Using this API directly isn’t covered in Adobe Support agreements.

SecurityNone or Bearer
Request
path Parameters
collectionId
required
string (CollectionId) non-empty

ID of the collection

Example: urn:cid:aem:1a034bee-ebda-4787-bad3-f924d0772b75
query Parameters
limit
integer <int32> (Limit) [ 1 .. 50 ]

For a paginated request, this parameter defines the maximum number of items to retrieve.

cursor
string (Cursor) non-empty

A cursor is an opaque string that can be used in API calls which support paginating the response. A non-existent cursor signifies that the returned list does not have more elements.

Responses
200

OK

400

Bad Request. The Problem Details object will provide more information about the exact cause.

401

Unauthorized

403

Forbidden

404

Not Found

head/collections/{collectionId}/items
Request samples
Response samples
application/problem+json
{}

Update collection items

If the update operation requires more than a few seconds to complete, response includes a Location header which contains the URL to poll for status of this operation.

NOTE: This API is used by Adobe's Content Hub application. Using this API directly isn’t covered in Adobe Support agreements.

SecurityBearer
Request
path Parameters
collectionId
required
string (CollectionId) non-empty

ID of the Collection

Example: urn:cid:aem:1a034bee-ebda-4787-bad3-f924d0772b75
header Parameters
If-Match
required
string

The If-Match header field makes the request method conditional on the recipient origin server either having at least one current representation of the target resource, when the field value is "*", or having a current representation of the target resource that has an entity tag matching a member of the list of entity tags provided in the field value.

For more details, please head over to RFC9110.

Request Body schema: application/json
Array
Any of:

Adds or removes an item from the collection.

op
required
string >= 3 characters

Identifies this operation as an add or remove operation

Enum: "add" "remove"
id
required
string non-empty

The ID of the item to add or remove. The ID can specify an asset or a collection.

type
required
string >= 5 characters

The type of item that is referenced by the id. Valid values are asset or collection.

Enum: "asset" "collection"
Responses
202

Accepted

204

No Content

400

Bad Request. The Problem Details object will provide more information about the exact cause.

401

Unauthorized

403

Forbidden

404

Not Found

412

Precondition Failed

428

Precondition Required

post/collections/{collectionId}/items
Request samples
application/json
[
  • {
    },
  • {
    }
]
Response samples
application/problem+json
{}

Retrieve a collection's job async status

Retrieves the current job's status for a collection.

NOTE: This API is used by Adobe's Content Hub application. Using this API directly isn’t covered in Adobe Support agreements.

SecurityBearer
Request
path Parameters
jobId
required
string non-empty
header Parameters
X-Adobe-Accept-Experimental
required
integer
Value: 1
Responses
200

Status of a task being processed

400

Bad Request. The Problem Details object will provide more information about the exact cause.

401

Unauthorized

403

Forbidden

404

Not Found

get/collections/jobs/{jobId}/status
Request samples
Response samples
application/json
{
  • "operation": "aem.assets.collections.deleteCollection",
  • "status": 200,
  • "description": "Collection deleted successfully",
  • "data": {
    },
  • "errors": [ ],
  • "warnings": []
}

Events

Events generated by assets delivery tier

Asset delivery disabled eventWebhook

Event triggered when an asset can no longer be rendered through new DM APIs. This is used by applications when processing of asset(s) in delivery tier takes a long time, for example, video assets or assets going through any ML pipeline.

SecurityNone
Request
Request Body schema: application/json
id
required
string non-empty

An identifier for the event. When used in combination with the source property, it allows for each instance of an event to be uniquely identified. That is to say, the combination of the source + id properties will be unique for each distinct event. If a duplicate event is re-sent (e.g. due to a network error) it may have the same id and should be treated as a duplicate.

source
required
string <uri> non-empty ^acct:aem(-cmstg)?-p\d+-e\d+@adobe\.com$

An instance of the acct URI scheme that uniquely identifies the producer of this event, of the format acct:aem-p<programId>-e<environmentId>@adobe.com.

specversion
required
string >= 3 characters

The version of the CloudEvents specification which the event uses. AEM events use the CloudEvents spec version 1.0.2, hence this value will be 1.0.

Value: "1.0"
type
required
string >= 4 characters ^aem\..*$

The type for the event. This will identify the AEM solution that has dispatched the event and may also include the type of entity and the activity that occurred.

Value: "aem.assets.asset.removed_from_delivery"
datacontenttype
required
string non-empty

The format of the data in the event. This will always be application/json for AEM events.

Value: "application/json"
dataschema
string <uri>

An optional attribute, which may point to a JSON schema document that covers the data object.

time
required
string <date-time> non-empty

A timestamp of when the event occurred.

required
object

The event payload.

Responses
200

Asset delivery disabled event data is received successfully

Request samples
application/json
{
  • "specversion": "1.0",
  • "type": "aem.assets.asset.removed_from_delivery",
  • "source": "acct:aem-p56789-e12345@adobe.com",
  • "id": "7c1104e5-4cd7-47d6-a50f-2568c480f2e9",
  • "time": "2018-04-05T17:31:00Z",
  • "datacontenttype": "application/json",
  • "data": {
    }
}

Asset delivery ready eventWebhook

Event triggered when an asset is ready for delivery through new DM APIs. This is used by applications when processing of asset(s) in delivery tier takes a long time, for example, video assets or assets going through any ML pipeline.

SecurityNone
Request
Request Body schema: application/json
id
required
string non-empty

An identifier for the event. When used in combination with the source property, it allows for each instance of an event to be uniquely identified. That is to say, the combination of the source + id properties will be unique for each distinct event. If a duplicate event is re-sent (e.g. due to a network error) it may have the same id and should be treated as a duplicate.

source
required
string <uri> non-empty ^acct:aem(-cmstg)?-p\d+-e\d+@adobe\.com$

An instance of the acct URI scheme that uniquely identifies the producer of this event, of the format acct:aem-p<programId>-e<environmentId>@adobe.com.

specversion
required
string >= 3 characters

The version of the CloudEvents specification which the event uses. AEM events use the CloudEvents spec version 1.0.2, hence this value will be 1.0.

Value: "1.0"
type
required
string >= 4 characters ^aem\..*$

The type for the event. This will identify the AEM solution that has dispatched the event and may also include the type of entity and the activity that occurred.

Value: "aem.assets.asset.ready_for_delivery"
datacontenttype
required
string non-empty

The format of the data in the event. This will always be application/json for AEM events.

Value: "application/json"
dataschema
string <uri>

An optional attribute, which may point to a JSON schema document that covers the data object.

time
required
string <date-time> non-empty

A timestamp of when the event occurred.

required
object

The event payload.

Responses
200

Asset delivery ready event data is received successfully

Request samples
application/json
{
  • "specversion": "1.0",
  • "type": "aem.assets.asset.ready_for_delivery",
  • "source": "acct:aem-p56789-e12345@adobe.com",
  • "id": "7c1104e5-4cd7-47d6-a50f-2568c480f2e9",
  • "time": "2018-04-05T17:31:00Z",
  • "datacontenttype": "application/json",
  • "data": {
    }
}

Archives

APIs for generating archives containing binaries (one or more assets, with one or more renditions) in one of the supported archival formats (e.g., zip).

Archival Request API

Request creation of an archive for the asset references specified in the request payload. The response contains an identifier and metadata pertaining to the archive request. The result of the operation will be one or more archives. The API may use various factors to determine the number of archives required to complete the operation. For example, very large archive request might be split into multiple files. Consumers of this API should use the response Location header to poll for the status of the archive creation request. The polling interval should be determined by the Retry-After header value. Invalid assets specified for inclusion in the archive will not fail the overall creation process. Instead, the API will create a archive containing the assets it could find, with invalid asset references appearing as warnings in the final status response.

NOTE: This API is used by Adobe's Content Hub application. Using this API directly isn’t covered in Adobe Support agreements.

SecurityBearer or ApiKeyAuth
Request
Request Body schema: application/json
required
required
Array of objects non-empty

Assets to be included in the archive. By default, any custom renditions generated via Processing Profiles and original rendition are included, and all others are excluded. The request can optionally specify renditions that MUST be included-in or excluded-from the archive being requested.

format
string (ArchiveFormat)
Default: "zip"

The output format of the archive

Value: "zip"
namePrefix
string

The name to use for the created archive file(s). Note that the API will treat this as a suggestion, and reserves the right to change the final archive name as needed. If not provided, the API will assign its own file name according to any logic it deems fit.

Responses
202

Accepted

400

Bad Request. The Problem Details object will provide more information about the exact cause.

401

Unauthorized

403

Forbidden

415

Unsupported Media Type. When provided as a response to a PATCH request, the response will provide an Accept-Patch response header to notify the client what patch document media types are supported.

500

The server encountered an unexpected error. Retrying the request after a certain time could help.

post/archives
Request samples
application/json
{
  • "items": [
    ],
  • "format": "zip",
  • "namePrefix": "assets"
}
Response samples
application/json
{
  • "id": "1a034bee-ebda-4787-bad3-f924d0772b75",
  • "format": "zip",
  • "submittedBy": "person@company.com",
  • "submittedDate": "2024-02-28T21:39:02.417-0800"
}

Archival Request Status API

Get the status of the archive creation request

NOTE: This API is used by Adobe's Content Hub application. Using this API directly isn’t covered in Adobe Support agreements.

SecurityBearer or ApiKeyAuth
Request
path Parameters
archiveId
required
string (ArchiveId) non-empty

Identifier for the archive under-process/processed by the service

Example: 1a034bee-ebda-4787-bad3-f924d0772b75
Responses
200

Ok

401

Unauthorized

403

Forbidden

404

Not Found

500

The server encountered an unexpected error. Retrying the request after a certain time could help.

get/archives/{archiveId}/status
Request samples
Response samples
application/json
{}

Archive File Download API

For a given archiveId, one or more archive files can be created. Archival Request Status API provides the list of archive files available for the archiveId. This API enables download of any/all of those files.

NOTE: This API is used by Adobe's Content Hub application. Using this API directly isn’t covered in Adobe Support agreements.

SecurityNone or Bearer or ApiKeyAuth
Request
path Parameters
archiveId
required
string (ArchiveId) non-empty

Identifier for the archive under-process/processed by the service

Example: 1a034bee-ebda-4787-bad3-f924d0772b75
fileName
required
string

The name of the archive file to retrieve. Archive files available for download against this archiveId can be retrieved through the Archival Request Status API.

Example: assets.zip
query Parameters
token
string

a time limited token allowing anonymous retrieval of the archive file. The token will be included in the URLs presented in Archival Request Status API response for requests that have their status as COMPLETED.

Responses
302

Found

404

Not Found

500

The server encountered an unexpected error. Retrying the request after a certain time could help.

get/archives/{archiveId}/files/{fileName}
Request samples
Response samples
application/problem+json
{}