Privacy jobs endpoint
regulation_type values. Use the new values that include state abbreviations (for example, ucpa_ut_usa) starting 12 June 2025. The older values (for example, ucpa_usa) stop working after 28 July 2025.This document covers how to work with privacy jobs using API calls. Specifically, it covers the use of the /job endpoint in the Privacy Service API. Before reading this guide, refer to the getting started guide for important information that you need to know in order to successfully make calls to the API, including required headers and how to read example API calls.
List all jobs list
You can view a list of all available privacy jobs within your organization by making a GET request to the /jobs endpoint.
API format
This request format uses a regulation query parameter on the /jobs endpoint, therefore it begins with a question mark (?) as shown below. When listing resources, the Privacy Service API returns up to 1000 jobs and paginates the response. Use other query parameters (page, size, and date filters) to filter the response. You can separate multiple parameters using ampersands (&).
status, fromDate, and toDate query parameters.GET /jobs?regulation={REGULATION}
GET /jobs?regulation={REGULATION}&page={PAGE}
GET /jobs?regulation={REGULATION}&size={SIZE}
GET /jobs?regulation={REGULATION}&page={PAGE}&size={SIZE}
GET /jobs?regulation={REGULATION}&fromDate={FROMDATE}&toDate={TODATE}&status={STATUS}
{REGULATION}The regulation type to query for. Accepted values include:
apa_ausccpacpa_co_usacpra_ca_usactdpa_ct_usadpdpa_de_usafdbr_fl_usagdprhipaa_usaicdpa_ia_usalgpd_bramcdpa_mn_usamcdpa_mt_usamhmda_wa_usandpa_ne_usanhpa_nh_usanjdpa_nj_usanzpa_nzlocpa_or_usapdpa_thaql25_qc_cantdpsa_tx_usatipa_tn_usaucpa_ut_usavcdpa_va_usa
See the overview on supported regulations for more information on the privacy regulations that the above values represent.
{PAGE}0.{SIZE}100 and the maximum is 1000. Exceeding the maximum causes the API to return a 400-code error.{status}The default behavior is to include all statuses. If you specify a status type, the request returns only privacy jobs that match that status type. The accepted values include:
processingcompleteerror
{toDate}It accepts the format YYYY-MM-DD. The date you provide is interpreted as the termination date expressed in Greenwich Mean Time (GMT).
If you do not provide this parameter (and a corresponding
fromDate), the default behavior returns jobs that data back over the last seven days. If you use toDate, you must also use the fromDate query parameter. If you do not use both, the call returns a 400 error.{fromDate}It accepts the format YYYY-MM-DD. The date you provide is interpreted as the request’s date of origin expressed in Greenwich Mean Time (GMT).
If you do not provide this parameter (and a corresponding
toDate), the default behavior returns jobs that data back over the last seven days. If you use fromDate, you must also use the toDate query parameter. If you do not use both, the call returns a 400 error.{filterDate}Request
The following request retrieves a paginated list of all jobs within an organization, starting from the third page with a page size of 50.
curl -X GET \
https://platform.adobe.io/data/core/privacy/jobs?regulation=gdpr&page=2&size=50 \
-H 'Authorization: Bearer {ACCESS_TOKEN}' \
-H 'x-api-key: {API_KEY}' \
-H 'x-gw-ims-org-id: {ORG_ID}'
Response
A successful response returns a list of jobs, with each job containing details such as its jobId. In this example, the response would contain a list of 50 jobs, starting on the third page of results.
Accessing subsequent pages
To fetch the next set of results in a paginated response, you must make another API call to the same endpoint while increasing the page query parameter by 1.
Create a privacy job create-job
Before creating a new job request, you must first collect identifying information about the data subjects whose data you want to access, delete, or opt out of sale. Once you have the required data, it must be provided in the payload of a POST request to the /jobs endpoint.
The Privacy Service API supports two kinds of job requests for personal data:
- Access and/or delete: Access (read) or delete personal data.
- Opt out of sale: Mark personal data as not to be sold.
Create an access/delete job access-delete
This section demonstrates how to make an access/delete job request using the API.
API format
POST /jobs
Request
The following request creates a new job request, configured by the attributes supplied in the payload as described below.
curl -X POST \
https://platform.adobe.io/data/core/privacy/jobs \
-H 'Authorization: Bearer {ACCESS_TOKEN}' \
-H 'Content-Type: application/json' \
-H 'x-api-key: {API_KEY}' \
-H 'x-gw-ims-org-id: {ORG_ID}' \
-d '{
"companyContexts": [
{
"namespace": "imsOrgID",
"value": "{ORG_ID}"
}
],
"users": [
{
"key": "DavidSmith",
"action": ["access"],
"userIDs": [
{
"namespace": "email",
"value": "dsmith@acme.com",
"type": "standard"
},
{
"namespace": "ECID",
"type": "standard",
"value": "443636576799758681021090721276",
"isDeletedClientSide": false
}
]
},
{
"key": "user12345",
"action": ["access","delete"],
"userIDs": [
{
"namespace": "email",
"value": "ajones@acme.com",
"type": "standard"
},
{
"namespace": "loyaltyAccount",
"value": "12AD45FE30R29",
"type": "integrationCode"
}
]
}
],
"include": ["Analytics", "AudienceManager","profileService"],
"expandIds": false,
"priority": "normal",
"mergePolicyId": 124,
"regulation": "ccpa"
}'
companyContexts (Required)An array containing authentication information for your organization. Each listed identifier includes the following attributes:
namespace: The namespace of an identifier.value: The value of the identifier.
It is required that one of the identifiers uses imsOrgId as its namespace, with its value containing the unique ID for your organization.
Additional identifiers can be product-specific company qualifiers (for example, Campaign), which identify an integration with an Adobe application belonging to your organization. Potential values include account names, client codes, tenant IDs, or other application identifiers.
users (Required)An array containing a collection of at least one user whose information you would like to access or delete. A maximum of 1000 users can be provided in a single request. Each user object contains the following information:
key: An identifier for a user that is used to qualify the separate job IDs in the response data. It is best practice to choose a unique, easily identifiable string for this value so it can easily be referenced or looked up later.action: An array that lists desired actions to take on the user’s data. Depending on the actions you want to take, this array must includeaccess,delete, or both.userIDs: A collection of identities for the user. The number of identities a single user can have is limited to nine. Each identity consists of anamespace, avalue, and a namespace qualifier (type). See the appendix for more details on these required properties.
For a more detailed explanation of users and userIDs, see the troubleshooting guide.
include (Required)expandIDstrue, represents an optimization for processing the IDs in the applications (currently only supported by Analytics). If omitted, this value defaults to false.prioritynormal and low. If priority is omitted, the default behavior is normal.mergePolicyIdprofileService), you can optionally provide the ID of the specific merge policy that you want to use for ID stitching. By specifying a merge policy, privacy requests can include audience information when returning data on a customer. Only one merge policy can be specified per request. If no merge policy is provided, segmentation information is not included in the response.regulation (Required)The regulation for the privacy job. The following values are accepted:
apa_ausccpacpra_usagdprhipaa_usalgpd_branzpa_nzlpdpa_thavcdpa_usa
See the overview on supported regulations for more information on the privacy regulations that the above values represent.
Response
A successful response returns the details of the newly created jobs.
{
"jobs": [
{
"jobId": "6fc09b53-c24f-4a6c-9ca2-c6076b0842b6",
"customer": {
"user": {
"key": "DavidSmith",
"action": [
"access"
]
}
}
},
{
"jobId": "6fc09b53-c24f-4a6c-9ca2-c6076be029f3",
"customer": {
"user": {
"key": "user12345",
"action": [
"access"
]
}
}
},
{
"jobId": "6fc09b53-c24f-4a6c-9ca2-c6076bd023j1",
"customer": {
"user": {
"key": "user12345",
"action": [
"delete"
]
}
}
}
],
"requestStatus": 1,
"totalRecords": 3
}
jobIdOnce you have successfully submitted the job request, you can proceed to the next step of checking the job’s status.
Check the status of a job check-status
You can retrieve information about a specific job, such as its current processing status, by including that job’s jobId in the path of a GET request to the /jobs endpoint.
API format
GET /jobs/{JOB_ID}
{JOB_ID}jobId in successful API responses for creating a job and listing all jobs.Request
The following request retrieves the details of the job whose jobId is provided in the request path.
curl -X GET \
https://platform.adobe.io/data/core/privacy/jobs/6fc09b53-c24f-4a6c-9ca2-c6076b0842b6 \
-H 'Authorization: Bearer {ACCESS_TOKEN}' \
-H 'x-api-key: {API_KEY}' \
-H 'x-gw-ims-org-id: {ORG_ID}'
Response
A successful response returns the details of the specified job.
{
"jobId": "6fc09b53-c24f-4a6c-9ca2-c6076b0842b6",
"requestId": "15700479082313109RX-899",
"userKey": "David Smith",
"action": "access",
"status": "complete",
"submittedBy": "{ACCOUNT_ID}",
"createdDate": "10/02/2019 08:25 PM GMT",
"lastModifiedDate": "10/02/2019 08:25 PM GMT",
"userIds": [
{
"namespace": "email",
"value": "dsmith@acme.com",
"type": "standard",
"namespaceId": 6,
"isDeletedClientSide": false
},
{
"namespace": "ECID",
"value": "1123A4D5690B32A",
"type": "standard",
"namespaceId": 4,
"isDeletedClientSide": false
}
],
"productResponses": [
{
"product": "Analytics",
"retryCount": 0,
"processedDate": "10/02/2019 08:25 PM GMT",
"productStatusResponse": {
"status": "complete",
"message": "Success",
"responseMsgCode": "PRVCY-6000-200",
"responseMsgDetail": "Finished successfully."
}
},
{
"product": "Profile",
"retryCount": 0,
"processedDate": "10/02/2019 08:25 PM GMT",
"productStatusResponse": {
"status": "complete",
"message": "Success",
"responseMsgCode": "PRVCY-6000-200",
"responseMsgDetail": "Success dataSetIds = [5dbb87aad37beb18a96feb61], Failed dataSetIds = []"
}
},
{
"product": "AudienceManager",
"retryCount": 0,
"processedDate": "10/02/2019 08:25 PM GMT",
"productStatusResponse": {
"status": "complete",
"message": "Success",
"responseMsgCode": "PRVCY-6054-200",
"responseMsgDetail": "PARTIALLY COMPLETED- Data not found for some requests, check results for more info.",
"results": {
"processed": ["1123A4D5690B32A"],
"ignored": ["dsmith@acme.com"]
}
}
}
],
"downloadURL": "http://...",
"regulation": "ccpa"
}
productStatusResponseproductResponses array contains information about the current status of the job with respect to a specific Experience Cloud application.productStatusResponse.statusproductStatusResponse.messageproductStatusResponse.responseMsgCoderesponseMsgDetail.productStatusResponse.responseMsgDetailproductStatusResponse.resultsresults object that provides additional information not covered by responseMsgDetail.downloadURLcomplete, this attribute provides a URL to download the job results as a ZIP file. This file is available to download for 60 days after the job completes.Job status categories status-categories
The following table lists the different possible job status categories and their corresponding meaning:
completeprocessingsubmittederrorprocessing state if it has a dependent child job that is still processing.Next steps
You now know how to create and monitor privacy jobs using the Privacy Service API. For information on how to perform the same tasks using the user interface, see the Privacy Service UI overview.