canonical: https://jentic.com/apis/adobe.com/adobe-aem

# Adobe Experience Manager (AEM) API

Adobe Experience Manager (AEM) is Adobe's enterprise content management system used to author, manage, and publish digital experiences. This OpenAPI specification, maintained by Shine Solutions, exposes 48 endpoints for AEM administrative and content operations including OSGi configuration management, package management, replication agents, user and group administration, and JCR node operations. Use it to script AEM environment setup, configuration, and content lifecycle tasks. Authentication is HTTP basic against an AEM instance.

## For AI agents

Administer Adobe Experience Manager environments by managing OSGi configurations, replication agents, packages, users, groups, and JCR content nodes through HTTP basic auth.

## Scope

Does not handle Adobe Analytics, Target, or Campaign - use for AEM author/publish instance administration, content packages, and JCR operations only.

## Capabilities

- Manage OSGi configurations across the Apache Felix HTTP service, Sling servlets, and AEM-specific bundles
- Build, install, and download AEM content packages from /etc/packages for environment promotion
- Configure replication agents to publish content from author to publish instances
- Create and update users and groups under /home/users and /home/groups for access control
- Run JCR querybuilder queries via /bin/querybuilder.json to find content nodes by criteria
- Trigger health checks against AEM bundles to confirm environment readiness

## Use cases

### AEM Environment Configuration as Code

Platform engineers automate AEM environment setup by applying OSGi configurations through POST /apps/system/config/{configNodeName} endpoints. Configurations for the Apache Felix HTTP service, Sling default GET servlet, referrer filter, and DavEx servlet can be set on every fresh environment without clicking through the AEM Web Console. This shortens environment build time from hours of manual config to a single scripted run.

Example prompt: Apply the production Apache Sling referrer filter configuration via POST /apps/system/config/org.apache.sling.security.impl.ReferrerFilter on the staging instance

### Content Package Promotion

Release engineers move AEM content and code between environments by downloading packages from one instance and installing them on another using GET /etc/packages/{group}/{name}-{version}.zip and the package management endpoints. The API turns release promotion into an automatable pipeline rather than a manual upload through the package manager UI.

Example prompt: Download the latest version of the 'we-retail-content' package from the source instance and install it on the target via the AEM package endpoints

### User and Group Administration

AEM admins manage users and groups under /home/users and /home/groups via the postAuthorizables endpoints, including creating new principals and assigning rights. This is useful for onboarding scripts that provision content authors with the correct group membership in one run.

Example prompt: Create a new AEM user 'jdoe' under /home/users via the postAuthorizables endpoint and add the user to the 'content-authors' group

### Agent-Driven AEM Operations via Jentic

AI agents can execute routine AEM admin tasks through Jentic without learning the full Sling and OSGi configuration model up front. AEM basic auth credentials sit in your Jentic One instance rather than in the agent's prompt, which matters because these credentials grant administrative access to the AEM instance.

Example prompt: Search Jentic for 'aem querybuilder', load GET /bin/querybuilder.json, and execute it with type=cq:Page and path=/content

## Key endpoints

| Method | Path | Description |
| --- | --- | --- |
| GET | /system/console/configMgr | Get the OSGi configuration manager state |
| POST | /apps/system/config/org.apache.sling.security.impl.ReferrerFilter | Configure the Sling referrer filter |
| GET | /etc/packages/{group}/{name}-{version}.zip | Download an AEM content package |
| GET | /bin/querybuilder.json | Run a JCR querybuilder query |
| POST | /.cqactions.html | Apply CQ ACL actions |
| GET | /libs/granite/core/content/login.html | Get the AEM login page |

## Key resources

- **OSGi Configurations** — POST endpoints for bundle and service configuration nodes under /apps/system/config
- **Packages** — Build, install, and download AEM content packages from /etc/packages
- **Replication Agents** — Configure publish, dispatcher, and reverse replication agents
- **Users and Groups** — Create and update authorizables under /home/users and /home/groups
- **JCR Nodes** — Read and write JCR content nodes via Sling POST and GET servlets
- **Querybuilder** — Run JCR queries through /bin/querybuilder.json
- **Health Checks** — Active bundle health and similar diagnostic endpoints

## Why Jentic

- **Setup:** Wiring the Adobe Experience Manager API by hand means handling its basic auth and knowing Sling, OSGi, and JCR path conventions to hit the right console endpoints. Through Jentic you install once, import AEM from the API Directory, store the credentials once, and your agent calls it.
- **Permission scoping:** AEM exposes fixed console and JCR paths rather than a resource id you own in the URL, so you limit the agent to the operations it needs, such as running a QueryBuilder search or reading a content package. Because you pick the operations, configuration writes like the ReferrerFilter update stay out unless you include them.
- **Credential handling:** Your AEM username and password are stored once, encrypted, by your own Jentic One instance and injected at execution time. They never enter the agent's prompt, logs, or context.
- **Discovery method:** Agents search Jentic by intent such as 'install an aem package' or 'run an aem querybuilder query', and Jentic returns the matching AEM operation with its input schema so the agent calls the right endpoint without browsing the reference docs.

## Related APIs

- **HubSpot CMS Pages API** — HubSpot's hosted CMS API for managing site pages and content.
- **Shopify Admin API** — E-commerce storefront platform often paired with AEM for commerce-driven content.
- **Mailchimp API** — Email marketing platform that distributes content authored in AEM.

## FAQ

### What authentication does the Adobe Experience Manager API use?

AEM uses HTTP basic authentication against the AEM instance. Credentials are sent in the Authorization header as base64 username:password. Through Jentic, these credentials are stored encrypted in the vault and never enter the agent's prompt context.

### Can I install AEM content packages with the Adobe Experience Manager API?

Yes. The package endpoints under /etc/packages let you build, install, and download AEM content packages, which is the standard way to promote content and code between AEM environments. Combined with GET /etc/packages/{group}/{name}-{version}.zip, this enables full release pipelines.

### How do I run a JCR query against AEM through Jentic?

Search Jentic for 'aem querybuilder', load GET /bin/querybuilder.json, and execute it with parameters like type=cq:Page and path=/content. Jentic returns the input schema so the agent supplies only the parameters AEM accepts.

### What are the rate limits for the Adobe Experience Manager API?

AEM does not enforce rate limits at the API layer because it runs as your own instance. Throughput is bounded by your instance's hardware and JVM tuning rather than by Adobe-imposed quotas. Through Jentic, retries with backoff can be configured if a request times out.

### Can I configure OSGi services with the Adobe Experience Manager API?

Yes. POST endpoints under /apps/system/config/{configNodeName} cover the Apache Felix HTTP service, Sling default GET servlet, referrer filter, DavEx servlet, password reset, and similar OSGi configurations. This is the basis for environment-as-code workflows.

### Is the Adobe Experience Manager API free?

The API surface itself ships with AEM and has no separate API cost - access is included with your AEM licence. Operating costs are tied to the AEM environment you run it against. The Swagger spec for the API is maintained as an open-source project by Shine Solutions.

### Can I limit what my agent is allowed to do with the Adobe Experience Manager API?

Yes. Because Jentic One is self-hosted, you decide which AEM operations the agent may call, so you can allow only what a task needs, such as running a QueryBuilder search at /bin/querybuilder.json or downloading a content package, while leaving everything else off. Since AEM uses fixed console and JCR paths rather than a resource id you own, scoping happens at the operation level: a configuration write like the Sling ReferrerFilter update stays out unless you explicitly include it. The AEM basic auth credentials that grant this administrative access are held by your own Jentic One instance and injected only for the operations you permit.
