# aem-headless-client-sdk **Repository Path**: mirrors_adobe/aem-headless-client-sdk ## Basic Information - **Project Name**: aem-headless-client-sdk - **Description**: AEM Headless Client for JavaScript - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2021-04-09 - **Last Updated**: 2026-03-07 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README [![Version](https://img.shields.io/npm/v/@adobe/aem-headless-client-js.svg)](https://npmjs.org/package/@adobe/aem-headless-client-js) [![Downloads/week](https://img.shields.io/npm/dw/@adobe/aem-headless-client-js.svg)](https://npmjs.org/package/@adobe/aem-headless-client-js) [![Build Status](https://github.com/adobe/aem-headless-client-js/workflows/Node.js%20CI/badge.svg?branch=main)](https://github.com/adobe/aem-headless-client-js/actions) [![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0) # AEM Headless Client for JavaScript See [aem-headless-client-java](https://github.com/adobe/aem-headless-client-java) for the Java variant of this client and [aem-headless-client-nodejs](https://github.com/adobe/aem-headless-client-nodejs) for the server-side Node.js variant. ## Installation ```bash $ npm install @adobe/aem-headless-client-js ``` ## Usage ### Create AEMHeadless client ```javascript const AEMHeadless = require('@adobe/aem-headless-client-js'); ``` Configure SDK with Host and Auth data (if needed) ```javascript const aemHeadlessClient = new AEMHeadless({ serviceURL: '', endpoint: '', auth: '' || ['', ''], headers: {'': '', ...} }) // Eg: const aemHeadlessClient = new AEMHeadless({ serviceURL: AEM_HOST_URI, endpoint: 'content/graphql/endpoint.gql', auth: [AEM_USER, AEM_PASS], headers: {'customerheadername': 'customerheadervalue'} }) ``` ### Use AEMHeadless client #### Promise syntax: ```javascript aemHeadlessClient.runQuery(queryString) .then(data => console.log(data)) .catch(e => console.error(e.toJSON())) aemHeadlessClient.listPersistedQueries() .then(data => console.log(data)) .catch(e => console.error(e.toJSON())) aemHeadlessClient.persistQuery(queryString, 'wknd/persist-query-name') .then(data => console.log(data)) .catch(e => console.error(e.toJSON())) aemHeadlessClient.runPersistedQuery('wknd/persist-query-name') .then(data => console.log(data)) .catch(e => console.error(e.toJSON())) aemHeadlessClient.runPersistedQuery('wknd/persist-query-name-with-variables', { name: 'John Doe'}) .then(data => console.log(data)) .catch(e => console.error(e.toJSON())) ``` #### Within async/await: ```javascript (async () => { let postData try { postData = await aemHeadlessClient.runQuery(queryString) } catch (e) { console.error(e.toJSON()) } let list try { list = await aemHeadlessClient.listPersistedQueries() } catch (e) { console.error(e.toJSON()) } try { await aemHeadlessClient.persistQuery(queryString, 'wknd/persist-query-name') } catch (e) { console.error(e.toJSON()) } let getData try { getData = await aemHeadlessClient.runPersistedQuery('wknd/persist-query-name') } catch (e) { console.error(e.toJSON()) } })() ``` #### Pagination: ```javascript (async () => { const model = 'article' const fields = `{ title _path authorFragment { firstName profilePicture { ...on ImageRef { _authorUrl } } } }` // Loop all pages (default Cursor based) const cursorQueryAll = await aemHeadlessClient.runPaginatedQuery(model, fields, { pageSize: 3 }) for await (let value of cursorQueryAll) { console.log('cursorQueryAll', value) } // Manually get next page (default pageSize = 10) const cursorQuery = await aemHeadlessClient.runPaginatedQuery(model, fields) while (true) { const { done, value } = await cursorQuery.next(); if (done) break console.log('cursorQuery', value) } })() ``` ## Authorization If `auth` param is a string, it's treated as a Bearer token If `auth` param is an array, expected data is ['user', 'pass'] pair, and Basic Authorization will be used If `auth` is not defined, Authorization header will not be set ## API Reference See generated [API Reference](./api-reference.md) ## Contributing Contributions are welcome! Read the [Contributing Guide](./.github/CONTRIBUTING.md) for more information. ## Licensing This project is licensed under the Apache V2 License. See [LICENSE](LICENSE) for more information.