ACDA (App Content Delivery API)
Last updated: June 22, 2026
ACDA (App Content Delivery API) is a read-only API that delivers published Content and Media to members who have signed up for your product, that is to ServiceUsers. Once the team running a Space publishes content, members read that published data through ACDA. Think of it as the ServiceUser version of what CDA does, performing the same role of delivering published content under a member identity instead of to public visitors. ACDA has only read (GET) endpoints; creating, updating, and deleting belong to ACMA.
ACDA calls use a Bearer token issued by ServiceLogin. This token is valid only on ACMA and ACDA and cannot be used on CMA or CDA (for the token issuance flow, see the Auth API).
Differences from CDA
ACDA's response shape is the same as CDA's. It delivers only a snapshot of the published data (sys carries only revision, the version at the time of publish, with no version, status, or publish), and it resolves values by locale at read time. What differs from CDA is the read scope and the identity.
- Per-member read scope: With CDA, anyone calling with a single DeliveryAccessToken sees the same published set. ACDA returns only what is allowed for the calling ServiceUser, and what is allowed is determined by that member's ServiceUserRole and their assignments. The identity differs too: CDA is called with a DeliveryAccessToken, ACDA with the member token issued by ServiceLogin.
How the locale query parameter chooses the language to receive is also the same as CDA. Given a code such as locale=ko-KR, fields comes back as a single value for that locale (empty or null if there is no value and the Fallback does not reach one); omitted, it returns the same way for the Space's default Locale; and given locale=*, it returns the map holding all locale values as is. In the first two cases, where a single language is returned, the response carries an x-weegloo-locale header that reports the locale actually used (it is absent when locale=*).
Resource structure
The following is the form in which ACDA delivers one "Product" Content from a demo Space. It is the result of reading with locale=en-US, and each value in fields is held as a single value resolved to en-US.
{
"sys": {
"id": "3trmXRM3RqbgSnifyg7PBUM8Ds0Xvw",
"type": "Content",
"space": { "sys": { "id": "tcq4V2Xb", "type": "Refer", "targetType": "Space" } },
"contentType": { "sys": { "id": "3trmXRM3RqbgSnifyg7PAmlxvX4fGY", "type": "Refer", "targetType": "ContentType" } },
"createdAt": "2026-06-17T16:58:56.660Z",
"updatedAt": "2026-06-18T01:46:58.358Z",
"revision": 3
},
"fields": {
"productName": "Stainless Tumbler 500ml",
"price": 18000,
"description": "Double-wall vacuum insulation keeps drinks hot or cold for hours. A roomy 500ml."
}
}Key properties:
sys.id: The unique identifier of the Content. It goes into{contentId}in the single-read path.sys.type: The resource kind. For a Content this is always"Content".sys.space: A reference pointing to the Space this Content belongs to.sys.contentType: A reference pointing to the Content Type this Content follows.sys.revision: The version at the time of publish. Each publish records the version at that moment here. Because ACDA does not carry the management fieldsversion,status, orpublish,revisionis the one value that points to the published version.sys.createdBy,sys.updatedBy: Included only when the Content Type'spublishWithAuthoris turned on, pointing to the author and the last editor. The example above has this option turned off, so the two keys are omitted.fields: Holds each field's value in the shape{ apiName: value }. Unlike the locale map of CMA and ACMA ({ apiName: { locale: value } }), ACDA holds only a single value resolved to the requestedlocale. In the example above the representative photophotois omitted because there is no value for that locale.
Media comes back in the same published delivery form, carrying only revision in sys and not version, status, or publish. Media always omits author information (createdBy and updatedBy). A Media's fields.file also comes back as a single object resolved to the requested locale.
API
All three endpoints are reads (GET), and the locale query parameter chooses the language to receive (a code for that locale, omitted for the default Locale, * for the full map; see above).
Related documents
- ACMA: The management API where members create and edit their own content.
- Auth API: Issuing the token used in ACDA calls.
- ServiceUser login (concept): Configuring ServiceLogin, ServiceUserRole, and assignments.
