AEM Assets Author API and was introduced in release 2025.04.
The AEM Assets Import API supports the following features:
To use the API, you first need to get a token and Client ID to call the API.
Once you have the Client ID and access token, you can call the fromUrl endpoint to start the import:
curl -i -X POST \
'https://<BUCKET>.adobeaemcloud.com/adobe/assets/import/fromUrl' \
-H 'Authorization: Bearer <ACCESS_TOKEN>' \
-H 'Content-Type: application/json' \
-H 'X-Api-Key: <CLIENT_ID>' \
-d '{
"assetMetadata": {
"dc:title": "My Asset",
"xmp:Rating": 5,
"prism:expirationDate": "2019-01-01T00:00:00.000Z"
},
"folder": "/content/dam/myfolder",
"files": [
{
"fileName": "My-Asset.jpeg",
"mimeType": "image/jpeg",
"fileSize": 123456,
"url": "https://example.com/my-asset.jpg"
}
]
}'
Assuming the import is accepted, you should receive a 202 response with a body like:
{
"id": "c82f6f05-07e3-5d13-b6bf-be0ac408fddf",
"operation": "aem.assets.import.fromurl",
"data": {
"id": "c82f6f05-07e3-5d13-b6bf-be0ac408fddf",
"config": {
"assetMetadata": {
"dc:title": "My Asset",
"xmp:Rating": 5,
"prism:expirationDate": "2019-01-01T00:00:00.000Z"
},
"folder": "urn:aaid:aem:8964ca64-b302-5abe-88db-e1729385287b",
"items": [
"https://example.com/my-asset.jpg"
]
},
"processedFiles": [],
"progress": {
"imported": 0,
"failed": 0,
"skipped": 0,
"started": "2025-03-24T18:23:15.885Z",
"total": 2,
"lastUpdated": "2025-03-24T18:23:15.885Z",
"size": 0,
"transferred": 0,
"step": "QUEUED"
}
},
"errors": [],
"warnings": [],
"state": "PROCESSING"
}
To track your import job, you can then poll the Import Job Status endpoint:
curl -i -X GET 'https://<bucket>.adobeaemcloud.com/adobe/assets/import/jobs/<importJobId>/status' \
-H 'Authorization: Bearer <ACCESS_TOKEN>' \
-H 'If-None-Match: string' \
-H 'X-Api-Key: <CLIENT_ID>'
This will return a similar result as the initial request. You can get detailed progress data using the data.progress
object or wait for the state
to be COMPLETED
.
A few things to consider when using this API:
The URLs must be publicly accessible without authentication. This could mean importing assets from generally available URLs, for example from a website. To make assets available for import that aren’t generally available, most cloud providers support creating signed URLs:
The API can support up to 300 files per request. Within this limit, it’s better to import multiple files in a request rather than multiple requests as there’s some overhead required in creating and managing the job.
When specifying metadata with the upload, you have to consider that metadata extracted from the file XMP metadata will override metadata values provided with the update. Therefore it’s generally better to stick with custom properties and namespaces to avoid collisions.
The new AEM Assets Import API is a tremendous accelerator for customers wanting to automate asset import processes or migrating to AEM Assets.
For more information about the Asset Import API, including detailed API documentation and examples, visit the AEM Assets documentation.