> ## Documentation Index
> Fetch the complete documentation index at: https://docs.tryprofound.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Using Adobe Experience Manager in Agents

After you connect your Adobe Experience Manager (AEM) account, the following nodes become available in Profound Agents. Use them to find, read, create, and update AEM Content Fragments. All operations run against the connected AEM Author environment and use the permissions assigned to the OAuth credential's technical account.

## Available nodes

<Tabs>
  <Tab title="List Content Fragments" icon="list">
    ### List Content Fragments

    Retrieve Content Fragments from the connected Author environment.

    #### Required inputs

    * **AEM Instance** — the connected Author environment

    #### Optional inputs

    * **Folder** — limits the list to an approved folder below `/content/dam`
    * **References** — controls whether linked fragments are returned and hydrated
    * **Limit** — number of results to return; the default is `25` and the maximum is `50`
    * **Cursor** — a pagination cursor from a previous List or Search node's output, used to fetch the next page of results
    * **Projection** — use `summary` when you need summary data only

    #### Output

    The output contains the matching Content Fragments and, when more results are available, a pagination cursor for the next page.
  </Tab>

  <Tab title="Search Content Fragments" icon="magnifying-glass">
    ### Search Content Fragments

    Find Content Fragments matching one or more criteria.

    #### Required inputs

    * **AEM Instance** — the connected Author environment

    <Note>
      Profound starts the search with a **Folder** filter of `/content/dam`. Change that folder or add another filter as needed.
    </Note>

    #### Search filters

    * **Search text** — searches the AEM-supported fragment content for the selected text
    * **Folder** — scopes the search to a DAM folder path
    * **Models** — limits results to selected Content Fragment Models
    * **Statuses** — New, Draft, Published, Modified, or Unpublished
    * **Locale** — limits results to a locale
    * **Direct children only** — excludes fragments in nested folders
    * **Created after** and **Created before** — constrain the creation date

    #### Optional inputs

    * **Raw Query** — an AEM-supported search-query JSON; use it for filters or sorting the node configuration form doesn't include
    * **Limit** — number of results to return; the default is `25` and the maximum is `50`
    * **Cursor** — a pagination cursor from a previous List or Search node's output, used to fetch the next page of results
    * **Projection** — use `summary` when you need summary data only

    #### Output

    The output contains the matching Content Fragments and, when more results are available, a pagination cursor for the next page.
  </Tab>

  <Tab title="Get Content Fragment" icon="file">
    ### Get Content Fragment

    Retrieve the complete data for one Content Fragment.

    #### Required inputs

    * **AEM Instance** — the connected Author environment
    * **Content Fragment** — select a fragment from the dropdown, or use a variable from a previous node's output

    #### Optional inputs

    * **Content Fragment ID** — the fragment UUID as text, which overrides the fragment selected in [required inputs](#required-inputs)
    * **References** — controls whether linked fragments are returned and hydrated

    #### Output

    The output includes the Content Fragment data and its ETag when available. Model-specific fields follow the response AEM returns.
  </Tab>

  <Tab title="Create Content Fragment" icon="file-plus">
    ### Create Content Fragment

    Add Author content based on an enabled Content Fragment Model.

    #### Required inputs

    * **AEM Instance** — the connected Author environment
    * **Parent Folder** — the destination folder below `/content/dam`
    * **Content Fragment Model** — the model that defines the fragment fields
    * **Title** — the fragment title
    * **Data format**
      * **Structured** — loads the selected model and displays its fields in the configuration panel
      * **Raw JSON** — accepts an object whose keys match the AEM model's field names
    * **Fields** / **Raw JSON** — the structure for your input data, based on the selected **Data format**

    <Tip>
      Use Raw JSON when the Content Fragment Model is supplied with a variable, because the node editor can't load that model's field definition in advance.
    </Tip>

    #### Optional inputs

    * **Name** — URL-safe Content Fragment name; derived from the **Title** when left blank
    * **Description** — fragment description

    #### Output

    The output includes the created Content Fragment, its ETag, and its Location when AEM provides those values.

    <Note>
      Creating or updating a fragment doesn't publish it. Review and publish the content in AEM.
    </Note>
  </Tab>

  <Tab title="Update Content Fragment" icon="pencil">
    ### Update Content Fragment

    Change an existing fragment. The node modifies only the fields you provide.

    #### Required inputs

    * **AEM Instance** — the connected Author environment
    * **Content Fragment** — select a fragment from the dropdown, or use a variable from a previous node's output
    * **Data format**
      * **Structured** — loads the selected model and displays its fields in the configuration panel
      * **Raw JSON** — accepts an object whose keys match the AEM model's field names
    * At least one change to **Title**, **Description**, or **Fields** / **Raw JSON**

    <Tip>
      Use Raw JSON when the Content Fragment Model is supplied with a variable, because the node editor can't load that model's field definition in advance.
    </Tip>

    #### Optional inputs

    * **Title** — leave empty to keep the current title
    * **Description** — leave empty to keep the current description
    * **Fields** / **Raw JSON** — the structure for your input data, based on the selected **Data format**
    * **References** — controls whether linked fragments are returned and hydrated
    * **ETag** — optimistic-lock value from an earlier Get or Update output. When left blank, Profound reads the current ETag immediately before sending the update. If the provided ETag is stale, the node reports a conflict.

    #### Output

    The output includes the updated Content Fragment and its new ETag when AEM provides one.

    <Note>
      Creating or updating a fragment doesn't publish it. Review and publish the content in AEM.
    </Note>
  </Tab>
</Tabs>

***

## Key concepts

### AEM Instance

The connected AEM Author environment. Select it before choosing a model, folder, or fragment.

### Content Fragment Model

The AEM schema that defines a fragment's fields, types, required values, and allowed content. The model must be enabled and allowed by the destination folder's policy.

### DAM paths

Content Fragment folders use repository paths below `/content/dam`. Folder permissions and policies control which content Profound can read or change.

### Content Fragment ID

AEM API operations identify a Content Fragment by UUID. Profound's picker displays searchable fragment information and supplies the UUID to the node.

### ETag

An ETag is a unique identifier for a specific version of a Content Fragment's data. Pass it from a **Get Content Fragment** node to the **Update Content Fragment** node to prevent the workflow from silently overwriting a change made after the fragment was read.

### Pagination

List and Search nodes return up to `50` fragments per request. When the output contains a cursor, provide it to the next List or Search node to retrieve the next page of results.

### Hydrated Content Fragment

A Content Fragment that contains its full field values, rather than only basic IDs and URLs.

### References

References control how linked fragments are included. Hydrated and all-reference modes can return larger responses, so use them only when the workflow needs linked content.

***

## Troubleshooting

### A folder, fragment, or model picker is disabled or empty

Select an **AEM Instance** first. If the picker stays empty, verify that your OAuth credential's technical account can read the corresponding model, folder, or fragment. Learn more in the [setup troubleshooting](/integrations/adobe-experience-manager/setup/aem-setup-troubleshooting) guide.

### Search returns an invalid-query error

Restore the **Folder** filter to `/content/dam` or add another filter. When using **Raw Query**, include a non-empty JSON object and use Adobe-supported filter and sort fields.

### Create node reports an unknown field or invalid value

Select the model and use **Structured** format when possible. If you have to use **Raw JSON** format, make sure each key matches the AEM model field name and provide a value with the model's expected type and cardinality.

### Update node reports that there are no changes

Enter at least one **Title**, **Description**, or model field value. Empty inputs preserve the current content.

### Update node reports a conflict

The fragment changed after AEM issued the ETag. Run the **Get Content Fragment** node again, review the latest content, then apply the update with the new ETag.

### A node returns a permissions error

Confirm that the technical account's service group has permission for that exact operation and DAM path. Read access can succeed while Create or Update remains blocked. To add permissions for specific folders and files in your AEM environment, follow Adobe's [Product Profile and Services user group permission management](https://experienceleague.adobe.com/en/docs/experience-manager-learn/cloud-service/aem-apis/openapis/how-to/services-user-group-permission-management) guide.

### Only the first page of results is returned

Use the cursor returned by the List or Search node as the next request's **Cursor**. Each page can contain no more than `50` results.

***

## Additional resources

* [AEM Sites Content Management API reference](https://developer.adobe.com/experience-cloud/experience-manager-apis/api/stable/sites/)
* [AEM Folders API reference](https://developer.adobe.com/experience-cloud/experience-manager-apis/api/stable/folders/)
