Adobe Experience Manager
Authentication: OAuth or server-to-server credentials. See Magic Link for the runtime auth flow, or Application credentials to bring your own OAuth app.
Sample use cases
- Search the DAM for product shots tagged
spring-2026and list any missing alt text in their metadata. - Import the hero image from
https://cdn.acme.com/launch/hero.pnginto the Campaigns collection and report when the import job finishes. - Pull the published content fragment at
/content/dam/acme/faq/shippingand summarize what changed since last quarter.
Available Tools
Delete an asset from the DAM. Use list_folders or search_assets to find asset IDs. Referenced assets are refused unle…
Search DAM assets by text (full-text, hybrid, or natural language) and structured term, range, and exists filters, wi…
Get the state of a background asset job (QUEUED, PROCESSING, COMPLETED, COMPLETED_WITH_ERRORS, FAILED). Use the job.j…
Get an asset’s metadata: editable assetMetadata (dc:title, keywords, …) and read-only repositoryMetadata (name, pat…
Edit an asset’s assetMetadata with JSON Patch operations (add, replace, remove, copy, move, test). Call get_asset_met…
List an asset’s relations to other assets, optionally filtered to some relation types. Use list_asset_relation_types …
Relate an asset to other assets, each with a relation type such as ‘sources’ or ‘derived’. Use search_assets or list_…
List an asset’s relations of one relation type. Use list_asset_relation_types to find the types, and list_asset_relat…
Remove all of an asset’s relations of one relation type. Use list_asset_relation_types to find the types. To remove a…
Remove one relation between two assets. Use list_asset_relations to find the relation_type and related_asset_id. To c…
List the relation type names an asset has (e.g. sources, derived). Use the values with list_asset_relations, list_ass…
List an asset’s static renditions with name, MIME type, size, and pixel dimensions. Use list_folders or search_assets…
Import 1-300 files from URLs into a DAM folder as new assets, with optional metadata. Use list_folders to find the ta…
Get the state and progress counters of a URL import job. Use the job_id returned by import_asset_from_url. Once state…
List per-file outcomes of a URL import job, including the new asset ID of each imported file and the error for each f…
List Dynamic Media asset collections (curated groups of assets and collections) with their titles. Paginate with curs…
Create an asset collection with a title and initial assets/collections. Use search_assets for asset IDs. May run asyn…
Get an asset collection’s title, description, repository metadata and ETag. Use list_collection_items for its content…
Update an asset collection’s title, description or custom metadata. Pass etag from get_collection, or null to fetch i…
Delete an asset collection; the assets in it are not deleted. Pass etag from get_collection, or null to fetch it. May…
List the assets and sub-collections in an asset collection, plus the ETag that update_collection_items needs. Paginat…
Add or remove assets/collections in an asset collection. Pass etag from list_collection_items, or null to fetch it. U…
Get the state (PROCESSING, COMPLETED, FAILED) of an asynchronous collection job started by create_collection, delete_…
List the Dynamic Media smart crops (named crop regions with aspect ratios) defined for an image or video asset. Pagin…
List the Dynamic Media image presets (named output size/format settings) configured for image delivery. Paginate with…
Request a zip archive of one or more assets and chosen renditions for download. Runs asynchronously: poll get_archive…
Get the state of an asset archive started by create_asset_archive. When COMPLETED, download_urls lists the archive fi…
List every Content AI content source (AEM author/publish, acquisition crawls, custom indexes) with its searchable spa…
Create a Content AI acquisition content source that crawls a website into a searchable index. Returns its slug ‘name’…
List Content AI acquisition (website crawl) content sources with their full crawl configuration. Filter by status (AC…
Get one Content AI acquisition content source by name: crawl config, status, searchable spaces, and its ETag for upda…
Fully replace an acquisition source’s description and crawl config; omitted optional parts are cleared. Prefer patch_…
Change selected fields of an acquisition source (merge patch). Set status ARCHIVED to delete it: crawls stop and cont…
Start an on-demand crawl of an acquisition content source now. Fails with a conflict if a run is already in progress…
Get the state and metrics of the most recent crawl run of an acquisition content source. Use after trigger_acquisitio…
Search documents in one Content AI content source with fulltext, semantic (vector), filter, or hybrid queries, plus s…
Ask a natural-language question and get an AI-generated answer grounded in one Content AI content source, with the so…
List Content Fragments as delivered by the publish (default), preview or author tier, optionally under a folder path…
Get a delivered Content Fragment by ID from the publish (default), preview or author tier, optionally embedding its r…
Get a delivered Content Fragment by its exact repository path (e.g. /content/dam/site/en/article) from the publish (d…
List the resources (fragments, assets, pages, tags) a delivered Content Fragment references, direct or all levels. Us…
Get the Content Fragment Model a delivered fragment is based on, from the publish (default), preview or author tier. …
List the variations of a delivered Content Fragment with their field values. Paginate with cursor. Use list_published…
Get one variation of a delivered Content Fragment, optionally embedding its references. Use list_published_fragments …
List the resources a delivered fragment variation references, direct or all levels. Use list_published_fragments for …
List the pages and fragments that reference a delivered Content Fragment (where it is used). Paginate with cursor. Us…
List Content Fragment Models available on the publish (default), preview or author delivery tier. Paginate with curso…
Get a Content Fragment Model’s title, path and tags from the publish (default), preview or author delivery tier. Use …
Get the JSON Schema (2020-12) describing a Content Fragment Model’s fields: names, types and descriptions. Use it to …
List the delivered Content Fragments based on one Content Fragment Model. Paginate with cursor. Use list_published_mo…
Browse the DAM by path: returns the folder itself plus its children. This is the main way to find folder and asset ID…
Get a folder by ID with its children (folders by default; add ‘ASSET’ to types for assets). Use list_folders to find …
Create up to 10 DAM folders by full path; missing parent folders are created too. Returns the new folder IDs, and per…
Delete up to 10 DAM folders by path. Use list_folders to find paths; use delete_folder when you have an ID. Non-empty…
Delete one DAM folder by ID. Use list_folders to find folder IDs; use delete_folders to delete by path. Non-empty fol…
Get the state of a background folder job (PROCESSING, COMPLETED, COMPLETED_WITH_ERRORS, FAILED). Use the job.job_id r…
Get the per-folder results of a finished background folder job (created, deleted, or failed folders). Use the job.job…
List Core Components Adaptive Forms available to the user, with IDs and repository paths. Older Foundation-based form…
Get an Adaptive Form’s definition: its field model, data schema, and accepted submission types, optionally localized…
Get prefill or previously saved data for an Adaptive Form, optionally a specific submission by data_ref (the submissi…
Submit data to an Adaptive Form as JSON, running its server-side validation and submit action. Returns the submission…
Register a callback URL that AEM Forms calls when an Adaptive Form is submitted (Workfront Fusion). Returns the callb…
Get a registered AEM Forms callback by ID. Callback IDs come from create_form_callback; there is no list endpoint.
Replace a registered AEM Forms callback (URL, status, trigger, target service). All required fields must be sent agai…
Delete a registered AEM Forms callback so AEM stops calling its URL. Callback IDs come from create_form_callback.
List the assets, fragments, pages and experience fragments a Content Fragment directly references. Use get_fragment_r…
Get every reference of a Content Fragment, recursively, as a tree of pointers plus a map of hydrated references. Use …
List the pages, experience fragments and Content Fragments that reference one fragment, with pagination. Use list_ref…
For several Content Fragment paths at once, list the pages, experience fragments and fragments that reference each. U…
Get a Content Fragment’s locale and its language copies (path, locale, status). Use list_language_copies for several …
For several Content Fragment or folder paths at once, get each one’s locale and language copies. Use list_fragment_tr…
List the languages a Content Fragment can get language copies in (its site’s language roots). Use before start_workfl…
List Content Fragment workflows (publish, unpublish, move, rename, translation structure), newest first, optionally f…
Start a Content Fragment workflow: publish-folder, unpublish-fragments, unpublish-models, move-fragments, rename-frag…
Get a Content Fragment workflow’s state (RUNNING, COMPLETED, ABORTED…), payload and any invalid fragments. Get the …
List the tags applied to a Content Fragment, plus the etag that replace_fragment_tags and remove_fragment_tags take. …
Add existing AEM tags to a Content Fragment, keeping the tags it already has. Use replace_fragment_tags to set the ex…
Replace all tags on a Content Fragment with the given tag IDs. Use add_fragment_tags to keep existing tags. The etag …
Remove every tag from a Content Fragment. To drop only some tags, use replace_fragment_tags with the tags to keep. Th…
List the tags applied to one variation of a Content Fragment, plus the etag that replace_variation_tags and remove_va…
Add existing AEM tags to a Content Fragment variation, keeping the tags it already has. Use replace_variation_tags to…
Replace all tags on a Content Fragment variation with the given tag IDs. The etag from list_variation_tags is fetched…
Remove every tag from a Content Fragment variation. To drop only some, use replace_variation_tags. The etag from list…
List Content Fragments, optionally under a folder path, with pagination. Use search_fragments instead to filter by st…
Search Content Fragments by path, status, model IDs, tags, locale, metadata, full text, and created/modified/publishe…
Get a Content Fragment with its fields, variations, tags and references, plus its etag for update_fragment, patch_fra…
Create a Content Fragment from a model in a folder and return it with its new id and etag. Use list_models to find mo…
Replace a Content Fragment’s title, description and field values in full; anything not sent is cleared. Use patch_fra…
Edit parts of a Content Fragment with JSON Patch operations (e.g. replace /title) and return the updated fragment and…
Permanently delete a Content Fragment. Fails for PUBLISHED or MODIFIED fragments; use delete_and_unpublish_fragment f…
Delete a Content Fragment and unpublish it from the publish tier in a background workflow; track it with get_workflow…
Check out a Content Fragment (lock it for the current user) or check it in (release the lock). Fails with a conflict …
Get the preview URL of each variation of a Content Fragment, as configured on its model. Use list_fragments or search…
Publish up to 50 Content Fragments by ID or path, now or at a scheduled time, optionally with references in chosen st…
Get the scheduled publish or unpublish operation pending for one Content Fragment. Use get_fragments_publication_stat…
Get scheduled publication status for up to 50 Content Fragments in one call, instead of calling get_fragment_publicat…
Copy a single Content Fragment into an existing folder and return the copy with its new id. Use copy_fragment_tree to…
Copy a Content Fragment together with the fragments it references, in the background. Returns a job; poll its job_id …
Find and replace text in the text and long-text fields of up to 20 Content Fragments. Set dry_run to preview results …
Get the Content Fragment Model a fragment is based on, including its field definitions and etag. Use get_model when y…
Switch a Content Fragment to a different Content Fragment Model. Fields that do not fit the new model can leave it in…
Get the editor UI schema and static field schema of the model behind a Content Fragment. Use get_model_ui_schema when…
Get a Content Fragment’s metadata properties, its metadata form ID, and the etag for update_fragment_metadata. Use li…
Update a Content Fragment’s metadata properties with JSON Patch operations. Only properties in its metadata schema ca…
List the actions (READ, EDIT, DELETE, PUBLISH, CHECKOUT, …) the current user may take on one Content Fragment. Use …
List content fragment launches with pagination. Filter server-side by created, modified, published, promoted, or live…
Create a launch (a working copy of content fragments for future changes). Runs as a background job: poll get_launch_j…
Get a launch’s details and its ETag (needed by update_launch, delete_launch, update_launch_sources, and rebase_launch…
Replace a launch’s properties (title, description, depth, production readiness, live date, publish agent). Full repla…
Delete a launch. Runs as a background job: poll get_launch_job_status with the returned job_id. Use list_launches to …
List the content fragment IDs that are sources of a launch, with pagination. Use get_launch_content for the launch’s …
Add or remove content fragment sources of a launch. Runs as a background job: poll get_launch_job_status with the ret…
Rebase a launch onto production (or another launch), pulling in source changes. Background job: poll get_launch_job_s…
Promote a launch’s changes into production (or another launch), overwriting the target fragments. Background job: pol…
Start computing field-level differences between a launch and production (or another launch). Background job: poll get…
List the content fragment copies inside a launch, with their source IDs and last promote/rebase info. Page with curso…
List the background jobs of a launch (create, edit, promote, rebase, diff, delete) with status, progress, and timesta…
Check whether a launch background job is still running. When completed is true, call get_launch_job_result. The job_i…
Get the outcome of a finished launch job: final state, errors, the launch details (e.g. the new launch ID for create)…
List Content Fragment Models with pagination (cursor from page_info). Use search_models instead to filter by name, fo…
Search Content Fragment Models server-side by name, technical name, configuration folder, status, replication status,…
Get a Content Fragment Model by ID, including its field definitions and its ETag for update_model or delete_model. Us…
Create a Content Fragment Model with field definitions in a configuration folder. Set dry_run to validate the payload…
Edit a Content Fragment Model with JSON Patch operations (rename, add/remove/replace fields). Pass the etag from get_…
Permanently delete a Content Fragment Model. Fails with a conflict if fragments still use it. Use list_models or sear…
Copy a Content Fragment Model into another existing configuration folder, optionally renaming it. Returns the new mod…
Publish up to 50 Content Fragment Models, now or at a scheduled time, by starting an AEM workflow. Returns the workfl…
Get the scheduled publish/unpublish status for up to 50 Content Fragment Models. Use after publish_models with a sche…
Get the editor UI schema (tabs, groups, conditional fields) of a Content Fragment Model and its ETag for update_model…
Replace the editor UI schema and constraints of a Content Fragment Model. Read the current one with get_model_ui_sche…
List the tags applied to a Content Fragment Model, with the ETag that replace_model_tags and remove_model_tags need. …
Add existing tags to a Content Fragment Model, keeping its current tags. Use replace_model_tags to overwrite the set…
Replace all tags on a Content Fragment Model with the given tags. Use add_model_tags to keep existing tags, list_mode…
Remove every tag from a Content Fragment Model. To drop only some tags, use replace_model_tags with the ones to keep…
Get the metadata schema bound to a content fragment or DAM folder (resolved up the folder tree) and all its metadata …
Bind a metadata schema to a content fragment or DAM folder (children inherit it), or pass a null schema_id to unbind …
Get the base domain URL of each AEM tier (author, publish, preview) for this environment.
Check which actions (read, edit, delete, publish, create fragment/model, …) the current user may perform on fragmen…
Run a GraphQL query against the Content Fragment GraphQL endpoint, for reading fragments across models in one call wi…
Run several Sites API write calls (POST/PUT/PATCH/DELETE) together in the background. Returns a job_id; poll it with …
List batch requests created with create_batch, filtered by state, with pagination (cursor from page_info). Use get_ba…
Get a batch request’s status and each sub-request’s status code and body. Use the job_id from create_batch or an ID f…
Create a translation project with one job per target language, optionally adding content and starting translation. Ru…
Get a translation project with its settings, status, and jobs (job IDs for the translation job tools). No list endpoi…
Replace a translation project’s properties, including adding or dropping target languages and changing the TIF config…
Delete a translation project and its jobs. Project IDs come from create_translation_project.
Add content to (or remove it from) the DRAFT jobs of every target language in a translation project, optionally maske…
Run START, COMPLETE, CANCEL, or ARCHIVE on all jobs of a translation project, optionally masked to some target langua…
Get a translation job (one target language) with its status and content items, including source paths for accept/reje…
Delete one translation job from a project. Job IDs come from get_translation_project (translation_jobs); project IDs …
Run START, COMPLETE, CANCEL, or ARCHIVE on one translation job. Use run_translation_jobs_command for all jobs of a pr…
Add content to or remove content from one DRAFT translation job. Use add_translation_project_content for all jobs of …
Accept translated content that is READY_FOR_REVIEW in a translation job. Use get_translation_job to find the source p…
Reject translated content that is READY_FOR_REVIEW in a translation job, with an optional comment. Use get_translatio…
Start syncing language copies of a site or asset path from its source, overwriting their content. Returns the sync pr…
Get the status of a language copy sync process. The sync ID comes from start_language_copy_sync.
Suspend or abort a RUNNING language copy sync process. The sync ID comes from start_language_copy_sync; check its sta…
Get the status of an asynchronous translation operation and the resources it affected (new project and job IDs). The …
List a Content Fragment’s variations (name, title, field values). Use search_fragment_variations to filter by status …
Create a new variation of a Content Fragment with a title and optional description. Returns the variation, including …
Search a Content Fragment’s variations by status (NOT_PUBLISHED, PUBLISHED, MODIFIED) and by created/modified/publish…
Get one variation of a Content Fragment with its field values, tags, and references, plus the etag that update_fragme…
Edit a Content Fragment variation’s title, description, or field values with JSON Patch operations. Call get_fragment…
Permanently delete a variation from a Content Fragment, optionally unlinking references to it. The etag from get_frag…
Get the tree of assets, fragments, and pages referenced by one Content Fragment variation. Use list_fragment_variatio…
List the saved versions of a Content Fragment (ID, title, label, comment, creator, date). Version IDs feed get_fragme…
Save the current state of a Content Fragment as a new version, with an optional label and comment, so it can be resto…
Get the full contents of one saved version of a Content Fragment (fields, variations, tags, references) plus the etag…
Permanently delete one saved version of a Content Fragment; the fragment itself is unchanged. The etag from get_fragm…
Replace a Content Fragment’s current content with a saved version. Unsaved current content is lost, so call create_fr…