Adobe Analytics Datafeed API
API to create, update and retrieve datafeed with a user token
API to create, update and retrieve datafeed with a user token
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.curl "https://apis.io/api/v1/apis/adobe-analytics-datafeed-api-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
title: Adobe Analytics 2.0 Data Feed API. Create, update retrieve, and manage data feeds and column presets. Datafeed API
description: "Adobe Analytics Data Feed API 2.0\n\n Note: Adobe may add optional request and response members (name/value pairs) to existing API objects at any time and without notice or changes in versioning. Adobe recommends that you refer to the API documentation of any third-party tool you integrate with our APIs so that such additions are ignored in processing if not understood. If implemented properly, such additions are non-breaking changes for your implementation. Adobe will not remove parameters or add required parameters without first providing standard notification through release notes."
version: v2
servers:
- url: https://analytics.adobe.io/api
tags:
- name: Datafeed API
description: API to create, update and retrieve datafeed with a user token
paths:
/{globalCompanyId}/data_feeds/datafeed:
post:
tags:
- Datafeed API
summary: Create datafeed
description: "**Required fields are:**\n\n- feedName: Name of the datafeed\n- rsid: Report suite String identifier\n- columnPreset: Column preset identifier\n- schedule.startDate: Start date of the schedule in ISO 8601 format\n- delivery.cloudLocationUUID: Cloud storage location UUID\n- delivery.notificationEmail: List of notification email addresses\n\n**Optional fields and defaults are:**\n\n- feedState: State of the datafeed [created, hold, active(default)]\n- dynamicLookups: Boolean to enable/disable dynamic lookups [true, false(default)]\n- replaceEscapedChars: Boolean to enable/disable replacing escaped characters [true, false(default)]\n- schedule.interval: Delivery interval [daily, hourly(default)]\n- schedule.delay: Integer representing the delay in processing in minutes 0 to 9999 (default=0)\n- packaging.type: String representing the packaging type [flat, chunked(default)]\n- packaging.chunkSize: Integer representing the chunk size in MB [1024, 2048(default), 4096]\n- packaging.compression: String representing the compression type [zip, gzip(default)]\n- packaging.manifest: String representing the manifest type [no-file, fin-file, manifest-file(default)]\n- packaging.noDataManifest: Boolean to enable/disable no data manifest [true, false(default)]\n- lateHits.enabled: Boolean to enable/disable late hits [true, false(default)]\n- lateHits.lookback: Integer representing the lookback period in hours [0 to 26280 (default = 0)]\n\n**Example 1 with only required fields:**\n\n```json\n{\n \"feedName\": \"ExampleFeed1\",\n \"rsid\": \"example-rsid\",\n \"columnPreset\": 1,\n \"schedule\": {\n \"startDate\": \"2024-01-01T00:00:00Z\"\n },\n \"delivery\": {\n \"cloudLocationUUID\": \"your-location-uuid\",\n \"notificationEmail\": [\"test@example.com\"]\n }\n}\n```\n\n**Example 2 with required and optional fields:**\n\n```json\n{\n \"feedName\": \"ExampleFeed2\",\n \"rsid\": \"example-rsid\",\n \"feedState\": \"active\",\n \"columnPreset\": 1,\n \"notes\": \"Example feed\",\n \"dynamicLookups\": true,\n \"replaceEscapedChars\": false,\n \"schedule\": {\n \"startDate\": \"2025-06-01T00:00:00Z\",\n \"endDate\": \"2026-12-31T23:59:59Z\",\n \"interval\": \"hourly\",\n \"delay\": 100\n },\n \"packaging\": {\n \"type\": \"chunked\",\n \"chunkSize\": 4096,\n \"compression\": \"gzip\",\n \"manifest\": \"manifest-file\",\n \"noDataManifest\": true\n },\n \"delivery\": {\n \"cloudLocationUUID\": \"your-location-uuid\",\n \"notificationEmail\": [\"test@example.com\"]\n },\n \"lateHits\": {\n \"enabled\": true,\n \"lookback\": 1000\n }\n}\n```\n"
operationId: create_1
parameters:
- name: globalCompanyId
in: path
description: The Global Company ID for the Adobe Analytics organization
required: true
schema:
type: string
- $ref: '#/components/parameters/authorization'
- $ref: '#/components/parameters/x-api-key'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/DataFeedCreateBody_User'
responses:
'400':
description: Bad Request - Unable to create Datafeed.
content:
application/json:
schema:
$ref: '#/components/schemas/AnalyticsAsrErrorResponse'
'409':
description: Datafeed already exists.
content:
application/json:
schema:
$ref: '#/components/schemas/AnalyticsAsrErrorResponse'
'404':
description: Datafeed not found.
content:
application/json:
schema:
$ref: '#/components/schemas/AnalyticsAsrErrorResponse'
'500':
description: Error occurred while creating datafeed.
content:
application/json:
schema:
$ref: '#/components/schemas/AnalyticsAsrErrorResponse'
'200':
description: Datafeed created successfully.
content:
application/json:
schema:
$ref: '#/components/schemas/DataFeedView'
/{globalCompanyId}/data_feeds/datafeed/{feedId}:
get:
tags:
- Datafeed API
summary: Get datafeed by ID
operationId: get_1
parameters:
- name: globalCompanyId
in: path
description: The Global Company ID for the Adobe Analytics organization
required: true
schema:
type: string
- $ref: '#/components/parameters/authorization'
- $ref: '#/components/parameters/x-api-key'
- name: feedId
in: path
description: The feed ID
required: true
schema:
type: integer
format: int32
responses:
'404':
description: Datafeed not found.
content:
application/json:
schema:
$ref: '#/components/schemas/AnalyticsAsrErrorResponse'
'500':
description: Error occurred while retrieving datafeed.
content:
application/json:
schema:
$ref: '#/components/schemas/AnalyticsAsrErrorResponse'
'200':
description: Datafeed retrieved successfully.
content:
application/json:
schema:
$ref: '#/components/schemas/DataFeedExtendedView'
put:
tags:
- Datafeed API
summary: Update datafeed
description: "This endpoint allows updating specific fields of an existing datafeed.\n\n**Fields that can be updated:**\n\n- columnPreset: Integer value representing the column preset.\n- notes: String field to add notes about the datafeed.\n- dynamicLookups: Boolean to enable/disable dynamic lookups.\n- replaceEscapedChars: Boolean to enable/disable replacing escaped characters.\n- schedule.endDate: String representing the end date of the datafeed.\n- schedule.delay: Integer representing the delay in minutes.\n- delivery.cloudLocationUUID: UUID string of the delivery location.\n- delivery.notificationEmail: List of strings representing notification email addresses.\n- lateHits.enabled: Boolean to enable/disable late hits.\n- lateHits.lookback: Integer representing the lookback period in hours.\n- packaging.type: String representing the packaging type (e.g., 'flat', 'chunked').\n- packaging.compression: String representing the compression type (e.g., 'gzip', 'zip').\n- packaging.chunkSize: Integer representing the chunk size in MB.\n- packaging.manifest: String representing the manifest type (e.g., 'no-file', 'fin-file', 'manifest-file').\n- packaging.noDataManifest: Boolean to enable/disable no data manifest.\n\n**Example request body:**\n\n```json\n{\n \"columnPreset\": 0,\n \"notes\": \"string\",\n \"dynamicLookups\": true,\n \"replaceEscapedChars\": true,\n \"metadata\": {\n \"feedId\": 0,\n \"feedState\": \"string\"\n },\n \"schedule\": {\n \"startDate\": \"string\",\n \"endDate\": \"string\",\n \"interval\": \"string\",\n \"delay\": 0\n },\n \"packaging\": {\n \"type\": \"string\",\n \"chunkSize\": 0,\n \"compression\": \"string\",\n \"manifest\": \"string\",\n \"noDataManifest\": true\n },\n \"delivery\": {\n \"cloudLocationUUID\": \"string\",\n \"notificationEmail\": [\n \"string\"\n ]\n },\n \"lateHits\": {\n \"enabled\": true,\n \"lookback\": 0\n }\n}\n```\n"
operationId: update_1
parameters:
- name: globalCompanyId
in: path
description: The Global Company ID for the Adobe Analytics organization
required: true
schema:
type: string
- $ref: '#/components/parameters/authorization'
- $ref: '#/components/parameters/x-api-key'
- name: feedId
in: path
description: The feed ID
required: true
schema:
type: integer
format: int32
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/DataFeedUpdateBody_User'
responses:
'404':
description: Datafeed not found.
content:
application/json:
schema:
$ref: '#/components/schemas/AnalyticsAsrErrorResponse'
'400':
description: Bad Request - Unable to update Datafeed.
content:
application/json:
schema:
$ref: '#/components/schemas/AnalyticsAsrErrorResponse'
'500':
description: Error occurred while updating datafeed.
content:
application/json:
schema:
$ref: '#/components/schemas/AnalyticsAsrErrorResponse'
'200':
description: Datafeed updated successfully.
content:
application/json:
schema:
$ref: '#/components/schemas/DataFeedView'
/{globalCompanyId}/data_feeds/datafeed/{feedId}/status:
put:
tags:
- Datafeed API
summary: Update datafeed status
operationId: updateStatus_1
parameters:
- name: globalCompanyId
in: path
description: The Global Company ID for the Adobe Analytics organization
required: true
schema:
type: string
- $ref: '#/components/parameters/authorization'
- $ref: '#/components/parameters/x-api-key'
- name: feedId
in: path
description: The feed ID
required: true
schema:
type: integer
format: int32
- name: status
in: query
description: 'Valid values: active, canceled and hold'
required: true
schema:
type: string
responses:
'404':
description: Datafeed not found.
content:
application/json:
schema:
$ref: '#/components/schemas/AnalyticsAsrErrorResponse'
'400':
description: Bad Request - Unable to update Datafeed status.
content:
application/json:
schema:
$ref: '#/components/schemas/AnalyticsAsrErrorResponse'
'500':
description: Error occurred while updating datafeed status.
content:
application/json:
schema:
$ref: '#/components/schemas/AnalyticsAsrErrorResponse'
'200':
description: Datafeed status updated successfully.
content:
application/json:
schema:
$ref: '#/components/schemas/DataFeedView'
/{globalCompanyId}/data_feeds/datafeeds:
get:
tags:
- Datafeed API
summary: Gets datafeeds for a report suite
operationId: getDataFeedsForReportSuite_1
parameters:
- name: globalCompanyId
in: path
description: The Global Company ID for the Adobe Analytics organization
required: true
schema:
type: string
- $ref: '#/components/parameters/authorization'
- $ref: '#/components/parameters/x-api-key'
- name: rsid
in: query
description: The report suite ID
required: true
schema:
type: string
responses:
'404':
description: Datafeeds not found for rsid.
content:
application/json:
schema:
$ref: '#/components/schemas/AnalyticsAsrErrorResponse'
'400':
description: Bad Request - Unable to get Datafeed(s).
content:
application/json:
schema:
$ref: '#/components/schemas/AnalyticsAsrErrorResponse'
'500':
description: Error occurred while retrieving datafeeds for rsid.
content:
application/json:
schema:
$ref: '#/components/schemas/AnalyticsAsrErrorResponse'
'200':
description: Datafeeds for report suite retrieved successfully.
content:
application/json:
schema:
$ref: '#/components/schemas/DataFeedList'
/{globalCompanyId}/data_feeds/datafeeds/search:
post:
tags:
- Datafeed API
summary: Gets datafeeds for an array of report suite
operationId: getDataFeedsForReportSuites_1
parameters:
- name: globalCompanyId
in: path
description: The Global Company ID for the Adobe Analytics organization
required: true
schema:
type: string
- $ref: '#/components/parameters/authorization'
- $ref: '#/components/parameters/x-api-key'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/ReportSuiteList_User'
responses:
'400':
description: Bad Request - Unable to get Datafeed(s).
content:
application/json:
schema:
$ref: '#/components/schemas/AnalyticsAsrErrorResponse'
'404':
description: Datafeeds not found for rsids.
content:
application/json:
schema:
$ref: '#/components/schemas/AnalyticsAsrErrorResponse'
'500':
description: Error occurred while retrieving datafeeds for rsids.
content:
application/json:
schema:
$ref: '#/components/schemas/AnalyticsAsrErrorResponse'
'200':
description: Datafeeds for multiple report suite retrieved successfully.
content:
application/json:
schema:
$ref: '#/components/schemas/DataFeedList'
/{globalCompanyId}/data_feeds/datafeed/requests:
get:
tags:
- Datafeed API
summary: Gets datafeed requests for a report suite and feed ID
description: 'If no dates are provided, the API will return the latest datafeed requests.
'
operationId: getDataFeedRequestsForFeed_1
parameters:
- name: globalCompanyId
in: path
description: The Global Company ID for the Adobe Analytics organization
required: true
schema:
type: string
- $ref: '#/components/parameters/authorization'
- $ref: '#/components/parameters/x-api-key'
- name: rsid
in: query
description: The report suite ID
required: true
schema:
type: string
- name: feedId
in: query
description: The feed ID
required: true
schema:
type: integer
format: int32
- name: startDate
in: query
description: Filters for Datafeed requests on or after the specified datetime
schema:
type: string
- name: endDate
in: query
description: Filters for Datafeed requests on or before the specified datetime
schema:
type: string
- name: limit
in: query
description: Maximum number of records to return. Max value allowed is 5000. Defaults to 500.
schema:
type: integer
format: int32
- name: offset
in: query
description: Number of records to skip for pagination. Defaults to 0.
schema:
type: integer
format: int32
responses:
'400':
description: Bad Request - Unable to get Datafeed requests.
content:
application/json:
schema:
$ref: '#/components/schemas/AnalyticsAsrErrorResponse'
'404':
description: Datafeed requests not found.
content:
application/json:
schema:
$ref: '#/components/schemas/AnalyticsAsrErrorResponse'
'500':
description: Error occurred while retrieving datafeed requests.
content:
application/json:
schema:
$ref: '#/components/schemas/AnalyticsAsrErrorResponse'
'200':
description: Datafeed requests retrieved successfully.
content:
application/json:
schema:
$ref: '#/components/schemas/DataFeedRequestListView'
/{globalCompanyId}/data_feeds/datafeed/requests/search:
post:
tags:
- Datafeed API
summary: Gets datafeed requests
description: "This endpoint allows searching for datafeed requests using various filtering criteria.\n\nThe request body supports the following fields:\n\n- rsids **[Required]:** One or more report suite IDs to filter the search.\n\n- feedIds **[Required]**: One or more datafeed IDs to filter the search.\n\n- requestStates: Filter by request states [created, processing, completed].\n\n- billingCustomerId: Filter by billing customer ID.\n\n- useUtc: Indicates whether the date filters should use UTC (default=false).\n\n***Pagination:***\n\n- limit: Maximum number of results to return (default=100).\n\n- offset: Offset for pagination (default=0).\n\n***Sorting:***\n\n- sortOrder: 'asc' or 'desc' (default='desc').\n\n- orderBy: Field to sort by (first_run_date, complete_date, req_period_begin_utc ).\n\n***Date Filters:*** Dates must be in ISO 8601 format with timezone (yyyy-MM-dd'T'HH:mm:ssXXX) or UTC (yyyy-MM-ddTHH:mm:ssZ):\n\n- minRequestPeriodStartDate, maxRequestPeriodStartDate: Filter by request period start date range.\n\n- minAttemptDate, maxAttemptDate: Filter by attempt date range.\n\n- minCompletionDate, maxCompletionDate: Filter by completion date range.\n\n- minSubmittedDate, maxSubmittedDate: Filter by submission date range.\n\n**Example request body:**\n\n```json\n{\n \"rsids\": [\n \"inttest\"\n ],\n \"feedIds\": [\n 6, 7\n ],\n \"requestStates\": [\n \"created\", \"processing\", \"completed\"\n ],\n \"limit\": 10,\n \"offset\": 0,\n \"sortOrder\": \"desc\",\n \"minRequestPeriodStartDate\": \"2023-05-21T08:00:00Z\",\n \"maxRequestPeriodStartDate\": \"2023-07-21T08:10:00Z\"\n}\n```\n"
operationId: getDataFeedRequests_1
parameters:
- name: globalCompanyId
in: path
description: The Global Company ID for the Adobe Analytics organization
required: true
schema:
type: string
- $ref: '#/components/parameters/authorization'
- $ref: '#/components/parameters/x-api-key'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/DataFeedRequestsSearchBody'
responses:
'404':
description: Datafeed requests not found.
content:
application/json:
schema:
$ref: '#/components/schemas/AnalyticsAsrErrorResponse'
'400':
description: Bad Request - Unable to get Datafeed requests.
content:
application/json:
schema:
$ref: '#/components/schemas/AnalyticsAsrErrorResponse'
'500':
description: Error occurred while retrieving datafeed requests.
content:
application/json:
schema:
$ref: '#/components/schemas/AnalyticsAsrErrorResponse'
'200':
description: Datafeed requests retrieved successfully.
content:
application/json:
schema:
$ref: '#/components/schemas/DataFeedRequestListView'
components:
schemas:
DataFeedRequestListView:
properties:
offset:
type: integer
format: int32
data:
type: array
items:
$ref: '#/components/schemas/DataFeedRequestView'
limit:
type: integer
format: int32
Delivery_User:
type: object
properties:
cloudLocationUUID:
type: string
notificationEmail:
type: array
items:
type: string
DataFeedRequestsSearchBody:
type: object
properties:
rsids:
type: array
items:
type: string
feedIds:
type: array
items:
type: integer
format: int32
requestStates:
type: array
items:
type: string
limit:
type: integer
format: int32
offset:
type: integer
format: int32
sortOrder:
type: string
orderBy:
type: string
billingCustomerId:
type: integer
format: int32
useUtc:
type: boolean
minRequestPeriodStartDate:
type: string
maxRequestPeriodStartDate:
type: string
minAttemptDate:
type: string
maxAttemptDate:
type: string
minCompletionDate:
type: string
maxCompletionDate:
type: string
minSubmittedDate:
type: string
maxSubmittedDate:
type: string
ExtendedMetadata:
type: object
properties:
feedId:
type: integer
format: int32
feedState:
type: string
timeZone:
type: string
createdBy:
type: string
creationDate:
type: string
modifiedBy:
type: string
modificationDate:
type: string
legacyTransport:
$ref: '#/components/schemas/LegacyTransportConfig'
description: Extended Metadata for DataFeedExtendedView
DataFeedRequestView:
type: object
properties:
rsid:
type: string
feedId:
type: integer
format: int32
feedName:
type: string
feedState:
type: string
requestId:
type: integer
format: int64
submittedDate:
type: string
runCount:
type: integer
format: int32
runAttempt:
type: string
completeDate:
type: string
requestPeriodBegin:
type: string
requestPeriodEnd:
type: string
requestState:
type: string
useUTC:
type: integer
format: int32
errorCode:
type: integer
format: int32
errorMsg:
type: string
timezone:
type: string
AnalyticsAsrErrorResponse:
properties:
errorDescription:
type: string
errorCode:
type: string
errorId:
type: string
DataFeedExtendedView:
properties:
dynamicLookups:
type: boolean
schedule:
$ref: '#/components/schemas/Schedule'
delivery:
$ref: '#/components/schemas/Delivery'
columnPreset:
type: integer
format: int32
notes:
type: string
feedName:
type: string
extendedMetadata:
$ref: '#/components/schemas/ExtendedMetadata'
rsid:
type: string
lateHits:
$ref: '#/components/schemas/LateHits'
packaging:
$ref: '#/components/schemas/Packaging'
replaceEscapedChars:
type: boolean
DataFeedList:
properties:
data:
type: array
items:
$ref: '#/components/schemas/DataFeedView'
Delivery:
type: object
properties:
cloudLocationUUID:
type: string
notificationEmail:
type: array
items:
type: string
Packaging:
type: object
properties:
type:
type: string
chunkSize:
type: integer
format: int32
compression:
type: string
manifest:
type: string
noDataManifest:
type: boolean
LegacyTransportConfig:
type: object
properties:
transportId:
type: integer
format: int64
protocol:
type: string
hostname:
type: string
port:
type: integer
format: int32
directoryPath:
type: string
prefix:
type: string
skipRename:
type: boolean
bucket:
type: string
container:
type: string
accountName:
type: string
projectId:
type: string
exportLocationId:
type: string
Metadata:
type: object
properties:
feedId:
type: integer
format: int32
feedState:
type: string
timeZone:
type: string
createdBy:
type: string
creationDate:
type: string
modifiedBy:
type: string
modificationDate:
type: string
description: Metadata for DataFeedView
LateHits_User:
type: object
properties:
enabled:
type: boolean
lookback:
type: integer
format: int32
Packaging_User:
type: object
properties:
type:
type: string
chunkSize:
type: integer
format: int32
compression:
type: string
manifest:
type: string
noDataManifest:
type: boolean
Schedule:
type: object
properties:
startDate:
type: string
endDate:
type: string
interval:
type: string
delay:
type: integer
format: int32
Schedule_User:
type: object
properties:
startDate:
type: string
endDate:
type: string
interval:
type: string
delay:
type: integer
format: int32
DataFeedUpdateBody_User:
type: object
properties:
columnPreset:
type: integer
format: int32
notes:
type: string
dynamicLookups:
type: boolean
replaceEscapedChars:
type: boolean
metadata:
$ref: '#/components/schemas/UpdateMetadata_User'
schedule:
$ref: '#/components/schemas/Schedule_User'
packaging:
$ref: '#/components/schemas/Packaging_User'
delivery:
$ref: '#/components/schemas/Delivery_User'
lateHits:
$ref: '#/components/schemas/LateHits_User'
UpdateMetadata_User:
type: object
properties:
feedId:
type: integer
format: int32
feedState:
type: string
description: Metadata for the DataFeedUpdateBody
DataFeedView:
properties:
dynamicLookups:
type: boolean
schedule:
$ref: '#/components/schemas/Schedule'
delivery:
$ref: '#/components/schemas/Delivery'
metadata:
$ref: '#/components/schemas/Metadata'
columnPreset:
type: integer
format: int32
notes:
type: string
feedName:
type: string
rsid:
type: string
lateHits:
$ref: '#/components/schemas/LateHits'
packaging:
$ref: '#/components/schemas/Packaging'
replaceEscapedChars:
type: boolean
DataFeedCreateBody_User:
required:
- columnPreset
- delivery
- feedName
- rsid
- schedule
type: object
properties:
feedName:
type: string
rsid:
type: string
feedState:
type: string
columnPreset:
type: integer
format: int32
notes:
type: string
dynamicLookups:
type: boolean
replaceEscapedChars:
type: boolean
schedule:
$ref: '#/components/schemas/Schedule_User'
packaging:
$ref: '#/components/schemas/Packaging_User'
delivery:
$ref: '#/components/schemas/Delivery_User'
lateHits:
$ref: '#/components/schemas/LateHits_User'
LateHits:
type: object
properties:
enabled:
type: boolean
lookback:
type: integer
format: int32
ReportSuiteList_User:
type: object
properties:
rsids:
type: array
items:
type: string
parameters:
authorization:
name: Authorization
in: header
description: The access token copied from your AA API client integration, prefixed with "Bearer ".
required: true
schema:
type: string
x-api-key:
name: x-api-key
in: header
description: The API key copied from your AA API client integration. For more information on how to obtain this value, see [Getting started with the CJA API](https://developer.adobe.com/cja-apis/docs/getting-started/).
required: true
schema:
type: string