Adobe Experience Platform Data Collection API

The Data Collection APIs provide endpoints for sending data directly to the Adobe Experience Platform Edge Network, including the Edge Network API for authenticated and non-authenticated data ingestion and the Media Edge API for media tracking data.

OpenAPI Specification

data-collection-api.yml Raw ↑
openapi: 3.1.0
info:
  title: Adobe Experience Platform Data Collection API
  description: >-
    The Data Collection APIs provide endpoints for sending data directly to the
    Adobe Experience Platform Edge Network. The Edge Network API supports both
    authenticated and non-authenticated data ingestion, while the Media Edge
    API enables media tracking data transmission. These APIs allow real-time
    data collection from web, mobile, and IoT devices.
  version: 2.0.0
  contact:
    name: Adobe Developer Support
    url: https://experienceleague.adobe.com/?support-solution=Experience+Platform
  license:
    name: Adobe Terms of Service
    url: https://www.adobe.com/legal/terms.html
  termsOfService: https://www.adobe.com/legal/terms.html

servers:
- url: https://edge.adobedc.net
  description: Adobe Edge Network Non-Authenticated Server
- url: https://server.adobedc.net
  description: Adobe Edge Network Authenticated Server

paths:
  /ee/v2/interact:
    post:
      operationId: interact
      summary: Send Interactive Event
      description: >-
        Send a single event to the Adobe Experience Platform Edge Network and
        receive a response with personalization decisions, identity stitching,
        and other real-time results. This endpoint does not support batch
        events; use the collect endpoint for multiple events.
      tags:
      - Edge Network API
      parameters:
      - $ref: '#/components/parameters/datastreamId'
      - $ref: '#/components/parameters/requestId'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/InteractRequest'
            examples:
              InteractRequestExample:
                summary: Default interact request
                x-microcks-default: true
                value:
                  event:
                    xdm:
                      identityMap: example_value
                      eventType: example_value
                      web: {}
                      commerce: {}
                      timestamp: '2026-01-15T10:30:00Z'
                    data: example_value
      responses:
        '200':
          description: >-
            Successful response with personalization decisions and service
            responses.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InteractResponse'
              examples:
                Interact200Example:
                  summary: Default interact 200 response
                  x-microcks-default: true
                  value:
                    requestId: '500123'
                    handle:
                    - type: example_value
                      payload:
                      - {}
                      eventIndex: 10
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '408':
          $ref: '#/components/responses/RequestTimeout'
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '500':
          $ref: '#/components/responses/InternalServerError'
        '502':
          $ref: '#/components/responses/BadGateway'
        '503':
          $ref: '#/components/responses/ServiceUnavailable'
        '504':
          $ref: '#/components/responses/GatewayTimeout'
      security:
      - {}
      - bearerAuth: []
        apiKey: []
        orgId: []

      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
  /ee/v2/collect:
    post:
      operationId: collect
      summary: Send Batch Events
      description: >-
        Send one or more events to the Adobe Experience Platform Edge Network
        for non-interactive data collection. Supports batch processing of
        multiple events in a single request. Use the silent query parameter
        to receive a 204 response with no payload.
      tags:
      - Edge Network API
      parameters:
      - $ref: '#/components/parameters/datastreamId'
      - $ref: '#/components/parameters/requestId'
      - name: silent
        in: query
        schema:
          type: boolean
        description: >-
          When true, returns 204 No Content with an empty payload instead
          of the standard response.
        example: true
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CollectRequest'
            examples:
              CollectRequestExample:
                summary: Default collect request
                x-microcks-default: true
                value:
                  events:
                  - data: example_value
      responses:
        '202':
          description: Events accepted for processing.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CollectResponse'
              examples:
                Collect202Example:
                  summary: Default collect 202 response
                  x-microcks-default: true
                  value:
                    requestId: '500123'
        '204':
          description: Events accepted (silent mode). No response body.
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '408':
          $ref: '#/components/responses/RequestTimeout'
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '500':
          $ref: '#/components/responses/InternalServerError'
        '502':
          $ref: '#/components/responses/BadGateway'
        '503':
          $ref: '#/components/responses/ServiceUnavailable'
        '504':
          $ref: '#/components/responses/GatewayTimeout'
      security:
      - {}
      - bearerAuth: []
        apiKey: []
        orgId: []

      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
  /ee/va/v1/sessionStart:
    post:
      operationId: mediaSessionStart
      summary: Start a Media Session
      description: >-
        Create a new media tracking session. This endpoint initializes a media
        session and returns a session ID for subsequent media tracking events.
        Requires the Streaming Media Collection Add-on.
      tags:
      - Media Edge API
      parameters:
      - $ref: '#/components/parameters/datastreamId'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/MediaSessionStartRequest'
            examples:
              MediasessionstartRequestExample:
                summary: Default mediaSessionStart request
                x-microcks-default: true
                value:
                  events:
                  - xdm:
                      eventType: media.sessionStart
                      mediaCollection: {}
                      timestamp: '2026-01-15T10:30:00Z'
      responses:
        '200':
          description: Media session started successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MediaSessionStartResponse'
              examples:
                Mediasessionstart200Example:
                  summary: Default mediaSessionStart 200 response
                  x-microcks-default: true
                  value:
                    requestId: '500123'
                    handle:
                    - type: example_value
                      payload:
                      - {}
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
      security:
      - bearerAuth: []
        apiKey: []
        orgId: []

      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
  /ee/va/v1/play:
    post:
      operationId: mediaPlay
      summary: Track Media Play Event
      description: Send a play event for an active media tracking session.
      tags:
      - Media Edge API
      parameters:
      - $ref: '#/components/parameters/datastreamId'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/MediaEventRequest'
            examples:
              MediaplayRequestExample:
                summary: Default mediaPlay request
                x-microcks-default: true
                value:
                  events:
                  - xdm:
                      eventType: example_value
                      mediaCollection: {}
                      timestamp: '2026-01-15T10:30:00Z'
      responses:
        '204':
          description: Play event tracked successfully.
        '400':
          $ref: '#/components/responses/BadRequest'
      security:
      - bearerAuth: []
        apiKey: []
        orgId: []

      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
  /ee/va/v1/ping:
    post:
      operationId: mediaPing
      summary: Track Media Ping Event
      description: >-
        Send a periodic ping event to maintain an active media session.
        Should be sent every 10 seconds during playback.
      tags:
      - Media Edge API
      parameters:
      - $ref: '#/components/parameters/datastreamId'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/MediaEventRequest'
            examples:
              MediapingRequestExample:
                summary: Default mediaPing request
                x-microcks-default: true
                value:
                  events:
                  - xdm:
                      eventType: example_value
                      mediaCollection: {}
                      timestamp: '2026-01-15T10:30:00Z'
      responses:
        '204':
          description: Ping event tracked successfully.
        '400':
          $ref: '#/components/responses/BadRequest'
      security:
      - bearerAuth: []
        apiKey: []
        orgId: []

      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
  /ee/va/v1/pauseStart:
    post:
      operationId: mediaPauseStart
      summary: Track Media Pause Event
      description: Send a pause start event for an active media tracking session.
      tags:
      - Media Edge API
      parameters:
      - $ref: '#/components/parameters/datastreamId'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/MediaEventRequest'
            examples:
              MediapausestartRequestExample:
                summary: Default mediaPauseStart request
                x-microcks-default: true
                value:
                  events:
                  - xdm:
                      eventType: example_value
                      mediaCollection: {}
                      timestamp: '2026-01-15T10:30:00Z'
      responses:
        '204':
          description: Pause event tracked successfully.
        '400':
          $ref: '#/components/responses/BadRequest'
      security:
      - bearerAuth: []
        apiKey: []
        orgId: []

      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
  /ee/va/v1/bufferStart:
    post:
      operationId: mediaBufferStart
      summary: Track Media Buffer Start Event
      description: Send a buffer start event for an active media tracking session.
      tags:
      - Media Edge API
      parameters:
      - $ref: '#/components/parameters/datastreamId'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/MediaEventRequest'
            examples:
              MediabufferstartRequestExample:
                summary: Default mediaBufferStart request
                x-microcks-default: true
                value:
                  events:
                  - xdm:
                      eventType: example_value
                      mediaCollection: {}
                      timestamp: '2026-01-15T10:30:00Z'
      responses:
        '204':
          description: Buffer start event tracked successfully.
        '400':
          $ref: '#/components/responses/BadRequest'
      security:
      - bearerAuth: []
        apiKey: []
        orgId: []

      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
  /ee/va/v1/bitrateChange:
    post:
      operationId: mediaBitrateChange
      summary: Track Media Bitrate Change Event
      description: Send a bitrate change event for an active media tracking session.
      tags:
      - Media Edge API
      parameters:
      - $ref: '#/components/parameters/datastreamId'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/MediaEventRequest'
            examples:
              MediabitratechangeRequestExample:
                summary: Default mediaBitrateChange request
                x-microcks-default: true
                value:
                  events:
                  - xdm:
                      eventType: example_value
                      mediaCollection: {}
                      timestamp: '2026-01-15T10:30:00Z'
      responses:
        '204':
          description: Bitrate change event tracked successfully.
        '400':
          $ref: '#/components/responses/BadRequest'
      security:
      - bearerAuth: []
        apiKey: []
        orgId: []

      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
  /ee/va/v1/error:
    post:
      operationId: mediaError
      summary: Track Media Error Event
      description: Send an error event for an active media tracking session.
      tags:
      - Media Edge API
      parameters:
      - $ref: '#/components/parameters/datastreamId'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/MediaErrorRequest'
            examples:
              MediaerrorRequestExample:
                summary: Default mediaError request
                x-microcks-default: true
                value:
                  events:
                  - xdm:
                      eventType: media.error
                      mediaCollection: {}
                      timestamp: '2026-01-15T10:30:00Z'
      responses:
        '204':
          description: Error event tracked successfully.
        '400':
          $ref: '#/components/responses/BadRequest'
      security:
      - bearerAuth: []
        apiKey: []
        orgId: []

      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
  /ee/va/v1/sessionComplete:
    post:
      operationId: mediaSessionComplete
      summary: Complete a Media Session
      description: >-
        End an active media tracking session. Indicates the content was
        watched to completion.
      tags:
      - Media Edge API
      parameters:
      - $ref: '#/components/parameters/datastreamId'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/MediaEventRequest'
            examples:
              MediasessioncompleteRequestExample:
                summary: Default mediaSessionComplete request
                x-microcks-default: true
                value:
                  events:
                  - xdm:
                      eventType: example_value
                      mediaCollection: {}
                      timestamp: '2026-01-15T10:30:00Z'
      responses:
        '204':
          description: Session completed successfully.
        '400':
          $ref: '#/components/responses/BadRequest'
      security:
      - bearerAuth: []
        apiKey: []
        orgId: []

      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
  /ee/va/v1/sessionEnd:
    post:
      operationId: mediaSessionEnd
      summary: End a Media Session
      description: >-
        End a media tracking session. Can be used when the viewer abandons
        content before completion.
      tags:
      - Media Edge API
      parameters:
      - $ref: '#/components/parameters/datastreamId'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/MediaEventRequest'
            examples:
              MediasessionendRequestExample:
                summary: Default mediaSessionEnd request
                x-microcks-default: true
                value:
                  events:
                  - xdm:
                      eventType: example_value
                      mediaCollection: {}
                      timestamp: '2026-01-15T10:30:00Z'
      responses:
        '204':
          description: Session ended successfully.
        '400':
          $ref: '#/components/responses/BadRequest'
      security:
      - bearerAuth: []
        apiKey: []
        orgId: []

      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
components:
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: >-
        OAuth 2.0 access token for authenticated data collection via
        server.adobedc.net.
    apiKey:
      type: apiKey
      in: header
      name: x-api-key
      description: Client ID credential from Adobe Developer Console.
    orgId:
      type: apiKey
      in: header
      name: x-gw-ims-org-id
      description: Adobe Organization ID.

  parameters:
    datastreamId:
      name: datastreamId
      in: query
      required: true
      schema:
        type: string
      description: >-
        The ID of the datastream configured in Adobe Experience Platform
        for data routing and processing.
    requestId:
      name: requestId
      in: query
      schema:
        type: string
      description: >-
        An optional external request tracing ID. If not provided, the
        Edge Network generates one automatically.

  responses:
    BadRequest:
      description: The request was malformed or invalid.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
    Unauthorized:
      description: Authentication credentials are missing or invalid.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
    Forbidden:
      description: Insufficient permissions to access the resource.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
    RequestTimeout:
      description: The request timed out.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
    TooManyRequests:
      description: Rate limit exceeded.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
    InternalServerError:
      description: An unexpected server error occurred.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
    BadGateway:
      description: The server received an invalid response from an upstream server.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
    ServiceUnavailable:
      description: The service is temporarily unavailable.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
    GatewayTimeout:
      description: The upstream server did not respond in time.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'

  schemas:
    ErrorResponse:
      type: object
      properties:
        type:
          type: string
          format: uri
          example: https://www.example.com
        status:
          type: integer
          example: 10
        title:
          type: string
          example: Example Title
        detail:
          type: string
          example: example_value
        report:
          type: object
          properties:
            errors:
              type: array
              items:
                type: string

    # XDM Event
          example: example_value
    XDMEvent:
      type: object
      description: An Experience Data Model (XDM) event object.
      properties:
        identityMap:
          type: object
          description: >-
            A map of identity namespaces to arrays of identity objects for
            cross-device identity stitching.
          additionalProperties:
            type: array
            items:
              type: object
              properties:
                id:
                  type: string
                  description: The identity value.
                authenticatedState:
                  type: string
                  enum:
                  - ambiguous
                  - authenticated
                  - loggedOut
                primary:
                  type: boolean
          example: example_value
        eventType:
          type: string
          description: >-
            The type of event (e.g., web.webpagedetails.pageViews,
            commerce.productViews, commerce.purchases).
          example: example_value
        web:
          type: object
          description: Web-specific event data.
          properties:
            webPageDetails:
              type: object
              properties:
                URL:
                  type: string
                  format: uri
                name:
                  type: string
                isHomePage:
                  type: boolean
            webReferrer:
              type: object
              properties:
                URL:
                  type: string
                  format: uri
          example: example_value
        commerce:
          type: object
          description: Commerce-specific event data.
          properties:
            purchases:
              type: object
              properties:
                value:
                  type: number
            productViews:
              type: object
              properties:
                value:
                  type: number
            order:
              type: object
              properties:
                purchaseID:
                  type: string
                currencyCode:
                  type: string
                priceTotal:
                  type: number
            productListItems:
              type: array
              items:
                type: object
                properties:
                  SKU:
                    type: string
                  name:
                    type: string
                  quantity:
                    type: integer
                  priceTotal:
                    type: number
          example: example_value
        timestamp:
          type: string
          format: date-time
          description: The ISO 8601 timestamp of the event.

    # Interact Endpoint
          example: '2026-01-15T10:30:00Z'
    InteractRequest:
      type: object
      required:
      - event
      properties:
        event:
          type: object
          required:
          - xdm
          properties:
            xdm:
              $ref: '#/components/schemas/XDMEvent'
            data:
              type: object
              description: >-
                Custom free-form data that does not map to an XDM schema.
                Useful for sending additional context or non-XDM data.
              additionalProperties: true

          example: example_value
    InteractResponse:
      type: object
      properties:
        requestId:
          type: string
          description: The unique identifier for this request.
          example: '500123'
        handle:
          type: array
          description: Array of service response handles.
          items:
            type: object
            properties:
              type:
                type: string
                description: >-
                  The handle type (e.g., locationHint:result, state:store,
                  personalization:decisions, identity:result).
              payload:
                type: array
                items:
                  type: object
                  additionalProperties: true
              eventIndex:
                type: integer

    # Collect Endpoint
          example: []
    CollectRequest:
      type: object
      required:
      - events
      properties:
        events:
          type: array
          description: An array of events to send to the Edge Network.
          items:
            type: object
            required:
            - xdm
            properties:
              xdm:
                $ref: '#/components/schemas/XDMEvent'
              data:
                type: object
                description: Custom free-form data.
                additionalProperties: true

          example: []
    CollectResponse:
      type: object
      properties:
        requestId:
          type: string
          description: The unique identifier for this request.

    # Media Edge API
          example: '500123'
    MediaSessionStartRequest:
      type: object
      required:
      - events
      properties:
        events:
          type: array
          items:
            type: object
            required:
            - xdm
            properties:
              xdm:
                type: object
                required:
                - eventType
                - mediaCollection
                - timestamp
                properties:
                  eventType:
                    type: string
                    enum:
                    - media.sessionStart
                  mediaCollection:
                    type: object
                    required:
                    - sessionDetails
                    - playhead
                    properties:
                      sessionDetails:
                        type: object
                        properties:
                          name:
                            type: string
                            description: The name of the media content.
                          friendlyName:
                            type: string
                            description: Human-readable name for the media.
                          length:
                            type: integer
                            description: The length of the media in seconds.
                          contentType:
                            type: string
                            description: The content type (e.g., vod, live, linear).
                          playerName:
                            type: string
                            description: The name of the media player.
                          channel:
                            type: string
                            description: The distribution channel.
                          hasResume:
                            type: boolean
                            description: Whether this is a resumed session.
                      playhead:
                        type: integer
                        description: The current playhead position in seconds.
                  timestamp:
                    type: string
                    format: date-time

          example: []
    MediaSessionStartResponse:
      type: object
      properties:
        requestId:
          type: string
          example: '500123'
        handle:
          type: array
          items:
            type: object
            properties:
              type:
                type: string
              payload:
                type: array
                items:
                  type: object
                  properties:
                    sessionId:
                      type: string
                      description: The media session ID for subsequent tracking events.

          example: []
    MediaEventRequest:
      type: object
      required:
      - events
      properties:
        events:
          type: array
          items:
            type: object
            required:
            - xdm
            properties:
              xdm:
                type: object
                required:
                - eventType
                - mediaCollection
                - timestamp
                properties:
                  eventType:
                    type: string
                    description: The media event type.
                  mediaCollection:
                    type: object
                    required:
                    - playhead
                    - sessionID
                    properties:
                      playhead:
                        type: integer
                        description: The current playhead position in seconds.
                      sessionID:
                        type: string
                        description: The session ID returned from sessionStart.
                  timestamp:
                    type: string
                    format: date-time

          example: []
    MediaErrorRequest:
      type: object
      required:
      - events
      properties:
        events:
          type: array
          items:
            type: object
            required:
            - xdm
            properties:
              xdm:
                type: object
                required:
                - eventType
                - mediaCollection
                - timestamp
                properties:
                  eventType:
                    type: string
                    enum:
                    - media.error
                  mediaCollection:
                    type: object
                    required:
                    - playhead
                    - sessionID
                    - errorDetails
                    properties:
                      playhead:
                        type: integer
                      sessionID:
                        type: string
                      errorDetails:
                        type: object
                        properties:
                          name:
                            type: string
                            description: The error name or code.
                          source:
                            type: string
                            enum:
                            - player
                            - external
                            description: The source of the error.
                  timestamp:
                    type: string
                    format: date-time

          example: []
tags:
- name: Edge Network API
  description: >-
    Send event data directly to the Adobe Experience Platform Edge Network.
    Supports both interactive (interact) and non-interactive (collect)
    data collection with authenticated and non-authenticated modes.
- name: Media Edge API
  description: >-
    Track media playback events through the Adobe Experience Platform Edge
    Network. Requires the Streaming Media Collection Add-on. Supports
    session management, play/pause tracking, buffering, and error reporting.